diff --git a/.github/actions/tests/run-api-tests/action.yml b/.github/actions/tests/run-api-tests/action.yml new file mode 100644 index 00000000000..598a67a0d5f --- /dev/null +++ b/.github/actions/tests/run-api-tests/action.yml @@ -0,0 +1,38 @@ +name: Run API tests +description: Runs the WooCommerce Core API tests and generates Allure report. +permissions: {} + +inputs: + report-name: + description: Name of Allure report to be generated. + required: true + tests: + description: Specific tests to run, separated by single whitespace. See https://playwright.dev/docs/test-cli + +runs: + using: composite + steps: + - name: Run API tests. + id: run-api-tests + working-directory: plugins/woocommerce + shell: bash + run: | + pnpm exec playwright test \ + --config=tests/api-core-tests/playwright.config.js \ + ${{ inputs.tests }} + + - name: Generate Test report. + if: success() || ( failure() && steps.run-api-tests.conclusion == 'failure' ) + working-directory: plugins/woocommerce + shell: bash + run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} + + - name: Archive test report + if: success() || ( failure() && steps.run-api-tests.conclusion == 'failure' ) + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.report-name }} + path: | + ${{ env.ALLURE_RESULTS_DIR }} + ${{ env.ALLURE_REPORT_DIR }} + retention-days: 20 diff --git a/.github/actions/tests/run-e2e-tests/action.yml b/.github/actions/tests/run-e2e-tests/action.yml new file mode 100644 index 00000000000..ab04b6764c4 --- /dev/null +++ b/.github/actions/tests/run-e2e-tests/action.yml @@ -0,0 +1,49 @@ +name: Run E2E tests +description: Runs the WooCommerce Core E2E tests and generates Allure report. +permissions: {} + +inputs: + report-name: + description: Name of Allure report to be generated. + required: true + tests: + description: Specific tests to run, separated by single whitespace. See https://playwright.dev/docs/test-cli + playwright-config: + description: The Playwright configuration file to use. + default: playwright.config.js + +runs: + using: composite + steps: + - name: Download and install Chromium browser. + working-directory: plugins/woocommerce + shell: bash + run: pnpm exec playwright install chromium + + - name: Run E2E tests. + id: run-e2e-tests + env: + FORCE_COLOR: 1 + USE_WP_ENV: 1 + working-directory: plugins/woocommerce + shell: bash + run: | + pnpm exec playwright test \ + --config=tests/e2e-pw/${{ inputs.playwright-config }} \ + ${{ inputs.tests }} + + - name: Generate Test report. + if: success() || ( failure() && steps.run-e2e-tests.conclusion == 'failure' ) + working-directory: plugins/woocommerce + shell: bash + run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} + + - name: Archive test report + if: success() || ( failure() && steps.run-e2e-tests.conclusion == 'failure' ) + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.report-name }} + path: | + ${{ env.ALLURE_RESULTS_DIR }} + ${{ env.ALLURE_REPORT_DIR }} + retention-days: 20 diff --git a/.github/actions/tests/run-k6-tests/action.yml b/.github/actions/tests/run-k6-tests/action.yml new file mode 100644 index 00000000000..fbf67c7f9f6 --- /dev/null +++ b/.github/actions/tests/run-k6-tests/action.yml @@ -0,0 +1,17 @@ +name: Run k6 performance tests +description: Runs the WooCommerce Core k6 performance tests. +permissions: {} + +runs: + using: composite + steps: + - name: Install k6 + shell: bash + run: | + curl https://github.com/grafana/k6/releases/download/v0.33.0/k6-v0.33.0-linux-amd64.tar.gz -L | tar xvz --strip-components 1 + + - name: Run k6 performance tests + id: run-k6-tests + shell: bash + run: | + ./k6 run plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js diff --git a/.github/actions/tests/setup-local-test-environment/action.yml b/.github/actions/tests/setup-local-test-environment/action.yml new file mode 100644 index 00000000000..c5386a32c77 --- /dev/null +++ b/.github/actions/tests/setup-local-test-environment/action.yml @@ -0,0 +1,29 @@ +name: Setup local test environment +description: Set up a wp-env testing environment +permissions: {} + +inputs: + test-type: + required: true + type: choice + options: + - e2e + - api + - k6 + +runs: + using: composite + steps: + - name: Load docker images and start containers for E2E or API tests + if: ( inputs.test-type == 'e2e' ) || ( inputs.test-type == 'api' ) + working-directory: plugins/woocommerce + shell: bash + run: pnpm run env:test + + - name: Load docker images and start containers for k6 performance tests + if: inputs.test-type == 'k6' + working-directory: plugins/woocommerce + shell: bash + run: | + pnpm env:dev --filter=woocommerce + pnpm env:performance-init --filter=woocommerce diff --git a/.github/actions/tests/slack-alert-on-pr-merge/action.yml b/.github/actions/tests/slack-alert-on-pr-merge/action.yml new file mode 100644 index 00000000000..6fbc11ab62a --- /dev/null +++ b/.github/actions/tests/slack-alert-on-pr-merge/action.yml @@ -0,0 +1,41 @@ +name: Send Slack alert on PR merge test failure +description: Send a Slack alert when automated tests failed on trunk after PR merge. +permissions: {} + +inputs: + slack-bot-token: + required: true + channel-id: + required: true + test-type: + required: true + type: choice + options: + - E2E + - API + - k6 + +runs: + using: composite + steps: + - name: Compose Slack message + id: compose-slack-message + uses: actions/github-script@v6 + env: + PR_NUMBER: ${{ github.event.pull_request.number }} + PR_TITLE: ${{ github.event.pull_request.title }} + SHA: ${{ github.event.pull_request.merge_commit_sha }} + TEST_TYPE: ${{ inputs.test-type }} + with: + script: | + const script = require('./.github/actions/tests/slack-alert-on-pr-merge/scripts/compose-slack-message.js') + const slackMessage = script() + core.setOutput('slack-message', slackMessage) + + - name: Send Slack alert + uses: slackapi/slack-github-action@v1.23.0 + env: + SLACK_BOT_TOKEN: ${{ inputs.slack-bot-token }} + with: + channel-id: ${{ inputs.channel-id }} + payload: ${{ steps.compose-slack-message.outputs.slack-message }} diff --git a/.github/actions/tests/slack-alert-on-pr-merge/scripts/compose-slack-message.js b/.github/actions/tests/slack-alert-on-pr-merge/scripts/compose-slack-message.js new file mode 100644 index 00000000000..ca194507547 --- /dev/null +++ b/.github/actions/tests/slack-alert-on-pr-merge/scripts/compose-slack-message.js @@ -0,0 +1,114 @@ +module.exports = () => { + const { + GITHUB_BASE_REF, + GITHUB_RUN_ID, + PR_NUMBER, + PR_TITLE, + SHA, + TEST_TYPE, + } = process.env; + + // Slack message blocks + const blocks = []; + const dividerBlock = { + type: 'divider', + }; + const introBlock = { + type: 'section', + text: { + type: 'mrkdwn', + text: `${ TEST_TYPE } tests failed on \`${ GITHUB_BASE_REF }\` after merging PR `, + }, + }; + const prTitleBlock = { + type: 'header', + text: { + type: 'plain_text', + text: PR_TITLE, + emoji: true, + }, + }; + const prButtonBlock = { + type: 'actions', + elements: [ + { + type: 'button', + text: { + type: 'plain_text', + text: 'View pull request :pr-merged:', + emoji: true, + }, + value: 'view_pr', + url: `https://github.com/woocommerce/woocommerce/pull/${ PR_NUMBER }`, + action_id: 'view-pr', + }, + ], + }; + const mergeCommitBlock = { + type: 'actions', + elements: [ + { + type: 'button', + text: { + type: 'plain_text', + text: `View merge commit ${ SHA.substring( + 0, + 7 + ) } :alphabet-yellow-hash:`, + emoji: true, + }, + value: 'view_commit', + url: `https://github.com/woocommerce/woocommerce/commit/${ SHA }`, + action_id: 'view-commit', + }, + ], + }; + const githubBlock = { + type: 'actions', + elements: [ + { + type: 'button', + text: { + type: 'plain_text', + text: 'View GitHub run log :github:', + emoji: true, + }, + value: 'view_github', + url: `https://github.com/woocommerce/woocommerce/actions/runs/${ GITHUB_RUN_ID }`, + action_id: 'view-github', + }, + ], + }; + const reportBlock = { + type: 'actions', + elements: [ + { + type: 'button', + text: { + type: 'plain_text', + text: 'View test report :colorful-bar-chart:', + emoji: true, + }, + value: 'view_report', + url: `https://woocommerce.github.io/woocommerce-test-reports/pr-merge/${ PR_NUMBER }/${ TEST_TYPE.toLowerCase() }`, + action_id: 'view-report', + }, + ], + }; + + // Assemble blocks + blocks.push( dividerBlock ); + blocks.push( introBlock ); + blocks.push( prTitleBlock ); + blocks.push( prButtonBlock ); + blocks.push( mergeCommitBlock ); + blocks.push( githubBlock ); + + if ( [ 'e2e', 'api' ].includes( TEST_TYPE.toLowerCase() ) ) { + blocks.push( reportBlock ); + } + + blocks.push( dividerBlock ); + + return { blocks }; +}; diff --git a/.github/actions/tests/upload-allure-files-to-bucket/action.yml b/.github/actions/tests/upload-allure-files-to-bucket/action.yml new file mode 100644 index 00000000000..c99f5fd5c42 --- /dev/null +++ b/.github/actions/tests/upload-allure-files-to-bucket/action.yml @@ -0,0 +1,37 @@ +name: Upload Allure files to bucket +description: Upload Allure files to bucket. +permissions: {} + +inputs: + artifact-name: + description: Name of the artifact that contains the allure-report and/or allure-results folders. + required: true + aws-region: + required: true + aws-access-key-id: + required: true + aws-secret-access-key: + required: true + s3-bucket: + required: true + include-allure-results: + dafault: false + +runs: + using: composite + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1-node16 + with: + aws-region: ${{ inputs.aws-region }} + aws-access-key-id: ${{ inputs.aws-access-key-id }} + aws-secret-access-key: ${{ inputs.aws-secret-access-key }} + + - name: Upload Allure artifact + env: + ARTIFACT_NAME: ${{ inputs.artifact-name }} + S3_BUCKET: ${{ inputs.s3-bucket }} + INCLUDE_ALLURE_RESULTS: ${{ inputs.include-allure-results }} + shell: bash + working-directory: .github/actions/tests/upload-allure-files-to-bucket/scripts + run: bash upload-allure-artifact.sh diff --git a/.github/actions/tests/upload-allure-files-to-bucket/scripts/upload-allure-artifact.sh b/.github/actions/tests/upload-allure-files-to-bucket/scripts/upload-allure-artifact.sh new file mode 100644 index 00000000000..bc3a2cd810b --- /dev/null +++ b/.github/actions/tests/upload-allure-files-to-bucket/scripts/upload-allure-artifact.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +s3_upload () { + aws s3 cp "$1" "$2" \ + --recursive +} + +upload_allure_results () { + if [[ $INCLUDE_ALLURE_RESULTS != "true" ]]; then + return + fi + + SOURCE="$ALLURE_RESULTS_DIR" + DESTINATION="$S3_BUCKET/artifacts/$GITHUB_RUN_ID/$ARTIFACT_NAME/allure-results" + + s3_upload "$SOURCE" "$DESTINATION" +} + +upload_allure_report () { + SOURCE="$ALLURE_REPORT_DIR" + DESTINATION="$S3_BUCKET/artifacts/$GITHUB_RUN_ID/$ARTIFACT_NAME/allure-report" + + s3_upload "$SOURCE" "$DESTINATION" +} + +upload_allure_results +upload_allure_report + +EXIT_CODE=$(echo $?) +exit $EXIT_CODE \ No newline at end of file diff --git a/.github/project-pr-labeler.yml b/.github/project-pr-labeler.yml index 3055e4667cc..c80da44a922 100644 --- a/.github/project-pr-labeler.yml +++ b/.github/project-pr-labeler.yml @@ -65,3 +65,12 @@ - plugins/woocommerce/src/Admin/**/* - plugins/woocommerce/src/Internal/Admin/**/* - plugins/woocommerce-admin/**/* + +'focus: performance tests [team:Solaris]': +- plugins/woocommerce/tests/performance/**/* + +'focus: api tests [team:Solaris]': +- plugins/woocommerce/tests/api-core-tests/**/* + +'focus: e2e tests [team:Solaris]': +- plugins/woocommerce/tests/e2e-pw/**/* diff --git a/.github/workflows/cot-build-and-e2e-tests-daily.yml b/.github/workflows/cot-build-and-e2e-tests-daily.yml index a38d042cc1e..7ef685e22fe 100644 --- a/.github/workflows/cot-build-and-e2e-tests-daily.yml +++ b/.github/workflows/cot-build-and-e2e-tests-daily.yml @@ -173,7 +173,7 @@ jobs: return await script( { core } ) - name: Find PR comment by github-actions[bot] - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@034abe94d3191f9c89d870519735beae326f2bdb id: find-comment with: issue-number: ${{ github.event.pull_request.number }} @@ -181,7 +181,7 @@ jobs: body-includes: Test Results Summary - name: Create or update PR comment - uses: peter-evans/create-or-update-comment@v2 + uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index ed1eec649de..e267c3502b2 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -219,7 +219,7 @@ jobs: return await script( { core } ) - name: Find PR comment by github-actions[bot] - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@034abe94d3191f9c89d870519735beae326f2bdb id: find-comment with: issue-number: ${{ github.event.pull_request.number }} @@ -227,7 +227,7 @@ jobs: body-includes: Test Results Summary - name: Create or update PR comment - uses: peter-evans/create-or-update-comment@v2 + uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index e328e50edcf..a5fcc87bcf0 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -15,12 +15,14 @@ permissions: {} jobs: test: if: ${{ github.event_name != 'pull_request' || github.event.pull_request.user.login != 'github-actions[bot]' }} - name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} + name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} ${{ matrix.hpos && 'HPOS' || '' }} timeout-minutes: 30 runs-on: ubuntu-20.04 permissions: contents: read continue-on-error: ${{ matrix.wp == 'nightly' }} + env: + HPOS: ${{ matrix.hpos }} strategy: fail-fast: false matrix: @@ -33,6 +35,9 @@ jobs: php: 7.4 - wp: '5.9' php: 7.4 + - wp: 'latest' + php: '7.4' + hpos: true services: database: image: mysql:5.6 diff --git a/.github/workflows/review-testing-instructions.yml b/.github/workflows/review-testing-instructions.yml new file mode 100644 index 00000000000..066c502a1fb --- /dev/null +++ b/.github/workflows/review-testing-instructions.yml @@ -0,0 +1,48 @@ +name: Remind reviewers to also review the testing instructions. +on: + pull_request: + types: [review_requested] + +permissions: {} + +jobs: + add-testing-instructions-review-comment: + runs-on: ubuntu-20.04 + permissions: + pull-requests: write + steps: + - name: Get the username of requested reviewers + id: get_reviewer_username + run: | + # Retrieves the username of all reviewers and stores them in a comma-separated list + reviewers=$(echo '${{ toJson(github.event.pull_request.requested_reviewers[*].login) }}' | jq -r 'map("@\(.)") | join(", ")') + echo "REVIEWERS=$reviewers" >> $GITHUB_ENV + + - name: Get the name of requested teams + id: get_team_name + run: | + # Retrieves the name of all teams asked for review and stores them in a comma-separated list + teams=$(echo '${{ toJson(github.event.pull_request.requested_teams[*].slug) }}' | jq -r 'map("@woocommerce/\(.)") | join(", ")') + echo "TEAMS=$teams" >> $GITHUB_ENV + + - name: Find the comment by github-actions[bot] asking for reviewing the testing instructions + uses: peter-evans/find-comment@034abe94d3191f9c89d870519735beae326f2bdb + id: find-comment + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: 'github-actions[bot]' + body-includes: please make sure to review the testing instructions + + - name: Create or update PR comment asking for reviewers to review the testing instructions + uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d + with: + comment-id: ${{ steps.find-comment.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + Hi ${{ env.REVIEWERS }}, ${{ env.TEAMS }} + + Apart from reviewing the code changes, please make sure to review the testing instructions as well. + + You can follow this guide to find out what good testing instructions should look like: + https://github.com/woocommerce/woocommerce/wiki/Writing-high-quality-testing-instructions + edit-mode: replace diff --git a/.github/workflows/smoke-test-pr-merge.yml b/.github/workflows/smoke-test-pr-merge.yml new file mode 100644 index 00000000000..60720ea8454 --- /dev/null +++ b/.github/workflows/smoke-test-pr-merge.yml @@ -0,0 +1,168 @@ +name: Run tests against trunk after PR merge +on: + pull_request: + types: + - closed +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true +permissions: {} + +jobs: + api: + name: Run API tests + runs-on: ubuntu-20.04 + if: (github.event.pull_request.merged == true) && (github.event.pull_request.base.ref == 'trunk') + permissions: + contents: read + env: + ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/test-results/allure-results + ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/test-results/allure-report + ARTIFACT_NAME: api-pr-merge-${{ github.event.pull_request.number }}-run-${{ github.run_number }} + steps: + - name: Checkout merge commit on trunk + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.merge_commit_sha }} + + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + with: + build-filters: woocommerce + + - name: Setup local test environment + uses: ./.github/actions/tests/setup-local-test-environment + with: + test-type: api + + - name: Run API tests + id: run-api-composite-action + uses: ./.github/actions/tests/run-api-tests + with: + report-name: ${{ env.ARTIFACT_NAME }} + + - name: Upload Allure files to bucket + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.ARTIFACT_NAME }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} + + - name: Publish Allure report + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) + env: + GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} + run: | + gh workflow run publish-test-reports-trunk-merge.yml \ + -f run_id=${{ github.run_id }} \ + -f artifact=${{ env.ARTIFACT_NAME }} \ + -f pr_number=${{ github.event.pull_request.number }} \ + -f test_type="api" \ + --repo woocommerce/woocommerce-test-reports + + - name: Send Slack alert on test failure + if: failure() && steps.run-api-composite-action.conclusion == 'failure' + uses: ./.github/actions/tests/slack-alert-on-pr-merge + with: + slack-bot-token: ${{ secrets.E2E_SLACK_TOKEN }} + channel-id: ${{ secrets.E2E_TRUNK_SLACK_CHANNEL }} + test-type: API + + e2e: + name: Run E2E tests + needs: [api] + runs-on: ubuntu-20.04 + permissions: + contents: read + env: + ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/allure-results + ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/allure-report + ARTIFACT_NAME: e2e-pr-merge-${{ github.event.pull_request.number }}-run-${{ github.run_number }} + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.merge_commit_sha }} + + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + with: + build-filters: woocommerce + + - name: Setup local test environment + uses: ./.github/actions/tests/setup-local-test-environment + with: + test-type: e2e + + - name: Run E2E tests + id: run-e2e-composite-action + timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests + env: + E2E_MAX_FAILURES: 15 + with: + report-name: ${{ env.ARTIFACT_NAME }} + + - name: Upload Allure files to bucket + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.ARTIFACT_NAME }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} + include-allure-results: false + + - name: Publish Allure report + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + env: + GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} + run: | + gh workflow run publish-test-reports-trunk-merge.yml \ + -f run_id=${{ github.run_id }} \ + -f artifact=${{ env.ARTIFACT_NAME }} \ + -f pr_number=${{ github.event.pull_request.number }} \ + -f test_type="e2e" \ + --repo woocommerce/woocommerce-test-reports + + - name: Send Slack alert on test failure + if: failure() && steps.run-e2e-composite-action.conclusion == 'failure' + uses: ./.github/actions/tests/slack-alert-on-pr-merge + with: + slack-bot-token: ${{ secrets.E2E_SLACK_TOKEN }} + channel-id: ${{ secrets.E2E_TRUNK_SLACK_CHANNEL }} + test-type: E2E + + k6: + name: Run k6 Performance tests + needs: [api] + runs-on: ubuntu-20.04 + permissions: + contents: read + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.merge_commit_sha }} + + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + + - name: Setup local test environment + uses: ./.github/actions/tests/setup-local-test-environment + with: + test-type: k6 + + - name: Run k6 performance tests + id: run-k6-composite-action + uses: './.github/actions/tests/run-k6-tests' + + - name: Send Slack alert on test failure + if: failure() && steps.run-k6-composite-action.conclusion == 'failure' + uses: ./.github/actions/tests/slack-alert-on-pr-merge + with: + slack-bot-token: ${{ secrets.E2E_SLACK_TOKEN }} + channel-id: ${{ secrets.E2E_TRUNK_SLACK_CHANNEL }} + test-type: k6 diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 2bda71ec90e..bc07de36ba7 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -12,9 +12,8 @@ concurrency: cancel-in-progress: true permissions: {} env: - E2E_WP_LATEST_ARTIFACT: e2e-wp-latest--run-${{ github.run_number }} - E2E_UPDATE_WC_ARTIFACT: e2e-update-wc--run-${{ github.run_number }} - FORCE_COLOR: 1 + E2E_WP_LATEST_ARTIFACT: E2E test on release smoke test site with WP Latest (run ${{ github.run_number }}) + E2E_UPDATE_WC_ARTIFACT: WooCommerce version update test on release smoke test site (run ${{ github.run_number }}) jobs: get-tag: @@ -80,12 +79,13 @@ jobs: install-filters: woocommerce build: false - - name: Download and install Chromium browser. - working-directory: plugins/woocommerce - run: pnpm exec playwright install chromium - - - name: Run 'Update WooCommerce' test. - working-directory: plugins/woocommerce + - name: Run E2E tests + id: run-e2e-composite-action + timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests + with: + report-name: ${{ env.E2E_UPDATE_WC_ARTIFACT }} + tests: update-woocommerce.spec.js env: ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} @@ -95,36 +95,19 @@ jobs: DEFAULT_TIMEOUT_OVERRIDE: 120000 GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} UPDATE_WC: ${{ needs.get-tag.outputs.tag }} - run: | - pnpm exec playwright test \ - --config=tests/e2e-pw/playwright.config.js \ - update-woocommerce.spec.js - - name: Generate 'Update WooCommerce' test report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} - - - name: Configure AWS credentials - if: success() || failure() - uses: aws-actions/configure-aws-credentials@v1-node16 + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket with: - aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} - - - name: Upload Allure files to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_ARTIFACT }}/allure-report \ - --quiet + artifact-name: ${{ env.E2E_WP_LATEST_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish E2E Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: wp-latest @@ -139,17 +122,6 @@ jobs: -f test_type="e2e" \ --repo woocommerce/woocommerce-test-reports - - name: Archive 'Update WooCommerce' test report - if: success() || failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ env.E2E_UPDATE_WC_ARTIFACT }} - path: | - ${{ env.ALLURE_RESULTS_DIR }} - ${{ env.ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 - api-wp-latest: name: API on WP Latest runs-on: ubuntu-20.04 @@ -159,7 +131,7 @@ jobs: env: ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/api-test-report/allure-report ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/api-test-report/allure-results - API_WP_LATEST_ARTIFACT: api-wp-latest--run-${{ github.run_number }} + API_WP_LATEST_ARTIFACT: API test on release smoke test site with WP Latest (run ${{ github.run_number }}) steps: - uses: actions/checkout@v3 @@ -169,41 +141,29 @@ jobs: install-filters: woocommerce build: false - - name: Run API tests. - working-directory: plugins/woocommerce + - name: Run API tests + id: run-api-composite-action + uses: ./.github/actions/tests/run-api-tests + with: + report-name: ${{ env.API_WP_LATEST_ARTIFACT }} + tests: hello env: BASE_URL: ${{ secrets.RELEASE_TEST_URL }} USER_KEY: ${{ secrets.RELEASE_TEST_ADMIN_USER }} USER_SECRET: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} - run: pnpm exec playwright test --config=tests/api-core-tests/playwright.config.js hello - - name: Generate API Test report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} - - - name: Configure AWS credentials - if: success() || failure() - uses: aws-actions/configure-aws-credentials@v1-node16 + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket with: - aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} - - - name: Upload Allure files to bucket - if: success() || failure() - run: | - aws s3 cp ${{ env.ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_WP_LATEST_ARTIFACT }}/allure-results \ - --recursive \ - --quiet - aws s3 cp ${{ env.ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_WP_LATEST_ARTIFACT }}/allure-report \ - --recursive \ - --quiet + artifact-name: ${{ env.API_WP_LATEST_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish API Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: wp-latest @@ -218,17 +178,6 @@ jobs: -f test_type="api" \ --repo woocommerce/woocommerce-test-reports - - name: Archive API test report - if: success() || failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ env.API_WP_LATEST_ARTIFACT }} - path: | - ${{ env.ALLURE_RESULTS_DIR }} - ${{ env.ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 - e2e-wp-latest: name: E2E on WP Latest runs-on: ubuntu-20.04 @@ -247,11 +196,13 @@ jobs: install-filters: woocommerce build: false - - name: Download and install Chromium browser. - working-directory: plugins/woocommerce - run: pnpm exec playwright install chromium - - name: Run E2E tests + id: run-e2e-composite-action + timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests + with: + report-name: e2e-wp-latest--partial--run-${{ github.run_number }} + playwright-config: ignore-plugin-tests.playwright.config.js env: ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} @@ -262,9 +213,6 @@ jobs: DEFAULT_TIMEOUT_OVERRIDE: 120000 E2E_MAX_FAILURES: 25 RESET_SITE: true - timeout-minutes: 60 - working-directory: plugins/woocommerce - run: pnpm exec playwright test --config=tests/e2e-pw/ignore-plugin-tests.playwright.config.js - name: Download 'e2e-update-wc' artifact if: success() || failure() @@ -283,23 +231,26 @@ jobs: working-directory: plugins/woocommerce run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} - - name: Configure AWS credentials + - name: Archive E2E test report if: success() || failure() - uses: aws-actions/configure-aws-credentials@v1-node16 + uses: actions/upload-artifact@v3 with: - aws-region: ${{ secrets.REPORTS_AWS_REGION }} - aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + name: ${{ env.E2E_WP_LATEST_ARTIFACT }} + path: | + ${{ env.ALLURE_RESULTS_DIR }} + ${{ env.ALLURE_REPORT_DIR }} + if-no-files-found: ignore + retention-days: 5 - - name: Upload report to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_ARTIFACT }}/allure-report \ - --quiet + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.E2E_WP_LATEST_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish E2E Allure report if: success() || failure() @@ -317,17 +268,6 @@ jobs: -f test_type="e2e" \ --repo woocommerce/woocommerce-test-reports - - name: Archive E2E test report - if: success() || failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ env.E2E_WP_LATEST_ARTIFACT }} - path: | - ${{ env.ALLURE_RESULTS_DIR }} - ${{ env.ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 - get-wp-versions: name: Get WP L-1 & L-2 version numbers needs: [get-tag] @@ -371,14 +311,15 @@ jobs: runs-on: ubuntu-20.04 needs: [get-wp-versions] strategy: + fail-fast: false matrix: ${{ fromJSON(needs.get-wp-versions.outputs.matrix) }} env: API_ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/api/allure-report API_ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/api/allure-results - API_WP_LATEST_X_ARTIFACT: api-${{ matrix.version.env_description }}--run-${{ github.run_number }} + API_WP_LATEST_X_ARTIFACT: API test on wp-env with WordPress ${{ matrix.version.number }} (run ${{ github.run_number }}) E2E_ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/e2e/allure-report E2E_ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/e2e/allure-results - E2E_WP_LATEST_X_ARTIFACT: e2e-${{ matrix.version.env_description }}--run-${{ github.run_number }} + E2E_WP_LATEST_X_ARTIFACT: E2E test on wp-env with WordPress ${{ matrix.version.number }} (run ${{ github.run_number }}) permissions: contents: read steps: @@ -414,38 +355,31 @@ jobs: pnpm exec wp-env run tests-cli "wp theme list" pnpm exec wp-env run tests-cli "wp user list" - - name: Run API tests. - id: api - working-directory: plugins/woocommerce + - name: Run API tests + id: run-api-composite-action + uses: ./.github/actions/tests/run-api-tests + with: + report-name: ${{ env.API_WP_LATEST_X_ARTIFACT }} + tests: hello env: ALLURE_RESULTS_DIR: ${{ env.API_ALLURE_RESULTS_DIR }} - run: pnpm exec playwright test --config=tests/api-core-tests/playwright.config.js hello + ALLURE_REPORT_DIR: ${{ env.API_ALLURE_REPORT_DIR }} - - name: Generate API Allure report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.API_ALLURE_RESULTS_DIR }} --output ${{ env.API_ALLURE_REPORT_DIR }} - - - name: Configure AWS credentials - if: success() || failure() - uses: aws-actions/configure-aws-credentials@v1-node16 + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + env: + ALLURE_RESULTS_DIR: ${{ env.API_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.API_ALLURE_REPORT_DIR }} with: - aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} - - - name: Upload API Allure artifacts to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.API_ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_WP_LATEST_X_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.API_ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_WP_LATEST_X_ARTIFACT }}/allure-report \ - --quiet + artifact-name: ${{ env.API_WP_LATEST_X_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish API Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: ${{ matrix.version.env_description }} @@ -460,65 +394,33 @@ jobs: -f test_type="api" \ --repo woocommerce/woocommerce-test-reports - - name: Archive API Allure reports - if: success() || failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ env.API_WP_LATEST_X_ARTIFACT }} - path: | - ${{ env.API_ALLURE_RESULTS_DIR }} - ${{ env.API_ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 - - - name: Download and install Chromium browser. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec playwright install chromium - - - name: Run E2E tests. - if: | - success() || - ( failure() && steps.api.conclusion == 'success' ) + - name: Run E2E tests + id: run-e2e-composite-action timeout-minutes: 60 - id: e2e + uses: ./.github/actions/tests/run-e2e-tests env: - USE_WP_ENV: 1 E2E_MAX_FAILURES: 15 - FORCE_COLOR: 1 ALLURE_RESULTS_DIR: ${{ env.E2E_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.E2E_ALLURE_REPORT_DIR }} DEFAULT_TIMEOUT_OVERRIDE: 120000 - working-directory: plugins/woocommerce - run: pnpm exec playwright test --config=tests/e2e-pw/playwright.config.js - - - name: Generate E2E Allure report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.E2E_ALLURE_RESULTS_DIR }} --output ${{ env.E2E_ALLURE_REPORT_DIR }} - - - name: Upload E2E Allure artifacts to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.E2E_ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_X_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.E2E_ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_WP_LATEST_X_ARTIFACT }}/allure-report \ - --quiet - - - name: Archive E2E Allure reports - if: success() || failure() - uses: actions/upload-artifact@v3 with: - name: ${{ env.E2E_WP_LATEST_X_ARTIFACT }} - path: | - ${{ env.E2E_ALLURE_RESULTS_DIR }} - ${{ env.E2E_ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 + report-name: ${{ env.E2E_WP_LATEST_X_ARTIFACT }} + + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + env: + ALLURE_RESULTS_DIR: ${{ env.E2E_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.E2E_ALLURE_REPORT_DIR }} + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.E2E_WP_LATEST_X_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish E2E Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: ${{ matrix.version.env_description }} @@ -538,15 +440,16 @@ jobs: runs-on: ubuntu-20.04 needs: [get-tag] strategy: + fail-fast: false matrix: php_version: ['7.4', '8.1'] env: API_ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/test-results/allure-report API_ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/test-results/allure-results - API_ARTIFACT: api-php-${{ matrix.php_version }}--run-${{ github.run_number }} + API_ARTIFACT: API test on wp-env with PHP ${{ matrix.php_version }} (run ${{ github.run_number }}) E2E_ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/allure-report E2E_ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/test-results/allure-results - E2E_ARTIFACT: e2e-php-${{ matrix.php_version }}--run-${{ github.run_number }} + E2E_ARTIFACT: E2E test on wp-env with PHP ${{ matrix.php_version }} (run ${{ github.run_number }}) steps: - name: Checkout uses: actions/checkout@v3 @@ -574,38 +477,31 @@ jobs: - name: Replace `plugins/woocommerce` with unzipped woocommerce release build run: unzip -d plugins -o tmp/woocommerce.zip - - name: Run API tests. - id: api - working-directory: plugins/woocommerce + - name: Run API tests + id: run-api-composite-action + uses: ./.github/actions/tests/run-api-tests + with: + report-name: ${{ env.API_ARTIFACT }} + tests: hello env: ALLURE_RESULTS_DIR: ${{ env.API_ALLURE_RESULTS_DIR }} - run: pnpm exec playwright test --config=tests/api-core-tests/playwright.config.js hello + ALLURE_REPORT_DIR: ${{ env.API_ALLURE_REPORT_DIR }} - - name: Generate API Allure report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.API_ALLURE_RESULTS_DIR }} --output ${{ env.API_ALLURE_REPORT_DIR }} - - - name: Configure AWS credentials - if: success() || failure() - uses: aws-actions/configure-aws-credentials@v1-node16 + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + env: + ALLURE_RESULTS_DIR: ${{ env.API_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.API_ALLURE_REPORT_DIR }} with: - aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} - - - name: Upload API Allure artifacts to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.API_ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.API_ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.API_ARTIFACT }}/allure-report \ - --quiet + artifact-name: ${{ env.API_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish API Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-api-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: php-${{ matrix.php_version }} @@ -620,63 +516,33 @@ jobs: -f test_type="api" \ --repo woocommerce/woocommerce-test-reports - - name: Archive API Allure reports - if: success() || failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ env.API_ARTIFACT }} - path: | - ${{ env.API_ALLURE_RESULTS_DIR }} - ${{ env.API_ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 - - - name: Download and install Chromium browser. - working-directory: plugins/woocommerce - run: pnpm exec playwright install chromium - - - name: Run E2E tests. - if: | - success() || - ( failure() && steps.api.conclusion == 'success' ) + - name: Run E2E tests + id: run-e2e-composite-action timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests env: - USE_WP_ENV: 1 - E2E_MAX_FAILURES: 15 - FORCE_COLOR: 1 ALLURE_RESULTS_DIR: ${{ env.E2E_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.E2E_ALLURE_REPORT_DIR }} DEFAULT_TIMEOUT_OVERRIDE: 120000 - working-directory: plugins/woocommerce - run: pnpm exec playwright test --config=tests/e2e-pw/playwright.config.js - - - name: Generate E2E Allure report. - if: success() || failure() - working-directory: plugins/woocommerce - run: pnpm exec allure generate --clean ${{ env.E2E_ALLURE_RESULTS_DIR }} --output ${{ env.E2E_ALLURE_REPORT_DIR }} - - - name: Upload E2E Allure artifacts to bucket - if: success() || failure() - run: | - aws s3 sync ${{ env.E2E_ALLURE_RESULTS_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_ARTIFACT }}/allure-results \ - --quiet - aws s3 sync ${{ env.E2E_ALLURE_REPORT_DIR }} \ - ${{ secrets.REPORTS_BUCKET }}/artifacts/${{ github.run_id }}/${{ env.E2E_ARTIFACT }}/allure-report \ - --quiet - - - name: Archive E2E Allure reports - if: success() || failure() - uses: actions/upload-artifact@v3 + E2E_MAX_FAILURES: 15 with: - name: ${{ env.E2E_ARTIFACT }} - path: | - ${{ env.E2E_ALLURE_RESULTS_DIR }} - ${{ env.E2E_ALLURE_REPORT_DIR }} - if-no-files-found: ignore - retention-days: 5 + report-name: ${{ env.E2E_ARTIFACT }} + + - name: Upload Allure artifacts to bucket + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + env: + ALLURE_RESULTS_DIR: ${{ env.E2E_ALLURE_RESULTS_DIR }} + ALLURE_REPORT_DIR: ${{ env.E2E_ALLURE_REPORT_DIR }} + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.E2E_ARTIFACT }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} - name: Publish E2E Allure report - if: success() || failure() + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) env: GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} ENV_DESCRIPTION: php-${{ matrix.php_version }} @@ -690,3 +556,103 @@ jobs: -f env_description="${{ env.ENV_DESCRIPTION }}" \ -f test_type="e2e" \ --repo woocommerce/woocommerce-test-reports + + test-plugins: + name: With ${{ matrix.plugin }} + runs-on: ubuntu-20.04 + needs: [get-tag] + env: + ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/allure-results + ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/allure-report + ARTIFACT_NAME: E2E test on wp-env with ${{ matrix.plugin }} installed (run ${{ github.run_number }}) + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + env_description: 'woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + env_description: 'woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'automattic/woocommerce-services' + env_description: 'woocommerce-shipping-&-tax' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + env_description: 'woocommerce-subscriptions' + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + env_description: 'wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + env_description: 'contact-form-7' + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + + - name: Launch WP Env + working-directory: plugins/woocommerce + run: pnpm run env:test + + - name: Download release zip + env: + GH_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: gh release download ${{ needs.get-tag.outputs.tag }} --dir tmp + + - name: Replace `plugins/woocommerce` with unzipped woocommerce release build + run: unzip -d plugins -o tmp/woocommerce.zip + + - name: Run 'Upload plugin' test + id: run-upload-test + timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests + with: + report-name: ${{ env.ARTIFACT_NAME }} + tests: upload-plugin.spec.js + env: + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + PLUGIN_NAME: ${{ matrix.plugin }} + PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + + - name: Run the rest of E2E tests + id: run-e2e-composite-action + timeout-minutes: 60 + uses: ./.github/actions/tests/run-e2e-tests + with: + playwright-config: ignore-plugin-tests.playwright.config.js + report-name: ${{ env.ARTIFACT_NAME }} + env: + E2E_MAX_FAILURES: 15 + + - name: Upload Allure artifacts to bucket + if: | + success() || + ( failure() && + ( steps.run-upload-test.conclusion == 'failure' || steps.run-e2e-composite-action.conclusion == 'failure' ) ) + uses: ./.github/actions/tests/upload-allure-files-to-bucket + with: + aws-access-key-id: ${{ secrets.REPORTS_AWS_ACCESS_KEY_ID }} + aws-region: ${{ secrets.REPORTS_AWS_REGION }} + aws-secret-access-key: ${{ secrets.REPORTS_AWS_SECRET_ACCESS_KEY }} + artifact-name: ${{ env.ARTIFACT_NAME }} + s3-bucket: ${{ secrets.REPORTS_BUCKET }} + + - name: Publish E2E Allure report + if: success() || ( failure() && steps.run-e2e-composite-action.conclusion == 'failure' ) + env: + GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} + run: | + gh workflow run publish-test-reports-release.yml \ + -f created_at="${{ needs.get-tag.outputs.created }}" \ + -f run_id=${{ github.run_id }} \ + -f run_number=${{ github.run_number }} \ + -f release_tag=${{ needs.get-tag.outputs.tag }} \ + -f artifact="${{ env.ARTIFACT_NAME }}" \ + -f env_description="${{ matrix.env_description }}" \ + -f test_type="e2e" \ + --repo woocommerce/woocommerce-test-reports diff --git a/.syncpackrc b/.syncpackrc index 57c61d0a79a..832c6f62e33 100644 --- a/.syncpackrc +++ b/.syncpackrc @@ -1,6 +1,6 @@ { "dev": true, - "filter": "^(?:config|react|react-dom|eslint|typescript|@typescript-eslint|@types/react|@wordpress|@types/wordpress__components|postcss).*$", + "filter": "^(?:config|react|react-dom|eslint|typescript|@typescript-eslint|@types/react|@wordpress|@types/wordpress__components|postcss|@types/node).*$", "indent": "\t", "overrides": true, "peer": true, @@ -59,7 +59,7 @@ "packages": [ "**" ], - "pinVersion": "^4.8.3" + "pinVersion": "^4.9.5" }, { "dependencies": [ @@ -154,6 +154,15 @@ "**" ], "pinVersion": "^8.4.7" + }, + { + "dependencies": [ + "@types/node" + ], + "packages": [ + "**" + ], + "pinVersion": "^16.18.18" } ] } diff --git a/changelog.txt b/changelog.txt index ab4640efbf2..30d4a66ac9e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,78 @@ == Changelog == += 7.5.1 2023-03-21 = + +**WooCommerce** + +* Fix - Fix no enforcing of min/max limits in quantity selector of variable products. [#36871](https://github.com/woocommerce/woocommerce/pull/36871) +* Dev - Update column definitions with synonymous types to prevent dbDelta from trying to ALTER them on each install. [#37277](https://github.com/woocommerce/woocommerce/pull/37277) +* Update - Update WooCommerce Blocks to 9.6.6. [#37298](https://github.com/woocommerce/woocommerce/pull/37298) + += 7.5.0 2023-03-14 = + +**WooCommerce** + +* Fix - Add HPOS support to the reserved stock query [#36535](https://github.com/woocommerce/woocommerce/pull/36535) +* Fix - Comment: Fix inconsistencies on Analytics > Orders table when using date_paid or date_completed [#36876](https://github.com/woocommerce/woocommerce/pull/36876) +* Fix - Define a public `api` property in the WooCommerce class to prevent a PHP deprecation warning [#36545](https://github.com/woocommerce/woocommerce/pull/36545) +* Fix - Don't delete order from posts table when deleted from orders table if the later is authoritative and sync is off [#36617](https://github.com/woocommerce/woocommerce/pull/36617) +* Fix - Eliminate data store internal meta keys duplicates [#36611](https://github.com/woocommerce/woocommerce/pull/36611) +* Fix - Ensure changes made via the `woocommerce_order_list_table_prepare_items_query_args` are observed. [#36649](https://github.com/woocommerce/woocommerce/pull/36649) +* Fix - Ensuring that we know if allowTracking is true before adding exit page. [#36656](https://github.com/woocommerce/woocommerce/pull/36656) +* Fix - Fix Ampersand changed to & on product attribute export [#36525](https://github.com/woocommerce/woocommerce/pull/36525) +* Fix - Fix decimal points for NOK currency [#36780](https://github.com/woocommerce/woocommerce/pull/36780) +* Fix - Fix inconsitent product task icon colors [#36889](https://github.com/woocommerce/woocommerce/pull/36889) +* Fix - Fix WordPress unit tests libraries being installed in a symlinked folder structure [#36641](https://github.com/woocommerce/woocommerce/pull/36641) +* Fix - Make states optional for Hungary and Bulgaria. [#36701](https://github.com/woocommerce/woocommerce/pull/36701) +* Fix - Screen ID matching switched to untranslated 'woocommerce' strings. [#36854](https://github.com/woocommerce/woocommerce/pull/36854) +* Fix - Translate the labels for units of measure. [#36708](https://github.com/woocommerce/woocommerce/pull/36708) +* Fix - Update `config@3.3.7` (from `3.3.3`). Fix `node_env_var_name is not defined` error. [#33828](https://github.com/woocommerce/woocommerce/pull/33828) +* Add - Add 'add_tab' method in FormFactory to allow plugins to extend the WooCommerce admin product form [#36583](https://github.com/woocommerce/woocommerce/pull/36583) +* Add - Add @woocommerce/product-editor dependency and change dependency of ProductSectionLayout component. [#36600](https://github.com/woocommerce/woocommerce/pull/36600) +* Add - Add additional global attributes and local attributes information when saving product attributes [#36858](https://github.com/woocommerce/woocommerce/pull/36858) +* Add - Add a new Channels card in multichannel marketing page. [#36541](https://github.com/woocommerce/woocommerce/pull/36541) +* Add - Add an experimental slot for marketing overview extensibility [#36828](https://github.com/woocommerce/woocommerce/pull/36828) +* Add - Add slot fill support for tabs for the new product management MVP. [#36551](https://github.com/woocommerce/woocommerce/pull/36551) +* Add - Add survey after disabling new experience [#36544](https://github.com/woocommerce/woocommerce/pull/36544) +* Add - Add unique sku option to error data when setting product sku [#36612](https://github.com/woocommerce/woocommerce/pull/36612) +* Add - Add WC-specific criteria to the Site Health test for persistent object caches [#35202](https://github.com/woocommerce/woocommerce/pull/35202) +* Add - Enable new experience when new user selects "Physical product". [#36406](https://github.com/woocommerce/woocommerce/pull/36406) +* Update - Update WooCommerce Blocks to 9.6.5 [#37051](https://github.com/woocommerce/woocommerce/pull/37051) +* Update - Update WooCommerce Blocks to 9.6.3 [#36992](https://github.com/woocommerce/woocommerce/pull/36992) +* Update - Update WooCommerce Blocks to 9.6.2 [#36919](https://github.com/woocommerce/woocommerce/pull/36919) +* Update - Add date_paid and date_completed date sorting options for Revenue and Order reports [#36492](https://github.com/woocommerce/woocommerce/pull/36492) +* Update - Add default value for backorders [#36607](https://github.com/woocommerce/woocommerce/pull/36607) +* Update - Add Skydropx, Envia, Sendcloud, Packlink to shipping task [#36873](https://github.com/woocommerce/woocommerce/pull/36873) +* Update - Always show comments for product feedback form [#36484](https://github.com/woocommerce/woocommerce/pull/36484) +* Update - Delete FlexSlider code for legacy browsers. [#36690](https://github.com/woocommerce/woocommerce/pull/36690) +* Update - Disable the new product editor, pending design updates. [#36894](https://github.com/woocommerce/woocommerce/pull/36894) +* Update - Have "Grow your store" appear first in marketing task by default [#36826](https://github.com/woocommerce/woocommerce/pull/36826) +* Update - Migrating product editor pricing section to slot fills. [#36500](https://github.com/woocommerce/woocommerce/pull/36500) +* Update - Refactor slot fills to ensure variant fills have distinct slots. [#36646](https://github.com/woocommerce/woocommerce/pull/36646) +* Update - Removed I.D column from product import samples [#36857](https://github.com/woocommerce/woocommerce/pull/36857) +* Update - Remove Meta from grow your store list [#36886](https://github.com/woocommerce/woocommerce/pull/36886) +* Update - Remove opinionated styles from buttons in block themes so they inherit theme styles more accurately [#36651](https://github.com/woocommerce/woocommerce/pull/36651) +* Update - Replace $.ajax() calls with browser-native window.fetch() calls. [#36275](https://github.com/woocommerce/woocommerce/pull/36275) +* Update - Update payment gateway list ordering priority and remove Klarna from North America [#36550](https://github.com/woocommerce/woocommerce/pull/36550) +* Update - Update Playwright version from 1.28.0 -> 1.30.0 [#36789](https://github.com/woocommerce/woocommerce/pull/36789) +* Update - Updates to product editor fill to support new prop API. [#36592](https://github.com/woocommerce/woocommerce/pull/36592) +* Update - Update WooCommerce Blocks 9.6.0 & 9.6.1 [#36852](https://github.com/woocommerce/woocommerce/pull/36852) +* Dev - Add attribute creation form when there are no attributes [#36606](https://github.com/woocommerce/woocommerce/pull/36606) +* Dev - Add a unit test for woocommerce_admin_experimental_onboarding_tasklists filter [#36827](https://github.com/woocommerce/woocommerce/pull/36827) +* Dev - Code refactor on marketing components. [#36540](https://github.com/woocommerce/woocommerce/pull/36540) +* Dev - Made e2e selectors more robust [#36499](https://github.com/woocommerce/woocommerce/pull/36499) +* Dev - Remove attribute type logic from attribute component [#36563](https://github.com/woocommerce/woocommerce/pull/36563) +* Dev - Update eslint to 8.32.0 across the monorepo. [#36700](https://github.com/woocommerce/woocommerce/pull/36700) +* Dev - Update pnpm command to run e2e tests for consistency. Also update docs with new command. [#35287](https://github.com/woocommerce/woocommerce/pull/35287) +* Tweak - Add IR and fields priorities to list of get_country_locale() method to follow conventional way of addressing in Iran. [#36491](https://github.com/woocommerce/woocommerce/pull/36491) +* Tweak - Add missing deprecation notice for filter hook woocommerce_my_account_my_orders_columns. [#36356](https://github.com/woocommerce/woocommerce/pull/36356) +* Tweak - Adjust default sizes for the quantity and coupon input fields within the cart page. [#29122](https://github.com/woocommerce/woocommerce/pull/29122) +* Tweak - Do not display low/out-of-stock information in the dashboard status widget when stock management is disabled. [#36703](https://github.com/woocommerce/woocommerce/pull/36703) +* Tweak - Remove free trial terms from Avalara tax task [#36888](https://github.com/woocommerce/woocommerce/pull/36888) +* Tweak - Tweak product link description and display in the new product management experience [#36591](https://github.com/woocommerce/woocommerce/pull/36591) +* Enhancement - Change the sass variable names to more predictable ones. [#28908](https://github.com/woocommerce/woocommerce/pull/28908) + + = 7.4.1 2023-03-01 = **WooCommerce** diff --git a/changelog/e2e-fix-allure-upload-input b/changelog/e2e-fix-allure-upload-input new file mode 100644 index 00000000000..3ff1edec50d --- /dev/null +++ b/changelog/e2e-fix-allure-upload-input @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Fix the incorrect workflow input for uploading Allure reports. diff --git a/package.json b/package.json index 9e50a58b174..adb2745dd07 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "title": "WooCommerce Monorepo", "description": "Monorepo for the WooCommerce ecosystem", "homepage": "https://woocommerce.com/", + "engines": { + "node": "^16.13.1", + "pnpm": "^7.13.3" + }, "private": true, "repository": { "type": "git", @@ -25,41 +29,41 @@ "sync-dependencies": "pnpm exec syncpack -- fix-mismatches" }, "devDependencies": { - "@babel/preset-env": "^7.16.11", - "@babel/runtime": "^7.17.2", - "@types/node": "14.14.33", + "@babel/preset-env": "^7.20.2", + "@babel/runtime": "^7.21.0", + "@types/node": "^16.18.18", "@woocommerce/eslint-plugin": "workspace:*", "@wordpress/data": "wp-6.0", "@wordpress/eslint-plugin": "^11.1.0", - "@wordpress/prettier-config": "^1.1.1", - "babel-loader": "^8.2.3", + "@wordpress/prettier-config": "^1.4.0", + "babel-loader": "^8.3.0", "chalk": "^4.1.2", "copy-webpack-plugin": "^10.2.4", - "core-js": "^3.21.1", - "css-loader": "^6.7.0", - "glob": "^7.2.0", + "core-js": "^3.29.1", + "css-loader": "^6.7.3", + "glob": "^7.2.3", "husky": "^7.0.4", - "jest": "^27.3.1", - "lint-staged": "^12.3.7", + "jest": "^27.5.1", + "lint-staged": "^12.5.0", "mkdirp": "^1.0.4", - "moment": "^2.29.1", + "moment": "^2.29.4", "node-stream-zip": "^1.15.0", "postcss-loader": "^4.3.0", - "prettier": "npm:wp-prettier@^2.2.1-beta-1", - "regenerator-runtime": "^0.13.9", + "prettier": "npm:wp-prettier@^2.6.2", + "regenerator-runtime": "^0.13.11", "request": "^2.88.2", - "sass": "^1.49.9", - "sass-loader": "^10.2.1", + "sass": "^1.59.3", + "sass-loader": "^10.4.1", "syncpack": "^9.8.4", - "turbo": "^1.8.3", - "typescript": "^4.8.3", + "turbo": "^1.8.5", + "typescript": "^4.9.5", "url-loader": "^1.1.2", - "webpack": "^5.70.0" + "webpack": "^5.76.2" }, "dependencies": { "@babel/core": "7.12.9", - "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", - "@wordpress/babel-preset-default": "^6.4.1", + "@wordpress/babel-plugin-import-jsx-pragma": "^3.2.0", + "@wordpress/babel-preset-default": "^6.17.0", "lodash": "^4.17.21", "wp-textdomain": "1.0.1" }, diff --git a/packages/js/admin-e2e-tests/changelog/fix-typescript-incremental-builds b/packages/js/admin-e2e-tests/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/packages/js/admin-e2e-tests/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/packages/js/admin-e2e-tests/changelog/fix-typescript-package-isolation b/packages/js/admin-e2e-tests/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/packages/js/admin-e2e-tests/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/packages/js/admin-e2e-tests/package.json b/packages/js/admin-e2e-tests/package.json index 514fe44b7af..39837afded8 100644 --- a/packages/js/admin-e2e-tests/package.json +++ b/packages/js/admin-e2e-tests/package.json @@ -50,18 +50,18 @@ "jest-mock-extended": "^1.0.18", "rimraf": "^3.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "publishConfig": { "access": "public" }, "scripts": { - "turbo:build": "tsc --build", + "turbo:build": "tsc --project tsconfig.json", "prepare": "composer install", "changelog": "composer exec -- changelogger", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint src", - "start": "tsc --build --watch", + "start": "tsc --project tsconfig.json --watch", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "lint:fix": "eslint src --fix", "prepack": "pnpm run clean && pnpm run build" diff --git a/packages/js/admin-e2e-tests/tsconfig.json b/packages/js/admin-e2e-tests/tsconfig.json index b71c7906e5a..ec5de0e407d 100644 --- a/packages/js/admin-e2e-tests/tsconfig.json +++ b/packages/js/admin-e2e-tests/tsconfig.json @@ -1,8 +1,11 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "composite": true, "rootDir": "src", - "outDir": "build" + "outDir": "build", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/admin-layout/changelog/add-migrate-more-menu-37097 b/packages/js/admin-layout/changelog/add-migrate-more-menu-37097 new file mode 100644 index 00000000000..9b69d3ac60b --- /dev/null +++ b/packages/js/admin-layout/changelog/add-migrate-more-menu-37097 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Adding support for modifying fill name to WooHeaderItem. diff --git a/packages/js/admin-layout/changelog/fix-typescript-incremental-builds b/packages/js/admin-layout/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/packages/js/admin-layout/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/packages/js/admin-layout/changelog/fix-typescript-package-isolation b/packages/js/admin-layout/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/packages/js/admin-layout/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/packages/js/admin-layout/package.json b/packages/js/admin-layout/package.json index bd594825b36..946ee191af5 100644 --- a/packages/js/admin-layout/package.json +++ b/packages/js/admin-layout/package.json @@ -34,9 +34,9 @@ "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint src", - "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", + "build:js": "tsc --project tsconfig.json && tsc --project tsconfig-cjs.json", "build:css": "webpack", - "start": "concurrently \"tsc --build --watch\" \"webpack --watch\"", + "start": "concurrently \"tsc --project tsconfig.json --watch\" \"tsc --project tsconfig-cjs.json --watch\" \"webpack --watch\"", "prepack": "pnpm run clean && pnpm run build", "lint:fix": "eslint src --fix" }, @@ -50,12 +50,13 @@ "eslint": "^8.32.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", + "concurrently": "^7.0.0", "postcss-loader": "^4.3.0", "react": "^17.0.2", "react-dom": "^17.0.2", "sass-loader": "^10.2.1", "ts-jest": "^27.1.3", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "webpack": "^5.70.0", "webpack-cli": "^3.3.12" }, diff --git a/packages/js/admin-layout/src/plugins/woo-header-item/index.tsx b/packages/js/admin-layout/src/plugins/woo-header-item/index.tsx index 770c5d63c78..d39cd47d21b 100644 --- a/packages/js/admin-layout/src/plugins/woo-header-item/index.tsx +++ b/packages/js/admin-layout/src/plugins/woo-header-item/index.tsx @@ -11,6 +11,20 @@ import { export const WC_HEADER_SLOT_NAME = 'woocommerce_header_item'; +/** + * Get the slot fill name for the generic header slot or a specific header if provided. + * + * @param name Name of the specific header. + * @return string + */ +const getSlotFillName = ( name?: string ) => { + if ( ! name || ! name.length ) { + return WC_HEADER_SLOT_NAME; + } + + return `${ WC_HEADER_SLOT_NAME }/${ name }`; +}; + /** * Create a Fill for extensions to add items to the WooCommerce Admin header. * @@ -26,17 +40,19 @@ export const WC_HEADER_SLOT_NAME = 'woocommerce_header_item'; * scope: 'woocommerce-admin', * } ); * @param {Object} param0 + * @param {Array} param0.name - Header name. * @param {Array} param0.children - Node children. * @param {Array} param0.order - Node order. */ export const WooHeaderItem: React.FC< { + name?: string; children?: React.ReactNode; order?: number; } > & { - Slot: React.FC< Slot.Props >; -} = ( { children, order = 1 } ) => { + Slot: React.FC< Slot.Props & { name?: string } >; +} = ( { children, order = 1, name = '' } ) => { return ( - + { ( fillProps: Fill.Props ) => { return createOrderedChildren( children, order, fillProps ); } } @@ -44,8 +60,8 @@ export const WooHeaderItem: React.FC< { ); }; -WooHeaderItem.Slot = ( { fillProps } ) => ( - +WooHeaderItem.Slot = ( { fillProps, name = '' } ) => ( + { sortFillsByOrder } ); diff --git a/packages/js/admin-layout/tsconfig-cjs.json b/packages/js/admin-layout/tsconfig-cjs.json index 035d2318baf..c8b5b6a6b96 100644 --- a/packages/js/admin-layout/tsconfig-cjs.json +++ b/packages/js/admin-layout/tsconfig-cjs.json @@ -1,6 +1,10 @@ { "extends": "../tsconfig-cjs", "compilerOptions": { - "outDir": "build" + "outDir": "build", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/admin-layout/tsconfig.json b/packages/js/admin-layout/tsconfig.json index ea9f201d401..c5f351a60cc 100644 --- a/packages/js/admin-layout/tsconfig.json +++ b/packages/js/admin-layout/tsconfig.json @@ -5,6 +5,10 @@ "outDir": "build-module", "declaration": true, "declarationMap": true, - "declarationDir": "./build-types" + "declarationDir": "./build-types", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/api/changelog/fix-typescript-incremental-builds b/packages/js/api/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/packages/js/api/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/packages/js/api/changelog/fix-typescript-package-isolation b/packages/js/api/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/packages/js/api/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/packages/js/api/package.json b/packages/js/api/package.json index bf6177b4b56..86a297df751 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -36,7 +36,7 @@ "prepare": "composer install", "changelog": "composer exec -- changelogger", "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", - "compile": "tsc -b", + "compile": "tsc --project tsconfig.json", "prepack": "pnpm run build", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint src", @@ -50,7 +50,7 @@ "devDependencies": { "@types/create-hmac": "1.1.0", "@types/jest": "^27.4.1", - "@types/node": "13.13.5", + "@types/node": "^16.18.18", "@typescript-eslint/eslint-plugin": "^5.54.0", "@typescript-eslint/parser": "^5.54.0", "@woocommerce/eslint-plugin": "workspace:*", @@ -58,7 +58,7 @@ "eslint": "^8.32.0", "jest": "^27", "ts-jest": "^27", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "publishConfig": { "access": "public" diff --git a/packages/js/api/tsconfig.json b/packages/js/api/tsconfig.json index 8ef7d238961..0379fdd24a9 100644 --- a/packages/js/api/tsconfig.json +++ b/packages/js/api/tsconfig.json @@ -4,7 +4,11 @@ "types": [ "node", "jest", "axios", "create-hmac" ], "rootDir": "src", "outDir": "dist", - "target": "es5" + "target": "es5", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] }, "include": [ "src/" ] } diff --git a/packages/js/components/changelog/add-toggle-content-block-37253 b/packages/js/components/changelog/add-toggle-content-block-37253 new file mode 100644 index 00000000000..38395751212 --- /dev/null +++ b/packages/js/components/changelog/add-toggle-content-block-37253 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Adding simple DisplayState wrapper and modifying Collapsible component to allow rendering hidden content. diff --git a/packages/js/components/changelog/fix-37348 b/packages/js/components/changelog/fix-37348 new file mode 100644 index 00000000000..ae0096b28fc --- /dev/null +++ b/packages/js/components/changelog/fix-37348 @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Prevent duplicate registration of core blocks in client diff --git a/packages/js/components/changelog/fix-typescript-incremental-builds b/packages/js/components/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/packages/js/components/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/packages/js/components/changelog/fix-typescript-package-isolation b/packages/js/components/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/packages/js/components/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/packages/js/components/jest.config.json b/packages/js/components/jest.config.json index 91c0faef97f..3d8108048f6 100644 --- a/packages/js/components/jest.config.json +++ b/packages/js/components/jest.config.json @@ -1,4 +1,4 @@ { "rootDir": "./src", - "preset": "../../internal-js-tests/jest.config.js" + "preset": "../node_modules/@woocommerce/internal-js-tests/jest-preset.js" } diff --git a/packages/js/components/package.json b/packages/js/components/package.json index 56fe047b1e1..136755fe61c 100644 --- a/packages/js/components/package.json +++ b/packages/js/components/package.json @@ -128,6 +128,7 @@ "@types/wordpress__viewport": "^2.5.4", "@woocommerce/eslint-plugin": "workspace:*", "@woocommerce/internal-style-build": "workspace:*", + "@woocommerce/internal-js-tests": "workspace:*", "@wordpress/browserslist-config": "wp-6.0", "@wordpress/scripts": "^12.6.1", "concurrently": "^7.0.0", @@ -141,7 +142,7 @@ "rimraf": "^3.0.2", "sass-loader": "^10.2.1", "ts-jest": "^27.1.3", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "uuid": "^8.3.0", "webpack": "^5.70.0", "webpack-cli": "^3.3.12" @@ -154,12 +155,12 @@ "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "test": "pnpm -w exec turbo run turbo:test --filter=$npm_package_name", "lint": "eslint src --ext=js,ts,tsx", - "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", + "build:js": "tsc --project tsconfig.json && tsc --project tsconfig-cjs.json", "build:css": "webpack", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "lint:fix": "eslint src --ext=js,ts,tsx --fix", "prepack": "pnpm run clean && pnpm run build", - "start": "concurrently \"tsc --build ./tsconfig.json --watch\" \"webpack --watch\"", + "start": "concurrently \"tsc --project tsconfig.json --watch\" \"tsc --project tsconfig-cjs.json --watch\" \"webpack --watch\"", "test:update-snapshots": "pnpm run test -- --updateSnapshot", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, diff --git a/packages/js/components/src/collapsible-content/collapsible-content.tsx b/packages/js/components/src/collapsible-content/collapsible-content.tsx index 0bacc92dbe5..e839de2b450 100644 --- a/packages/js/components/src/collapsible-content/collapsible-content.tsx +++ b/packages/js/components/src/collapsible-content/collapsible-content.tsx @@ -7,10 +7,12 @@ import { Icon, chevronDown, chevronUp } from '@wordpress/icons'; /** * Internal dependencies */ +import { DisplayState } from '../display-state'; export type CollapsedProps = { initialCollapsed?: boolean; toggleText: string; + persistRender?: boolean; children: React.ReactNode; } & React.HTMLAttributes< HTMLDivElement >; @@ -18,9 +20,19 @@ export const CollapsibleContent: React.FC< CollapsedProps > = ( { initialCollapsed = true, toggleText, children, + persistRender = false, ...props }: CollapsedProps ) => { const [ collapsed, setCollapsed ] = useState( initialCollapsed ); + + const getState = () => { + if ( ! collapsed ) { + return 'visible'; + } + + return persistRender ? 'visually-hidden' : 'hidden'; + }; + return (
= ( { />
- { ! collapsed && ( +
{ children }
- ) } +
); }; diff --git a/packages/js/components/src/display-state/display-state.tsx b/packages/js/components/src/display-state/display-state.tsx new file mode 100644 index 00000000000..a6f88084c3e --- /dev/null +++ b/packages/js/components/src/display-state/display-state.tsx @@ -0,0 +1,28 @@ +/** + * External dependencies + */ +import { createElement, Fragment } from '@wordpress/element'; + +/** + * Internal dependencies + */ + +export type DisplayStateProps = { + state?: 'visible' | 'visually-hidden' | 'hidden'; + children: React.ReactNode; +} & React.HTMLAttributes< HTMLDivElement >; + +export const DisplayState: React.FC< DisplayStateProps > = ( { + state = 'visible', + children, +} ) => { + if ( state === 'visible' ) { + return <>{ children }; + } + + if ( state === 'visually-hidden' ) { + return
{ children }
; + } + + return null; +}; diff --git a/packages/js/components/src/display-state/index.ts b/packages/js/components/src/display-state/index.ts new file mode 100644 index 00000000000..16d59fea698 --- /dev/null +++ b/packages/js/components/src/display-state/index.ts @@ -0,0 +1 @@ +export * from './display-state'; diff --git a/packages/js/components/src/experimental-tree-control/types.ts b/packages/js/components/src/experimental-tree-control/types.ts index f97cb4ed58b..bc25193e58e 100644 --- a/packages/js/components/src/experimental-tree-control/types.ts +++ b/packages/js/components/src/experimental-tree-control/types.ts @@ -27,7 +27,7 @@ type BaseTreeProps = { * ancestors and its descendants are also selected. If it's false * only the clicked item is selected. * - * @param value The selection + * @param value The selection */ onSelect?( value: Item | Item[] ): void; /** @@ -36,7 +36,7 @@ type BaseTreeProps = { * are also unselected. If it's false only the clicked item is * unselected. * - * @param value The unselection + * @param value The unselection */ onRemove?( value: Item | Item[] ): void; /** @@ -48,8 +48,8 @@ type BaseTreeProps = { * shouldItemBeHighlighted={ isFirstChild } * /> * - * @param item The current linked tree item, useful to - * traverse the entire linked tree from this item. + * @param item The current linked tree item, useful to + * traverse the entire linked tree from this item. * * @see {@link LinkedTree} */ @@ -66,7 +66,8 @@ export type TreeProps = BaseTreeProps & > & { level?: number; items: LinkedTree[]; - /** It gives a way to render a different Element as the + /** + * It gives a way to render a different Element as the * tree item label. * * @example @@ -74,7 +75,7 @@ export type TreeProps = BaseTreeProps & * getItemLabel={ ( item ) => ${ item.data.label } } * /> * - * @param item The current rendering tree item + * @param item The current rendering tree item * * @see {@link LinkedTree} */ diff --git a/packages/js/components/src/form/form-context.ts b/packages/js/components/src/form/form-context.ts index 21c46f36e79..39c41eb8647 100644 --- a/packages/js/components/src/form/form-context.ts +++ b/packages/js/components/src/form/form-context.ts @@ -18,7 +18,7 @@ export type FormErrors< Values > = { }; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export type FormContext< Values extends Record< string, any > > = { +export type FormContextType< Values extends Record< string, any > > = { values: Values; errors: FormErrors< Values >; isDirty: boolean; @@ -51,14 +51,16 @@ export type FormContext< Values extends Record< string, any > > = { }; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const FormContext = createContext< FormContext< any > >( +export const FormContext: React.Context< FormContextType< any > > = // eslint-disable-next-line @typescript-eslint/no-explicit-any - {} as FormContext< any > -); + createContext< FormContextType< any > >( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + {} as FormContextType< any > + ); // eslint-disable-next-line @typescript-eslint/no-explicit-any export function useFormContext< Values extends Record< string, any > >() { - const formContext = useContext< FormContext< Values > >( FormContext ); + const formContext = useContext< FormContextType< Values > >( FormContext ); return formContext; } diff --git a/packages/js/components/src/form/test/index.tsx b/packages/js/components/src/form/test/index.tsx index daaae785b59..06f7bddd4ad 100644 --- a/packages/js/components/src/form/test/index.tsx +++ b/packages/js/components/src/form/test/index.tsx @@ -10,7 +10,7 @@ import { TextControl } from '@wordpress/components'; * Internal dependencies */ import { Form, useFormContext } from '../'; -import type { FormContext } from '../'; +import type { FormContextType } from '../'; import { DateTimePickerControl } from '../../date-time-picker-control'; const TestInputWithContext = () => { @@ -44,7 +44,7 @@ describe( 'Form', () => { > { ( { handleSubmit, - }: FormContext< Record< string, string > > ) => { + }: FormContextType< Record< string, string > > ) => { return ; } } @@ -71,7 +71,7 @@ describe( 'Form', () => { onChange={ mockOnChange } validate={ () => ( {} ) } > - { ( { setValue }: FormContext< Record< string, string > > ) => { + { ( { setValue }: FormContextType< Record< string, string > > ) => { return ( ; } } @@ -124,7 +124,7 @@ describe( 'Form', () => { const { queryByText } = render(
( {} ) }> - { ( { setValue }: FormContext< Record< string, string > > ) => { + { ( { setValue }: FormContextType< Record< string, string > > ) => { return ( + + + ); } diff --git a/packages/js/product-editor/src/components/header/index.ts b/packages/js/product-editor/src/components/header/index.ts index 677ca79d479..90d2fa76cfc 100644 --- a/packages/js/product-editor/src/components/header/index.ts +++ b/packages/js/product-editor/src/components/header/index.ts @@ -1 +1,2 @@ export * from './header'; +export * from './woo-more-menu-item'; diff --git a/packages/js/product-editor/src/components/header/more-menu/index.ts b/packages/js/product-editor/src/components/header/more-menu/index.ts new file mode 100644 index 00000000000..48b036d2304 --- /dev/null +++ b/packages/js/product-editor/src/components/header/more-menu/index.ts @@ -0,0 +1 @@ +export * from './more-menu'; diff --git a/packages/js/product-editor/src/components/header/more-menu/more-menu.tsx b/packages/js/product-editor/src/components/header/more-menu/more-menu.tsx new file mode 100644 index 00000000000..f86a7761b4a --- /dev/null +++ b/packages/js/product-editor/src/components/header/more-menu/more-menu.tsx @@ -0,0 +1,30 @@ +/** + * External dependencies + */ +import { createElement, Fragment } from '@wordpress/element'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore No types for this exist yet. +// eslint-disable-next-line @woocommerce/dependency-group +import { MoreMenuDropdown } from '@wordpress/interface'; +//import { displayShortcut } from '@wordpress/keycodes'; + +/** + * Internal dependencies + */ +import { WooProductMoreMenuItem } from '../woo-more-menu-item'; + +export const MoreMenu = () => { + return ( + <> + + { ( { onClose }: { onClose: () => void } ) => ( + <> + + + ) } + + + ); +}; diff --git a/packages/js/product-editor/src/components/header/style.scss b/packages/js/product-editor/src/components/header/style.scss index 79b59a277ad..fb60f0f9d4d 100644 --- a/packages/js/product-editor/src/components/header/style.scss +++ b/packages/js/product-editor/src/components/header/style.scss @@ -3,4 +3,29 @@ display: flex; align-items: center; padding: 0 $gap; + + &__actions { + margin-left: auto; + } + + .components-popover__content { + min-width: auto; + width: min-content; + } + + .woocommerce-product-header__actions { + display: flex; + + > * + * { + margin-left: $gap; + } + } + + .components-dropdown-menu__toggle { + &.is-opened { + + background-color: #1E1E1E; + color: #fff; + } + } } diff --git a/packages/js/product-editor/src/components/header/woo-more-menu-item/index.ts b/packages/js/product-editor/src/components/header/woo-more-menu-item/index.ts new file mode 100644 index 00000000000..c501b7d92a1 --- /dev/null +++ b/packages/js/product-editor/src/components/header/woo-more-menu-item/index.ts @@ -0,0 +1 @@ +export * from './woo-more-menu-item'; diff --git a/packages/js/product-editor/src/components/header/woo-more-menu-item/woo-more-menu-item.tsx b/packages/js/product-editor/src/components/header/woo-more-menu-item/woo-more-menu-item.tsx new file mode 100644 index 00000000000..67fd4a4ef1e --- /dev/null +++ b/packages/js/product-editor/src/components/header/woo-more-menu-item/woo-more-menu-item.tsx @@ -0,0 +1,37 @@ +/** + * External dependencies + */ +import { isEmpty } from 'lodash'; +import { + createSlotFill, + Slot as BaseSlot, + Fill as BaseFill, +} from '@wordpress/components'; +import { createElement, Fragment } from '@wordpress/element'; + +type WooProductMoreMenuSlot = React.FC< BaseSlot.Props >; + +type WooProductMoreMenuFill = React.FC< BaseFill.Props > & { + Slot?: WooProductMoreMenuSlot; +}; + +type CreateSlotFillReturn = { + Fill: WooProductMoreMenuFill; + Slot: WooProductMoreMenuSlot; +}; + +const { Fill, Slot }: CreateSlotFillReturn = createSlotFill( + 'WooProductMoreMenuItem' +); + +Fill.Slot = ( { fillProps } ) => ( + + { ( fills ) => { + return isEmpty( fills ) ? null : <>{ fills }; + } } + +); + +export const WooProductMoreMenuItem = Fill as WooProductMoreMenuFill & { + Slot: WooProductMoreMenuSlot; +}; diff --git a/packages/js/product-editor/src/components/index.ts b/packages/js/product-editor/src/components/index.ts index 9c70b568fe7..8a1005c6a43 100644 --- a/packages/js/product-editor/src/components/index.ts +++ b/packages/js/product-editor/src/components/index.ts @@ -10,6 +10,7 @@ export { DetailsFeatureField as __experimentalDetailsFeatureField } from './deta export { DetailsCategoriesField as __experimentalDetailsCategoriesField } from './details-categories-field'; export { DetailsSummaryField as __experimentalDetailsSummaryField } from './details-summary-field'; export { DetailsDescriptionField as __experimentalDetailsDescriptionField } from './details-description-field'; +export { WooProductMoreMenuItem as __experimentalWooProductMoreMenuItem } from './header'; export { Editor as __experimentalEditor, ProductEditorSettings, diff --git a/packages/js/product-editor/src/components/pricing-block/block.json b/packages/js/product-editor/src/components/pricing-block/block.json new file mode 100644 index 00000000000..9ca3884ba5f --- /dev/null +++ b/packages/js/product-editor/src/components/pricing-block/block.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 2, + "name": "woocommerce/product-pricing", + "description": "A product price block with currency display.", + "title": "Product pricing", + "category": "widgets", + "keywords": [ "products", "price" ], + "textdomain": "default", + "attributes": { + "name": { + "type": "string" + }, + "label": { + "type": "string" + }, + "showPricingSection": { + "type": "boolean" + } + }, + "supports": { + "align": false, + "html": false, + "multiple": false, + "reusable": false, + "inserter": false, + "lock": false + } +} diff --git a/packages/js/product-editor/src/components/pricing-block/edit.tsx b/packages/js/product-editor/src/components/pricing-block/edit.tsx new file mode 100644 index 00000000000..b9b01ed1445 --- /dev/null +++ b/packages/js/product-editor/src/components/pricing-block/edit.tsx @@ -0,0 +1,89 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { createElement, useContext, Fragment } from '@wordpress/element'; +import interpolateComponents from '@automattic/interpolate-components'; +import { Link } from '@woocommerce/components'; +import { useBlockProps } from '@wordpress/block-editor'; +import { useEntityProp } from '@wordpress/core-data'; +import { BlockAttributes } from '@wordpress/blocks'; +import { CurrencyContext } from '@woocommerce/currency'; +import { getSetting } from '@woocommerce/settings'; +import { recordEvent } from '@woocommerce/tracks'; +import { + BaseControl, + // @ts-expect-error `__experimentalInputControl` does exist. + __experimentalInputControl as InputControl, +} from '@wordpress/components'; + +/** + * Internal dependencies + */ +import { formatCurrencyDisplayValue } from '../../utils'; +import { useCurrencyInputProps } from '../../hooks/use-currency-input-props'; + +export function Edit( { attributes }: { attributes: BlockAttributes } ) { + const blockProps = useBlockProps(); + const { name, label, showPricingSection = false } = attributes; + const [ regularPrice, setRegularPrice ] = useEntityProp< string >( + 'postType', + 'product', + name + ); + const context = useContext( CurrencyContext ); + const { getCurrencyConfig, formatAmount } = context; + const currencyConfig = getCurrencyConfig(); + const inputProps = useCurrencyInputProps( { + value: regularPrice, + setValue: setRegularPrice, + } ); + + const taxSettingsElement = showPricingSection + ? interpolateComponents( { + mixedString: __( + 'Manage more settings in {{link}}Pricing.{{/link}}', + 'woocommerce' + ), + components: { + link: ( + { + recordEvent( + 'product_pricing_list_price_help_tax_settings_click' + ); + } } + > + <> + + ), + }, + } ) + : null; + + return ( +
+ + + +
+ ); +} diff --git a/packages/js/product-editor/src/components/pricing-block/index.ts b/packages/js/product-editor/src/components/pricing-block/index.ts new file mode 100644 index 00000000000..59d35906a12 --- /dev/null +++ b/packages/js/product-editor/src/components/pricing-block/index.ts @@ -0,0 +1,22 @@ +/** + * Internal dependencies + */ +import { initBlock } from '../../utils'; +import metadata from './block.json'; +import { Edit } from './edit'; + +const { name } = metadata; + +export { metadata, name }; + +export const settings = { + example: {}, + edit: Edit, +}; + +export const init = () => + initBlock( { + name, + metadata: metadata as never, + settings, + } ); diff --git a/packages/js/product-editor/src/components/tab/edit.tsx b/packages/js/product-editor/src/components/tab/edit.tsx index a7bf3586b55..226dbd92ea8 100644 --- a/packages/js/product-editor/src/components/tab/edit.tsx +++ b/packages/js/product-editor/src/components/tab/edit.tsx @@ -17,7 +17,7 @@ export function Edit( { }: { attributes: BlockAttributes; context?: { - selectedTab?: string; + selectedTab?: string | null; }; } ) { const blockProps = useBlockProps(); diff --git a/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx b/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx new file mode 100644 index 00000000000..615f50cc46a --- /dev/null +++ b/packages/js/product-editor/src/components/tabs/test/tabs.spec.tsx @@ -0,0 +1,160 @@ +/** + * External dependencies + */ +import { render, fireEvent } from '@testing-library/react'; +import { getQuery, navigateTo } from '@woocommerce/navigation'; +import React, { createElement } from 'react'; +import { SlotFillProvider } from '@wordpress/components'; +import { useState } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { Tabs } from '../'; +import { Edit as Tab } from '../../tab/edit'; + +jest.mock( '@wordpress/block-editor', () => ( { + ...jest.requireActual( '@wordpress/block-editor' ), + useBlockProps: jest.fn(), +} ) ); + +jest.mock( '@woocommerce/navigation', () => ( { + ...jest.requireActual( '@woocommerce/navigation' ), + navigateTo: jest.fn(), + getQuery: jest.fn().mockReturnValue( {} ), +} ) ); + +function MockTabs( { onChange = jest.fn() } ) { + const [ selected, setSelected ] = useState< string | null >( null ); + const mockContext = { + selectedTab: selected, + }; + + return ( + + { + setSelected( tabId ); + onChange( tabId ); + } } + /> + + + + + ); +} + +describe( 'Tabs', () => { + beforeEach( () => { + ( getQuery as jest.Mock ).mockReturnValue( { + tab: null, + } ); + } ); + + it( 'should render tab buttons added to the slot', () => { + const { queryByText } = render( ); + expect( queryByText( 'Test button 1' ) ).toBeInTheDocument(); + expect( queryByText( 'Test button 2' ) ).toBeInTheDocument(); + } ); + + it( 'should set the first tab as active initially', () => { + const { queryByText } = render( ); + expect( queryByText( 'Test button 1' ) ).toHaveAttribute( + 'aria-selected', + 'true' + ); + expect( queryByText( 'Test button 2' ) ).toHaveAttribute( + 'aria-selected', + 'false' + ); + } ); + + it( 'should navigate to a new URL when a tab is clicked', () => { + const { getByText } = render( ); + const button = getByText( 'Test button 2' ); + fireEvent.click( button ); + + expect( navigateTo ).toHaveBeenLastCalledWith( { + url: 'admin.php?page=wc-admin&tab=test2', + } ); + } ); + + it( 'should select the tab provided in the URL initially', () => { + ( getQuery as jest.Mock ).mockReturnValue( { + tab: 'test2', + } ); + + const { getByText } = render( ); + + expect( getByText( 'Test button 2' ) ).toHaveAttribute( + 'aria-selected', + 'true' + ); + } ); + + it( 'should select the tab provided on URL change', () => { + const { getByText, rerender } = render( ); + + ( getQuery as jest.Mock ).mockReturnValue( { + tab: 'test3', + } ); + + rerender( ); + + expect( getByText( 'Test button 3' ) ).toHaveAttribute( + 'aria-selected', + 'true' + ); + } ); + + it( 'should call the onChange props when changing', async () => { + const mockOnChange = jest.fn(); + const { rerender } = render( ); + + expect( mockOnChange ).toHaveBeenCalledWith( 'test1' ); + + ( getQuery as jest.Mock ).mockReturnValue( { + tab: 'test2', + } ); + + rerender( ); + + expect( mockOnChange ).toHaveBeenCalledWith( 'test2' ); + } ); + + it( 'should add a class to the initially selected tab panel', async () => { + const { getByRole } = render( ); + const panel1 = getByRole( 'tabpanel', { name: 'Test button 1' } ); + const panel2 = getByRole( 'tabpanel', { name: 'Test button 2' } ); + + expect( panel1.classList ).toContain( 'is-selected' ); + expect( panel2.classList ).not.toContain( 'is-selected' ); + } ); + + it( 'should add a class to the newly selected tab panel', async () => { + const { getByText, getByRole, rerender } = render( ); + const button = getByText( 'Test button 2' ); + fireEvent.click( button ); + const panel1 = getByRole( 'tabpanel', { name: 'Test button 1' } ); + const panel2 = getByRole( 'tabpanel', { name: 'Test button 2' } ); + + ( getQuery as jest.Mock ).mockReturnValue( { + tab: 'test2', + } ); + + rerender( ); + + expect( panel1.classList ).not.toContain( 'is-selected' ); + expect( panel2.classList ).toContain( 'is-selected' ); + } ); +} ); diff --git a/packages/js/product-editor/src/hooks/index.ts b/packages/js/product-editor/src/hooks/index.ts index 700bcf73864..6899f9e1335 100644 --- a/packages/js/product-editor/src/hooks/index.ts +++ b/packages/js/product-editor/src/hooks/index.ts @@ -1,2 +1,3 @@ export { useProductHelper as __experimentalUseProductHelper } from './use-product-helper'; export { useVariationsOrder as __experimentalUseVariationsOrder } from './use-variations-order'; +export { useCurrencyInputProps as __experimentalUseCurrencyInputProps } from './use-currency-input-props'; diff --git a/packages/js/product-editor/src/hooks/use-currency-input-props.ts b/packages/js/product-editor/src/hooks/use-currency-input-props.ts new file mode 100644 index 00000000000..da6b53d573a --- /dev/null +++ b/packages/js/product-editor/src/hooks/use-currency-input-props.ts @@ -0,0 +1,77 @@ +/** + * External dependencies + */ +import { CurrencyContext } from '@woocommerce/currency'; +import { useContext } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { useProductHelper } from './use-product-helper'; + +export type CurrencyInputProps = { + prefix: string; + className: string; + sanitize: ( value: string | number ) => string; + onFocus: ( event: React.FocusEvent< HTMLInputElement > ) => void; + onKeyUp: ( event: React.KeyboardEvent< HTMLInputElement > ) => void; +}; + +type Props = { + value: string; + setValue: ( value: string ) => void; + onFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void; + onKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void; +}; + +export const useCurrencyInputProps = ( { + value, + setValue, + onFocus, + onKeyUp, +}: Props ) => { + const { sanitizePrice } = useProductHelper(); + + const context = useContext( CurrencyContext ); + const { getCurrencyConfig } = context; + const currencyConfig = getCurrencyConfig(); + + const currencyInputProps: CurrencyInputProps = { + prefix: currencyConfig.symbol, + className: 'half-width-field components-currency-control', + sanitize: ( val: string | number ) => { + return sanitizePrice( String( val ) ); + }, + onFocus( event: React.FocusEvent< HTMLInputElement > ) { + // In some browsers like safari .select() function inside + // the onFocus event doesn't work as expected because it + // conflicts with onClick the first time user click the + // input. Using setTimeout defers the text selection and + // avoid the unexpected behaviour. + setTimeout( + function deferSelection( element: HTMLInputElement ) { + element.select(); + }, + 0, + event.currentTarget + ); + if ( onFocus ) { + onFocus( event ); + } + }, + onKeyUp( event: React.KeyboardEvent< HTMLInputElement > ) { + const amount = Number.parseFloat( sanitizePrice( value || '0' ) ); + const step = Number( event.currentTarget.step || '1' ); + if ( event.code === 'ArrowUp' ) { + setValue( String( amount + step ) ); + } + if ( event.code === 'ArrowDown' ) { + setValue( String( amount - step ) ); + } + if ( onKeyUp ) { + onKeyUp( event ); + } + }, + }; + return currencyInputProps; +}; diff --git a/packages/js/product-editor/src/hooks/use-validation/README.md b/packages/js/product-editor/src/hooks/use-validation/README.md new file mode 100644 index 00000000000..2c8b83977db --- /dev/null +++ b/packages/js/product-editor/src/hooks/use-validation/README.md @@ -0,0 +1,41 @@ +# useValidation + +This custom hook uses the helper functions `const { lockPostSaving, unlockPostSaving } = useDispatch( 'core/editor' );` to lock/unlock the current editing product before saving it. + +## Usage + +Syncronous validation + +```typescript +import { useCallback } from '@wordpress/element'; +import { useValidation } from '@woocommerce/product-editor'; + +const product = ...; + +const validateTitle = useCallback( (): boolean => { + if ( product.title.length < 2 ) { + return false; + } + return true; +}, [ product.title ] ); + +const isTitleValid = useValidation( 'product/title', validateTitle ); +``` + +Asyncronous validation + +```typescript +import { useCallback } from '@wordpress/element'; +import { useValidation } from '@woocommerce/product-editor'; + +const product = ...; + +const validateSlug = useCallback( async (): Promise< boolean > => { + return fetch( `.../validate-slug?slug=${ product.slug }` ) + .then( ( response ) => response.json() ) + .then( ( { isValid } ) => isValid ) + .catch( () => false ); +}, [ product.slug ] ); + +const isSlugValid = useValidation( 'product/slug', validateSlug ); +``` diff --git a/packages/js/product-editor/src/hooks/use-validation/index.ts b/packages/js/product-editor/src/hooks/use-validation/index.ts new file mode 100644 index 00000000000..a6a64cadb31 --- /dev/null +++ b/packages/js/product-editor/src/hooks/use-validation/index.ts @@ -0,0 +1 @@ +export * from './use-validation'; diff --git a/packages/js/product-editor/src/hooks/use-validation/test/use-validation.test.ts b/packages/js/product-editor/src/hooks/use-validation/test/use-validation.test.ts new file mode 100644 index 00000000000..1ea6903fea7 --- /dev/null +++ b/packages/js/product-editor/src/hooks/use-validation/test/use-validation.test.ts @@ -0,0 +1,95 @@ +/** + * External dependencies + */ +import { renderHook } from '@testing-library/react-hooks'; +import { useDispatch } from '@wordpress/data'; + +/** + * Internal dependencies + */ +import { useValidation } from '../use-validation'; + +jest.mock( '@wordpress/data', () => ( { + useDispatch: jest.fn(), +} ) ); + +describe( 'useValidation', () => { + const useDispatchMock = useDispatch as jest.Mock; + const lockPostSaving = jest.fn(); + const unlockPostSaving = jest.fn(); + + beforeEach( () => { + useDispatchMock.mockReturnValue( { + lockPostSaving, + unlockPostSaving, + } ); + } ); + + afterEach( () => { + jest.clearAllMocks(); + } ); + + describe( 'sync', () => { + it( 'should lock the editor if validate returns false', async () => { + const { result, waitForNextUpdate } = renderHook( () => + useValidation( 'product/name', () => false ) + ); + + await waitForNextUpdate(); + + expect( result.current ).toBeFalsy(); + expect( lockPostSaving ).toHaveBeenCalled(); + expect( unlockPostSaving ).not.toHaveBeenCalled(); + } ); + + it( 'should unlock the editor if validate returns true', async () => { + const { result, waitForNextUpdate } = renderHook( () => + useValidation( 'product/name', () => true ) + ); + + await waitForNextUpdate(); + + expect( result.current ).toBeTruthy(); + expect( lockPostSaving ).not.toHaveBeenCalled(); + expect( unlockPostSaving ).toHaveBeenCalled(); + } ); + } ); + + describe( 'async', () => { + it( 'should lock the editor if validate resolves false', async () => { + const { result, waitForNextUpdate } = renderHook( () => + useValidation( 'product/name', () => Promise.resolve( false ) ) + ); + + await waitForNextUpdate(); + + expect( result.current ).toBeFalsy(); + expect( lockPostSaving ).toHaveBeenCalled(); + expect( unlockPostSaving ).not.toHaveBeenCalled(); + } ); + + it( 'should lock the editor if validate rejects', async () => { + const { result, waitForNextUpdate } = renderHook( () => + useValidation( 'product/name', () => Promise.reject() ) + ); + + await waitForNextUpdate(); + + expect( result.current ).toBeFalsy(); + expect( lockPostSaving ).toHaveBeenCalled(); + expect( unlockPostSaving ).not.toHaveBeenCalled(); + } ); + + it( 'should unlock the editor if validate resolves true', async () => { + const { result, waitForNextUpdate } = renderHook( () => + useValidation( 'product/name', () => Promise.resolve( true ) ) + ); + + await waitForNextUpdate(); + + expect( result.current ).toBeTruthy(); + expect( lockPostSaving ).not.toHaveBeenCalled(); + expect( unlockPostSaving ).toHaveBeenCalled(); + } ); + } ); +} ); diff --git a/packages/js/product-editor/src/hooks/use-validation/use-validation.ts b/packages/js/product-editor/src/hooks/use-validation/use-validation.ts new file mode 100644 index 00000000000..d0956431848 --- /dev/null +++ b/packages/js/product-editor/src/hooks/use-validation/use-validation.ts @@ -0,0 +1,43 @@ +/** + * External dependencies + */ +import { useDispatch } from '@wordpress/data'; +import { useEffect, useState } from '@wordpress/element'; + +/** + * Signals that product saving is locked. + * + * @param lockName The namespace used to lock the product saving if validation fails. + * @param validate The validator function. + */ +export function useValidation( + lockName: string, + validate: () => boolean | Promise< boolean > +): boolean | undefined { + const [ isValid, setIsValid ] = useState< boolean | undefined >(); + const { lockPostSaving, unlockPostSaving } = useDispatch( 'core/editor' ); + + useEffect( () => { + let validationResponse = validate(); + + if ( typeof validationResponse === 'boolean' ) { + validationResponse = Promise.resolve( validationResponse ); + } + + validationResponse + .then( ( isValidationValid ) => { + if ( isValidationValid ) { + unlockPostSaving( lockName ); + } else { + lockPostSaving( lockName ); + } + setIsValid( isValidationValid ); + } ) + .catch( () => { + lockPostSaving( lockName ); + setIsValid( false ); + } ); + }, [ lockName, validate, lockPostSaving, unlockPostSaving ] ); + + return isValid; +} diff --git a/packages/js/product-editor/src/style.scss b/packages/js/product-editor/src/style.scss index 99f2ce949ee..508d0edf477 100644 --- a/packages/js/product-editor/src/style.scss +++ b/packages/js/product-editor/src/style.scss @@ -8,3 +8,4 @@ @import 'components/section/style.scss'; @import 'components/tab/style.scss'; @import 'components/tabs/style.scss'; +@import 'components/details-summary-block/style.scss'; diff --git a/packages/js/product-editor/src/utils/constants.ts b/packages/js/product-editor/src/utils/constants.ts index 0aa72fd516a..6c0b603d436 100644 --- a/packages/js/product-editor/src/utils/constants.ts +++ b/packages/js/product-editor/src/utils/constants.ts @@ -7,3 +7,4 @@ export const ADD_NEW_SHIPPING_CLASS_OPTION_VALUE = export const UNCATEGORIZED_CATEGORY_SLUG = 'uncategorized'; export const PRODUCT_VARIATION_TITLE_LIMIT = 32; export const STANDARD_RATE_TAX_CLASS_SLUG = 'standard'; +export const AUTO_DRAFT_NAME = 'AUTO-DRAFT'; diff --git a/packages/js/product-editor/src/utils/create-ordered-children.tsx b/packages/js/product-editor/src/utils/create-ordered-children.tsx index a3341f31b3f..1eb0b49ecf7 100644 --- a/packages/js/product-editor/src/utils/create-ordered-children.tsx +++ b/packages/js/product-editor/src/utils/create-ordered-children.tsx @@ -64,7 +64,7 @@ function createOrderedChildren< T = Fill.Props, S = Record< string, unknown > >( order: number, props: T, injectProps?: S -) { +): React.ReactElement { const { children: childrenToRender, props: propsToRender } = getChildrenAndProps( children, order, props, injectProps ); return cloneElement( childrenToRender, propsToRender ); diff --git a/packages/js/product-editor/src/utils/get-header-title.ts b/packages/js/product-editor/src/utils/get-header-title.ts new file mode 100644 index 00000000000..9ebfd701855 --- /dev/null +++ b/packages/js/product-editor/src/utils/get-header-title.ts @@ -0,0 +1,35 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +import { AUTO_DRAFT_NAME } from './constants'; + +/** + * Get the header title using the product name. + * + * @param editedProductName Name value entered for the product. + * @param initialProductName Name already persisted to the database. + * @return The new title + */ +export const getHeaderTitle = ( + editedProductName: string, + initialProductName: string +): string => { + const isProductNameNotEmpty = Boolean( editedProductName ); + const isProductNameDirty = editedProductName !== initialProductName; + const isCreating = initialProductName === AUTO_DRAFT_NAME; + + if ( isProductNameNotEmpty && isProductNameDirty ) { + return editedProductName; + } + + if ( isCreating ) { + return __( 'Add new product', 'woocommerce' ); + } + + return initialProductName; +}; diff --git a/packages/js/product-editor/src/utils/get-product-stock-status.ts b/packages/js/product-editor/src/utils/get-product-stock-status.ts index 88ba69a46eb..9cc8f5419f3 100644 --- a/packages/js/product-editor/src/utils/get-product-stock-status.ts +++ b/packages/js/product-editor/src/utils/get-product-stock-status.ts @@ -51,7 +51,9 @@ export const getProductStockStatus = ( } if ( product.stock_status ) { - return PRODUCT_STOCK_STATUS_LABELS[ product.stock_status ]; + return PRODUCT_STOCK_STATUS_LABELS[ + product.stock_status as PRODUCT_STOCK_STATUS_KEYS + ]; } return PRODUCT_STOCK_STATUS_LABELS.instock; @@ -77,6 +79,8 @@ export const getProductStockStatusClass = ( return PRODUCT_STOCK_STATUS_CLASSES.outofstock; } return product.stock_status - ? PRODUCT_STOCK_STATUS_CLASSES[ product.stock_status ] + ? PRODUCT_STOCK_STATUS_CLASSES[ + product.stock_status as PRODUCT_STOCK_STATUS_KEYS + ] : ''; }; diff --git a/packages/js/product-editor/src/utils/get-product-title.ts b/packages/js/product-editor/src/utils/get-product-title.ts index 2f92e9d81b9..dc090527ca0 100644 --- a/packages/js/product-editor/src/utils/get-product-title.ts +++ b/packages/js/product-editor/src/utils/get-product-title.ts @@ -3,7 +3,10 @@ */ import { __ } from '@wordpress/i18n'; -export const AUTO_DRAFT_NAME = 'AUTO-DRAFT'; +/** + * Internal dependencies + */ +import { AUTO_DRAFT_NAME } from './constants'; /** * Get the product title for use in the header. diff --git a/packages/js/product-editor/src/utils/index.ts b/packages/js/product-editor/src/utils/index.ts index b2ddb029f36..67a0014effc 100644 --- a/packages/js/product-editor/src/utils/index.ts +++ b/packages/js/product-editor/src/utils/index.ts @@ -1,16 +1,18 @@ /** * Internal dependencies */ +import { AUTO_DRAFT_NAME } from './constants'; import { formatCurrencyDisplayValue } from './format-currency-display-value'; import { getCheckboxTracks } from './get-checkbox-tracks'; import { getCurrencySymbolProps } from './get-currency-symbol-props'; import { getDerivedProductType } from './get-derived-product-type'; +import { getHeaderTitle } from './get-header-title'; import { getProductStatus, PRODUCT_STATUS_LABELS } from './get-product-status'; import { getProductStockStatus, getProductStockStatusClass, } from './get-product-stock-status'; -import { getProductTitle, AUTO_DRAFT_NAME } from './get-product-title'; +import { getProductTitle } from './get-product-title'; import { getProductVariationTitle, getTruncatedProductVariationTitle, @@ -27,6 +29,7 @@ export { getCheckboxTracks, getCurrencySymbolProps, getDerivedProductType, + getHeaderTitle, getProductStatus, getProductStockStatus, getProductStockStatusClass, diff --git a/packages/js/product-editor/src/utils/init-blocks.ts b/packages/js/product-editor/src/utils/init-blocks.ts index b8dc4118138..06404008120 100644 --- a/packages/js/product-editor/src/utils/init-blocks.ts +++ b/packages/js/product-editor/src/utils/init-blocks.ts @@ -1,26 +1,31 @@ /** * External dependencies */ -import { BlockConfiguration, registerBlockType } from '@wordpress/blocks'; +import { + Block, + BlockConfiguration, + registerBlockType, +} from '@wordpress/blocks'; -interface BlockRepresentation { - name: string; - metadata: BlockConfiguration; - settings: Partial< BlockConfiguration >; +interface BlockRepresentation< T extends Record< string, object > > { + name?: string; + metadata: BlockConfiguration< T >; + settings: Partial< BlockConfiguration< T > >; } /** * Function to register an individual block. * - * @param {Object} block The block to be registered. - * - * @return {?WPBlockType} The block, if it has been successfully registered; - * otherwise `undefined`. + * @param block The block to be registered. + * @return The block, if it has been successfully registered; otherwise `undefined`. */ -export const initBlock = ( block: BlockRepresentation ) => { +export function initBlock< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + T extends Record< string, any > = Record< string, any > +>( block: BlockRepresentation< T > ): Block< T > | undefined { if ( ! block ) { return; } const { metadata, settings, name } = block; - return registerBlockType( { name, ...metadata }, settings ); -}; + return registerBlockType< T >( { name, ...metadata }, settings ); +} diff --git a/packages/js/product-editor/tsconfig-cjs.json b/packages/js/product-editor/tsconfig-cjs.json index 5257768d6b4..1df8b7b1f7a 100644 --- a/packages/js/product-editor/tsconfig-cjs.json +++ b/packages/js/product-editor/tsconfig-cjs.json @@ -6,6 +6,10 @@ ], "compilerOptions": { "outDir": "build", - "resolveJsonModule": true + "resolveJsonModule": true, + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/product-editor/tsconfig.json b/packages/js/product-editor/tsconfig.json index 14d0526e858..86bd897a9f3 100644 --- a/packages/js/product-editor/tsconfig.json +++ b/packages/js/product-editor/tsconfig.json @@ -6,7 +6,11 @@ "declaration": true, "declarationMap": true, "declarationDir": "./build-types", - "resolveJsonModule": true + "resolveJsonModule": true, + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] }, "include": [ "**/*.d.ts", diff --git a/packages/js/product-editor/typings/global.d.ts b/packages/js/product-editor/typings/global.d.ts index 69abbdeff5e..3a27ae17ad8 100644 --- a/packages/js/product-editor/typings/global.d.ts +++ b/packages/js/product-editor/typings/global.d.ts @@ -6,4 +6,3 @@ declare global { /*~ If your module exports nothing, you'll need this line. Otherwise, delete it */ export {}; - diff --git a/packages/js/product-editor/typings/index.d.ts b/packages/js/product-editor/typings/index.d.ts new file mode 100644 index 00000000000..fa38181628c --- /dev/null +++ b/packages/js/product-editor/typings/index.d.ts @@ -0,0 +1,18 @@ +declare module '@woocommerce/settings' { + export declare function getAdminLink( path: string ): string; + export declare function getSetting< T >( + name: string, + fallback?: unknown, + filter = ( val: unknown, fb: unknown ) => + typeof val !== 'undefined' ? val : fb + ): T; +} + +declare module '@wordpress/core-data' { + function useEntityProp< T = unknown >( + kind: string, + name: string, + prop: string, + id?: string + ): [ T, ( value: T ) => void, T ]; +} diff --git a/packages/js/tracks/changelog/fix-typescript-incremental-builds b/packages/js/tracks/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/packages/js/tracks/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/packages/js/tracks/changelog/fix-typescript-package-isolation b/packages/js/tracks/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/packages/js/tracks/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/packages/js/tracks/package.json b/packages/js/tracks/package.json index a69bd0cb5d2..1db8673fee1 100644 --- a/packages/js/tracks/package.json +++ b/packages/js/tracks/package.json @@ -32,13 +32,13 @@ "access": "public" }, "scripts": { - "turbo:build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", + "turbo:build": "tsc --project tsconfig.json && tsc --project tsconfig-cjs.json", "prepare": "composer install", "changelog": "composer exec -- changelogger", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint src", - "start": "tsc --build --watch", + "start": "concurrently \"tsc --project tsconfig.json --watch\" \"tsc --project tsconfig-cjs.json --watch\"", "prepack": "pnpm run clean && pnpm run build", "lint:fix": "eslint src --fix" }, @@ -49,9 +49,10 @@ "eslint": "^8.32.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", + "concurrently": "^7.0.0", "rimraf": "^3.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "lint-staged": { "*.(t|j)s?(x)": [ diff --git a/packages/js/tracks/tsconfig-cjs.json b/packages/js/tracks/tsconfig-cjs.json index 035d2318baf..c8b5b6a6b96 100644 --- a/packages/js/tracks/tsconfig-cjs.json +++ b/packages/js/tracks/tsconfig-cjs.json @@ -1,6 +1,10 @@ { "extends": "../tsconfig-cjs", "compilerOptions": { - "outDir": "build" + "outDir": "build", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/tracks/tsconfig.json b/packages/js/tracks/tsconfig.json index ea9f201d401..c5f351a60cc 100644 --- a/packages/js/tracks/tsconfig.json +++ b/packages/js/tracks/tsconfig.json @@ -5,6 +5,10 @@ "outDir": "build-module", "declaration": true, "declarationMap": true, - "declarationDir": "./build-types" + "declarationDir": "./build-types", + "typeRoots": [ + "./typings", + "./node_modules/@types" + ] } } diff --git a/packages/js/tsconfig-cjs.json b/packages/js/tsconfig-cjs.json index 1e111bd6b7a..cb04a849d16 100644 --- a/packages/js/tsconfig-cjs.json +++ b/packages/js/tsconfig-cjs.json @@ -1,12 +1,11 @@ { "extends": "./tsconfig", "compilerOptions": { - "target": "es6", + "target": "es2019", "module": "commonjs", "declaration": false, "declarationMap": false, "declarationDir": null, - "outDir": "build", - "composite": false + "outDir": "build" } } diff --git a/packages/js/tsconfig.json b/packages/js/tsconfig.json index 56b0aa421ce..b0bd9d3e2e4 100644 --- a/packages/js/tsconfig.json +++ b/packages/js/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "composite": true, "target": "es2019", "module": "esnext", "moduleResolution": "node", @@ -11,7 +10,8 @@ "jsx": "react", "jsxFactory": "createElement", "jsxFragmentFactory": "Fragment", - "incremental": true + "incremental": true, + "typeRoots": [] }, "exclude": [ "node_modules", @@ -21,6 +21,7 @@ "**/build-types", "**/test/*", "**/jest.config.js", + "**/jest-preset.js", "**/webpack.*.js", "**/babel.config.js" ] diff --git a/phpcs.xml b/phpcs.xml index 9103caf8335..ae87307fda2 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -27,7 +27,7 @@ - + diff --git a/plugins/woocommerce-admin/client/customer-effort-score-tracks/constants.ts b/plugins/woocommerce-admin/client/customer-effort-score-tracks/constants.ts deleted file mode 100644 index 4a7ee0b3609..00000000000 --- a/plugins/woocommerce-admin/client/customer-effort-score-tracks/constants.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const SHOWN_FOR_ACTIONS_OPTION_NAME = - 'woocommerce_ces_shown_for_actions'; -export const ADMIN_INSTALL_TIMESTAMP_OPTION_NAME = - 'woocommerce_admin_install_timestamp'; diff --git a/plugins/woocommerce-admin/client/customer-effort-score-tracks/index.js b/plugins/woocommerce-admin/client/customer-effort-score-tracks/index.js deleted file mode 100644 index bd9b84cbbe4..00000000000 --- a/plugins/woocommerce-admin/client/customer-effort-score-tracks/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as CustomerEffortScoreTracks } from './customer-effort-score-tracks'; -export { default as CustomerEffortScoreTracksContainer } from './customer-effort-score-tracks-container'; -export * from './customer-effort-score-modal-container.tsx'; diff --git a/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-ces-footer.tsx b/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-ces-footer.tsx index c9814047216..453022a2ae8 100644 --- a/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-ces-footer.tsx +++ b/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-ces-footer.tsx @@ -9,6 +9,7 @@ import { WooFooterItem } from '@woocommerce/admin-layout'; import { Pill } from '@woocommerce/components'; import { ALLOW_TRACKING_OPTION_NAME, + SHOWN_FOR_ACTIONS_OPTION_NAME, STORE_KEY, } from '@woocommerce/customer-effort-score'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; @@ -17,7 +18,6 @@ import { OPTIONS_STORE_NAME } from '@woocommerce/data'; * Internal dependencies */ import './product-mvp-ces-footer.scss'; -import { SHOWN_FOR_ACTIONS_OPTION_NAME } from './constants'; export const PRODUCT_MVP_CES_ACTION_OPTION_NAME = 'woocommerce_ces_product_mvp_ces_action'; diff --git a/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-feedback-modal-container.tsx b/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-feedback-modal-container.tsx index 27b8d0f9f0a..41505f2f8b1 100644 --- a/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-feedback-modal-container.tsx +++ b/plugins/woocommerce-admin/client/customer-effort-score-tracks/product-mvp-feedback-modal-container.tsx @@ -11,7 +11,9 @@ import { getAdminLink } from '@woocommerce/settings'; import { useFormContext } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; -export const ProductMVPFeedbackModalContainer: React.FC = () => { +export const ProductMVPFeedbackModalContainer: React.FC< { + productId?: number; +} > = ( { productId: _productId } ) => { const { values } = useFormContext< Product >(); const { hideProductMVPFeedbackModal } = useDispatch( STORE_KEY ); const { isProductMVPModalVisible } = useSelect( ( select ) => { @@ -21,8 +23,10 @@ export const ProductMVPFeedbackModalContainer: React.FC = () => { }; } ); - const classicEditorUrl = values.id - ? getAdminLink( `post.php?post=${ values.id }&action=edit` ) + const productId = _productId ?? values.id; + + const classicEditorUrl = productId + ? getAdminLink( `post.php?post=${ productId }&action=edit` ) : getAdminLink( 'post-new.php?post_type=product' ); const recordScore = ( checked: string[], comments: string ) => { diff --git a/plugins/woocommerce-admin/client/homescreen/constants.js b/plugins/woocommerce-admin/client/homescreen/constants.js index b0b7575df8f..335e1bea6fe 100644 --- a/plugins/woocommerce-admin/client/homescreen/constants.js +++ b/plugins/woocommerce-admin/client/homescreen/constants.js @@ -9,9 +9,3 @@ export const WELCOME_MODAL_DISMISSED_OPTION_NAME = */ export const WELCOME_FROM_CALYPSO_MODAL_DISMISSED_OPTION_NAME = 'woocommerce_welcome_from_calypso_modal_dismissed'; - -/** - * WooCommerce Admin installation timestamp option name. - */ -export const WOOCOMMERCE_ADMIN_INSTALL_TIMESTAMP_OPTION_NAME = - 'woocommerce_admin_install_timestamp'; diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index 41a0866a6d8..67173157a26 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -3,6 +3,7 @@ */ import '@wordpress/notices'; import { render } from '@wordpress/element'; +import { CustomerEffortScoreTracksContainer } from '@woocommerce/customer-effort-score'; import { withCurrentUserHydration, withSettingsHydration, @@ -14,7 +15,6 @@ import { import './stylesheets/_index.scss'; import { getAdminSetting } from '~/utils/admin-settings'; import { PageLayout, EmbedLayout, PrimaryLayout as NoticeArea } from './layout'; -import { CustomerEffortScoreTracksContainer } from './customer-effort-score-tracks'; import { EmbeddedBodyLayout } from './embedded-body-layout'; import { WcAdminPaymentsGatewaysBannerSlot } from './payments/payments-settings-banner-slotfill'; import { WcAdminConflictErrorSlot } from './settings/conflict-error-slotfill.js'; diff --git a/plugins/woocommerce-admin/client/jest.config.js b/plugins/woocommerce-admin/client/jest.config.js index b914507a01f..2532b7004c2 100644 --- a/plugins/woocommerce-admin/client/jest.config.js +++ b/plugins/woocommerce-admin/client/jest.config.js @@ -1,6 +1,6 @@ module.exports = { rootDir: './', - preset: '../../../packages/js/internal-js-tests/jest.config.js', + preset: '../node_modules/@woocommerce/internal-js-tests/jest-preset.js', globals: { 'ts-jest': { diagnostics: { diff --git a/plugins/woocommerce-admin/client/layout/index.js b/plugins/woocommerce-admin/client/layout/index.js index b3321181ad3..9a6344e09b0 100644 --- a/plugins/woocommerce-admin/client/layout/index.js +++ b/plugins/woocommerce-admin/client/layout/index.js @@ -17,7 +17,10 @@ import { Children, cloneElement } from 'react'; import PropTypes from 'prop-types'; import { get, isFunction, identity, memoize } from 'lodash'; import { parse } from 'qs'; -import { triggerExitPageCesSurvey } from '@woocommerce/customer-effort-score'; +import { + CustomerEffortScoreModalContainer, + triggerExitPageCesSurvey, +} from '@woocommerce/customer-effort-score'; import { getHistory, getQuery } from '@woocommerce/navigation'; import { PLUGINS_STORE_NAME, @@ -38,7 +41,6 @@ import { Header } from '../header'; import { Footer } from './footer'; import Notices from './notices'; import TransientNotices from './transient-notices'; -import { CustomerEffortScoreModalContainer } from '../customer-effort-score-tracks'; import { getAdminSetting } from '~/utils/admin-settings'; import '~/activity-panel'; import '~/mobile-banner'; diff --git a/plugins/woocommerce-admin/client/marketing/components/CollapsibleCard/CollapsibleCard.tsx b/plugins/woocommerce-admin/client/marketing/components/CollapsibleCard/CollapsibleCard.tsx index c7044810222..d6f811b5796 100644 --- a/plugins/woocommerce-admin/client/marketing/components/CollapsibleCard/CollapsibleCard.tsx +++ b/plugins/woocommerce-admin/client/marketing/components/CollapsibleCard/CollapsibleCard.tsx @@ -64,7 +64,7 @@ const CollapsibleCard: React.FC< CollapsibleCardProps > = ( { { ! collapsed && ( <> { children } - { footer && { footer } } + { !! footer && { footer } } ) } diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.scss b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.scss similarity index 100% rename from plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.scss rename to plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.scss diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx similarity index 93% rename from plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx rename to plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx index 1fbd8d270ff..54a389a93ed 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx +++ b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.test.tsx @@ -7,11 +7,7 @@ import userEvent from '@testing-library/user-event'; /** * Internal dependencies */ -import { - useCampaignTypes, - useRecommendedChannels, - useRegisteredChannels, -} from '~/marketing/hooks'; +import { useCampaignTypes, useRecommendedChannels } from '~/marketing/hooks'; import { CreateNewCampaignModal } from './CreateNewCampaignModal'; jest.mock( '@woocommerce/components', () => { @@ -27,7 +23,8 @@ jest.mock( '@woocommerce/components', () => { jest.mock( '~/marketing/hooks', () => ( { useCampaignTypes: jest.fn(), useRecommendedChannels: jest.fn(), - useRegisteredChannels: jest.fn(), + useRegisteredChannels: jest.fn( () => ( {} ) ), + useInstalledPluginsWithoutChannels: jest.fn( () => ( {} ) ), } ) ); const google = { @@ -84,9 +81,6 @@ describe( 'CreateNewCampaignModal component', () => { ( useRecommendedChannels as jest.Mock ).mockReturnValue( { data: [ pinterest, amazon ], } ); - ( useRegisteredChannels as jest.Mock ).mockReturnValue( { - refetch: jest.fn(), - } ); render( {} } /> ); expect( screen.getByText( 'Google Ads' ) ).toBeInTheDocument(); @@ -121,9 +115,6 @@ describe( 'CreateNewCampaignModal component', () => { ( useRecommendedChannels as jest.Mock ).mockReturnValue( { data: [], } ); - ( useRegisteredChannels as jest.Mock ).mockReturnValue( { - refetch: jest.fn(), - } ); render( {} } /> ); // The expand button should not be there. diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.tsx b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.tsx similarity index 91% rename from plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.tsx rename to plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.tsx index 3d67dd541cb..09ebf5aa7a5 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/CreateNewCampaignModal.tsx +++ b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/CreateNewCampaignModal.tsx @@ -21,6 +21,7 @@ import { useRecommendedChannels, useCampaignTypes, useRegisteredChannels, + useInstalledPluginsWithoutChannels, } from '~/marketing/hooks'; import { SmartPluginCardBody } from '~/marketing/components'; import './CreateNewCampaignModal.scss'; @@ -43,10 +44,13 @@ export const CreateNewCampaignModal = ( props: CreateCampaignModalProps ) => { useCampaignTypes(); const { refetch: refetchRegisteredChannels } = useRegisteredChannels(); const { data: recommendedChannels } = useRecommendedChannels(); + const { loadInstalledPluginsAfterActivation } = + useInstalledPluginsWithoutChannels(); - const refetch = () => { + const onInstalledAndActivated = ( pluginSlug: string ) => { refetchCampaignTypes(); refetchRegisteredChannels(); + loadInstalledPluginsAfterActivation( pluginSlug ); }; return ( @@ -105,7 +109,7 @@ export const CreateNewCampaignModal = ( props: CreateCampaignModalProps ) => { { __( 'Create', 'woocommerce' ) } - { isExternalURL( el.createUrl ) && ( + { !! isExternalURL( el.createUrl ) && ( { ) ) } diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/index.ts b/plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/index.ts similarity index 100% rename from plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/CreateNewCampaignModal/index.ts rename to plugins/woocommerce-admin/client/marketing/components/CreateNewCampaignModal/index.ts diff --git a/plugins/woocommerce-admin/client/marketing/components/PluginCardBody/SmartPluginCardBody.tsx b/plugins/woocommerce-admin/client/marketing/components/PluginCardBody/SmartPluginCardBody.tsx index 32262e7139c..76cf16f01aa 100644 --- a/plugins/woocommerce-admin/client/marketing/components/PluginCardBody/SmartPluginCardBody.tsx +++ b/plugins/woocommerce-admin/client/marketing/components/PluginCardBody/SmartPluginCardBody.tsx @@ -21,7 +21,7 @@ import './PluginCardBody.scss'; type SmartPluginCardBodyProps = { plugin: RecommendedPlugin; - onInstalledAndActivated?: () => void; + onInstalledAndActivated?: ( pluginSlug: string ) => void; }; /** @@ -62,7 +62,7 @@ export const SmartPluginCardBody = ( { plugin.product, ] ); - onInstalledAndActivated(); + onInstalledAndActivated( plugin.product ); createNoticesFromResponse( response ); } catch ( error ) { createNoticesFromResponse( error ); diff --git a/plugins/woocommerce-admin/client/marketing/components/index.js b/plugins/woocommerce-admin/client/marketing/components/index.js index dc971c75160..5d1c1014754 100644 --- a/plugins/woocommerce-admin/client/marketing/components/index.js +++ b/plugins/woocommerce-admin/client/marketing/components/index.js @@ -8,3 +8,4 @@ export { PluginCardBody, SmartPluginCardBody } from './PluginCardBody'; export { CardHeaderTitle } from './CardHeaderTitle'; export { CardHeaderDescription } from './CardHeaderDescription'; export { CenteredSpinner } from './CenteredSpinner'; +export { CreateNewCampaignModal } from './CreateNewCampaignModal'; diff --git a/plugins/woocommerce-admin/client/marketing/components/knowledge-base/index.js b/plugins/woocommerce-admin/client/marketing/components/knowledge-base/index.js index df1a6ee121c..cb74eae7807 100644 --- a/plugins/woocommerce-admin/client/marketing/components/knowledge-base/index.js +++ b/plugins/woocommerce-admin/client/marketing/components/knowledge-base/index.js @@ -79,7 +79,7 @@ const KnowledgeBase = ( { target="_blank" rel="noopener noreferrer" > - { post.image && ( + { !! post.image && (
@@ -89,7 +89,7 @@ const KnowledgeBase = ( {

{ __( 'By', 'woocommerce' ) + ' ' } { post.author_name } - { post.author_avatar && ( + { !! post.author_avatar && ( { return (

- { shouldShowExtensions && ( + { !! shouldShowExtensions && ( { +export const useCampaigns = ( page = 1, perPage = 5 ): UseCampaignsType => { const { data: channels } = useRegisteredChannels(); return useSelect( diff --git a/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPlugins.ts b/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPlugins.ts deleted file mode 100644 index 88c39ac3e68..00000000000 --- a/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPlugins.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * External dependencies - */ -import { useSelect, useDispatch } from '@wordpress/data'; - -/** - * Internal dependencies - */ -import { STORE_KEY } from '~/marketing/data/constants'; -import { InstalledPlugin } from '~/marketing/types'; - -export type UseInstalledPlugins = { - installedPlugins: InstalledPlugin[]; - activatingPlugins: string[]; - activateInstalledPlugin: ( slug: string ) => void; - loadInstalledPluginsAfterActivation: ( slug: string ) => void; -}; - -/** - * Hook to return plugins and methods for "Installed extensions" card. - */ -export const useInstalledPlugins = (): UseInstalledPlugins => { - const { installedPlugins, activatingPlugins } = useSelect( ( select ) => { - const { getInstalledPlugins, getActivatingPlugins } = - select( STORE_KEY ); - - return { - installedPlugins: getInstalledPlugins(), - activatingPlugins: getActivatingPlugins(), - }; - }, [] ); - const { activateInstalledPlugin, loadInstalledPluginsAfterActivation } = - useDispatch( STORE_KEY ); - - return { - installedPlugins, - activatingPlugins, - activateInstalledPlugin, - loadInstalledPluginsAfterActivation, - }; -}; diff --git a/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPluginsWithoutChannels.ts b/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPluginsWithoutChannels.ts new file mode 100644 index 00000000000..6605c900d6e --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/hooks/useInstalledPluginsWithoutChannels.ts @@ -0,0 +1,72 @@ +/** + * External dependencies + */ +import { useSelect, useDispatch } from '@wordpress/data'; +import { chain } from 'lodash'; + +/** + * Internal dependencies + */ +import { STORE_KEY } from '~/marketing/data/constants'; +import { InstalledPlugin } from '~/marketing/types'; +import { useRecommendedChannels } from './useRecommendedChannels'; +import { useRegisteredChannels } from './useRegisteredChannels'; + +export type UseInstalledPluginsWithoutChannels = { + data: InstalledPlugin[]; + activatingPlugins: string[]; + activateInstalledPlugin: ( slug: string ) => void; + loadInstalledPluginsAfterActivation: ( slug: string ) => void; +}; + +/** + * Hook to return plugins and methods for "Installed extensions" card. + * The list of installed plugins does not include registered and recommended marketing channels. + */ +export const useInstalledPluginsWithoutChannels = + (): UseInstalledPluginsWithoutChannels => { + const { installedPlugins, activatingPlugins } = useSelect( + ( select ) => { + const { getInstalledPlugins, getActivatingPlugins } = + select( STORE_KEY ); + + return { + installedPlugins: + getInstalledPlugins< InstalledPlugin[] >(), + activatingPlugins: getActivatingPlugins(), + }; + }, + [] + ); + + const { + loading: loadingRegisteredChannels, + data: dataRegisteredChannels, + } = useRegisteredChannels(); + const { + loading: loadingRecommendedChannels, + data: dataRecommendedChannels, + } = useRecommendedChannels(); + + const { activateInstalledPlugin, loadInstalledPluginsAfterActivation } = + useDispatch( STORE_KEY ); + + const loading = loadingRegisteredChannels || loadingRecommendedChannels; + const installedPluginsWithoutChannels = chain( installedPlugins ) + .differenceWith( + dataRegisteredChannels || [], + ( a, b ) => a.slug === b.slug + ) + .differenceWith( + dataRecommendedChannels || [], + ( a, b ) => a.slug === b.product + ) + .value(); + + return { + data: loading ? [] : installedPluginsWithoutChannels, + activatingPlugins, + activateInstalledPlugin, + loadInstalledPluginsAfterActivation, + }; + }; diff --git a/plugins/woocommerce-admin/client/marketing/hooks/useIntroductionBanner.ts b/plugins/woocommerce-admin/client/marketing/hooks/useIntroductionBanner.ts new file mode 100644 index 00000000000..0eebcb471a1 --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/hooks/useIntroductionBanner.ts @@ -0,0 +1,45 @@ +/** + * External dependencies + */ +import { useDispatch, useSelect } from '@wordpress/data'; +import { OPTIONS_STORE_NAME } from '@woocommerce/data'; +import { recordEvent } from '@woocommerce/tracks'; + +type UseIntroductionBanner = { + loading: boolean; + isIntroductionBannerDismissed: boolean; + dismissIntroductionBanner: () => void; +}; + +const OPTION_NAME_BANNER_DISMISSED = + 'woocommerce_marketing_overview_multichannel_banner_dismissed'; +const OPTION_VALUE_YES = 'yes'; + +export const useIntroductionBanner = (): UseIntroductionBanner => { + const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); + + const dismissIntroductionBanner = () => { + updateOptions( { + [ OPTION_NAME_BANNER_DISMISSED ]: OPTION_VALUE_YES, + } ); + recordEvent( 'marketing_multichannel_banner_dismissed', {} ); + }; + + const { loading, data } = useSelect( ( select ) => { + const { getOption, hasFinishedResolution } = + select( OPTIONS_STORE_NAME ); + + return { + loading: ! hasFinishedResolution( 'getOption', [ + OPTION_NAME_BANNER_DISMISSED, + ] ), + data: getOption( OPTION_NAME_BANNER_DISMISSED ), + }; + }, [] ); + + return { + loading, + isIntroductionBannerDismissed: data === OPTION_VALUE_YES, + dismissIntroductionBanner, + }; +}; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.test.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.test.tsx index 66513850819..aaa59396728 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.test.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.test.tsx @@ -7,21 +7,23 @@ import userEvent from '@testing-library/user-event'; /** * Internal dependencies */ -import { useCampaigns } from './useCampaigns'; -import { useCampaignTypes } from '~/marketing/hooks'; +import { useCampaignTypes, useCampaigns } from '~/marketing/hooks'; import { Campaigns } from './Campaigns'; -jest.mock( './useCampaigns', () => ( { - useCampaigns: jest.fn(), -} ) ); - jest.mock( '~/marketing/hooks', () => ( { + useCampaigns: jest.fn(), useCampaignTypes: jest.fn(), } ) ); -jest.mock( './CreateNewCampaignModal', () => ( { - CreateNewCampaignModal: () =>
Mocked CreateNewCampaignModal
, -} ) ); +jest.mock( '~/marketing/components', () => { + const originalModule = jest.requireActual( '~/marketing/components' ); + + return { + __esModule: true, + ...originalModule, + CreateNewCampaignModal: () =>
Mocked CreateNewCampaignModal
, + }; +} ); /** * Create a test campaign data object. diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.tsx index 367500c12a9..d3fdcf71bca 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Campaigns/Campaigns.tsx @@ -24,9 +24,11 @@ import { /** * Internal dependencies */ -import { CardHeaderTitle } from '~/marketing/components'; -import { useCampaigns } from './useCampaigns'; -import { CreateNewCampaignModal } from './CreateNewCampaignModal'; +import { + CardHeaderTitle, + CreateNewCampaignModal, +} from '~/marketing/components'; +import { useCampaigns } from '~/marketing/hooks'; import './Campaigns.scss'; const tableCaption = __( 'Campaigns', 'woocommerce' ); @@ -139,7 +141,7 @@ export const Campaigns = () => { { el.title } - { el.description && ( + { !! el.description && ( { el.description } @@ -168,14 +170,14 @@ export const Campaigns = () => { > { __( 'Create new campaign', 'woocommerce' ) } - { isModalOpen && ( + { !! isModalOpen && ( setModalOpen( false ) } /> ) } { getContent() } - { total && total > perPage && ( + { !! ( total && total > perPage ) && ( ; recommendedChannels: Array< RecommendedChannel >; - onInstalledAndActivated?: () => void; + onInstalledAndActivated?: ( pluginSlug: string ) => void; }; -export const Channels: React.FC< ChannelsProps > = ( { - registeredChannels, - recommendedChannels, - onInstalledAndActivated, -} ) => { - const hasRegisteredChannels = registeredChannels.length >= 1; - +export type ChannelsRef = { /** - * State to collapse / expand the recommended channels. - * Initial state is expanded if there are no registered channels in first page load. + * Scroll into the "Add channels" section in the card. + * The section will be expanded, and the "Add channels" button will be in focus. */ - const [ expanded, setExpanded ] = useState( ! hasRegisteredChannels ); + scrollIntoAddChannels: () => void; +}; - return ( - - - - { __( 'Channels', 'woocommerce' ) } - - { ! hasRegisteredChannels && ( - - { __( - 'Start by adding a channel to your store', - 'woocommerce' - ) } - - ) } - +export const Channels = forwardRef< ChannelsRef, ChannelsProps >( + ( + { registeredChannels, recommendedChannels, onInstalledAndActivated }, + ref + ) => { + const hasRegisteredChannels = registeredChannels.length >= 1; - { /* Registered channels section. */ } - { registeredChannels.map( ( el, idx ) => { - return ( + /** + * State to collapse / expand the recommended channels. + * Initial state is expanded if there are no registered channels in first page load. + */ + const [ expanded, setExpanded ] = useState( ! hasRegisteredChannels ); + const addChannelsButtonRef = useRef< HTMLButtonElement >( null ); + + useImperativeHandle( + ref, + () => ( { + scrollIntoAddChannels: () => { + setExpanded( true ); + addChannelsButtonRef.current?.focus(); + addChannelsButtonRef.current?.scrollIntoView( { + block: 'center', + } ); + }, + } ), + [] + ); + + return ( + + + + { __( 'Channels', 'woocommerce' ) } + + { ! hasRegisteredChannels && ( + + { __( + 'Start by adding a channel to your store', + 'woocommerce' + ) } + + ) } + + + { /* Registered channels section. */ } + { registeredChannels.map( ( el, idx ) => ( { idx !== registeredChannels.length - 1 && ( ) } - ); - } ) } + ) ) } - { /* Recommended channels section. */ } - { recommendedChannels.length >= 1 && ( -
- { hasRegisteredChannels && ( - <> - - - - - - ) } - { expanded && - recommendedChannels.map( ( el, idx ) => { - return ( + > + { __( 'Add channels', 'woocommerce' ) } + + + + + ) } + { !! expanded && + recommendedChannels.map( ( el, idx ) => ( = ( { ) } - ); - } ) } -
- ) } -
- ); -}; + ) ) } +
+ ) } + + ); + } +); diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/RegisteredChannelCardBody.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/RegisteredChannelCardBody.tsx index 2d4d9c007fa..ff80123cfc4 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/RegisteredChannelCardBody.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/RegisteredChannelCardBody.tsx @@ -31,7 +31,7 @@ export const RegisteredChannelCardBody: React.FC< registeredChannel.description ) : (
- { registeredChannel.syncStatus && ( + { !! registeredChannel.syncStatus && ( <>
diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/index.ts b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/index.ts index da0d9c56072..f0e4fcc3762 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/index.ts +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/Channels/index.ts @@ -1 +1,2 @@ export { Channels } from './Channels'; +export type { ChannelsRef } from './Channels'; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.test.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.test.tsx index 568b353147f..18ada3a3c24 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.test.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.test.tsx @@ -6,8 +6,7 @@ import { render, screen } from '@testing-library/react'; /** * Internal dependencies */ -import { useInstalledPlugins } from '../../hooks'; -import { useRecommendedPlugins } from './useRecommendedPlugins'; +import { useRecommendedPluginsWithoutChannels } from './useRecommendedPluginsWithoutChannels'; import { DiscoverTools } from './DiscoverTools'; jest.mock( '@woocommerce/components', () => { @@ -20,23 +19,20 @@ jest.mock( '@woocommerce/components', () => { }; } ); -jest.mock( './useRecommendedPlugins', () => ( { - useRecommendedPlugins: jest.fn(), +jest.mock( './useRecommendedPluginsWithoutChannels', () => ( { + useRecommendedPluginsWithoutChannels: jest.fn(), } ) ); -jest.mock( '../../hooks', () => ( { - useInstalledPlugins: jest.fn(), +jest.mock( '~/marketing/hooks', () => ( { + useInstalledPluginsWithoutChannels: jest.fn( () => ( {} ) ), } ) ); describe( 'DiscoverTools component', () => { it( 'should render a Spinner when loading is in progress', () => { - ( useRecommendedPlugins as jest.Mock ).mockReturnValue( { + ( useRecommendedPluginsWithoutChannels as jest.Mock ).mockReturnValue( { isInitializing: true, isLoading: true, - plugins: [], - } ); - ( useInstalledPlugins as jest.Mock ).mockReturnValue( { - loadInstalledPluginsAfterActivation: jest.fn(), + data: [], } ); render( ); @@ -44,13 +40,10 @@ describe( 'DiscoverTools component', () => { } ); it( 'should render message and link when loading is finish and there are no plugins', () => { - ( useRecommendedPlugins as jest.Mock ).mockReturnValue( { + ( useRecommendedPluginsWithoutChannels as jest.Mock ).mockReturnValue( { isInitializing: false, isLoading: false, - plugins: [], - } ); - ( useInstalledPlugins as jest.Mock ).mockReturnValue( { - loadInstalledPluginsAfterActivation: jest.fn(), + data: [], } ); render( ); @@ -66,10 +59,12 @@ describe( 'DiscoverTools component', () => { describe( 'With plugins loaded', () => { it( 'should render `direct_install: true` plugins with "Install plugin" button', () => { - ( useRecommendedPlugins as jest.Mock ).mockReturnValue( { + ( + useRecommendedPluginsWithoutChannels as jest.Mock + ).mockReturnValue( { isInitializing: false, isLoading: false, - plugins: [ + data: [ { title: 'Google Listings and Ads', description: @@ -95,9 +90,6 @@ describe( 'DiscoverTools component', () => { }, ], } ); - ( useInstalledPlugins as jest.Mock ).mockReturnValue( { - loadInstalledPluginsAfterActivation: jest.fn(), - } ); render( ); // Assert that we have the "Sales channels" tab, the plugin name, the "Built by WooCommerce" pill, and the "Install plugin" button. @@ -112,10 +104,12 @@ describe( 'DiscoverTools component', () => { } ); it( 'should render `direct_install: false` plugins with "View details" button', () => { - ( useRecommendedPlugins as jest.Mock ).mockReturnValue( { + ( + useRecommendedPluginsWithoutChannels as jest.Mock + ).mockReturnValue( { isInitializing: false, isLoading: false, - plugins: [ + data: [ { title: 'WooCommerce Zapier', description: @@ -136,9 +130,6 @@ describe( 'DiscoverTools component', () => { }, ], } ); - ( useInstalledPlugins as jest.Mock ).mockReturnValue( { - loadInstalledPluginsAfterActivation: jest.fn(), - } ); render( ); // Assert that we have the CRM tab, plugin name, and "View details" button. diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.tsx index a116640fbe0..bfade3d9f0d 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/DiscoverTools.tsx @@ -14,13 +14,13 @@ import { CardBody, CenteredSpinner, } from '~/marketing/components'; -import { useRecommendedPlugins } from './useRecommendedPlugins'; +import { useRecommendedPluginsWithoutChannels } from './useRecommendedPluginsWithoutChannels'; import { PluginsTabPanel } from './PluginsTabPanel'; import './DiscoverTools.scss'; export const DiscoverTools = () => { - const { isInitializing, isLoading, plugins, installAndActivate } = - useRecommendedPlugins(); + const { isInitializing, isLoading, data, installAndActivate } = + useRecommendedPluginsWithoutChannels(); /** * Renders card body. @@ -38,7 +38,7 @@ export const DiscoverTools = () => { ); } - if ( plugins.length === 0 ) { + if ( data.length === 0 ) { return ( @@ -66,7 +66,7 @@ export const DiscoverTools = () => { return ( diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/PluginsTabPanel.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/PluginsTabPanel.tsx index 8a689f4f2c7..902bbc8a02e 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/PluginsTabPanel.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/PluginsTabPanel.tsx @@ -14,7 +14,7 @@ import { flatMapDeep, uniqBy } from 'lodash'; * Internal dependencies */ import { CardDivider, PluginCardBody } from '~/marketing/components'; -import { useInstalledPlugins } from '~/marketing/hooks'; +import { useInstalledPluginsWithoutChannels } from '~/marketing/hooks'; import { RecommendedPlugin } from '~/marketing/types'; import { getInAppPurchaseUrl } from '~/lib/in-app-purchase'; import { createNoticesFromResponse } from '~/lib/notices'; @@ -60,7 +60,8 @@ export const PluginsTabPanel = ( { null ); const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME ); - const { loadInstalledPluginsAfterActivation } = useInstalledPlugins(); + const { loadInstalledPluginsAfterActivation } = + useInstalledPluginsWithoutChannels(); /** * Install and activate a plugin. diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPlugins.ts b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPlugins.ts deleted file mode 100644 index e8865fd4888..00000000000 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPlugins.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * External dependencies - */ -import { useSelect, useDispatch } from '@wordpress/data'; - -/** - * Internal dependencies - */ -import { STORE_KEY } from '~/marketing/data/constants'; -import { RecommendedPlugin } from '~/marketing/types'; - -const selector = 'getRecommendedPlugins'; -const category = 'marketing'; - -export const useRecommendedPlugins = () => { - const { invalidateResolution, installAndActivateRecommendedPlugin } = - useDispatch( STORE_KEY ); - - const installAndActivate = ( plugin: string ) => { - installAndActivateRecommendedPlugin( plugin, category ); - invalidateResolution( selector, [ category ] ); - }; - - return useSelect( ( select ) => { - const { getRecommendedPlugins, hasFinishedResolution } = - select( STORE_KEY ); - const plugins = - getRecommendedPlugins< RecommendedPlugin[] >( category ); - const isLoading = ! hasFinishedResolution( selector, [ category ] ); - - return { - isInitializing: ! plugins.length && isLoading, - isLoading, - plugins, - installAndActivate, - }; - }, [] ); -}; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPluginsWithoutChannels.ts b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPluginsWithoutChannels.ts new file mode 100644 index 00000000000..ef10efb9e8d --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/DiscoverTools/useRecommendedPluginsWithoutChannels.ts @@ -0,0 +1,92 @@ +/** + * External dependencies + */ +import { useSelect, useDispatch } from '@wordpress/data'; +import { differenceWith } from 'lodash'; + +/** + * Internal dependencies + */ +import { STORE_KEY } from '~/marketing/data/constants'; +import { useRecommendedChannels } from '~/marketing/hooks'; +import { RecommendedPlugin } from '~/marketing/types'; + +type UseRecommendedPluginsWithoutChannels = { + /** + * Boolean indicating whether it is initializing. + */ + isInitializing: boolean; + + /** + * Boolean indicating whether it is loading. + * + * This will be true when data is being refetched + * after `invalidateResolution` is called in the `installAndActivate` method. + */ + isLoading: boolean; + + /** + * An array of recommended marketing plugins without marketing channels. + */ + data: RecommendedPlugin[]; + + /** + * Install and activate a plugin. + */ + installAndActivate: ( slug: string ) => void; +}; + +const selector = 'getRecommendedPlugins'; +const category = 'marketing'; + +/** + * A hook to return a list of recommended plugins without marketing channels, + * and related methods, to be used with the `DiscoverTools` component. + */ +export const useRecommendedPluginsWithoutChannels = + (): UseRecommendedPluginsWithoutChannels => { + const { + loading: loadingRecommendedPlugins, + data: dataRecommendedPlugins, + } = useSelect( ( select ) => { + const { getRecommendedPlugins, hasFinishedResolution } = + select( STORE_KEY ); + + return { + loading: ! hasFinishedResolution( selector, [ category ] ), + data: getRecommendedPlugins< RecommendedPlugin[] >( category ), + }; + }, [] ); + + const { + loading: loadingRecommendedChannels, + data: dataRecommendedChannels, + } = useRecommendedChannels(); + + const { invalidateResolution, installAndActivateRecommendedPlugin } = + useDispatch( STORE_KEY ); + + const isInitializing = + ( loadingRecommendedPlugins && ! dataRecommendedPlugins.length ) || + ( loadingRecommendedChannels && ! dataRecommendedChannels ); + + const loading = loadingRecommendedPlugins || loadingRecommendedChannels; + + const recommendedPluginsWithoutChannels = differenceWith( + dataRecommendedPlugins, + dataRecommendedChannels || [], + ( a, b ) => a.product === b.product + ); + + const installAndActivate = ( slug: string ) => { + installAndActivateRecommendedPlugin( slug, category ); + invalidateResolution( selector, [ category ] ); + }; + + return { + isInitializing, + isLoading: loading, + data: isInitializing ? [] : recommendedPluginsWithoutChannels, + installAndActivate, + }; + }; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/InstalledExtensions/InstalledExtensions.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/InstalledExtensions/InstalledExtensions.tsx index f445fa7a69b..cee200843c2 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/InstalledExtensions/InstalledExtensions.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/InstalledExtensions/InstalledExtensions.tsx @@ -16,13 +16,13 @@ import { PluginCardBody, } from '~/marketing/components'; import { InstalledPlugin } from '~/marketing/types'; -import { useInstalledPlugins } from '~/marketing/hooks'; +import { useInstalledPluginsWithoutChannels } from '~/marketing/hooks'; export const InstalledExtensions = () => { - const { installedPlugins, activatingPlugins, activateInstalledPlugin } = - useInstalledPlugins(); + const { data, activatingPlugins, activateInstalledPlugin } = + useInstalledPluginsWithoutChannels(); - if ( installedPlugins.length === 0 ) { + if ( data.length === 0 ) { return null; } @@ -81,7 +81,7 @@ export const InstalledExtensions = () => { return ( - { installedPlugins.map( ( el, idx ) => { + { data.map( ( el, idx ) => { return ( { description={ el.description } button={ getButton( el ) } /> - { idx !== installedPlugins.length - 1 && ( - - ) } + { idx !== data.length - 1 && } ); } ) } diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.scss b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.scss new file mode 100644 index 00000000000..99ac6dc8ad4 --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.scss @@ -0,0 +1,54 @@ +.woocommerce-marketing-introduction-banner { + & > div { + display: flex; + flex-wrap: wrap; + } + + .woocommerce-marketing-introduction-banner-content { + flex: 1 0; + margin: 32px 20px 32px 40px; + + .woocommerce-marketing-introduction-banner-title { + font-size: 20px; + line-height: 28px; + margin-bottom: $gap-smaller; + } + + .woocommerce-marketing-introduction-banner-features { + color: $gray-700; + + svg { + fill: $studio-woocommerce-purple-50; + } + } + + .woocommerce-marketing-introduction-banner-buttons { + margin-top: $gap; + } + } + + .woocommerce-marketing-introduction-banner-illustration { + flex: 0 0 270px; + background: linear-gradient(90deg, rgba(247, 237, 247, 0) 5.31%, rgba(196, 152, 217, 0.12) 77.75%), + linear-gradient(90deg, rgba(247, 237, 247, 0) 22%, rgba(196, 152, 217, 0.12) 84.6%); + + .woocommerce-marketing-introduction-banner-image-placeholder { + width: 100%; + height: 100%; + background: center / contain no-repeat; + } + + .woocommerce-marketing-introduction-banner-close-button { + position: absolute; + top: $gap-small; + right: $gap; + padding: 0; + } + + img { + display: block; + width: 100%; + height: 100%; + } + } +} diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.tsx new file mode 100644 index 00000000000..829152f03dd --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/IntroductionBanner.tsx @@ -0,0 +1,152 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { useState } from '@wordpress/element'; +import { Card, Flex, FlexItem, FlexBlock, Button } from '@wordpress/components'; +import { Icon, trendingUp, megaphone, closeSmall } from '@wordpress/icons'; + +/** + * Internal dependencies + */ +import { CreateNewCampaignModal } from '~/marketing/components'; +import { + useRegisteredChannels, + useRecommendedChannels, +} from '~/marketing/hooks'; +import './IntroductionBanner.scss'; +import wooIconUrl from './woo.svg'; +import illustrationUrl from './illustration.svg'; + +type IntroductionBannerProps = { + onDismissClick: () => void; + onAddChannelsClick: () => void; +}; + +export const IntroductionBanner = ( { + onDismissClick, + onAddChannelsClick, +}: IntroductionBannerProps ) => { + const [ isModalOpen, setModalOpen ] = useState( false ); + const { data: dataRegistered } = useRegisteredChannels(); + const { data: dataRecommended } = useRecommendedChannels(); + + const showCreateCampaignButton = !! dataRegistered?.length; + + /** + * Boolean to display the "Add channels" button in the introduction banner. + * + * This depends on the number of registered channels, + * because if there are no registered channels, + * the Channels card will not have the "Add channels" toggle button, + * and it does not make sense to display the "Add channels" button in this introduction banner + * that will do nothing upon click. + * + * If there are registered channels and recommended channels, + * the Channels card will display the "Add channels" toggle button, + * and clicking on the "Add channels" button in this introduction banner + * will scroll to the button in Channels card. + */ + const showAddChannelsButton = + !! dataRegistered?.length && !! dataRecommended?.length; + + return ( + +
+
+ { __( + 'Reach new customers and increase sales without leaving WooCommerce', + 'woocommerce' + ) } +
+ + + + + + { __( + 'Reach customers on other sales channels', + 'woocommerce' + ) } + + + + + + + + { __( + 'Advertise with marketing campaigns', + 'woocommerce' + ) } + + + + + + { + + { __( 'Built by WooCommerce', 'woocommerce' ) } + + + + + { ( showCreateCampaignButton || showAddChannelsButton ) && ( + + { showCreateCampaignButton && ( + + ) } + { showAddChannelsButton && ( + + ) } + + ) } + { isModalOpen && ( + setModalOpen( false ) } + /> + ) } +
+
+ +
+
+ + ); +}; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/illustration.svg b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/illustration.svg new file mode 100644 index 00000000000..3a00d63416c --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/illustration.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/index.ts b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/index.ts new file mode 100644 index 00000000000..8ae35a6ca33 --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/index.ts @@ -0,0 +1 @@ +export { IntroductionBanner } from './IntroductionBanner'; diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/woo.svg b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/woo.svg new file mode 100644 index 00000000000..fb4a4205043 --- /dev/null +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/IntroductionBanner/woo.svg @@ -0,0 +1,15 @@ + + +WooCommerce Logo + + + +image/svg+xml + + + + + + + + diff --git a/plugins/woocommerce-admin/client/marketing/overview-multichannel/LearnMarketing/PostTile.tsx b/plugins/woocommerce-admin/client/marketing/overview-multichannel/LearnMarketing/PostTile.tsx index c5404557db5..7dc38070cd3 100644 --- a/plugins/woocommerce-admin/client/marketing/overview-multichannel/LearnMarketing/PostTile.tsx +++ b/plugins/woocommerce-admin/client/marketing/overview-multichannel/LearnMarketing/PostTile.tsx @@ -27,7 +27,7 @@ export const PostTile: React.FC< PostTileProps > = ( { post } ) => { } } >
- { post.image && } + { !! post.image && }
{ post.title } @@ -37,7 +37,7 @@ export const PostTile: React.FC< PostTileProps > = ( { post } ) => { // translators: %s: author's name. sprintf( __( 'By %s', 'woocommerce' ), post.author_name ) } - { post.author_avatar && ( + { !! post.author_avatar && ( { + const { + loading: loadingIntroductionBanner, + isIntroductionBannerDismissed, + dismissIntroductionBanner, + } = useIntroductionBanner(); + const { loading: loadingCampaigns, meta: metaCampaigns } = useCampaigns(); const { loading: loadingCampaignTypes, data: dataCampaignTypes, @@ -35,9 +46,14 @@ export const MarketingOverviewMultichannel: React.FC = () => { } = useRegisteredChannels(); const { loading: loadingRecommended, data: dataRecommended } = useRecommendedChannels(); + const { loadInstalledPluginsAfterActivation } = + useInstalledPluginsWithoutChannels(); const { currentUserCan } = useUser(); + const channelsRef = useRef< ChannelsRef >( null ); if ( + loadingIntroductionBanner || + ( loadingCampaigns && metaCampaigns?.total === undefined ) || ( loadingCampaignTypes && ! dataCampaignTypes ) || ( loadingRegistered && ! dataRegistered ) || ( loadingRecommended && ! dataRecommended ) @@ -45,29 +61,43 @@ export const MarketingOverviewMultichannel: React.FC = () => { return ; } + const shouldShowCampaigns = !! ( + dataRegistered?.length && + ( isIntroductionBannerDismissed || metaCampaigns?.total ) + ); + const shouldShowExtensions = getAdminSetting( 'allowMarketplaceSuggestions', false ) && currentUserCan( 'install_plugins' ); - const refetch = () => { + const onInstalledAndActivated = ( pluginSlug: string ) => { refetchCampaignTypes(); refetchRegisteredChannels(); + loadInstalledPluginsAfterActivation( pluginSlug ); }; return (
- { !! dataRegistered?.length && } - { dataRegistered && - dataRecommended && + { ! isIntroductionBannerDismissed && ( + { + channelsRef.current?.scrollIntoAddChannels(); + } } + /> + ) } + { shouldShowCampaigns && } + { !! ( dataRegistered && dataRecommended ) && !! ( dataRegistered.length || dataRecommended.length ) && ( ) } - { shouldShowExtensions && } + { !! shouldShowExtensions && }
); diff --git a/plugins/woocommerce-admin/client/marketing/overview/index.js b/plugins/woocommerce-admin/client/marketing/overview/index.js index 966254141ed..6a69a18cb3c 100644 --- a/plugins/woocommerce-admin/client/marketing/overview/index.js +++ b/plugins/woocommerce-admin/client/marketing/overview/index.js @@ -27,7 +27,7 @@ const MarketingOverview = () => { - { shouldShowExtensions && ( + { !! shouldShowExtensions && ( ) } diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx index babef4e8679..1425d26fab0 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx @@ -193,7 +193,14 @@ const PaymentRecommendations: React.FC = () => { ), before: ( - + ), }; } ); diff --git a/plugins/woocommerce-admin/client/products/fields/attribute-term-input-field/create-attribute-term-modal.tsx b/plugins/woocommerce-admin/client/products/fields/attribute-term-input-field/create-attribute-term-modal.tsx index 107b6ee6755..113e8283443 100644 --- a/plugins/woocommerce-admin/client/products/fields/attribute-term-input-field/create-attribute-term-modal.tsx +++ b/plugins/woocommerce-admin/client/products/fields/attribute-term-input-field/create-attribute-term-modal.tsx @@ -11,7 +11,7 @@ import { import { useState } from '@wordpress/element'; import { useDispatch } from '@wordpress/data'; import { cleanForSlug } from '@wordpress/url'; -import { Form, FormContext, FormErrors } from '@woocommerce/components'; +import { Form, FormContextType, FormErrors } from '@woocommerce/components'; import { recordEvent } from '@woocommerce/tracks'; import { EXPERIMENTAL_PRODUCT_ATTRIBUTE_TERMS_STORE_NAME, @@ -118,7 +118,7 @@ export const CreateAttributeTermModal: React.FC< isValidForm, setValue, values, - }: FormContext< QueryProductAttribute > ) => { + }: FormContextType< QueryProductAttribute > ) => { const nameInputProps = getInputProps< string >( 'name' ); return ( <> diff --git a/plugins/woocommerce-admin/client/products/fills/more-menu-items/classic-editor-menu-item.tsx b/plugins/woocommerce-admin/client/products/fills/more-menu-items/classic-editor-menu-item.tsx new file mode 100644 index 00000000000..61bd566ec27 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/fills/more-menu-items/classic-editor-menu-item.tsx @@ -0,0 +1,75 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { useDispatch, useSelect } from '@wordpress/data'; +import { getAdminLink } from '@woocommerce/settings'; +import { OPTIONS_STORE_NAME } from '@woocommerce/data'; +import { MenuItem } from '@wordpress/components'; +import { + ALLOW_TRACKING_OPTION_NAME, + STORE_KEY as CES_STORE_KEY, +} from '@woocommerce/customer-effort-score'; + +/** + * Internal dependencies + */ +import { ClassicEditorIcon } from '../../images/classic-editor-icon'; +import { NEW_PRODUCT_MANAGEMENT } from '~/customer-effort-score-tracks/product-mvp-ces-footer'; + +export const ClassicEditorMenuItem = ( { + onClose, + productId, +}: { + productId: number; + onClose: () => void; +} ) => { + const { showProductMVPFeedbackModal } = useDispatch( CES_STORE_KEY ); + const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); + + const { allowTracking, resolving: isLoading } = useSelect( ( select ) => { + const { getOption, hasFinishedResolution } = + select( OPTIONS_STORE_NAME ); + + const allowTrackingOption = + getOption( ALLOW_TRACKING_OPTION_NAME ) || 'no'; + + const resolving = ! hasFinishedResolution( 'getOption', [ + ALLOW_TRACKING_OPTION_NAME, + ] ); + + return { + allowTracking: allowTrackingOption === 'yes', + resolving, + }; + } ); + + const classicEditorUrl = productId + ? getAdminLink( `post.php?post=${ productId }&action=edit` ) + : getAdminLink( 'post-new.php?post_type=product' ); + + if ( isLoading ) { + return null; + } + + return ( + { + if ( allowTracking ) { + updateOptions( { + [ NEW_PRODUCT_MANAGEMENT ]: 'no', + } ); + showProductMVPFeedbackModal(); + onClose(); + } else { + window.location.href = classicEditorUrl; + onClose(); + } + } } + icon={ } + iconPosition="right" + > + { __( 'Use the classic editor', 'woocommerce' ) } + + ); +}; diff --git a/plugins/woocommerce-admin/client/products/fills/more-menu-items/feedback-menu-item.tsx b/plugins/woocommerce-admin/client/products/fills/more-menu-items/feedback-menu-item.tsx new file mode 100644 index 00000000000..2cf6730a914 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/fills/more-menu-items/feedback-menu-item.tsx @@ -0,0 +1,50 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { MenuItem } from '@wordpress/components'; +import { useDispatch } from '@wordpress/data'; +import { STORE_KEY as CES_STORE_KEY } from '@woocommerce/customer-effort-score'; + +/** + * Internal dependencies + */ +import { FeedbackIcon } from '../../images/feedback-icon'; + +export const FeedbackMenuItem = ( { onClose }: { onClose: () => void } ) => { + const { showCesModal } = useDispatch( CES_STORE_KEY ); + + return ( + { + showCesModal( + { + action: 'new_product', + title: __( + "How's your experience with the product editor?", + 'woocommerce' + ), + firstQuestion: __( + 'The product editing screen is easy to use', + 'woocommerce' + ), + secondQuestion: __( + "The product editing screen's functionality meets my needs", + 'woocommerce' + ), + }, + { shouldShowComments: () => true }, + { + type: 'snackbar', + icon: 🌟, + } + ); + onClose(); + } } + icon={ } + iconPosition="right" + > + { __( 'Share feedback', 'woocommerce' ) } + + ); +}; diff --git a/plugins/woocommerce-admin/client/products/fills/more-menu-items/index.ts b/plugins/woocommerce-admin/client/products/fills/more-menu-items/index.ts new file mode 100644 index 00000000000..c180f511b00 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/fills/more-menu-items/index.ts @@ -0,0 +1,2 @@ +export * from './feedback-menu-item'; +export * from './classic-editor-menu-item'; diff --git a/plugins/woocommerce-admin/client/products/fills/product-block-editor-fills.tsx b/plugins/woocommerce-admin/client/products/fills/product-block-editor-fills.tsx new file mode 100644 index 00000000000..e6fad9f2587 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/fills/product-block-editor-fills.tsx @@ -0,0 +1,54 @@ +/** + * External dependencies + */ +import { __experimentalWooProductMoreMenuItem as WooProductMoreMenuItem } from '@woocommerce/product-editor'; +import { registerPlugin } from '@wordpress/plugins'; +import { WooHeaderItem } from '@woocommerce/admin-layout'; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore No types for this exist yet. +// eslint-disable-next-line @woocommerce/dependency-group +import { useEntityProp } from '@wordpress/core-data'; + +/** + * Internal dependencies + */ +import { ProductMVPFeedbackModalContainer } from '~/customer-effort-score-tracks/product-mvp-feedback-modal-container'; +import { + FeedbackMenuItem, + ClassicEditorMenuItem, +} from '../fills/more-menu-items'; + +const MoreMenuFill = ( { onClose }: { onClose: () => void } ) => { + const [ id ] = useEntityProp( 'postType', 'product', 'id' ); + + return ( + <> + + + + ); +}; + +const ProductHeaderFill = () => { + const [ id ] = useEntityProp( 'postType', 'product', 'id' ); + + return ; +}; + +registerPlugin( 'wc-admin-more-menu', { + // @ts-expect-error 'scope' does exist. @types/wordpress__plugins is outdated. + scope: 'woocommerce-product-block-editor', + render: () => ( + <> + + { ( { onClose }: { onClose: () => void } ) => ( + + ) } + + + + + + ), +} ); diff --git a/plugins/woocommerce-admin/client/products/hooks/use-product-entity-record.ts b/plugins/woocommerce-admin/client/products/hooks/use-product-entity-record.ts new file mode 100644 index 00000000000..b0f03086810 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/hooks/use-product-entity-record.ts @@ -0,0 +1,42 @@ +/** + * External dependencies + */ +import { AUTO_DRAFT_NAME } from '@woocommerce/product-editor'; +import { Product } from '@woocommerce/data'; +import { useDispatch, resolveSelect } from '@wordpress/data'; + +import { useEffect, useState } from '@wordpress/element'; + +export function useProductEntityRecord( + productId: string | undefined +): Product | undefined { + const { saveEntityRecord } = useDispatch( 'core' ); + const [ product, setProduct ] = useState< Product | undefined >( + undefined + ); + + useEffect( () => { + const getRecordPromise: Promise< Product > = productId + ? resolveSelect( 'core' ).getEntityRecord< Product >( + 'postType', + 'product', + Number.parseInt( productId, 10 ) + ) + : // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Incorrect types. + ( saveEntityRecord( 'postType', 'product', { + title: AUTO_DRAFT_NAME, + status: 'auto-draft', + } ) as Promise< Product > ); + getRecordPromise + .then( ( autoDraftProduct: Product ) => { + setProduct( autoDraftProduct ); + } ) + .catch( ( e ) => { + setProduct( undefined ); + throw e; + } ); + }, [ productId ] ); + + return product; +} diff --git a/plugins/woocommerce-admin/client/products/product-block-page.scss b/plugins/woocommerce-admin/client/products/product-block-page.scss new file mode 100644 index 00000000000..f24be5be5e1 --- /dev/null +++ b/plugins/woocommerce-admin/client/products/product-block-page.scss @@ -0,0 +1,66 @@ +.woocommerce-product-block-editor { + .components-input-control { + &__prefix { + margin-left: $gap-smaller; + } + + &__suffix { + margin-right: $gap-smaller; + } + } + + .components-currency-control { + .components-input-control__prefix { + color: $gray-700; + } + + .components-input-control__input { + text-align: right; + } + } + + .components-summary-control { + width: 100%; + min-height: calc($gap-larger * 3); + background-color: $white; + box-sizing: border-box; + border: 1px solid #757575; + border-radius: 2px; + padding: $gap-smaller; + margin: 0; + appearance: textarea; + resize: vertical; + overflow: hidden; + + &:focus { + box-shadow: inset 0 0 0 1px var(--wp-admin-theme-color-darker-10, --wp-admin-theme-color); + border-color: var(--wp-admin-theme-color-darker-10, --wp-admin-theme-color); + } + } + + .woocommerce-product-form { + &__custom-label-input { + display: flex; + flex-direction: column; + + label { + display: block; + margin-bottom: $gap-smaller; + } + } + + &__optional-input { + color: $gray-700; + } + } + + .wp-block-columns { + gap: $gap-large; + } + + .wp-block-woocommerce-product-section { + > .block-editor-inner-blocks > .block-editor-block-list__layout > .wp-block:not(:first-child) { + margin-top: $gap-large; + } + } +} diff --git a/plugins/woocommerce-admin/client/products/product-more-menu.tsx b/plugins/woocommerce-admin/client/products/product-more-menu.tsx index a5e38a85718..887a77138da 100644 --- a/plugins/woocommerce-admin/client/products/product-more-menu.tsx +++ b/plugins/woocommerce-admin/client/products/product-more-menu.tsx @@ -2,53 +2,39 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { DropdownMenu, MenuItem } from '@wordpress/components'; -import { useDispatch, useSelect } from '@wordpress/data'; +import { DropdownMenu } from '@wordpress/components'; +import { useFormContext } from '@woocommerce/components'; +import { useSelect } from '@wordpress/data'; import { WooHeaderItem } from '@woocommerce/admin-layout'; -import { getAdminLink } from '@woocommerce/settings'; import { moreVertical } from '@wordpress/icons'; import { OPTIONS_STORE_NAME, Product } from '@woocommerce/data'; -import { useFormContext } from '@woocommerce/components'; -import { - ALLOW_TRACKING_OPTION_NAME, - STORE_KEY as CES_STORE_KEY, -} from '@woocommerce/customer-effort-score'; +import { ALLOW_TRACKING_OPTION_NAME } from '@woocommerce/customer-effort-score'; /** * Internal dependencies */ -import { ClassicEditorIcon } from './images/classic-editor-icon'; -import { FeedbackIcon } from './images/feedback-icon'; -import { NEW_PRODUCT_MANAGEMENT } from '~/customer-effort-score-tracks/product-mvp-ces-footer'; + +import { + FeedbackMenuItem, + ClassicEditorMenuItem, +} from './fills/more-menu-items'; + import './product-more-menu.scss'; export const ProductMoreMenu = () => { const { values } = useFormContext< Product >(); - const { showCesModal, showProductMVPFeedbackModal } = - useDispatch( CES_STORE_KEY ); - const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); - - const { allowTracking, resolving: isLoading } = useSelect( ( select ) => { - const { getOption, hasFinishedResolution } = - select( OPTIONS_STORE_NAME ); - - const allowTrackingOption = - getOption( ALLOW_TRACKING_OPTION_NAME ) || 'no'; + const { resolving: isLoading } = useSelect( ( select ) => { + const { hasFinishedResolution } = select( OPTIONS_STORE_NAME ); const resolving = ! hasFinishedResolution( 'getOption', [ ALLOW_TRACKING_OPTION_NAME, ] ); return { - allowTracking: allowTrackingOption === 'yes', resolving, }; } ); - const classEditorUrl = values.id - ? getAdminLink( `post.php?post=${ values.id }&action=edit` ) - : getAdminLink( 'post-new.php?post_type=product' ); - if ( isLoading ) { return null; } @@ -63,55 +49,11 @@ export const ProductMoreMenu = () => { > { ( { onClose } ) => ( <> - { - showCesModal( - { - action: 'new_product', - title: __( - "How's your experience with the product editor?", - 'woocommerce' - ), - firstQuestion: __( - 'The product editing screen is easy to use', - 'woocommerce' - ), - secondQuestion: __( - "The product editing screen's functionality meets my needs", - 'woocommerce' - ), - }, - { shouldShowComments: () => true }, - { - type: 'snackbar', - icon: 🌟, - } - ); - onClose(); - } } - icon={ } - iconPosition="right" - > - { __( 'Share feedback', 'woocommerce' ) } - - { - if ( allowTracking ) { - updateOptions( { - [ NEW_PRODUCT_MANAGEMENT ]: 'no', - } ); - showProductMVPFeedbackModal(); - onClose(); - } else { - window.location.href = classEditorUrl; - onClose(); - } - } } - icon={ } - iconPosition="right" - > - { __( 'Use the classic editor', 'woocommerce' ) } - + + ) } diff --git a/plugins/woocommerce-admin/client/products/product-page.tsx b/plugins/woocommerce-admin/client/products/product-page.tsx index 5f3eb9873c8..6b414978f5a 100644 --- a/plugins/woocommerce-admin/client/products/product-page.tsx +++ b/plugins/woocommerce-admin/client/products/product-page.tsx @@ -3,25 +3,28 @@ */ import { __experimentalEditor as Editor, - AUTO_DRAFT_NAME, ProductEditorSettings, } from '@woocommerce/product-editor'; -import { Product } from '@woocommerce/data'; -import { useDispatch, useSelect, select as WPSelect } from '@wordpress/data'; -import { useEffect, useState } from '@wordpress/element'; + import { Spinner } from '@wordpress/components'; import { useParams } from 'react-router-dom'; /** * Internal dependencies */ +import { useProductEntityRecord } from './hooks/use-product-entity-record'; + import './product-page.scss'; +import './product-block-page.scss'; +import './fills/product-block-editor-fills'; declare const productBlockEditorSettings: ProductEditorSettings; -const ProductEditor: React.FC< { product: Product | undefined } > = ( { - product, -} ) => { +export default function ProductPage() { + const { productId } = useParams(); + + const product = useProductEntityRecord( productId ); + if ( ! product?.id ) { return ; } @@ -32,50 +35,4 @@ const ProductEditor: React.FC< { product: Product | undefined } > = ( { settings={ productBlockEditorSettings || {} } /> ); -}; - -const EditProductEditor: React.FC< { productId: string } > = ( { - productId, -} ) => { - const { product } = useSelect( ( select: typeof WPSelect ) => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore Missing types. - const { getEditedEntityRecord } = select( 'core' ); - - return { - product: getEditedEntityRecord( 'postType', 'product', productId ), - }; - } ); - - return ; -}; - -const AddProductEditor = () => { - const { saveEntityRecord } = useDispatch( 'core' ); - const [ product, setProduct ] = useState< Product | undefined >( - undefined - ); - - useEffect( () => { - saveEntityRecord( 'postType', 'product', { - title: AUTO_DRAFT_NAME, - status: 'auto-draft', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore Incorrect types. - } ).then( ( autoDraftProduct: Product ) => { - setProduct( autoDraftProduct ); - } ); - }, [] ); - - return ; -}; - -export default function ProductPage() { - const { productId } = useParams(); - - if ( productId ) { - return ; - } - - return ; } diff --git a/plugins/woocommerce-admin/client/products/test/product-form-actions.spec.tsx b/plugins/woocommerce-admin/client/products/test/product-form-actions.spec.tsx index 683ab12e273..d6ebcacbbfc 100644 --- a/plugins/woocommerce-admin/client/products/test/product-form-actions.spec.tsx +++ b/plugins/woocommerce-admin/client/products/test/product-form-actions.spec.tsx @@ -3,7 +3,7 @@ */ import { render, waitFor, screen, within } from '@testing-library/react'; import { Fragment } from '@wordpress/element'; -import { Form, FormContext } from '@woocommerce/components'; +import { Form, FormContextType } from '@woocommerce/components'; import { Product } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import userEvent from '@testing-library/user-event'; @@ -203,7 +203,7 @@ describe( 'ProductFormActions', () => { }; const { queryByText, getByLabelText } = render( > initialValues={ product }> - { ( { getInputProps }: FormContext< Product > ) => { + { ( { getInputProps }: FormContextType< Product > ) => { return ( <> diff --git a/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js b/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js index 80bdede39d2..25ceb1c4557 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js +++ b/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js @@ -31,6 +31,7 @@ export const Item = ( { isRecommended, markConfigured, paymentGateway } ) => { settingsUrl: manageUrl, is_local_partner: isLocalPartner, external_link: externalLink, + transaction_processors: transactionProcessors, } = paymentGateway; const connectSlot = useSlot( @@ -88,6 +89,21 @@ export const Item = ( { isRecommended, markConfigured, paymentGateway } ) => {
{ content }
+ { transactionProcessors && ( +
+ { Object.keys( transactionProcessors ).map( + ( key ) => { + return ( + { + ); + } + ) } +
+ ) }
{ - const { getOnboardingError } = select( ONBOARDING_STORE_NAME ); - - const isProfileItemsError = Boolean( - getOnboardingError( 'updateProfileItems' ) - ); - - return { isProfileItemsError }; - } ), - withDispatch( ( dispatch ) => { - const { createNotice } = dispatch( 'core/notices' ); - const { updateProfileItems } = dispatch( ONBOARDING_STORE_NAME ); - return { - createNotice, - updateProfileItems, - }; - } ) -)( Connect ); - -registerPlugin( 'wc-admin-onboarding-task-connect', { - scope: 'woocommerce-tasks', - render: () => ( - - { ( { onComplete, query } ) => ( - - ) } - - ), -} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-shipping-recommendation/components/plugin-banner.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-shipping-recommendation/components/plugin-banner.scss index aeb41e3fafe..64a78605fab 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-shipping-recommendation/components/plugin-banner.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-shipping-recommendation/components/plugin-banner.scss @@ -1,5 +1,4 @@ .woocommerce-task-shipping-recommendation__plugins-install { - display: flex; padding: $gap-large calc($gap + $gap-smallest); border: 1px solid #ddd; border-radius: 3px; @@ -7,19 +6,20 @@ margin-bottom: $gap-large; &.dual { + display: flex; flex-direction: column; - justify-content: space-between; + justify-content: flex-start; width: 285px; - height: 322px; p { margin-top: 0; - margin-bottom: -$gap-smaller; + margin-bottom: 15px; color: $gray-700; } .plugins-install__plugin-banner-image { display: flex; + margin-bottom: $gap-large; img { width: 120px; height: 28px; @@ -28,8 +28,9 @@ } &.single { + display: flex; .plugins-install__list { - max-width: 380px; + max-width: 360px; } } @@ -51,6 +52,10 @@ .woocommerce-task-shipping-recommendations_plugins-buttons { display: flex; justify-content: space-between; + margin-top: $gap-large; + flex-grow: 1; + align-items: flex-end; + button { min-width: 40%; padding-inline: $gap-smaller; diff --git a/plugins/woocommerce-admin/client/tasks/fills/import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/import-products/cards.scss index 715d2bd6eaf..29e15f6cdb8 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/import-products/cards.scss @@ -8,7 +8,9 @@ grid-template-columns: auto auto; grid-column-gap: 16px; grid-row-gap: 24px; - justify-content: start; + // Set it to center here since we only have one import option. + // We can change it to start when we have more import options. + justify-content: center; } .woocommerce-list__item { diff --git a/plugins/woocommerce-admin/client/tasks/fills/import-products/importTypes.tsx b/plugins/woocommerce-admin/client/tasks/fills/import-products/importTypes.tsx index abb15efd783..dd8a3cd77b0 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/import-products/importTypes.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/import-products/importTypes.tsx @@ -3,10 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import PageIcon from 'gridicons/dist/pages'; -import ReblogIcon from 'gridicons/dist/reblog'; import { getAdminLink } from '@woocommerce/settings'; -import interpolateComponents from '@automattic/interpolate-components'; -import { ExternalLink } from '@wordpress/components'; import { recordEvent } from '@woocommerce/tracks'; export const importTypes = [ @@ -25,32 +22,4 @@ export const importTypes = [ ); }, }, - { - key: 'from-cart2cart' as const, - title: __( 'FROM CART2CART', 'woocommerce' ), - content: interpolateComponents( { - mixedString: __( - 'Migrate all store data like products, customers, and orders in no time with this 3rd party plugin. {{link}}Learn more{{/link}}', - 'woocommerce' - ), - components: { - link: ( - e.preventDefault() } - > - ), - }, - } ), - before: , - onClick: () => { - recordEvent( 'tasklist_add_product', { method: 'migrate' } ); - window - .open( - 'https://woocommerce.com/products/cart2cart/?utm_medium=product', - '_blank' - ) - ?.focus(); - }, - }, ]; diff --git a/plugins/woocommerce-admin/client/tasks/fills/import-products/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/import-products/test/index.tsx index 981543421f5..6bf835fea08 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/import-products/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/import-products/test/index.tsx @@ -57,24 +57,6 @@ describe( 'Products', () => { ); } ); - test( 'should fire "tasklist_add_product" event when the cart2cart option clicked', async () => { - const { getByRole } = render( ); - - userEvent.click( - getByRole( 'menuitem', { - name: 'FROM CART2CART Migrate all store data like products, customers, and orders in no time with this 3rd party plugin. Learn more (opens in a new tab)', - } ) - ); - await waitFor( () => - expect( recordEvent ).toHaveBeenCalledWith( - 'tasklist_add_product', - { - method: 'migrate', - } - ) - ); - } ); - test( 'should fire "task_completion_time" event when an option clicked', async () => { Object.defineProperty( window, 'performance', { value: { diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.js index e191ba1b103..767469bd3d7 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/index.js +++ b/plugins/woocommerce-admin/client/tasks/fills/index.js @@ -6,7 +6,6 @@ import './PaymentGatewaySuggestions'; import './shipping'; import './Marketing'; import './appearance'; -import './connect'; import './tax'; import './woocommerce-payments'; import './purchase'; diff --git a/plugins/woocommerce-admin/client/tasks/fills/products/footer.tsx b/plugins/woocommerce-admin/client/tasks/fills/products/footer.tsx index 2538012b50b..86dba20973c 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/products/footer.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/products/footer.tsx @@ -4,7 +4,6 @@ import { __ } from '@wordpress/i18n'; import interpolateComponents from '@automattic/interpolate-components'; import { Text } from '@woocommerce/experimental'; -import { ExternalLink } from '@wordpress/components'; import { Link } from '@woocommerce/components'; import { getAdminLink } from '@woocommerce/settings'; import { recordEvent } from '@woocommerce/tracks'; @@ -25,7 +24,7 @@ const Footer: React.FC = () => { { interpolateComponents( { mixedString: __( - '{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}} or {{_3rdLink}}use a 3rd party migration plugin{{/_3rdLink}}.', + '{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}}.', 'woocommerce' ), components: { @@ -47,20 +46,6 @@ const Footer: React.FC = () => { <> ), - _3rdLink: ( - { - recordEvent( 'tasklist_add_product', { - method: 'migrate', - } ); - recordCompletionTime(); - } } - href="https://woocommerce.com/products/cart2cart/?utm_medium=product" - type="external" - > - <> - - ), }, } ) } diff --git a/plugins/woocommerce-admin/client/tasks/fills/products/test/footer.tsx b/plugins/woocommerce-admin/client/tasks/fills/products/test/footer.tsx index f042aa61be2..b75e20d3107 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/products/test/footer.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/products/test/footer.tsx @@ -16,9 +16,9 @@ describe( 'Footer', () => { beforeEach( () => { ( recordEvent as jest.Mock ).mockClear(); } ); - it( 'should render footer with two links', () => { + it( 'should render footer with one links', () => { const { queryAllByRole } = render(
); - expect( queryAllByRole( 'link' ) ).toHaveLength( 2 ); + expect( queryAllByRole( 'link' ) ).toHaveLength( 1 ); } ); it( 'clicking on import CSV should fire event tasklist_add_product with method:import and task_completion_time', () => { @@ -35,19 +35,4 @@ describe( 'Footer', () => { { task_name: 'products', time: '0-2s' } ); } ); - - it( 'clicking on start blank should fire event tasklist_add_product with method:migrate and task_completion_time', () => { - const { getByText } = render(
); - userEvent.click( getByText( 'use a 3rd party migration plugin' ) ); - expect( recordEvent ).toHaveBeenNthCalledWith( - 1, - 'tasklist_add_product', - { method: 'migrate' } - ); - expect( recordEvent ).toHaveBeenNthCalledWith( - 2, - 'task_completion_time', - { task_name: 'products', time: '0-2s' } - ); - } ); } ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/shipping/shipping-providers/shipping-providers.ts b/plugins/woocommerce-admin/client/tasks/fills/shipping/shipping-providers/shipping-providers.ts index 58df653cdbf..10f703ac863 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/shipping/shipping-providers/shipping-providers.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/shipping/shipping-providers/shipping-providers.ts @@ -83,6 +83,7 @@ const providers = { }, Skydropx: { name: 'Skydropx' as const, + slug: 'skydropx-cotizador-y-envios', // https://wordpress.org/plugins/skydropx-cotizador-y-envios/ url: 'https://wordpress.org/plugins/skydropx-cotizador-y-envios/', 'single-partner-layout': SkydropxSinglePartner, }, diff --git a/plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.js b/plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.tsx similarity index 87% rename from plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.js rename to plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.tsx index b41112cab10..c5bf53e71cc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.js +++ b/plugins/woocommerce-admin/client/tasks/fills/woocommerce-payments.tsx @@ -22,7 +22,13 @@ const WoocommercePaymentsTaskItem = () => { return ( - { ( { defaultTaskItem: DefaultTaskItem } ) => ( + { ( { + defaultTaskItem: DefaultTaskItem, + }: { + defaultTaskItem: ( props: { + onClick: () => void; + } ) => JSX.Element; + } ) => ( { @@ -41,6 +47,7 @@ const WoocommercePaymentsTaskItem = () => { }; registerPlugin( 'woocommerce-admin-task-wcpay', { + // @ts-expect-error scope is not defined in the type definition but it is a valid property scope: 'woocommerce-tasks', render: WoocommercePaymentsTaskItem, } ); @@ -85,6 +92,7 @@ const WoocommercePaymentsTaskPage = () => ( ); registerPlugin( 'woocommerce-admin-task-wcpay-page', { + // @ts-expect-error scope is not defined in the type definition but it is a valid property scope: 'woocommerce-tasks', render: WoocommercePaymentsTaskPage, } ); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/completed-header.tsx b/plugins/woocommerce-admin/client/two-column-tasks/completed-header.tsx index 91e7623b723..a3e94b33d2c 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/completed-header.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/completed-header.tsx @@ -10,8 +10,11 @@ import { OPTIONS_STORE_NAME, WCDataSelector, WEEK } from '@woocommerce/data'; import { Button, Card, CardHeader } from '@wordpress/components'; import { Text } from '@woocommerce/experimental'; import { + ADMIN_INSTALL_TIMESTAMP_OPTION_NAME, + ALLOW_TRACKING_OPTION_NAME, CustomerFeedbackModal, CustomerFeedbackSimple, + SHOWN_FOR_ACTIONS_OPTION_NAME, } from '@woocommerce/customer-effort-score'; import { __ } from '@wordpress/i18n'; @@ -27,11 +30,7 @@ type TaskListCompletedHeaderProps = { customerEffortScore: boolean; }; -const ADMIN_INSTALL_TIMESTAMP_OPTION_NAME = - 'woocommerce_admin_install_timestamp'; -const SHOWN_FOR_ACTIONS_OPTION_NAME = 'woocommerce_ces_shown_for_actions'; const CUSTOMER_EFFORT_SCORE_ACTION = 'store_setup'; -const ALLOW_TRACKING_OPTION_NAME = 'woocommerce_allow_tracking'; function getStoreAgeInWeeks( adminInstallTimestamp: number ) { if ( adminInstallTimestamp === 0 ) { diff --git a/plugins/woocommerce-admin/client/utils/url-helpers.ts b/plugins/woocommerce-admin/client/utils/url-helpers.ts index 2a4de62a627..6be812527bf 100644 --- a/plugins/woocommerce-admin/client/utils/url-helpers.ts +++ b/plugins/woocommerce-admin/client/utils/url-helpers.ts @@ -1,7 +1,7 @@ /** * Extracts all segments from the path query param as a string array. * - * @param path The query path param + * @param path The query path param * @return The list of segments from the path */ export function getSegmentsFromPath( path?: string ): string[] { diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index 8a493229dbc..f07b86d7a2c 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -33,19 +33,19 @@ "lint:js-pre-commit": "eslint --ext=js,ts,tsx", "prepack": "pnpm install && pnpm run lint && pnpm run test && cross-env WC_ADMIN_PHASE=core pnpm run build", "packages:fix:textdomain": "node ./bin/package-update-textdomain.js", - "packages:build": "cross-env WC_ADMIN_PHASE=development pnpm -w run build --filter='./packages/js/*'", - "packages:watch": "cross-env WC_ADMIN_PHASE=development pnpm run:packages -- start --parallel", - "run:packages": "pnpm run --filter ../../packages/js/", + "packages:build": "pnpm run:packages -- build", + "packages:watch": "pnpm run:packages -- start", + "run:packages": "pnpm run --parallel --filter='../../packages/js/**'", "prestart": "pnpm packages:build && cross-env WC_ADMIN_PHASE=development pnpm run build:feature-config", "start": "concurrently \"cross-env WC_ADMIN_PHASE=development webpack --watch\" \"cross-env WC_ADMIN_PHASE=development pnpm packages:watch\"", - "start:hot": "pnpm prestart && concurrently \"cross-env WC_ADMIN_PHASE=development webpack serve\" \"cross-env WC_ADMIN_PHASE=development pnpm packages:watch\"", + "start:hot": "pnpm prestart && concurrently \"cross-env HOT=true WC_ADMIN_PHASE=development webpack serve\" \"cross-env WC_ADMIN_PHASE=development pnpm packages:watch\"", "test-staged": "pnpm run test:client --bail --findRelatedTests", "test:client": "jest --config client/jest.config.js", "test:debug": "node --inspect-brk ./node_modules/.bin/jest --config client/jest.config.js --watch --runInBand --no-cache", "test:help": "wp-scripts test-unit-js --help", "test:update-snapshots": "pnpm run test:client --updateSnapshot && pnpm run --filter @woocommerce/components test:update-snapshots", "test:watch": "pnpm run test:client --watch", - "ts:check": "tsc --build ./tsconfig.json --pretty", + "ts:check": "tsc --project tsconfig.json --pretty", "ts:check:watch": "npm run ts:check -- --watch" }, "dependencies": { @@ -217,7 +217,7 @@ "style-loader": "^0.23.1", "stylelint": "^14.5.3", "ts-jest": "^27.1.3", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "url-loader": "^1.1.2", "webpack": "^5.70.0", "webpack-bundle-analyzer": "^3.9.0", diff --git a/plugins/woocommerce-admin/webpack.config.js b/plugins/woocommerce-admin/webpack.config.js index 949227462c2..54a6afebd25 100644 --- a/plugins/woocommerce-admin/webpack.config.js +++ b/plugins/woocommerce-admin/webpack.config.js @@ -22,6 +22,7 @@ const WooCommerceDependencyExtractionWebpackPlugin = require( '../../packages/js const NODE_ENV = process.env.NODE_ENV || 'development'; const WC_ADMIN_PHASE = process.env.WC_ADMIN_PHASE || 'development'; +const isHot = Boolean( process.env.HOT ); const isProduction = NODE_ENV === 'production'; const wcAdminPackages = [ @@ -134,6 +135,7 @@ const webpackConfig = { plugins: [ '@babel/plugin-proposal-class-properties', ! isProduction && + isHot && require.resolve( 'react-refresh/babel' ), ].filter( Boolean ), }, @@ -190,7 +192,7 @@ const webpackConfig = { } ) ), } ), // React Fast Refresh. - ! isProduction && new ReactRefreshWebpackPlugin(), + ! isProduction && isHot && new ReactRefreshWebpackPlugin(), // We reuse this Webpack setup for Storybook, where we need to disable dependency extraction. ! process.env.STORYBOOK && @@ -228,23 +230,26 @@ const webpackConfig = { if ( ! isProduction || WC_ADMIN_PHASE === 'development' ) { // Set default sourcemap mode if it wasn't set by WP_DEVTOOL. webpackConfig.devtool = webpackConfig.devtool || 'source-map'; - // Add dev server config - // Copied from https://github.com/WordPress/gutenberg/blob/05bea6dd5c6198b0287c41a401d36a06b48831eb/packages/scripts/config/webpack.config.js#L312-L326 - webpackConfig.devServer = { - devMiddleware: { - writeToDisk: true, - }, - allowedHosts: 'auto', - host: 'localhost', - port: 8887, - proxy: { - '/build': { - pathRewrite: { - '^/build': '', + + if ( isHot ) { + // Add dev server config + // Copied from https://github.com/WordPress/gutenberg/blob/05bea6dd5c6198b0287c41a401d36a06b48831eb/packages/scripts/config/webpack.config.js#L312-L326 + webpackConfig.devServer = { + devMiddleware: { + writeToDisk: true, + }, + allowedHosts: 'auto', + host: 'localhost', + port: 8887, + proxy: { + '/build': { + pathRewrite: { + '^/build': '', + }, }, }, - }, - }; + }; + } } module.exports = webpackConfig; diff --git a/plugins/woocommerce-beta-tester/changelog/fix-typescript-incremental-builds b/plugins/woocommerce-beta-tester/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/plugins/woocommerce-beta-tester/changelog/fix-typescript-package-isolation b/plugins/woocommerce-beta-tester/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index 88518e4d3e9..e1f33cf7fc4 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -21,7 +21,7 @@ "eslint": "^8.32.0", "prettier": "npm:wp-prettier@^2.6.2", "ts-loader": "^9.4.1", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "uglify-js": "^3.5.3" }, "dependencies": { diff --git a/plugins/woocommerce/assets/images/shipping_partners/check.svg b/plugins/woocommerce/assets/images/shipping_partners/check.svg new file mode 100644 index 00000000000..2ddc7203902 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/discount.svg b/plugins/woocommerce/assets/images/shipping_partners/discount.svg new file mode 100644 index 00000000000..2855be644bd --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/discount.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/envia-column.svg b/plugins/woocommerce/assets/images/shipping_partners/envia-column.svg new file mode 100644 index 00000000000..ab9b864ed21 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/envia-column.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/packlink-column.svg b/plugins/woocommerce/assets/images/shipping_partners/packlink-column.svg new file mode 100644 index 00000000000..26e912a6c77 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/packlink-column.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/packlink-row.svg b/plugins/woocommerce/assets/images/shipping_partners/packlink-row.svg new file mode 100644 index 00000000000..31be20af962 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/packlink-row.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/sendcloud-column.svg b/plugins/woocommerce/assets/images/shipping_partners/sendcloud-column.svg new file mode 100644 index 00000000000..5eb02636c50 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/sendcloud-column.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/sendcloud-row.svg b/plugins/woocommerce/assets/images/shipping_partners/sendcloud-row.svg new file mode 100644 index 00000000000..7af5c26fe42 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/sendcloud-row.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/shipstation-column.svg b/plugins/woocommerce/assets/images/shipping_partners/shipstation-column.svg new file mode 100644 index 00000000000..7e4ce249077 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/shipstation-column.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/shipstation-row.svg b/plugins/woocommerce/assets/images/shipping_partners/shipstation-row.svg new file mode 100644 index 00000000000..965fcdb3e8f --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/shipstation-row.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/skydropx-column.svg b/plugins/woocommerce/assets/images/shipping_partners/skydropx-column.svg new file mode 100644 index 00000000000..bb7e0f47fdd --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/skydropx-column.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/star.svg b/plugins/woocommerce/assets/images/shipping_partners/star.svg new file mode 100644 index 00000000000..2283a6f2cb4 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/star.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/timer.svg b/plugins/woocommerce/assets/images/shipping_partners/timer.svg new file mode 100644 index 00000000000..afb0cdc184b --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/timer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plugins/woocommerce/assets/images/shipping_partners/wcs-column.svg b/plugins/woocommerce/assets/images/shipping_partners/wcs-column.svg new file mode 100644 index 00000000000..57d2056c995 --- /dev/null +++ b/plugins/woocommerce/assets/images/shipping_partners/wcs-column.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/woocommerce/bin/package-update.sh b/plugins/woocommerce/bin/package-update.sh index dd574adfa97..40422b2586d 100755 --- a/plugins/woocommerce/bin/package-update.sh +++ b/plugins/woocommerce/bin/package-update.sh @@ -34,7 +34,7 @@ if [ -z "$SKIP_UPDATE_TEXTDOMAINS" ]; then output 2 "Done!" output 3 "Updating package JS textdomains..." - find ./packages/woocommerce-blocks -iname '*.js' -exec sed -i.bak -e "s/'woo-gutenberg-products-block'/'woocommerce'/g" -e "s/\"woo-gutenberg-products-block\"/\"woocommerce\"/g" {} \; + find ./packages/woocommerce-blocks \( -iname '*.js' -o -iname '*.json' \) -exec sed -i.bak -e "s/'woo-gutenberg-products-block'/'woocommerce'/g" -e "s/\"woo-gutenberg-products-block\"/\"woocommerce\"/g" {} \; find ./packages/woocommerce-blocks -iname '*.js' -exec sed -i.bak -e "s/'woocommerce-admin'/'woocommerce'/g" -e "s/\"woocommerce-admin\"/\"woocommerce\"/g" {} \; fi diff --git a/plugins/woocommerce/changelog/36257-redux b/plugins/woocommerce/changelog/36257-redux deleted file mode 100644 index 84a77791f36..00000000000 --- a/plugins/woocommerce/changelog/36257-redux +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Allow sorting by menu_order in products widget. diff --git a/plugins/woocommerce/changelog/add-35851-tree-control-selection b/plugins/woocommerce/changelog/add-35851-tree-control-selection deleted file mode 100644 index 8ec6ebea260..00000000000 --- a/plugins/woocommerce/changelog/add-35851-tree-control-selection +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix unit test snapshots due to a dependency version change diff --git a/plugins/woocommerce/changelog/add-36413-support-for-cart-checkout-in-declare-compatibility b/plugins/woocommerce/changelog/add-36413-support-for-cart-checkout-in-declare-compatibility deleted file mode 100644 index 7724faa14f5..00000000000 --- a/plugins/woocommerce/changelog/add-36413-support-for-cart-checkout-in-declare-compatibility +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: enhancement - -Add the support for the C&C Blocks in declaring compatibility feature diff --git a/plugins/woocommerce/changelog/add-36661_existing_attribute_layout b/plugins/woocommerce/changelog/add-36661_existing_attribute_layout deleted file mode 100644 index 7ea6d84a2e2..00000000000 --- a/plugins/woocommerce/changelog/add-36661_existing_attribute_layout +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Add existing global attribute layout #36944 diff --git a/plugins/woocommerce/changelog/add-36991 b/plugins/woocommerce/changelog/add-36991 deleted file mode 100644 index 710c3b98efc..00000000000 --- a/plugins/woocommerce/changelog/add-36991 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Create editor skeleton on add/edit product pages diff --git a/plugins/woocommerce/changelog/add-37096 b/plugins/woocommerce/changelog/add-37096 deleted file mode 100644 index 9644a87c81e..00000000000 --- a/plugins/woocommerce/changelog/add-37096 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Add tabs and sections placeholders in product blocks template diff --git a/plugins/woocommerce/changelog/add-37103 b/plugins/woocommerce/changelog/add-37103 new file mode 100644 index 00000000000..b555a67c8ae --- /dev/null +++ b/plugins/woocommerce/changelog/add-37103 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add summary block diff --git a/plugins/woocommerce/changelog/add-37120_hydrate_product_editor_settings b/plugins/woocommerce/changelog/add-37120_hydrate_product_editor_settings deleted file mode 100644 index 8bf592e2794..00000000000 --- a/plugins/woocommerce/changelog/add-37120_hydrate_product_editor_settings +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add productBlockEditorSettings script to be used for the Product Block Editor. diff --git a/plugins/woocommerce/changelog/add-37128 b/plugins/woocommerce/changelog/add-37128 deleted file mode 100644 index ad668d22778..00000000000 --- a/plugins/woocommerce/changelog/add-37128 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add new feature flag for the product edit blocks experience diff --git a/plugins/woocommerce/changelog/add-admin-layout-package b/plugins/woocommerce/changelog/add-admin-layout-package deleted file mode 100644 index ec1bd147634..00000000000 --- a/plugins/woocommerce/changelog/add-admin-layout-package +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Add @woocommerce/admin-layout package. diff --git a/plugins/woocommerce/changelog/add-encoding-selector-to-product-importer b/plugins/woocommerce/changelog/add-encoding-selector-to-product-importer deleted file mode 100644 index 7d2631b3da9..00000000000 --- a/plugins/woocommerce/changelog/add-encoding-selector-to-product-importer +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add an encoding selector to the product importer diff --git a/plugins/woocommerce/changelog/add-initial-product-draft-37003 b/plugins/woocommerce/changelog/add-initial-product-draft-37003 deleted file mode 100644 index 5ac217f5914..00000000000 --- a/plugins/woocommerce/changelog/add-initial-product-draft-37003 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Creating product entity in auto-draft status, and adding support for retrieving preexisting products. diff --git a/plugins/woocommerce/changelog/add-k6-regression-test b/plugins/woocommerce/changelog/add-k6-regression-test deleted file mode 100644 index bec84721135..00000000000 --- a/plugins/woocommerce/changelog/add-k6-regression-test +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: add -Comment: Perf test not included in release - - diff --git a/plugins/woocommerce/changelog/add-legacy-start b/plugins/woocommerce/changelog/add-legacy-start new file mode 100644 index 00000000000..206be55753c --- /dev/null +++ b/plugins/woocommerce/changelog/add-legacy-start @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Add start command to package.json + + diff --git a/plugins/woocommerce/changelog/add-marketing-trackers b/plugins/woocommerce/changelog/add-marketing-trackers deleted file mode 100644 index 44debd914aa..00000000000 --- a/plugins/woocommerce/changelog/add-marketing-trackers +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: add - -Add marketplace suggestions and multichannel marketing information to WC Tracker. diff --git a/plugins/woocommerce/changelog/add-migrate-more-menu-37097 b/plugins/woocommerce/changelog/add-migrate-more-menu-37097 new file mode 100644 index 00000000000..66bbc13845c --- /dev/null +++ b/plugins/woocommerce/changelog/add-migrate-more-menu-37097 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Refactoring product editor more menu items, and using in block editor slot fills. diff --git a/plugins/woocommerce/changelog/add-name-block-37007 b/plugins/woocommerce/changelog/add-name-block-37007 deleted file mode 100644 index 8785c8ec87c..00000000000 --- a/plugins/woocommerce/changelog/add-name-block-37007 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Update template of product type to include product name block. diff --git a/plugins/woocommerce/changelog/add-new-countries-for-wcpay b/plugins/woocommerce/changelog/add-new-countries-for-wcpay deleted file mode 100644 index 31484387070..00000000000 --- a/plugins/woocommerce/changelog/add-new-countries-for-wcpay +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add support for new countries in WCPay diff --git a/plugins/woocommerce/changelog/add-new-product-editor-e2e b/plugins/woocommerce/changelog/add-new-product-editor-e2e deleted file mode 100644 index 04695b5933f..00000000000 --- a/plugins/woocommerce/changelog/add-new-product-editor-e2e +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Initial e2e tests for new product editor. diff --git a/plugins/woocommerce/changelog/add-order_cache b/plugins/woocommerce/changelog/add-order_cache deleted file mode 100644 index 1b800aff214..00000000000 --- a/plugins/woocommerce/changelog/add-order_cache +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add a cache for orders, to use when custom order tables are enabled diff --git a/plugins/woocommerce/changelog/add-product-inventory-tracks b/plugins/woocommerce/changelog/add-product-inventory-tracks deleted file mode 100644 index 3b17caa8cdd..00000000000 --- a/plugins/woocommerce/changelog/add-product-inventory-tracks +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: tweak - -Add Tracks events for product inventory tab interactions. diff --git a/plugins/woocommerce/changelog/add-tracking-for-loca-pickup b/plugins/woocommerce/changelog/add-tracking-for-loca-pickup deleted file mode 100644 index 20ccbdbeb1f..00000000000 --- a/plugins/woocommerce/changelog/add-tracking-for-loca-pickup +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: tweak - -Add tracking for local pickup method in Checkout diff --git a/plugins/woocommerce/changelog/add-turn-get-tax-location-public b/plugins/woocommerce/changelog/add-turn-get-tax-location-public deleted file mode 100644 index c15b487c25d..00000000000 --- a/plugins/woocommerce/changelog/add-turn-get-tax-location-public +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Make WC_Order::get_tax_location accessible publicly through a wrapper function. diff --git a/plugins/woocommerce/changelog/bump-required-php-to-7.3 b/plugins/woocommerce/changelog/bump-required-php-to-7.3 new file mode 100644 index 00000000000..8da66073db3 --- /dev/null +++ b/plugins/woocommerce/changelog/bump-required-php-to-7.3 @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Bump required PHP version to 7.3 and PHPUnit version to 9 diff --git a/plugins/woocommerce/changelog/dev-37117_set_default_quantity_value b/plugins/woocommerce/changelog/dev-37117_set_default_quantity_value new file mode 100644 index 00000000000..131462c4f1d --- /dev/null +++ b/plugins/woocommerce/changelog/dev-37117_set_default_quantity_value @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Set quantity value when stock tracking is enabled diff --git a/plugins/woocommerce/changelog/dev-37119_show_message_for_variable_products b/plugins/woocommerce/changelog/dev-37119_show_message_for_variable_products deleted file mode 100644 index 859ac60349f..00000000000 --- a/plugins/woocommerce/changelog/dev-37119_show_message_for_variable_products +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Show a message for variable products diff --git a/plugins/woocommerce/changelog/dev-clean-analytics-classes b/plugins/woocommerce/changelog/dev-clean-analytics-classes deleted file mode 100644 index fdd8860a366..00000000000 --- a/plugins/woocommerce/changelog/dev-clean-analytics-classes +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: dev -Comment: This is just a dev maintenance, removing duplicated code. - - diff --git a/plugins/woocommerce/changelog/dev-pin-wp-deps-6 b/plugins/woocommerce/changelog/dev-pin-wp-deps-6 deleted file mode 100644 index 551e0919dac..00000000000 --- a/plugins/woocommerce/changelog/dev-pin-wp-deps-6 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Sync @wordpress package versions via syncpack. diff --git a/plugins/woocommerce/changelog/dev-react-fast-fresh b/plugins/woocommerce/changelog/dev-react-fast-fresh deleted file mode 100644 index 7c523caf634..00000000000 --- a/plugins/woocommerce/changelog/dev-react-fast-fresh +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Set up React Fast Refresh in woocommerce-admin diff --git a/plugins/woocommerce/changelog/dev-update-eslint-plugin b/plugins/woocommerce/changelog/dev-update-eslint-plugin deleted file mode 100644 index 47894ec9c6c..00000000000 --- a/plugins/woocommerce/changelog/dev-update-eslint-plugin +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Fix lint issues diff --git a/plugins/woocommerce/changelog/e2e-fix-daily-k6-workflow-env-var b/plugins/woocommerce/changelog/e2e-fix-daily-k6-workflow-env-var deleted file mode 100644 index 65522dd597d..00000000000 --- a/plugins/woocommerce/changelog/e2e-fix-daily-k6-workflow-env-var +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: dev - -Fix the value of `UPDATE_WC` environment variable in the daily k6 performance tests. diff --git a/plugins/woocommerce/changelog/e2e-fix-failing-daily-product-variations b/plugins/woocommerce/changelog/e2e-fix-failing-daily-product-variations new file mode 100644 index 00000000000..c2a615baf27 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-fix-failing-daily-product-variations @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fixes a failing e2e test for product variations diff --git a/plugins/woocommerce/changelog/e2e-fix-failing-malta-test b/plugins/woocommerce/changelog/e2e-fix-failing-malta-test new file mode 100644 index 00000000000..cc9f444a669 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-fix-failing-malta-test @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Update OBW end to end test as WC Pay supports Malta now diff --git a/plugins/woocommerce/changelog/e2e-release-include-drafts b/plugins/woocommerce/changelog/e2e-release-include-drafts deleted file mode 100644 index a2a4d56118d..00000000000 --- a/plugins/woocommerce/changelog/e2e-release-include-drafts +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: dev - -Support E2E testing of draft releases. diff --git a/plugins/woocommerce/changelog/e2e-release-plugins b/plugins/woocommerce/changelog/e2e-release-plugins new file mode 100644 index 00000000000..3aab6e26e88 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-release-plugins @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Smoke test WooCommerce with plugins installed on releases. diff --git a/plugins/woocommerce/changelog/e2e-setup-flakiness b/plugins/woocommerce/changelog/e2e-setup-flakiness new file mode 100644 index 00000000000..d4cb783d5b0 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-setup-flakiness @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Reduce flakiness on E2E test setup. diff --git a/plugins/woocommerce/changelog/e2e-trunk-merge b/plugins/woocommerce/changelog/e2e-trunk-merge new file mode 100644 index 00000000000..0ada563b534 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-trunk-merge @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Run E2E tests on PR merge to trunk. diff --git a/plugins/woocommerce/changelog/e2e-update-release-e2e-testing b/plugins/woocommerce/changelog/e2e-update-release-e2e-testing deleted file mode 100644 index 6f907635c94..00000000000 --- a/plugins/woocommerce/changelog/e2e-update-release-e2e-testing +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: update - -Updates automated release testing workflow to use Playwright diff --git a/plugins/woocommerce/changelog/enhance-textdomain-replacement b/plugins/woocommerce/changelog/enhance-textdomain-replacement new file mode 100644 index 00000000000..4aca7564230 --- /dev/null +++ b/plugins/woocommerce/changelog/enhance-textdomain-replacement @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update textdomain in woocommerce-blocks *.json files to `woocommerce` diff --git a/plugins/woocommerce/changelog/feature-34905-marketing-campaigns-card b/plugins/woocommerce/changelog/feature-34905-marketing-campaigns-card deleted file mode 100644 index d578a5a71e9..00000000000 --- a/plugins/woocommerce/changelog/feature-34905-marketing-campaigns-card +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add Campaigns card into Multichannel Marketing page. diff --git a/plugins/woocommerce/changelog/feature-34907-marketing-exclude-channels b/plugins/woocommerce/changelog/feature-34907-marketing-exclude-channels new file mode 100644 index 00000000000..941984e2475 --- /dev/null +++ b/plugins/woocommerce/changelog/feature-34907-marketing-exclude-channels @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Filter out marketing channels in "Installed extensions" and "Discover more marketing tools" cards. diff --git a/plugins/woocommerce/changelog/feature-34909-marketing-create-campaign-modal b/plugins/woocommerce/changelog/feature-34909-marketing-create-campaign-modal deleted file mode 100644 index 00be5a2596f..00000000000 --- a/plugins/woocommerce/changelog/feature-34909-marketing-create-campaign-modal +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add "Create a new campaign" modal in Campaigns card in Multichannel Marketing page. diff --git a/plugins/woocommerce/changelog/feature-37127-marketing-reload-installed-extensions b/plugins/woocommerce/changelog/feature-37127-marketing-reload-installed-extensions new file mode 100644 index 00000000000..932bb4a3710 --- /dev/null +++ b/plugins/woocommerce/changelog/feature-37127-marketing-reload-installed-extensions @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Refetch data for "Installed extensions" card after installing a recommended marketing channel. diff --git a/plugins/woocommerce/changelog/feature-37176-specify-wp-data-resolution-args b/plugins/woocommerce/changelog/feature-37176-specify-wp-data-resolution-args deleted file mode 100644 index 2224143fc8e..00000000000 --- a/plugins/woocommerce/changelog/feature-37176-specify-wp-data-resolution-args +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix WP data resolution (`invalidateResolution`) not working with WP 5.9 in marketing page. diff --git a/plugins/woocommerce/changelog/fix-#34200-need-to-add-space-between-author-image-and-meta b/plugins/woocommerce/changelog/fix-#34200-need-to-add-space-between-author-image-and-meta deleted file mode 100644 index 962ff56149f..00000000000 --- a/plugins/woocommerce/changelog/fix-#34200-need-to-add-space-between-author-image-and-meta +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fix -Comment: Make Reviews table CSS match other list tables. - - diff --git a/plugins/woocommerce/changelog/fix-28969-modify-order-on-refund b/plugins/woocommerce/changelog/fix-28969-modify-order-on-refund deleted file mode 100644 index 57a4c3c9806..00000000000 --- a/plugins/woocommerce/changelog/fix-28969-modify-order-on-refund +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Update the date modified field for an order when a refund for it is successfully processed. diff --git a/plugins/woocommerce/changelog/fix-32717 b/plugins/woocommerce/changelog/fix-32717 deleted file mode 100644 index 7203612332a..00000000000 --- a/plugins/woocommerce/changelog/fix-32717 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: tweak - -Prevent 'woocommerce_ajax_order_items_removed' from generating PHP warnings. diff --git a/plugins/woocommerce/changelog/fix-34391 b/plugins/woocommerce/changelog/fix-34391 deleted file mode 100644 index afbb07ece83..00000000000 --- a/plugins/woocommerce/changelog/fix-34391 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: tweak - -Make sure 'safe_text' settings are rendered as 'text' inputs for compatibility. diff --git a/plugins/woocommerce/changelog/fix-35543 b/plugins/woocommerce/changelog/fix-35543 deleted file mode 100644 index a427c9577b6..00000000000 --- a/plugins/woocommerce/changelog/fix-35543 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Prevent possible warning arising from use of woocommerce_wp_* family of functions. diff --git a/plugins/woocommerce/changelog/fix-35703-order-meta-backfill b/plugins/woocommerce/changelog/fix-35703-order-meta-backfill new file mode 100644 index 00000000000..d6b48db0887 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-35703-order-meta-backfill @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +When order meta data is saved via HPOS, it should be backfilled to the CPT data store. diff --git a/plugins/woocommerce/changelog/fix-36618-product-import b/plugins/woocommerce/changelog/fix-36618-product-import deleted file mode 100644 index 67560ceed4c..00000000000 --- a/plugins/woocommerce/changelog/fix-36618-product-import +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Ensure product importer imports all lines in a CSV file. diff --git a/plugins/woocommerce/changelog/fix-36711-obw-blank-screen-wp5_9 b/plugins/woocommerce/changelog/fix-36711-obw-blank-screen-wp5_9 deleted file mode 100644 index 4f39fe3029a..00000000000 --- a/plugins/woocommerce/changelog/fix-36711-obw-blank-screen-wp5_9 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix blank screen is displayed during OBW when using WP5.9 diff --git a/plugins/woocommerce/changelog/fix-36855-qty-selector-in-variables b/plugins/woocommerce/changelog/fix-36855-qty-selector-in-variables deleted file mode 100644 index 1f55fad5c17..00000000000 --- a/plugins/woocommerce/changelog/fix-36855-qty-selector-in-variables +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix no enforcing of min/max limits in quantity selector of variable products. diff --git a/plugins/woocommerce/changelog/fix-36890_create_wc_extension_script b/plugins/woocommerce/changelog/fix-36890_create_wc_extension_script deleted file mode 100644 index 253dcf4a315..00000000000 --- a/plugins/woocommerce/changelog/fix-36890_create_wc_extension_script +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Update create-wc-extension script within woocommerce-admin. diff --git a/plugins/woocommerce/changelog/fix-37020_duplicated_global_attribute b/plugins/woocommerce/changelog/fix-37020_duplicated_global_attribute deleted file mode 100644 index a698ac0c2d5..00000000000 --- a/plugins/woocommerce/changelog/fix-37020_duplicated_global_attribute +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: fix - -Fix duplicated global attribute diff --git a/plugins/woocommerce/changelog/fix-37021_add_validation_when_saving_attributes b/plugins/woocommerce/changelog/fix-37021_add_validation_when_saving_attributes deleted file mode 100644 index 81560990d51..00000000000 --- a/plugins/woocommerce/changelog/fix-37021_add_validation_when_saving_attributes +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Add validation when saving attributes and variations diff --git a/plugins/woocommerce/changelog/fix-37083-page_displays_0_for_empty_recommended_channels b/plugins/woocommerce/changelog/fix-37083-page_displays_0_for_empty_recommended_channels deleted file mode 100644 index 4e690c01a3a..00000000000 --- a/plugins/woocommerce/changelog/fix-37083-page_displays_0_for_empty_recommended_channels +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix 0 rendered on short-circuit evaluation. diff --git a/plugins/woocommerce/changelog/fix-37389-error-option-not-set b/plugins/woocommerce/changelog/fix-37389-error-option-not-set new file mode 100644 index 00000000000..00bec2f5166 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-37389-error-option-not-set @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Add default value when calling get_option for woocommerce_task_list_tracked_completed_tasks. diff --git a/plugins/woocommerce/changelog/fix-arrayutil_get_value_or_default b/plugins/woocommerce/changelog/fix-arrayutil_get_value_or_default deleted file mode 100644 index 0c8dd965fab..00000000000 --- a/plugins/woocommerce/changelog/fix-arrayutil_get_value_or_default +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix ArrayUtil::get_value_or_default method not behaving as documented for null array values diff --git a/plugins/woocommerce/changelog/fix-cant-apply-coupon-0 b/plugins/woocommerce/changelog/fix-cant-apply-coupon-0 deleted file mode 100644 index d9066b3f2a1..00000000000 --- a/plugins/woocommerce/changelog/fix-cant-apply-coupon-0 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix the inability to apply a coupon whose code is "0" diff --git a/plugins/woocommerce/changelog/fix-import-of-draft-variations b/plugins/woocommerce/changelog/fix-import-of-draft-variations deleted file mode 100644 index 00f56b8dba5..00000000000 --- a/plugins/woocommerce/changelog/fix-import-of-draft-variations +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Fix variations exported as draft being imported as draft (and thus remaining invisible) diff --git a/plugins/woocommerce/changelog/fix-incorrect-variable-in-api-core-tests-37387 b/plugins/woocommerce/changelog/fix-incorrect-variable-in-api-core-tests-37387 new file mode 100644 index 00000000000..bd976e51b5c --- /dev/null +++ b/plugins/woocommerce/changelog/fix-incorrect-variable-in-api-core-tests-37387 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix incorrect variable name in api-core-tests diff --git a/plugins/woocommerce/changelog/fix-k6-baseline-imports b/plugins/woocommerce/changelog/fix-k6-baseline-imports deleted file mode 100644 index c6a3c6e2630..00000000000 --- a/plugins/woocommerce/changelog/fix-k6-baseline-imports +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: dev - -add wpLogin import to wc-baseline-load.js diff --git a/plugins/woocommerce/changelog/fix-mobile-app-connection-owner-bug b/plugins/woocommerce/changelog/fix-mobile-app-connection-owner-bug deleted file mode 100644 index b3f987f0f3e..00000000000 --- a/plugins/woocommerce/changelog/fix-mobile-app-connection-owner-bug +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: fix - -fixed bug where jetpack connection owner field was assumed to be username when its actually display name diff --git a/plugins/woocommerce/changelog/fix-order-cache-duplicate b/plugins/woocommerce/changelog/fix-order-cache-duplicate new file mode 100644 index 00000000000..1fb3ace0c40 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-order-cache-duplicate @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Overwrite clone method to prevent duplicate datq when saving a clone. diff --git a/plugins/woocommerce/changelog/fix-react-dependency-versions b/plugins/woocommerce/changelog/fix-react-dependency-versions deleted file mode 100644 index 026a7cd5b70..00000000000 --- a/plugins/woocommerce/changelog/fix-react-dependency-versions +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: fix - -Override react version to 17.0.2 diff --git a/plugins/woocommerce/changelog/fix-refund-rounding-difference b/plugins/woocommerce/changelog/fix-refund-rounding-difference new file mode 100644 index 00000000000..906ec2b0d5e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-refund-rounding-difference @@ -0,0 +1,4 @@ +Significance: patch +Type: enhancement + +Fix rounding difference on refunds with per-line taxes diff --git a/plugins/woocommerce/changelog/fix-tax_lookup_and_order_stat_deletion b/plugins/woocommerce/changelog/fix-tax_lookup_and_order_stat_deletion new file mode 100644 index 00000000000..6fedd274ecf --- /dev/null +++ b/plugins/woocommerce/changelog/fix-tax_lookup_and_order_stat_deletion @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Delete tax lookup and order stats database records when an order is deleted while orders table is authoritative diff --git a/plugins/woocommerce/changelog/fix-tt2-wp60-missing-padding-in-some-buttons b/plugins/woocommerce/changelog/fix-tt2-wp60-missing-padding-in-some-buttons deleted file mode 100644 index e4e172c8cf5..00000000000 --- a/plugins/woocommerce/changelog/fix-tt2-wp60-missing-padding-in-some-buttons +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Add default button padding to TT2 stylesheet to fix some visual issues in WP 5.9 and 6.0 diff --git a/plugins/woocommerce/changelog/fix-typescript-incremental-builds b/plugins/woocommerce/changelog/fix-typescript-incremental-builds new file mode 100644 index 00000000000..f2bdc9a96ae --- /dev/null +++ b/plugins/woocommerce/changelog/fix-typescript-incremental-builds @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: TypeScript build change + + diff --git a/plugins/woocommerce/changelog/fix-typescript-package-isolation b/plugins/woocommerce/changelog/fix-typescript-package-isolation new file mode 100644 index 00000000000..2d087939231 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-typescript-package-isolation @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Configuration change only + + diff --git a/plugins/woocommerce/changelog/fix-typo-in-stats-controller b/plugins/woocommerce/changelog/fix-typo-in-stats-controller new file mode 100644 index 00000000000..b2d5cc53fad --- /dev/null +++ b/plugins/woocommerce/changelog/fix-typo-in-stats-controller @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Fix typo in Stats controller diff --git a/plugins/woocommerce/changelog/fix-update-customer-after-user-edit b/plugins/woocommerce/changelog/fix-update-customer-after-user-edit deleted file mode 100644 index a03bc532599..00000000000 --- a/plugins/woocommerce/changelog/fix-update-customer-after-user-edit +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Update Customers report with latest user data after editing user. diff --git a/plugins/woocommerce/changelog/fix-use-dbdelta-and-truncate-to-manage-attribute-lookup-tables b/plugins/woocommerce/changelog/fix-use-dbdelta-and-truncate-to-manage-attribute-lookup-tables deleted file mode 100644 index 5401b5ad760..00000000000 --- a/plugins/woocommerce/changelog/fix-use-dbdelta-and-truncate-to-manage-attribute-lookup-tables +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: performance - -Switch wc_product_attributes_lookup table management to use truncate and dbDelta over drop table diff --git a/plugins/woocommerce/changelog/fix-variations-dom-events b/plugins/woocommerce/changelog/fix-variations-dom-events deleted file mode 100644 index 1545c761283..00000000000 --- a/plugins/woocommerce/changelog/fix-variations-dom-events +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fix -Comment: This fixes a bug which was introduced in a recent PR - - diff --git a/plugins/woocommerce/changelog/fix-wc_add_number_precision-not-supporting-null b/plugins/woocommerce/changelog/fix-wc_add_number_precision-not-supporting-null deleted file mode 100644 index e7b9ce5c13c..00000000000 --- a/plugins/woocommerce/changelog/fix-wc_add_number_precision-not-supporting-null +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Add support for null inputs to pnpm wc_add_number_precision diff --git a/plugins/woocommerce/changelog/improved_wc_price_to_display b/plugins/woocommerce/changelog/improved_wc_price_to_display deleted file mode 100644 index eb6339b83ab..00000000000 --- a/plugins/woocommerce/changelog/improved_wc_price_to_display +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: enhancement - -Add 'display_context' argument to wc_get_price_to_display(). diff --git a/plugins/woocommerce/changelog/issue-30104 b/plugins/woocommerce/changelog/issue-30104 deleted file mode 100644 index ac9273945ad..00000000000 --- a/plugins/woocommerce/changelog/issue-30104 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Log to order notes when coupons are removed or applied. diff --git a/plugins/woocommerce/changelog/issues-35004-attributes-saved-trigger b/plugins/woocommerce/changelog/issues-35004-attributes-saved-trigger deleted file mode 100644 index 7e4e46cc8a5..00000000000 --- a/plugins/woocommerce/changelog/issues-35004-attributes-saved-trigger +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: tweak - -Trigger event `woocommerce_attributes_saved` following successful product meta box ajax update. diff --git a/plugins/woocommerce/changelog/pr-35940 b/plugins/woocommerce/changelog/pr-35940 new file mode 100644 index 00000000000..16aa6505b31 --- /dev/null +++ b/plugins/woocommerce/changelog/pr-35940 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix the type for order items in the schema definition of REST API v1 and V2 \ No newline at end of file diff --git a/plugins/woocommerce/changelog/pr-36705 b/plugins/woocommerce/changelog/pr-36705 deleted file mode 100644 index c8308e99213..00000000000 --- a/plugins/woocommerce/changelog/pr-36705 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Added `woocommerce_widget_layered_nav_filters_start/end` hooks around layered nav filters widget \ No newline at end of file diff --git a/plugins/woocommerce/changelog/pr-37052 b/plugins/woocommerce/changelog/pr-37052 deleted file mode 100644 index c137f14ef99..00000000000 --- a/plugins/woocommerce/changelog/pr-37052 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Corrects a class reference in the ProductDownloadsServiceProvider. \ No newline at end of file diff --git a/plugins/woocommerce/changelog/pr-37056 b/plugins/woocommerce/changelog/pr-37056 deleted file mode 100644 index 569c062225f..00000000000 --- a/plugins/woocommerce/changelog/pr-37056 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Corrects class namespaces in Onboarding. It was missed during last restructuring. diff --git a/plugins/woocommerce/changelog/pr-37057 b/plugins/woocommerce/changelog/pr-37057 deleted file mode 100644 index 29c071af96e..00000000000 --- a/plugins/woocommerce/changelog/pr-37057 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Corrects a variable name in Reports\Stock\Stats. It was missed during the last name change. diff --git a/plugins/woocommerce/changelog/pr-37058 b/plugins/woocommerce/changelog/pr-37058 deleted file mode 100644 index 526d0042221..00000000000 --- a/plugins/woocommerce/changelog/pr-37058 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Corrects imported classes. Class names should not begin with a backslash. diff --git a/plugins/woocommerce/changelog/pr-37405 b/plugins/woocommerce/changelog/pr-37405 new file mode 100644 index 00000000000..3c131a2db1e --- /dev/null +++ b/plugins/woocommerce/changelog/pr-37405 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Fix typos in comments in REST API customers controller \ No newline at end of file diff --git a/plugins/woocommerce/changelog/remove-wcpay-accordion b/plugins/woocommerce/changelog/remove-wcpay-accordion deleted file mode 100644 index f409fb94f29..00000000000 --- a/plugins/woocommerce/changelog/remove-wcpay-accordion +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: update - -Remove accordion from "Other payment providers" in payment task diff --git a/plugins/woocommerce/changelog/pr-36759 b/plugins/woocommerce/changelog/revert-36768-fix-36767-woocommerce_run_on_woocommerce_admin_updated-does-not-run similarity index 55% rename from plugins/woocommerce/changelog/pr-36759 rename to plugins/woocommerce/changelog/revert-36768-fix-36767-woocommerce_run_on_woocommerce_admin_updated-does-not-run index 5e9cda49931..c48f20c0c5b 100644 --- a/plugins/woocommerce/changelog/pr-36759 +++ b/plugins/woocommerce/changelog/revert-36768-fix-36767-woocommerce_run_on_woocommerce_admin_updated-does-not-run @@ -1,4 +1,5 @@ Significance: patch Type: fix +Comment: Revert #36768 + -fix typo in variable name \ No newline at end of file diff --git a/plugins/woocommerce/changelog/try-remove-e2e-waits b/plugins/woocommerce/changelog/try-remove-e2e-waits new file mode 100644 index 00000000000..8e07a999db3 --- /dev/null +++ b/plugins/woocommerce/changelog/try-remove-e2e-waits @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Remove timeouts in e2e tests for variable products and analytics. diff --git a/plugins/woocommerce/changelog/update-35887_spotlight_on_analytics_revenue b/plugins/woocommerce/changelog/update-35887_spotlight_on_analytics_revenue deleted file mode 100644 index 49596b65370..00000000000 --- a/plugins/woocommerce/changelog/update-35887_spotlight_on_analytics_revenue +++ /dev/null @@ -1,4 +0,0 @@ -Significance: major -Type: update - -Change the default date used on Revenue and Orders report to 'date_paid' and create spotlight on both reports diff --git a/plugins/woocommerce/changelog/update-36355_product_editor_package b/plugins/woocommerce/changelog/update-36355_product_editor_package deleted file mode 100644 index f78ff8529ce..00000000000 --- a/plugins/woocommerce/changelog/update-36355_product_editor_package +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Update imports of product slot fills to new @woocommerce/product-editor library diff --git a/plugins/woocommerce/changelog/update-36395-move-product-fields b/plugins/woocommerce/changelog/update-36395-move-product-fields deleted file mode 100644 index 82ab9e78887..00000000000 --- a/plugins/woocommerce/changelog/update-36395-move-product-fields +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Moving some components out of core and into product-editor package. diff --git a/plugins/woocommerce/changelog/update-36719 b/plugins/woocommerce/changelog/update-36719 deleted file mode 100644 index 896dc558a69..00000000000 --- a/plugins/woocommerce/changelog/update-36719 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Move product utils into product editor package diff --git a/plugins/woocommerce/changelog/update-36723 b/plugins/woocommerce/changelog/update-36723 deleted file mode 100644 index c78abe8297a..00000000000 --- a/plugins/woocommerce/changelog/update-36723 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Move hook to confirm unsaved form changes to navigation package diff --git a/plugins/woocommerce/changelog/update-36746-update-avalara-cta-copy b/plugins/woocommerce/changelog/update-36746-update-avalara-cta-copy deleted file mode 100644 index 5d00e4f782b..00000000000 --- a/plugins/woocommerce/changelog/update-36746-update-avalara-cta-copy +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: tweak - -Change Avalara CTA copy in tax task to Download diff --git a/plugins/woocommerce/changelog/update-ci-workflow-remove-wp-5-8 b/plugins/woocommerce/changelog/update-ci-workflow-remove-wp-5-8 deleted file mode 100644 index 49609065bb3..00000000000 --- a/plugins/woocommerce/changelog/update-ci-workflow-remove-wp-5-8 +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: update -Comment: workflow update. not part of release zip - - diff --git a/plugins/woocommerce/changelog/update-entity-store-endpoint-36990 b/plugins/woocommerce/changelog/update-entity-store-endpoint-36990 deleted file mode 100644 index d6f53eea345..00000000000 --- a/plugins/woocommerce/changelog/update-entity-store-endpoint-36990 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Updating rest namespace for product posttype to version 3. diff --git a/plugins/woocommerce/changelog/update-manage-stock-disabled b/plugins/woocommerce/changelog/update-manage-stock-disabled deleted file mode 100644 index 54bbac5922e..00000000000 --- a/plugins/woocommerce/changelog/update-manage-stock-disabled +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Show link to store settings when stock management is disabled. diff --git a/plugins/woocommerce/changelog/update-manage-stock-label b/plugins/woocommerce/changelog/update-manage-stock-label deleted file mode 100644 index 046a681b500..00000000000 --- a/plugins/woocommerce/changelog/update-manage-stock-label +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: tweak - -Rename "Manage stock?" label to "Stock management". diff --git a/plugins/woocommerce/changelog/update-migrate-task-fills-to-ts b/plugins/woocommerce/changelog/update-migrate-task-fills-to-ts new file mode 100644 index 00000000000..c5d100b1641 --- /dev/null +++ b/plugins/woocommerce/changelog/update-migrate-task-fills-to-ts @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Migrate woocommerce-payments task to TS and remove connect.js from task fills diff --git a/plugins/woocommerce/changelog/update-move-ces-data-store b/plugins/woocommerce/changelog/update-move-ces-data-store deleted file mode 100644 index b85fbb8d362..00000000000 --- a/plugins/woocommerce/changelog/update-move-ces-data-store +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Add CES data store to @woocommerce/customer-effort-score diff --git a/plugins/woocommerce/changelog/update-move-ces-to-package b/plugins/woocommerce/changelog/update-move-ces-to-package deleted file mode 100644 index ca5584e0fec..00000000000 --- a/plugins/woocommerce/changelog/update-move-ces-to-package +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: dev - -Move CES components and utilities to @woocommerce/customer-effort-score diff --git a/plugins/woocommerce/changelog/update-move-product-hooks b/plugins/woocommerce/changelog/update-move-product-hooks deleted file mode 100644 index 5dbc28e2162..00000000000 --- a/plugins/woocommerce/changelog/update-move-product-hooks +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Moving use-product-helper and related product hooks to product editor package. diff --git a/plugins/woocommerce/changelog/update-move-remaining-ces-to-package b/plugins/woocommerce/changelog/update-move-remaining-ces-to-package new file mode 100644 index 00000000000..7bd3509065d --- /dev/null +++ b/plugins/woocommerce/changelog/update-move-remaining-ces-to-package @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Move additional CES-related components to @woocommerce/customer-effort-score. diff --git a/plugins/woocommerce/changelog/update-product-page-add-hook-37281 b/plugins/woocommerce/changelog/update-product-page-add-hook-37281 new file mode 100644 index 00000000000..22f43052aba --- /dev/null +++ b/plugins/woocommerce/changelog/update-product-page-add-hook-37281 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Replacing multiple components on the block product page with a single hook. diff --git a/plugins/woocommerce/changelog/update-product_rest_config b/plugins/woocommerce/changelog/update-product_rest_config deleted file mode 100644 index ee0d9c7fa68..00000000000 --- a/plugins/woocommerce/changelog/update-product_rest_config +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Update product post rest config when block editor feature is enabled. diff --git a/plugins/woocommerce/changelog/update-refactor-currency-context b/plugins/woocommerce/changelog/update-refactor-currency-context deleted file mode 100644 index 542b256874c..00000000000 --- a/plugins/woocommerce/changelog/update-refactor-currency-context +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Moving currencyContext to relevant package, and updating all references. diff --git a/plugins/woocommerce/changelog/update-stable-tag b/plugins/woocommerce/changelog/update-stable-tag deleted file mode 100644 index e5ee8f7e111..00000000000 --- a/plugins/woocommerce/changelog/update-stable-tag +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: dev -Comment: This PR updates the stable tag. No changelog entry is required. - diff --git a/plugins/woocommerce/changelog/update-stable-tag-7-5-1 b/plugins/woocommerce/changelog/update-stable-tag-7-5-1 new file mode 100644 index 00000000000..993c5ee05ab --- /dev/null +++ b/plugins/woocommerce/changelog/update-stable-tag-7-5-1 @@ -0,0 +1,4 @@ +Significance: patch +Type: dev +Comment: This PR updates stable tag, no changelog entry is required. + diff --git a/plugins/woocommerce/changelog/update-use-theme-color-for-completed-task-strikethrough b/plugins/woocommerce/changelog/update-use-theme-color-for-completed-task-strikethrough deleted file mode 100644 index 26d3972b2a4..00000000000 --- a/plugins/woocommerce/changelog/update-use-theme-color-for-completed-task-strikethrough +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Use the currently activated theme color for completed tasks strikethough diff --git a/plugins/woocommerce/changelog/update-variations-form b/plugins/woocommerce/changelog/update-variations-form deleted file mode 100644 index 15de2b48117..00000000000 --- a/plugins/woocommerce/changelog/update-variations-form +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Change Variations form shown in Variations tab when there are no variations created diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.2 b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.2 deleted file mode 100644 index 70c4f39490e..00000000000 --- a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.2 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: update - -Update WooCommerce Blocks to 9.6.2 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.3 b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.3 deleted file mode 100644 index 2d8f61daef0..00000000000 --- a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.6.3 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: update - -Update WooCommerce Blocks to 9.6.3 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.0 b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.0 deleted file mode 100644 index 6bcd9bc8231..00000000000 --- a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.0 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: update - -Update WooCommerce BLocks to 9.8.0 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.1 b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.1 deleted file mode 100644 index 9d8b1e6c9eb..00000000000 --- a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.1 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: update - -Update WooCommerce Blocks to 9.8.1 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.2 b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.2 new file mode 100644 index 00000000000..eeb9356bb51 --- /dev/null +++ b/plugins/woocommerce/changelog/update-woocommerce-blocks-9.8.2 @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Update WooCommerce Blocks to 9.8.2 diff --git a/plugins/woocommerce/changelog/woocommerce-reduce-order-item-stock b/plugins/woocommerce/changelog/woocommerce-reduce-order-item-stock deleted file mode 100644 index 5c46be6f864..00000000000 --- a/plugins/woocommerce/changelog/woocommerce-reduce-order-item-stock +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: enhancement - -Added woocommerce_reduce_order_item_stock action hook diff --git a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss index 0a3d6bad802..3613c74465f 100644 --- a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss +++ b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss @@ -365,63 +365,6 @@ } - // Description/Additional info/Reviews tabs. - .woocommerce-tabs { - padding-top: var(--wp--style--block-gap); - - ul.wc-tabs { - padding: 0; - border-bottom-style: solid; - border-bottom-width: 1px; - border-bottom-color: #eae9eb; - - li { - opacity: 0.5; - color: var(--wp--preset--color--contrast); - margin: 0; - padding: 0.5em 1em 0.5em 1em; - border-color: #eae9eb; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - float: left; - border-style: solid; - border-width: 1px; - font-weight: 600; - font-size: var(--wp--preset--font-size--medium); - - &:first-child { - border-left-color: #eae9eb; - margin-left: 1em; - } - - &.active { - background: var(--wp--preset--color--tertiary); - color: var(--wp--preset--color--contrast); - opacity: 1; - } - - a { - text-decoration: none; - color: var(--wp--preset--color--contrast); - } - } - } - - .woocommerce-Tabs-panel { - padding-top: var(--wp--style--block-gap); - font-size: var(--wp--preset--font-size--small); - margin-left: 1em; - - h2 { - display: none; - } - - table.woocommerce-product-attributes { - text-align: left; - } - } - } - // Reviews tab. .woocommerce-Reviews { ol.commentlist { @@ -593,6 +536,63 @@ } +// Description/Additional info/Reviews tabs. +.woocommerce-tabs { + padding-top: var(--wp--style--block-gap); +} + +ul.wc-tabs { + padding: 0; + border-bottom-style: solid; + border-bottom-width: 1px; + border-bottom-color: #eae9eb; + + li { + opacity: 0.5; + color: var(--wp--preset--color--contrast); + margin: 0; + padding: 0.5em 1em 0.5em 1em; + border-color: #eae9eb; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + float: left; + border-style: solid; + border-width: 1px; + font-weight: 600; + font-size: var(--wp--preset--font-size--medium); + + &:first-child { + border-left-color: #eae9eb; + margin-left: 1em; + } + + &.active { + background: var(--wp--preset--color--tertiary); + color: var(--wp--preset--color--contrast); + opacity: 1; + } + + a { + text-decoration: none; + color: var(--wp--preset--color--contrast); + } + } +} + +.woocommerce-Tabs-panel { + padding-top: var(--wp--style--block-gap); + font-size: var(--wp--preset--font-size--small); + margin-left: 1em; + + h2 { + display: none; + } + + table.woocommerce-product-attributes { + text-align: left; + } +} + .woocommerce-page { .woocommerce-cart-form { diff --git a/plugins/woocommerce/client/legacy/css/twenty-twenty-two.scss b/plugins/woocommerce/client/legacy/css/twenty-twenty-two.scss index 1ae290e0ed2..be8519c50e1 100644 --- a/plugins/woocommerce/client/legacy/css/twenty-twenty-two.scss +++ b/plugins/woocommerce/client/legacy/css/twenty-twenty-two.scss @@ -369,63 +369,6 @@ $tt2-gray: #f7f7f7; } } - .woocommerce-tabs { - padding-top: var(--wp--style--block-gap); - - ul.wc-tabs { - padding: 0; - border-bottom-style: solid; - border-bottom-width: 1px; - border-bottom-color: #eae9eb; - - li { - background: #eae9eb; - margin: 0; - padding: 0.5em 1em 0.5em 1em; - border-color: #eae9eb; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - float: left; - border-style: solid; - border-width: 1px; - border-left-color: var(--wp--preset--color--background); - font-weight: 600; - font-size: var(--wp--preset--font-size--medium); - - &:first-child { - border-left-color: #eae9eb; - margin-left: 1em; - } - - &.active { - box-shadow: 0 1px var(--wp--preset--color--background); - } - - a { - text-decoration: none; - } - } - } - - // Moved from blocktheme.scss to retain full styling. - ul.tabs li.active { - // Style active tab in theme colors. - background: var(--wp--preset--color--background, $contentbg); - border-bottom-color: var(--wp--preset--color--background, $contentbg); - } - - - .woocommerce-Tabs-panel { - padding-top: var(--wp--style--block-gap); - font-size: var(--wp--preset--font-size--small); - margin-left: 1em; - - h2 { - display: none; - } - } - } - .woocommerce-Reviews { ol.commentlist { list-style: none; @@ -603,6 +546,59 @@ $tt2-gray: #f7f7f7; } } +// Description/Additional info/Reviews tabs. +.woocommerce-tabs { + padding-top: var(--wp--style--block-gap); +} + +ul.wc-tabs { + padding: 0; + border-bottom-style: solid; + border-bottom-width: 1px; + border-bottom-color: #eae9eb; + + li { + background: #eae9eb; + margin: 0; + padding: 0.5em 1em 0.5em 1em; + border-color: #eae9eb; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + float: left; + border-style: solid; + border-width: 1px; + border-left-color: var(--wp--preset--color--background); + font-weight: 600; + font-size: var(--wp--preset--font-size--medium); + + &:first-child { + border-left-color: #eae9eb; + margin-left: 1em; + } + + &.active { + // Style active tab in theme colors. + background: var(--wp--preset--color--background, $contentbg); + border-bottom-color: var(--wp--preset--color--background, $contentbg); + box-shadow: 0 1px var(--wp--preset--color--background); + } + + a { + text-decoration: none; + } + } +} + +.woocommerce-Tabs-panel { + padding-top: var(--wp--style--block-gap); + font-size: var(--wp--preset--font-size--small); + margin-left: 1em; + + h2 { + display: none; + } +} + /** * Form fields */ diff --git a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-order.js b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-order.js index b70110994ee..60f45e6f5e5 100644 --- a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-order.js +++ b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-order.js @@ -1043,15 +1043,19 @@ jQuery( function ( $ ) { }, input_changed: function() { - var refund_amount = 0; - var $items = $( '.woocommerce_order_items' ).find( 'tr.item, tr.fee, tr.shipping' ); + var refund_amount = 0; + var $items = $( '.woocommerce_order_items' ).find( 'tr.item, tr.fee, tr.shipping' ); + var round_at_subtotal = 'yes' === woocommerce_admin_meta_boxes.round_at_subtotal; $items.each(function() { var $row = $( this ); var refund_cost_fields = $row.find( '.refund input:not(.refund_order_item_qty)' ); refund_cost_fields.each(function( index, el ) { - refund_amount += parseFloat( accounting.unformat( $( el ).val() || 0, woocommerce_admin.mon_decimal_point ) ); + var field_amount = accounting.unformat( $( el ).val() || 0, woocommerce_admin.mon_decimal_point ); + refund_amount += parseFloat( round_at_subtotal ? + field_amount : + accounting.formatNumber( field_amount, woocommerce_admin_meta_boxes.currency_format_num_decimals, '' ) ); }); }); diff --git a/plugins/woocommerce/client/legacy/package.json b/plugins/woocommerce/client/legacy/package.json index 58ddd7fc8c9..b38dcb19d08 100644 --- a/plugins/woocommerce/client/legacy/package.json +++ b/plugins/woocommerce/client/legacy/package.json @@ -7,9 +7,11 @@ "main": "Gruntfile.js", "scripts": { "turbo:build": "grunt assets", - "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name" + "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", + "start": "nodemon --watch js --watch css -e js,scss --exec pnpm build" }, "devDependencies": { + "@types/node": "^16.18.18", "@wordpress/stylelint-config": "19.1.0", "autoprefixer": "9.8.6", "browserslist": "4.19.3", @@ -29,6 +31,7 @@ "grunt-sass": "3.1.0", "grunt-stylelint": "0.16.0", "gruntify-eslint": "5.0.0", + "nodemon": "^2.0.21", "sass": "^1.45.0", "stylelint": "13.8.0" } diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index a45995f8cab..4427465d7b2 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -2,7 +2,7 @@ "name": "woocommerce/woocommerce", "description": "An eCommerce toolkit that helps you sell anything. Beautifully.", "homepage": "https://woocommerce.com/", - "version": "7.6.0", + "version": "7.7.0", "type": "wordpress-plugin", "license": "GPL-3.0-or-later", "prefer-stable": true, @@ -14,21 +14,21 @@ } ], "require": { - "php": ">=7.2", + "php": ">=7.3", "automattic/jetpack-autoloader": "2.10.1", "automattic/jetpack-constants": "1.5.1", "composer/installers": "^1.9", "maxmind-db/reader": "^1.11", "pelago/emogrifier": "^6.0", "woocommerce/action-scheduler": "3.5.4", - "woocommerce/woocommerce-blocks": "9.8.1" + "woocommerce/woocommerce-blocks": "9.8.2" }, "require-dev": { "automattic/jetpack-changelogger": "^3.3.0", "bamarni/composer-bin-plugin": "^1.4", "dms/phpunit-arraysubset-asserts": "^0.4.0", - "phpunit/phpunit": "^8.0", - "sebastian/comparator": "3.0.3", + "phpunit/phpunit": "^9.0", + "sebastian/comparator": "^4.0", "yoast/phpunit-polyfills": "^1.0" }, "config": { @@ -40,7 +40,7 @@ }, "sort-packages": true, "platform": { - "php": "7.2" + "php": "7.3" }, "allow-plugins": { "automattic/jetpack-autoloader": true, diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index 819a8e90eae..831d80f0efb 100644 --- a/plugins/woocommerce/composer.lock +++ b/plugins/woocommerce/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5c0ebd9977d69b819fa45b7b463fb356", + "content-hash": "48377a0bfe2b30537b522f197ba28984", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -439,20 +439,20 @@ }, { "name": "symfony/css-selector", - "version": "v4.4.44", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "95f3c7468db1da8cc360b24fa2a26e7cefcb355d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/95f3c7468db1da8cc360b24fa2a26e7cefcb355d", + "reference": "95f3c7468db1da8cc360b24fa2a26e7cefcb355d", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -485,7 +485,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v5.4.21" }, "funding": [ { @@ -501,7 +501,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/polyfill-php80", @@ -628,16 +628,16 @@ }, { "name": "woocommerce/woocommerce-blocks", - "version": "v9.8.1", + "version": "9.8.2", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-blocks.git", - "reference": "2c336eb8304ca59ae9b9169cc8cc58b9ca529e5b" + "reference": "61488a0f1d1afc8fd7484e1b277d40afd782e005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/2c336eb8304ca59ae9b9169cc8cc58b9ca529e5b", - "reference": "2c336eb8304ca59ae9b9169cc8cc58b9ca529e5b", + "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/61488a0f1d1afc8fd7484e1b277d40afd782e005", + "reference": "61488a0f1d1afc8fd7484e1b277d40afd782e005", "shasum": "" }, "require": { @@ -683,9 +683,9 @@ ], "support": { "issues": "https://github.com/woocommerce/woocommerce-blocks/issues", - "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v9.8.1" + "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v9.8.2" }, - "time": "2023-03-15T13:26:05+00:00" + "time": "2023-03-22T14:39:35+00:00" } ], "packages-dev": [ @@ -748,29 +748,36 @@ }, { "name": "bamarni/composer-bin-plugin", - "version": "v1.5.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/bamarni/composer-bin-plugin.git", - "reference": "49934ffea764864788334c1485fbb08a4b852031" + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/49934ffea764864788334c1485fbb08a4b852031", - "reference": "49934ffea764864788334c1485fbb08a4b852031", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": "^5.5.9 || ^7.0 || ^8.0" + "composer-plugin-api": "^2.0", + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "composer/composer": "^1.0 || ^2.0", - "symfony/console": "^2.5 || ^3.0 || ^4.0" + "composer/composer": "^2.0", + "ext-json": "*", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" }, "type": "composer-plugin", "extra": { - "class": "Bamarni\\Composer\\Bin\\Plugin" + "class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin" }, "autoload": { "psr-4": { @@ -792,9 +799,9 @@ ], "support": { "issues": "https://github.com/bamarni/composer-bin-plugin/issues", - "source": "https://github.com/bamarni/composer-bin-plugin/tree/v1.5.0" + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" }, - "time": "2022-02-22T21:01:25+00:00" + "time": "2022-10-31T08:38:03+00:00" }, { "name": "dms/phpunit-arraysubset-asserts", @@ -913,16 +920,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -960,7 +967,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -968,7 +975,63 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.15.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + }, + "time": "2023-03-05T19:49:14+00:00" }, { "name": "phar-io/manifest", @@ -1083,40 +1146,44 @@ }, { "name": "phpunit/php-code-coverage", - "version": "7.0.15", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "819f92bba8b001d4363065928088de22f25a3a48" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/819f92bba8b001d4363065928088de22f25a3a48", - "reference": "819f92bba8b001d4363065928088de22f25a3a48", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": ">=7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.3 || ^4.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.15", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -1144,7 +1211,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -1152,32 +1219,32 @@ "type": "github" } ], - "time": "2021-07-26T12:20:09+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1204,7 +1271,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -1212,26 +1279,97 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1255,34 +1393,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1308,7 +1452,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -1316,112 +1460,54 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "time": "2021-07-26T12:15:06+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "8.5.29", + "version": "9.6.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e8c563c47a9a303662955518ca532b022b337f4d" + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8c563c47a9a303662955518ca532b022b337f4d", - "reference": "e8c563c47a9a303662955518ca532b022b337f4d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86e761949019ae83f49240b2f2123fb5ab3b2fc5", + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.0", + "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.2", - "phpunit/php-code-coverage": "^7.0.12", - "phpunit/php-file-iterator": "^2.0.4", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.3", - "sebastian/exporter": "^3.1.2", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -1429,10 +1515,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -1457,7 +1546,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.29" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.5" }, "funding": [ { @@ -1467,36 +1556,35 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-08-22T13:59:39+00:00" + "time": "2023-03-09T06:34:10+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "psr/container", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1509,42 +1597,157 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "log", - "psr", - "psr-3" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -1566,7 +1769,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -1574,34 +1777,34 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.3", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", - "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1640,7 +1843,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -1648,33 +1851,90 @@ "type": "github" } ], - "time": "2020-11-30T08:04:30+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.3", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -1706,7 +1966,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -1714,27 +1974,27 @@ "type": "github" } ], - "time": "2020-11-30T07:59:04+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -1742,7 +2002,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1769,7 +2029,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -1777,34 +2037,34 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1839,14 +2099,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -1854,30 +2114,30 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.2", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/de036ec91d55d2a9e0db2ba975b512cdb1c23921", - "reference": "de036ec91d55d2a9e0db2ba975b512cdb1c23921", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -1885,7 +2145,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1910,7 +2170,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -1918,34 +2178,91 @@ "type": "github" } ], - "time": "2022-02-10T06:55:38+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -1967,7 +2284,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -1975,32 +2292,32 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2022,7 +2339,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -2030,32 +2347,32 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2082,10 +2399,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -2093,29 +2410,32 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", - "version": "2.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2137,7 +2457,7 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -2145,32 +2465,32 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", - "version": "1.1.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4", - "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2193,7 +2513,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -2201,29 +2521,29 @@ "type": "github" } ], - "time": "2020-11-30T07:25:11+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2246,43 +2566,58 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/console", - "version": "v3.4.47", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", - "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2313,10 +2648,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v3.4.47" + "source": "https://github.com/symfony/console/tree/v5.4.21" }, "funding": [ { @@ -2332,39 +2673,38 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2023-02-25T16:59:41+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.44", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "php": ">=7.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" }, - "exclude-from-classmap": [ - "/Tests/" + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2373,18 +2713,18 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -2400,8 +2740,254 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -2487,21 +3073,101 @@ "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/process", - "version": "v3.4.47", + "name": "symfony/polyfill-php73", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca", - "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", + "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -2526,10 +3192,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v3.4.47" + "source": "https://github.com/symfony/process/tree/v5.4.21" }, "funding": [ { @@ -2545,7 +3211,176 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2023-02-21T19:46:44+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-22T08:00:55+00:00" }, { "name": "theseer/tokenizer", @@ -2599,28 +3434,28 @@ }, { "name": "wikimedia/at-ease", - "version": "v2.0.0", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/wikimedia/at-ease.git", - "reference": "013ac61929797839c80a111a3f1a4710d8248e7a" + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/013ac61929797839c80a111a3f1a4710d8248e7a", - "reference": "013ac61929797839c80a111a3f1a4710d8248e7a", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", "shasum": "" }, "require": { - "php": ">=5.6.99" + "php": ">=7.2.9" }, "require-dev": { - "jakub-onderka/php-console-highlighter": "0.3.2", - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "22.0.0", - "mediawiki/minus-x": "0.3.1", - "ockcyp/covers-validator": "0.5.1 || 0.6.1", - "phpunit/phpunit": "4.8.36 || ^6.5" + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" }, "type": "library", "autoload": { @@ -2648,9 +3483,9 @@ "description": "Safe replacement to @ for suppressing warnings.", "homepage": "https://www.mediawiki.org/wiki/at-ease", "support": { - "source": "https://github.com/wikimedia/at-ease/tree/master" + "source": "https://github.com/wikimedia/at-ease/tree/v2.1.0" }, - "time": "2018-10-10T15:39:06+00:00" + "time": "2021-02-27T15:53:37+00:00" }, { "name": "yoast/phpunit-polyfills", @@ -2720,11 +3555,11 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.2" + "php": ">=7.3" }, "platform-dev": [], "platform-overrides": { - "php": "7.2" + "php": "7.3" }, "plugin-api-version": "2.3.0" } diff --git a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php index 59e4e2c92f8..a17ed8eb956 100644 --- a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php +++ b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php @@ -139,6 +139,17 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { } } + /** + * This method overwrites the base class's clone method to make it a no-op. In base class WC_Data, we are unsetting the meta_id to clone. + * It seems like this was done to avoid conflicting the metadata when duplicating products. However, doing that does not seems necessary for orders. + * In-fact, when we do that for orders, we lose the capability to clone orders with custom meta data by caching plugins. This is because, when we clone an order object for caching, it will clone the metadata without the ID. Unfortunately, when this cached object with nulled meta ID is retreived, WC_Data will consider it as a new meta and will insert it as a new meta-data causing duplicates. + * + * Eventually, we should move away from overwriting the __clone method in base class itself, since it's easily possible to still duplicate the product without having to hook into the __clone method. + * + * @since 7.6.0 + */ + public function __clone() {} + /** * Get internal type. * diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php index 02755717b0b..251486de4d8 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php @@ -56,12 +56,22 @@ if ( ! class_exists( 'WC_Admin_Assets', false ) ) : wp_style_add_data( 'woocommerce_admin_privacy_styles', 'rtl', 'replace' ); if ( $screen && $screen->is_block_editor() ) { - wp_register_style( 'woocommerce-general', WC()->plugin_url() . '/assets/css/woocommerce.css', array(), $version ); - wp_style_add_data( 'woocommerce-general', 'rtl', 'replace' ); - if ( wc_current_theme_is_fse_theme() ) { - wp_register_style( 'woocommerce-blocktheme', WC()->plugin_url() . '/assets/css/woocommerce-blocktheme.css', array(), $version ); - wp_style_add_data( 'woocommerce-blocktheme', 'rtl', 'replace' ); - wp_enqueue_style( 'woocommerce-blocktheme' ); + $styles = WC_Frontend_Scripts::get_styles(); + + if ( $styles ) { + foreach ( $styles as $handle => $args ) { + wp_register_style( + $handle, + $args['src'], + $args['deps'], + $args['version'], + $args['media'] + ); + + if ( ! isset( $args['has_rtl'] ) ) { + wp_style_add_data( $handle, 'rtl', 'replace' ); + } + } } } diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-notices.php b/plugins/woocommerce/includes/admin/class-wc-admin-notices.php index 05f528fc04c..c913ba10c9f 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-notices.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-notices.php @@ -57,7 +57,6 @@ class WC_Admin_Notices { add_action( 'woocommerce_installed', array( __CLASS__, 'reset_admin_notices' ) ); add_action( 'wp_loaded', array( __CLASS__, 'add_redirect_download_method_notice' ) ); add_action( 'admin_init', array( __CLASS__, 'hide_notices' ), 20 ); - self::add_action( 'admin_init', array( __CLASS__, 'maybe_remove_php73_required_notice' ) ); // @TODO: This prevents Action Scheduler async jobs from storing empty list of notices during WC installation. // That could lead to OBW not starting and 'Run setup wizard' notice not appearing in WP admin, which we want @@ -120,53 +119,8 @@ class WC_Admin_Notices { self::add_notice( 'template_files' ); self::add_min_version_notice(); self::add_maxmind_missing_license_key_notice(); - self::maybe_add_php73_required_notice(); } - // phpcs:disable Generic.Commenting.Todo.TaskFound - - /** - * Add an admin notice about the bump of the required PHP version in WooCommerce 7.7 - * if the current PHP version is too old. - * - * TODO: Remove this method in WooCommerce 7.7. - */ - private static function maybe_add_php73_required_notice() { - if ( version_compare( phpversion(), '7.3', '>=' ) ) { - return; - } - - self::add_custom_notice( - 'php73_required_in_woo_77', - sprintf( - '%s%s', - sprintf( - '

%s

', - esc_html__( 'PHP version requirements will change soon', 'woocommerce' ) - ), - sprintf( - // translators: Placeholder is a URL. - wpautop( wp_kses_data( __( 'WooCommerce 7.7, scheduled for May 2023, will require PHP 7.3 or newer to work. Your server is currently running an older version of PHP, so this change will impact your store. Upgrading to at least PHP 8.0 is recommended. Learn more about this change.', 'woocommerce' ) ) ), - 'https://developer.woocommerce.com/2023/01/10/new-requirement-for-woocommerce-7-7-php-7-3/' - ) - ) - ); - } - - /** - * Remove the admin notice about the bump of the required PHP version in WooCommerce 7.7 - * if the current PHP version is good. - * - * TODO: Remove this method in WooCommerce 7.7. - */ - private static function maybe_remove_php73_required_notice() { - if ( version_compare( phpversion(), '7.3', '>=' ) && self::has_notice( 'php73_required_in_woo_77' ) ) { - self::remove_notice( 'php73_required_in_woo_77' ); - } - } - - // phpcs:enable Generic.Commenting.Todo.TaskFound - /** * Show a notice. * diff --git a/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php b/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php index ea66d76964a..13c301748e7 100644 --- a/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php +++ b/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php @@ -3,7 +3,7 @@ * Shows an order item * * @package WooCommerce\Admin - * @var object $item The item being displayed + * @var WC_Order_Item $item The item being displayed * @var int $item_id The id of the item being displayed */ diff --git a/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-inventory.php b/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-inventory.php index 952e063cd07..7b4c9674778 100644 --- a/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-inventory.php +++ b/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-inventory.php @@ -50,8 +50,8 @@ if ( ! defined( 'ABSPATH' ) ) { woocommerce_wp_text_input( array( 'id' => '_stock', - 'value' => wc_stock_amount( $product_object->get_stock_quantity( 'edit' ) ), - 'label' => __( 'Stock quantity', 'woocommerce' ), + 'value' => wc_stock_amount( $product_object->get_stock_quantity( 'edit' ) ?? 1 ), + 'label' => __( 'Quantity', 'woocommerce' ), 'desc_tip' => true, 'description' => __( 'Stock quantity. If this is a variable product this value will be used to control stock for all variations, unless you define stock at variation level.', 'woocommerce' ), 'type' => 'number', @@ -64,17 +64,28 @@ if ( ! defined( 'ABSPATH' ) ) { echo ''; - woocommerce_wp_select( - array( - 'id' => '_backorders', - 'value' => $product_object->get_backorders( 'edit' ), - 'label' => __( 'Allow backorders?', 'woocommerce' ), - 'options' => wc_get_product_backorder_options(), - 'desc_tip' => true, - 'description' => __( 'If managing stock, this controls whether or not backorders are allowed. If enabled, stock quantity can go below 0.', 'woocommerce' ), - ) + $backorder_args = array( + 'id' => '_backorders', + 'value' => $product_object->get_backorders( 'edit' ), + 'label' => __( 'Allow backorders?', 'woocommerce' ), + 'options' => wc_get_product_backorder_options(), + 'desc_tip' => true, + 'description' => __( 'If managing stock, this controls whether or not backorders are allowed. If enabled, stock quantity can go below 0.', 'woocommerce' ), ); + /** + * Allow 3rd parties to control whether "Allow backorder?" option will use radio buttons or a select. + * + * @since 7.6.0 + * + * @param bool If false, "Allow backorders?" will be shown as a select. Default: it will use radio buttons. + */ + if ( apply_filters( 'woocommerce_product_allow_backorder_use_radio', true ) ) { + woocommerce_wp_radio( $backorder_args ); + } else { + woocommerce_wp_select( $backorder_args ); + } + woocommerce_wp_text_input( array( 'id' => '_low_stock_amount', @@ -115,18 +126,31 @@ if ( ! defined( 'ABSPATH' ) ) { } - woocommerce_wp_select( - array( - 'id' => '_stock_status', - 'value' => $product_object->get_stock_status( 'edit' ), - 'wrapper_class' => 'stock_status_field hide_if_variable hide_if_external hide_if_grouped', - 'label' => __( 'Stock status', 'woocommerce' ), - 'options' => wc_get_product_stock_status_options(), - 'desc_tip' => true, - 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ), - ) + $stock_status_options = wc_get_product_stock_status_options(); + $stock_status_count = count( $stock_status_options ); + $stock_status_args = array( + 'id' => '_stock_status', + 'value' => $product_object->get_stock_status( 'edit' ), + 'wrapper_class' => 'stock_status_field hide_if_variable hide_if_external hide_if_grouped', + 'label' => __( 'Stock status', 'woocommerce' ), + 'options' => $stock_status_options, + 'desc_tip' => true, + 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ), ); + /** + * Allow 3rd parties to control whether the "Stock status" option will use radio buttons or a select. + * + * @since 7.6.0 + * + * @param bool If false, the "Stock status" will be shown as a select. Default: it will use radio buttons. + */ + if ( apply_filters( 'woocommerce_product_stock_status_use_radio', $stock_status_count <= 3 && $stock_status_count >= 1 ) ) { + woocommerce_wp_radio( $stock_status_args ); + } else { + woocommerce_wp_select( $stock_status_args ); + } + do_action( 'woocommerce_product_options_stock_status' ); ?>
diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index 08478886a11..15ea0a2c42a 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -1004,6 +1004,8 @@ class WC_Install { * woocommerce_order_itemmeta - Order line item meta is stored in a table for storing extra data. * woocommerce_tax_rates - Tax Rates are stored inside 2 tables making tax queries simple and efficient. * woocommerce_tax_rate_locations - Each rate can be applied to more than one postcode/city hence the second table. + * + * @return array Strings containing the results of the various update queries as returned by dbDelta. */ public static function create_tables() { global $wpdb; @@ -1018,7 +1020,7 @@ class WC_Install { */ if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}woocommerce_downloadable_product_permissions';" ) ) { if ( ! $wpdb->get_var( "SHOW COLUMNS FROM `{$wpdb->prefix}woocommerce_downloadable_product_permissions` LIKE 'permission_id';" ) ) { - $wpdb->query( "ALTER TABLE {$wpdb->prefix}woocommerce_downloadable_product_permissions DROP PRIMARY KEY, ADD `permission_id` BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT;" ); + $wpdb->query( "ALTER TABLE {$wpdb->prefix}woocommerce_downloadable_product_permissions DROP PRIMARY KEY, ADD `permission_id` bigint(20) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT;" ); } } @@ -1038,7 +1040,7 @@ class WC_Install { } } - dbDelta( self::get_schema() ); + $db_delta_result = dbDelta( self::get_schema() ); $index_exists = $wpdb->get_row( "SHOW INDEX FROM {$wpdb->comments} WHERE column_name = 'comment_type' and key_name = 'woo_idx_comment_type'" ); @@ -1050,6 +1052,8 @@ class WC_Install { // Clear table caches. delete_transient( 'wc_attribute_taxonomies' ); + + return $db_delta_result; } /** @@ -1088,16 +1092,16 @@ class WC_Install { $tables = " CREATE TABLE {$wpdb->prefix}woocommerce_sessions ( - session_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + session_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, session_key char(32) NOT NULL, session_value longtext NOT NULL, - session_expiry BIGINT UNSIGNED NOT NULL, + session_expiry bigint(20) unsigned NOT NULL, PRIMARY KEY (session_id), UNIQUE KEY session_key (session_key) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_api_keys ( - key_id BIGINT UNSIGNED NOT NULL auto_increment, - user_id BIGINT UNSIGNED NOT NULL, + key_id bigint(20) unsigned NOT NULL auto_increment, + user_id bigint(20) unsigned NOT NULL, description varchar(200) NULL, permissions varchar(10) NOT NULL, consumer_key char(64) NOT NULL, @@ -1110,7 +1114,7 @@ CREATE TABLE {$wpdb->prefix}woocommerce_api_keys ( KEY consumer_secret (consumer_secret) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_attribute_taxonomies ( - attribute_id BIGINT UNSIGNED NOT NULL auto_increment, + attribute_id bigint(20) unsigned NOT NULL auto_increment, attribute_name varchar(200) NOT NULL, attribute_label varchar(200) NULL, attribute_type varchar(20) NOT NULL, @@ -1120,17 +1124,17 @@ CREATE TABLE {$wpdb->prefix}woocommerce_attribute_taxonomies ( KEY attribute_name (attribute_name(20)) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_downloadable_product_permissions ( - permission_id BIGINT UNSIGNED NOT NULL auto_increment, + permission_id bigint(20) unsigned NOT NULL auto_increment, download_id varchar(36) NOT NULL, - product_id BIGINT UNSIGNED NOT NULL, - order_id BIGINT UNSIGNED NOT NULL DEFAULT 0, + product_id bigint(20) unsigned NOT NULL, + order_id bigint(20) unsigned NOT NULL DEFAULT 0, order_key varchar(200) NOT NULL, user_email varchar(200) NOT NULL, - user_id BIGINT UNSIGNED NULL, + user_id bigint(20) unsigned NULL, downloads_remaining varchar(9) NULL, access_granted datetime NOT NULL default '0000-00-00 00:00:00', access_expires datetime NULL default null, - download_count BIGINT UNSIGNED NOT NULL DEFAULT 0, + download_count bigint(20) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (permission_id), KEY download_order_key_product (product_id,order_id,order_key(16),download_id), KEY download_order_product (download_id,order_id,product_id), @@ -1138,16 +1142,16 @@ CREATE TABLE {$wpdb->prefix}woocommerce_downloadable_product_permissions ( KEY user_order_remaining_expires (user_id,order_id,downloads_remaining,access_expires) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_order_items ( - order_item_id BIGINT UNSIGNED NOT NULL auto_increment, - order_item_name TEXT NOT NULL, + order_item_id bigint(20) unsigned NOT NULL auto_increment, + order_item_name text NOT NULL, order_item_type varchar(200) NOT NULL DEFAULT '', - order_id BIGINT UNSIGNED NOT NULL, + order_id bigint(20) unsigned NOT NULL, PRIMARY KEY (order_item_id), KEY order_id (order_id) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_order_itemmeta ( - meta_id BIGINT UNSIGNED NOT NULL auto_increment, - order_item_id BIGINT UNSIGNED NOT NULL, + meta_id bigint(20) unsigned NOT NULL auto_increment, + order_item_id bigint(20) unsigned NOT NULL, meta_key varchar(255) default NULL, meta_value longtext NULL, PRIMARY KEY (meta_id), @@ -1155,15 +1159,15 @@ CREATE TABLE {$wpdb->prefix}woocommerce_order_itemmeta ( KEY meta_key (meta_key(32)) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_tax_rates ( - tax_rate_id BIGINT UNSIGNED NOT NULL auto_increment, + tax_rate_id bigint(20) unsigned NOT NULL auto_increment, tax_rate_country varchar(2) NOT NULL DEFAULT '', tax_rate_state varchar(200) NOT NULL DEFAULT '', tax_rate varchar(8) NOT NULL DEFAULT '', tax_rate_name varchar(200) NOT NULL DEFAULT '', - tax_rate_priority BIGINT UNSIGNED NOT NULL, + tax_rate_priority bigint(20) unsigned NOT NULL, tax_rate_compound int(1) NOT NULL DEFAULT 0, tax_rate_shipping int(1) NOT NULL DEFAULT 1, - tax_rate_order BIGINT UNSIGNED NOT NULL, + tax_rate_order bigint(20) unsigned NOT NULL, tax_rate_class varchar(200) NOT NULL DEFAULT '', PRIMARY KEY (tax_rate_id), KEY tax_rate_country (tax_rate_country), @@ -1172,23 +1176,23 @@ CREATE TABLE {$wpdb->prefix}woocommerce_tax_rates ( KEY tax_rate_priority (tax_rate_priority) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_tax_rate_locations ( - location_id BIGINT UNSIGNED NOT NULL auto_increment, + location_id bigint(20) unsigned NOT NULL auto_increment, location_code varchar(200) NOT NULL, - tax_rate_id BIGINT UNSIGNED NOT NULL, + tax_rate_id bigint(20) unsigned NOT NULL, location_type varchar(40) NOT NULL, PRIMARY KEY (location_id), KEY tax_rate_id (tax_rate_id), KEY location_type_code (location_type(10),location_code(20)) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_shipping_zones ( - zone_id BIGINT UNSIGNED NOT NULL auto_increment, + zone_id bigint(20) unsigned NOT NULL auto_increment, zone_name varchar(200) NOT NULL, - zone_order BIGINT UNSIGNED NOT NULL, + zone_order bigint(20) unsigned NOT NULL, PRIMARY KEY (zone_id) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_shipping_zone_locations ( - location_id BIGINT UNSIGNED NOT NULL auto_increment, - zone_id BIGINT UNSIGNED NOT NULL, + location_id bigint(20) unsigned NOT NULL auto_increment, + zone_id bigint(20) unsigned NOT NULL, location_code varchar(200) NOT NULL, location_type varchar(40) NOT NULL, PRIMARY KEY (location_id), @@ -1196,26 +1200,26 @@ CREATE TABLE {$wpdb->prefix}woocommerce_shipping_zone_locations ( KEY location_type_code (location_type(10),location_code(20)) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_shipping_zone_methods ( - zone_id BIGINT UNSIGNED NOT NULL, - instance_id BIGINT UNSIGNED NOT NULL auto_increment, + zone_id bigint(20) unsigned NOT NULL, + instance_id bigint(20) unsigned NOT NULL auto_increment, method_id varchar(200) NOT NULL, - method_order BIGINT UNSIGNED NOT NULL, + method_order bigint(20) unsigned NOT NULL, is_enabled tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (instance_id) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_payment_tokens ( - token_id BIGINT UNSIGNED NOT NULL auto_increment, + token_id bigint(20) unsigned NOT NULL auto_increment, gateway_id varchar(200) NOT NULL, token text NOT NULL, - user_id BIGINT UNSIGNED NOT NULL DEFAULT '0', + user_id bigint(20) unsigned NOT NULL DEFAULT '0', type varchar(200) NOT NULL, is_default tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (token_id), KEY user_id (user_id) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_payment_tokenmeta ( - meta_id BIGINT UNSIGNED NOT NULL auto_increment, - payment_token_id BIGINT UNSIGNED NOT NULL, + meta_id bigint(20) unsigned NOT NULL auto_increment, + payment_token_id bigint(20) unsigned NOT NULL, meta_key varchar(255) NULL, meta_value longtext NULL, PRIMARY KEY (meta_id), @@ -1223,7 +1227,7 @@ CREATE TABLE {$wpdb->prefix}woocommerce_payment_tokenmeta ( KEY meta_key (meta_key(32)) ) $collate; CREATE TABLE {$wpdb->prefix}woocommerce_log ( - log_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + log_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, timestamp datetime NOT NULL, level smallint(4) NOT NULL, source varchar(200) NOT NULL, @@ -1233,10 +1237,10 @@ CREATE TABLE {$wpdb->prefix}woocommerce_log ( KEY level (level) ) $collate; CREATE TABLE {$wpdb->prefix}wc_webhooks ( - webhook_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + webhook_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, status varchar(200) NOT NULL, name text NOT NULL, - user_id BIGINT UNSIGNED NOT NULL, + user_id bigint(20) unsigned NOT NULL, delivery_url text NOT NULL, secret text NOT NULL, topic varchar(200) NOT NULL, @@ -1251,11 +1255,11 @@ CREATE TABLE {$wpdb->prefix}wc_webhooks ( KEY user_id (user_id) ) $collate; CREATE TABLE {$wpdb->prefix}wc_download_log ( - download_log_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + download_log_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, timestamp datetime NOT NULL, - permission_id BIGINT UNSIGNED NOT NULL, - user_id BIGINT UNSIGNED NULL, - user_ip_address VARCHAR(100) NULL DEFAULT '', + permission_id bigint(20) unsigned NOT NULL, + user_id bigint(20) unsigned NULL, + user_ip_address varchar(100) NULL DEFAULT '', PRIMARY KEY (download_log_id), KEY permission_id (permission_id), KEY timestamp (timestamp) @@ -1284,7 +1288,7 @@ CREATE TABLE {$wpdb->prefix}wc_product_meta_lookup ( KEY min_max_price (`min_price`, `max_price`) ) $collate; CREATE TABLE {$wpdb->prefix}wc_tax_rate_classes ( - tax_rate_class_id BIGINT UNSIGNED NOT NULL auto_increment, + tax_rate_class_id bigint(20) unsigned NOT NULL auto_increment, name varchar(200) NOT NULL DEFAULT '', slug varchar(200) NOT NULL DEFAULT '', PRIMARY KEY (tax_rate_class_id), @@ -1299,18 +1303,18 @@ CREATE TABLE {$wpdb->prefix}wc_reserved_stock ( PRIMARY KEY (`order_id`, `product_id`) ) $collate; CREATE TABLE {$wpdb->prefix}wc_rate_limits ( - rate_limit_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + rate_limit_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, rate_limit_key varchar(200) NOT NULL, - rate_limit_expiry BIGINT UNSIGNED NOT NULL, + rate_limit_expiry bigint(20) unsigned NOT NULL, rate_limit_remaining smallint(10) NOT NULL DEFAULT '0', PRIMARY KEY (rate_limit_id), UNIQUE KEY rate_limit_key (rate_limit_key($max_index_length)) ) $collate; $product_attributes_lookup_table_creation_sql CREATE TABLE {$wpdb->prefix}wc_product_download_directories ( - url_id BIGINT UNSIGNED NOT NULL auto_increment, + url_id bigint(20) unsigned NOT NULL auto_increment, url varchar(256) NOT NULL, - enabled TINYINT(1) NOT NULL DEFAULT 0, + enabled tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (url_id), KEY url (url($max_index_length)) ) $collate; @@ -1326,22 +1330,22 @@ CREATE TABLE {$wpdb->prefix}wc_order_stats ( tax_total double DEFAULT 0 NOT NULL, shipping_total double DEFAULT 0 NOT NULL, net_total double DEFAULT 0 NOT NULL, - returning_customer boolean DEFAULT NULL, + returning_customer tinyint(1) DEFAULT NULL, status varchar(200) NOT NULL, - customer_id BIGINT UNSIGNED NOT NULL, + customer_id bigint(20) unsigned NOT NULL, PRIMARY KEY (order_id), KEY date_created (date_created), KEY customer_id (customer_id), KEY status (status({$max_index_length})) ) $collate; CREATE TABLE {$wpdb->prefix}wc_order_product_lookup ( - order_item_id BIGINT UNSIGNED NOT NULL, - order_id BIGINT UNSIGNED NOT NULL, - product_id BIGINT UNSIGNED NOT NULL, - variation_id BIGINT UNSIGNED NOT NULL, - customer_id BIGINT UNSIGNED NULL, + order_item_id bigint(20) unsigned NOT NULL, + order_id bigint(20) unsigned NOT NULL, + product_id bigint(20) unsigned NOT NULL, + variation_id bigint(20) unsigned NOT NULL, + customer_id bigint(20) unsigned NULL, date_created datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, - product_qty INT NOT NULL, + product_qty int(11) NOT NULL, product_net_revenue double DEFAULT 0 NOT NULL, product_gross_revenue double DEFAULT 0 NOT NULL, coupon_amount double DEFAULT 0 NOT NULL, @@ -1355,8 +1359,8 @@ CREATE TABLE {$wpdb->prefix}wc_order_product_lookup ( KEY date_created (date_created) ) $collate; CREATE TABLE {$wpdb->prefix}wc_order_tax_lookup ( - order_id BIGINT UNSIGNED NOT NULL, - tax_rate_id BIGINT UNSIGNED NOT NULL, + order_id bigint(20) unsigned NOT NULL, + tax_rate_id bigint(20) unsigned NOT NULL, date_created datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, shipping_tax double DEFAULT 0 NOT NULL, order_tax double DEFAULT 0 NOT NULL, @@ -1366,8 +1370,8 @@ CREATE TABLE {$wpdb->prefix}wc_order_tax_lookup ( KEY date_created (date_created) ) $collate; CREATE TABLE {$wpdb->prefix}wc_order_coupon_lookup ( - order_id BIGINT UNSIGNED NOT NULL, - coupon_id BIGINT NOT NULL, + order_id bigint(20) unsigned NOT NULL, + coupon_id bigint(20) NOT NULL, date_created datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, discount_amount double DEFAULT 0 NOT NULL, PRIMARY KEY (order_id, coupon_id), @@ -1375,7 +1379,7 @@ CREATE TABLE {$wpdb->prefix}wc_order_coupon_lookup ( KEY date_created (date_created) ) $collate; CREATE TABLE {$wpdb->prefix}wc_admin_notes ( - note_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + note_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, type varchar(20) NOT NULL, locale varchar(20) NOT NULL, @@ -1386,17 +1390,17 @@ CREATE TABLE {$wpdb->prefix}wc_admin_notes ( source varchar(200) NOT NULL, date_created datetime NOT NULL default '0000-00-00 00:00:00', date_reminder datetime NULL default null, - is_snoozable boolean DEFAULT 0 NOT NULL, + is_snoozable tinyint(1) DEFAULT 0 NOT NULL, layout varchar(20) DEFAULT '' NOT NULL, image varchar(200) NULL DEFAULT NULL, - is_deleted boolean DEFAULT 0 NOT NULL, - is_read boolean DEFAULT 0 NOT NULL, + is_deleted tinyint(1) DEFAULT 0 NOT NULL, + is_read tinyint(1) DEFAULT 0 NOT NULL, icon varchar(200) NOT NULL default 'info', PRIMARY KEY (note_id) ) $collate; CREATE TABLE {$wpdb->prefix}wc_admin_note_actions ( - action_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, - note_id BIGINT UNSIGNED NOT NULL, + action_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + note_id bigint(20) unsigned NOT NULL, name varchar(255) NOT NULL, label varchar(255) NOT NULL, query longtext NOT NULL, @@ -1408,8 +1412,8 @@ CREATE TABLE {$wpdb->prefix}wc_admin_note_actions ( KEY note_id (note_id) ) $collate; CREATE TABLE {$wpdb->prefix}wc_customer_lookup ( - customer_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, - user_id BIGINT UNSIGNED DEFAULT NULL, + customer_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + user_id bigint(20) unsigned DEFAULT NULL, username varchar(60) DEFAULT '' NOT NULL, first_name varchar(255) NOT NULL, last_name varchar(255) NOT NULL, @@ -1425,8 +1429,8 @@ CREATE TABLE {$wpdb->prefix}wc_customer_lookup ( KEY email (email) ) $collate; CREATE TABLE {$wpdb->prefix}wc_category_lookup ( - category_tree_id BIGINT UNSIGNED NOT NULL, - category_id BIGINT UNSIGNED NOT NULL, + category_tree_id bigint(20) unsigned NOT NULL, + category_id bigint(20) unsigned NOT NULL, PRIMARY KEY (category_tree_id,category_id) ) $collate; "; diff --git a/plugins/woocommerce/includes/class-wc-order-factory.php b/plugins/woocommerce/includes/class-wc-order-factory.php index 3851a048f49..acce3cfcf8d 100644 --- a/plugins/woocommerce/includes/class-wc-order-factory.php +++ b/plugins/woocommerce/includes/class-wc-order-factory.php @@ -67,20 +67,25 @@ class WC_Order_Factory { * @throws \Exception When an invalid order is found. */ public static function get_orders( $order_ids = array(), $skip_invalid = false ) { - $result = array(); - $order_ids = array_filter( array_map( array( __CLASS__, 'get_order_id' ), $order_ids ) ); + if ( empty( $order_ids ) ) { + return array(); + } + + $result = array(); + $order_ids = array_filter( array_map( array( __CLASS__, 'get_order_id' ), $order_ids ) ); + $original_order_sort = $order_ids; + $order_cache = wc_get_container()->get( OrderCache::class ); $already_cached_orders = array(); $use_orders_cache = OrderUtil::orders_cache_usage_is_enabled(); if ( $use_orders_cache ) { $uncached_order_ids = array(); - $order_cache = wc_get_container()->get( OrderCache::class ); foreach ( $order_ids as $order_id ) { $cached_order = $order_cache->get( absint( $order_id ) ); - if ( is_null( $cached_order ) ) { - $uncached_order_ids[] = $order_id; + if ( $cached_order instanceof \WC_Abstract_Legacy_Order ) { + $already_cached_orders[ $order_id ] = $cached_order; } else { - $already_cached_orders[] = $cached_order; + $uncached_order_ids[] = $order_id; } } $order_ids = $uncached_order_ids; @@ -128,17 +133,16 @@ class WC_Order_Factory { } } - // restore the sort order. - $result = array_values( array_replace( array_flip( $order_ids ), $result ) ); - if ( $use_orders_cache ) { - foreach ( $result as $order ) { - $order_cache->set( $order ); + foreach ( $result as $order_id => $order ) { + $order_cache->set( $order, $order->get_id() ); } - return array_merge( $already_cached_orders, $result ); - } else { - return $result; + $result = array_replace( $result, $already_cached_orders ); } + + // restore the sort order. + $result = array_values( array_replace( array_flip( $original_order_sort ), $result ) ); + return $result; } /** diff --git a/plugins/woocommerce/includes/class-wc-post-data.php b/plugins/woocommerce/includes/class-wc-post-data.php index b27cfe47db8..c1e3aa6b5f0 100644 --- a/plugins/woocommerce/includes/class-wc-post-data.php +++ b/plugins/woocommerce/includes/class-wc-post-data.php @@ -54,6 +54,7 @@ class WC_Post_Data { add_action( 'wp_trash_post', array( __CLASS__, 'trash_post' ) ); add_action( 'untrashed_post', array( __CLASS__, 'untrash_post' ) ); add_action( 'before_delete_post', array( __CLASS__, 'before_delete_order' ) ); + add_action( 'woocommerce_before_delete_order', array( __CLASS__, 'before_delete_order' ) ); // Meta cache flushing. add_action( 'updated_post_meta', array( __CLASS__, 'flush_object_meta_cache' ), 10, 4 ); diff --git a/plugins/woocommerce/includes/class-wc-post-types.php b/plugins/woocommerce/includes/class-wc-post-types.php index 326102f9788..5fcb68552a5 100644 --- a/plugins/woocommerce/includes/class-wc-post-types.php +++ b/plugins/woocommerce/includes/class-wc-post-types.php @@ -387,6 +387,46 @@ class WC_Post_Types { 'name' => 'Product name', ), ), + array( + 'woocommerce/product-summary', + ), + array( + 'core/columns', + array(), + array( + array( + 'core/column', + array( + 'templateLock' => 'all', + ), + array( + array( + 'woocommerce/product-pricing', + array( + 'name' => 'regular_price', + 'label' => __( 'List price', 'woocommerce' ), + 'showPricingSection' => true, + ), + ), + ), + ), + array( + 'core/column', + array( + 'templateLock' => 'all', + ), + array( + array( + 'woocommerce/product-pricing', + array( + 'name' => 'sale_price', + 'label' => __( 'Sale price', 'woocommerce' ), + ), + ), + ), + ), + ), + ), ), ), ), diff --git a/plugins/woocommerce/includes/class-wc-webhook.php b/plugins/woocommerce/includes/class-wc-webhook.php index 16d98af9ad3..3200b989057 100644 --- a/plugins/woocommerce/includes/class-wc-webhook.php +++ b/plugins/woocommerce/includes/class-wc-webhook.php @@ -274,21 +274,25 @@ class WC_Webhook extends WC_Legacy_Webhook { private function is_valid_resource( $arg ) { $resource = $this->get_resource(); - if ( in_array( $resource, array( 'order', 'product', 'coupon' ), true ) ) { + if ( in_array( $resource, array( 'product', 'coupon' ), true ) ) { $status = get_post_status( absint( $arg ) ); // Ignore auto drafts for all resources. if ( in_array( $status, array( 'auto-draft', 'new' ), true ) ) { return false; } + } - // Ignore standard drafts for orders. - if ( 'order' === $resource && 'draft' === $status ) { + if ( 'order' === $resource ) { + // Check registered order types for order types args. + if ( ! OrderUtil::is_order( absint( $arg ), wc_get_order_types( 'order-webhooks' ) ) ) { return false; } - // Check registered order types for order types args. - if ( 'order' === $resource && ! OrderUtil::is_order( absint( $arg ), wc_get_order_types( 'order-webhooks' ) ) ) { + $order = wc_get_order( absint( $arg ) ); + + // Ignore standard drafts for orders. + if ( in_array( $order->get_status(), array( 'draft', 'auto-draft', 'new' ), true ) ) { return false; } } diff --git a/plugins/woocommerce/includes/class-woocommerce.php b/plugins/woocommerce/includes/class-woocommerce.php index 5ae2b3aa4fd..1ed57dc4cea 100644 --- a/plugins/woocommerce/includes/class-woocommerce.php +++ b/plugins/woocommerce/includes/class-woocommerce.php @@ -32,7 +32,7 @@ final class WooCommerce { * * @var string */ - public $version = '7.6.0'; + public $version = '7.7.0'; /** * WooCommerce Schema version. diff --git a/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php b/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php index 194732fc8a2..c35fd5b594e 100644 --- a/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -430,6 +430,89 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme return $items; } + /** + * Return the order type of a given item which belongs to WC_Order. + * + * @since 3.2.0 + * @param WC_Order $order Order Object. + * @param int $order_item_id Order item id. + * @return string Order Item type + */ + public function get_order_item_type( $order, $order_item_id ) { + global $wpdb; + return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d and order_item_id = %d;", $order->get_id(), $order_item_id ) ); + } + + /** + * Prime following caches: + * 1. item-$order_item_id For individual items. + * 2. order-items-$order-id For fetching items associated with an order. + * 3. order-item meta. + * + * @param array $order_ids Order Ids to prime cache for. + * @param array $query_vars Query vars for the query. + */ + protected function prime_order_item_caches_for_orders( $order_ids, $query_vars ) { + global $wpdb; + if ( isset( $query_vars['fields'] ) && 'all' !== $query_vars['fields'] ) { + $line_items = array( + 'line_items', + 'shipping_lines', + 'fee_lines', + 'coupon_lines', + ); + + if ( is_array( $query_vars['fields'] ) && 0 === count( array_intersect( $line_items, $query_vars['fields'] ) ) ) { + return; + } + } + $cache_keys = array_map( + function ( $order_id ) { + return 'order-items-' . $order_id; + }, + $order_ids + ); + $cache_values = wc_cache_get_multiple( $cache_keys, 'orders' ); + $non_cached_ids = array(); + foreach ( $order_ids as $order_id ) { + if ( false === $cache_values[ 'order-items-' . $order_id ] ) { + $non_cached_ids[] = $order_id; + } + } + if ( empty( $non_cached_ids ) ) { + return; + } + + $non_cached_ids = esc_sql( $non_cached_ids ); + $non_cached_ids_string = implode( ',', $non_cached_ids ); + $order_items = $wpdb->get_results( + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + "SELECT order_item_type, order_item_id, order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id in ( $non_cached_ids_string ) ORDER BY order_item_id;" + ); + if ( empty( $order_items ) ) { + return; + } + + $order_items_for_all_orders = array_reduce( + $order_items, + function ( $order_items_collection, $order_item ) { + if ( ! isset( $order_items_collection[ $order_item->order_id ] ) ) { + $order_items_collection[ $order_item->order_id ] = array(); + } + $order_items_collection[ $order_item->order_id ][] = $order_item; + return $order_items_collection; + } + ); + foreach ( $order_items_for_all_orders as $order_id => $items ) { + wp_cache_set( 'order-items-' . $order_id, $items, 'orders' ); + } + foreach ( $order_items as $item ) { + wp_cache_set( 'item-' . $item->order_item_id, $item, 'order-items' ); + } + $order_item_ids = wp_list_pluck( $order_items, 'order_item_id' ); + update_meta_cache( 'order_item', $order_item_ids ); + } + /** * Remove all line items (products, coupons, shipping, taxes) from the order. * @@ -547,14 +630,28 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme foreach ( $order->get_meta_data() as $meta_data ) { if ( isset( $existing_meta_data[ $meta_data->key ] ) ) { if ( $existing_meta_data[ $meta_data->key ] === $meta_data->value ) { + unset( $existing_meta_data[ $meta_data->key ] ); continue; } - delete_post_meta( $order->get_id(), $meta_data->key ); + unset( $existing_meta_data[ $meta_data->key ] ); + delete_post_meta( $order->get_id(), $meta_data->key ); } add_post_meta( $order->get_id(), $meta_data->key, $meta_data->value, false ); } + // Find remaining meta that was deleted from the order but still present in the associated post. + // Post meta corresponding to order props is excluded (as it shouldn't be deleted). + $keys_to_delete = array_diff( + array_keys( $existing_meta_data ), + $this->internal_meta_keys, + array_keys( $this->get_internal_data_store_key_getters() ) + ); + + foreach ( $keys_to_delete as $meta_key ) { + delete_post_meta( $order->get_id(), $meta_key ); + } + $this->update_post_meta( $order ); } } diff --git a/plugins/woocommerce/includes/data-stores/class-wc-order-data-store-cpt.php b/plugins/woocommerce/includes/data-stores/class-wc-order-data-store-cpt.php index b8e26142e44..a8982de92ee 100644 --- a/plugins/woocommerce/includes/data-stores/class-wc-order-data-store-cpt.php +++ b/plugins/woocommerce/includes/data-stores/class-wc-order-data-store-cpt.php @@ -1118,76 +1118,6 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement } } - /** - * Prime following caches: - * 1. item-$order_item_id For individual items. - * 2. order-items-$order-id For fetching items associated with an order. - * 3. order-item meta. - * - * @param array $order_ids Order Ids to prime cache for. - * @param array $query_vars Query vars for the query. - */ - private function prime_order_item_caches_for_orders( $order_ids, $query_vars ) { - global $wpdb; - if ( isset( $query_vars['fields'] ) && 'all' !== $query_vars['fields'] ) { - $line_items = array( - 'line_items', - 'shipping_lines', - 'fee_lines', - 'coupon_lines', - ); - - if ( is_array( $query_vars['fields'] ) && 0 === count( array_intersect( $line_items, $query_vars['fields'] ) ) ) { - return; - } - } - $cache_keys = array_map( - function ( $order_id ) { - return 'order-items-' . $order_id; - }, - $order_ids - ); - $cache_values = wc_cache_get_multiple( $cache_keys, 'orders' ); - $non_cached_ids = array(); - foreach ( $order_ids as $order_id ) { - if ( false === $cache_values[ 'order-items-' . $order_id ] ) { - $non_cached_ids[] = $order_id; - } - } - if ( empty( $non_cached_ids ) ) { - return; - } - - $non_cached_ids = esc_sql( $non_cached_ids ); - $non_cached_ids_string = implode( ',', $non_cached_ids ); - $order_items = $wpdb->get_results( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT order_item_type, order_item_id, order_id, order_item_name FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id in ( $non_cached_ids_string ) ORDER BY order_item_id;" - ); - if ( empty( $order_items ) ) { - return; - } - - $order_items_for_all_orders = array_reduce( - $order_items, - function ( $order_items_collection, $order_item ) { - if ( ! isset( $order_items_collection[ $order_item->order_id ] ) ) { - $order_items_collection[ $order_item->order_id ] = array(); - } - $order_items_collection[ $order_item->order_id ][] = $order_item; - return $order_items_collection; - } - ); - foreach ( $order_items_for_all_orders as $order_id => $items ) { - wp_cache_set( 'order-items-' . $order_id, $items, 'orders' ); - } - foreach ( $order_items as $item ) { - wp_cache_set( 'item-' . $item->order_item_id, $item, 'order-items' ); - } - $order_item_ids = wp_list_pluck( $order_items, 'order_item_id' ); - update_meta_cache( 'order_item', $order_item_ids ); - } - /** * Prime cache for raw meta data for orders in bulk. Difference between this and WP built-in metadata is that this method also fetches `meta_id` field which we use and cache it. * @@ -1240,17 +1170,4 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement ); WC_Order::prime_raw_meta_data_cache( $raw_meta_data_collection, 'orders' ); } - - /** - * Return the order type of a given item which belongs to WC_Order. - * - * @since 3.2.0 - * @param WC_Order $order Order Object. - * @param int $order_item_id Order item id. - * @return string Order Item type - */ - public function get_order_item_type( $order, $order_item_id ) { - global $wpdb; - return $wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d and order_item_id = %d;", $order->get_id(), $order_item_id ) ); - } } diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-orders-v1-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-orders-v1-controller.php index cf78dbfc8be..7cf477b7db9 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-orders-v1-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-orders-v1-controller.php @@ -1008,7 +1008,7 @@ class WC_REST_Orders_V1_Controller extends WC_REST_Posts_Controller { ), 'version' => array( 'description' => __( 'Version of WooCommerce which last updated the order.', 'woocommerce' ), - 'type' => 'integer', + 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php index abbe84d47c9..b44ae7961cf 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php @@ -327,6 +327,29 @@ class WC_REST_Orders_V2_Controller extends WC_REST_CRUD_Controller { return $result; } + /** + * With HPOS, few internal meta keys such as _billing_address_index, _shipping_address_index are not considered internal anymore (since most internal keys were flattened into dedicated columns). + * + * This function helps in filtering out any remaining internal meta keys with HPOS is enabled. + * + * @param array $meta_data Order meta data. + * + * @return array Filtered order meta data. + */ + private function filter_internal_meta_keys( $meta_data ) { + if ( ! OrderUtil::custom_orders_table_usage_is_enabled() ) { + return $meta_data; + } + $cpt_hidden_keys = ( new \WC_Order_Data_Store_CPT() )->get_internal_meta_keys(); + $meta_data = array_filter( + $meta_data, + function ( $meta ) use ( $cpt_hidden_keys ) { + return ! in_array( $meta->key, $cpt_hidden_keys, true ); + } + ); + return array_values( $meta_data ); + } + /** * Get formatted item data. * @@ -371,6 +394,7 @@ class WC_REST_Orders_V2_Controller extends WC_REST_CRUD_Controller { case 'meta_data': $meta_data = $order->get_meta_data(); $data['meta_data'] = $this->get_meta_data_for_response( $this->request, $meta_data ); + $data['meta_data'] = $this->filter_internal_meta_keys( $data['meta_data'] ); break; case 'line_items': $data['line_items'] = $order->get_items( 'line_item' ); @@ -1086,7 +1110,7 @@ class WC_REST_Orders_V2_Controller extends WC_REST_CRUD_Controller { ), 'version' => array( 'description' => __( 'Version of WooCommerce which last updated the order.', 'woocommerce' ), - 'type' => 'integer', + 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-orders-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-orders-controller.php index 106dac9a77f..27f979b244d 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-orders-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-orders-controller.php @@ -238,33 +238,6 @@ class WC_REST_Orders_Controller extends WC_REST_Orders_V2_Controller { } } - /** - * Get formatted item data. - * - * @param WC_Order $order WC_Data instance. - * @return array - */ - protected function get_formatted_item_data( $order ) { - $item_data = parent::get_formatted_item_data( $order ); - $cpt_hidden_keys = array(); - - if ( OrderUtil::custom_orders_table_usage_is_enabled() ) { - $cpt_hidden_keys = ( new \WC_Order_Data_Store_CPT() )->get_internal_meta_keys(); - } - - // XXX: This might be removed once we finalize the design for internal keys vs meta vs props in COT. - if ( ! empty( $item_data['meta_data'] ) ) { - $item_data['meta_data'] = array_filter( - $item_data['meta_data'], - function( $meta ) use ( $cpt_hidden_keys ) { - return ! in_array( $meta->key, $cpt_hidden_keys, true ); - } - ); - } - - return $item_data; - } - /** * Prepare objects query. * diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php index 4c332f2cc11..184e9888dbb 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php @@ -64,7 +64,8 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V * @return WP_REST_Response */ public function prepare_object_for_response( $object, $request ) { - $data = array( + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = array( 'id' => $object->get_id(), 'date_created' => wc_rest_prepare_date_response( $object->get_date_created(), false ), 'date_created_gmt' => wc_rest_prepare_date_response( $object->get_date_created() ), @@ -105,13 +106,12 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V ), 'shipping_class' => $object->get_shipping_class(), 'shipping_class_id' => $object->get_shipping_class_id(), - 'image' => $this->get_image( $object ), + 'image' => $this->get_image( $object, $context ), 'attributes' => $this->get_attributes( $object ), 'menu_order' => $object->get_menu_order(), 'meta_data' => $object->get_meta_data(), ); - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); @@ -352,10 +352,11 @@ class WC_REST_Product_Variations_Controller extends WC_REST_Product_Variations_V * Get the image for a product variation. * * @param WC_Product_Variation $variation Variation data. + * @param string $context Context of the request: 'view' or 'edit'. * @return array */ - protected function get_image( $variation ) { - if ( ! $variation->get_image_id() ) { + protected function get_image( $variation, $context = 'view' ) { + if ( ! $variation->get_image_id( $context ) ) { return; } diff --git a/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php b/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php index 714a5fe9e58..46803b1d13a 100644 --- a/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php +++ b/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php @@ -28,6 +28,16 @@ class WC_Settings_Tracking { */ protected $updated_options = array(); + /** + * Toggled options. + * + * @var array + */ + protected $toggled_options = array( + 'enabled' => array(), + 'disabled' => array(), + ); + /** * Init tracking. */ @@ -81,6 +91,12 @@ class WC_Settings_Tracking { return; } + // Check and save toggled options. + if ( in_array( $new_value, array( 'yes', 'no' ), true ) && in_array( $old_value, array( 'yes', 'no' ), true ) ) { + $option_state = 'yes' === $new_value ? 'enabled' : 'disabled'; + $this->toggled_options[ $option_state ][] = $option_name; + } + $this->updated_options[] = $option_name; } @@ -98,13 +114,15 @@ class WC_Settings_Tracking { 'settings' => implode( ',', $this->updated_options ), ); - if ( isset( $current_tab ) ) { - $properties['tab'] = $current_tab; - } - if ( isset( $current_section ) ) { - $properties['section'] = $current_section; + foreach ( $this->toggled_options as $state => $options ) { + if ( ! empty( $options ) ) { + $properties[ $state ] = implode( ',', $options ); + } } + $properties['tab'] = $current_tab ?? ''; + $properties['section'] = $current_section ?? ''; + WC_Tracks::record_event( 'settings_change', $properties ); } diff --git a/plugins/woocommerce/includes/wc-product-functions.php b/plugins/woocommerce/includes/wc-product-functions.php index 746069ef5f2..f27291d3ca9 100644 --- a/plugins/woocommerce/includes/wc-product-functions.php +++ b/plugins/woocommerce/includes/wc-product-functions.php @@ -1001,13 +1001,18 @@ function wc_get_price_including_tax( $product, $args = array() ) { if ( $product->is_taxable() ) { if ( ! wc_prices_include_tax() ) { - $tax_rates = WC_Tax::get_rates( $product->get_tax_class() ); - $taxes = WC_Tax::calc_tax( $line_price, $tax_rates, false ); - - if ( 'yes' === get_option( 'woocommerce_tax_round_at_subtotal' ) ) { - $taxes_total = array_sum( $taxes ); + // If the customer is exempt from VAT, set tax total to 0. + if ( ! empty( WC()->customer ) && WC()->customer->get_is_vat_exempt() ) { + $taxes_total = 0.00; } else { - $taxes_total = array_sum( array_map( 'wc_round_tax_total', $taxes ) ); + $tax_rates = WC_Tax::get_rates( $product->get_tax_class() ); + $taxes = WC_Tax::calc_tax( $line_price, $tax_rates, false ); + + if ( 'yes' === get_option( 'woocommerce_tax_round_at_subtotal' ) ) { + $taxes_total = array_sum( $taxes ); + } else { + $taxes_total = array_sum( array_map( 'wc_round_tax_total', $taxes ) ); + } } $return_price = NumberUtil::round( $line_price + $taxes_total, wc_get_price_decimals() ); @@ -1016,7 +1021,7 @@ function wc_get_price_including_tax( $product, $args = array() ) { $base_tax_rates = WC_Tax::get_base_tax_rates( $product->get_tax_class( 'unfiltered' ) ); /** - * If the customer is excempt from VAT, remove the taxes here. + * If the customer is exempt from VAT, remove the taxes here. * Either remove the base or the user taxes depending on woocommerce_adjust_non_base_location_prices setting. */ if ( ! empty( WC()->customer ) && WC()->customer->get_is_vat_exempt() ) { // @codingStandardsIgnoreLine. diff --git a/plugins/woocommerce/includes/wc-user-functions.php b/plugins/woocommerce/includes/wc-user-functions.php index 6b98a8a8df0..7b53871b454 100644 --- a/plugins/woocommerce/includes/wc-user-functions.php +++ b/plugins/woocommerce/includes/wc-user-functions.php @@ -714,16 +714,40 @@ function wc_get_customer_order_count( $user_id ) { function wc_reset_order_customer_id_on_deleted_user( $user_id ) { global $wpdb; - $wpdb->update( - $wpdb->postmeta, - array( - 'meta_value' => 0, - ), - array( - 'meta_key' => '_customer_user', - 'meta_value' => $user_id, - ) - ); // WPCS: slow query ok. + if ( OrderUtil::custom_orders_table_usage_is_enabled() ) { + $order_table_ds = wc_get_container()->get( OrdersTableDataStore::class ); + $order_table = $order_table_ds::get_orders_table_name(); + $wpdb->update( + $order_table, + array( + 'customer_id' => 0, + 'date_updated_gmt' => current_time( 'mysql', true ), + ), + array( + 'customer_id' => $user_id, + ), + array( + '%d', + '%s', + ), + array( + '%d', + ) + ); + } + + if ( ! OrderUtil::custom_orders_table_usage_is_enabled() || OrderUtil::is_custom_order_tables_in_sync() ) { + $wpdb->update( + $wpdb->postmeta, + array( + 'meta_value' => 0, //phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value + ), + array( + 'meta_key' => '_customer_user', //phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key + 'meta_value' => $user_id, //phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value + ) + ); + } } add_action( 'deleted_user', 'wc_reset_order_customer_id_on_deleted_user' ); diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 48fb5ce4db4..827d2042bf8 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -1,7 +1,7 @@ { "name": "woocommerce", "title": "WooCommerce", - "version": "7.6.0", + "version": "7.7.0", "homepage": "https://woocommerce.com/", "repository": { "type": "git", @@ -88,7 +88,7 @@ "mocha": "7.2.0", "prettier": "npm:wp-prettier@2.0.5", "stylelint": "^13.8.0", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "uuid": "^8.3.2", "webpack": "5.70.0", "webpack-cli": "3.3.12", diff --git a/plugins/woocommerce/phpunit.xml b/plugins/woocommerce/phpunit.xml index 79f1b3e3621..c9e675d826f 100644 --- a/plugins/woocommerce/phpunit.xml +++ b/plugins/woocommerce/phpunit.xml @@ -1,5 +1,5 @@ - + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"> ./tests/legacy/unit-tests ./tests/php - - + + ./includes - woocommerce.php - uninstall.php - - ./includes/admin/helper/views - ./includes/admin/importers/views - ./includes/admin/meta-boxes/views - ./includes/admin/plugin-updates/views - ./includes/admin/views - ./includes/api/legacy - ./includes/api/v1 - ./includes/legacy - ./includes/libraries - ./includes/shipping/legacy-flat-rate - ./includes/shipping/legacy-free-shipping - ./includes/shipping/legacy-international-delivery - ./includes/shipping/legacy-local-delivery - ./includes/shipping/legacy-local-pickup - ./includes/updates - ./includes/vendor - ./includes/widgets - ./packages - ./src - ./vendor - ./includes/wc-deprecated-functions.php - ./includes/wc-template-hooks.php - ./includes/wc-widget-functions.php - - - + woocommerce.php + uninstall.php + + + ./includes/admin/helper/views + ./includes/admin/importers/views + ./includes/admin/meta-boxes/views + ./includes/admin/plugin-updates/views + ./includes/admin/views + ./includes/api/legacy + ./includes/api/v1 + ./includes/legacy + ./includes/libraries + ./includes/shipping/legacy-flat-rate + ./includes/shipping/legacy-free-shipping + ./includes/shipping/legacy-international-delivery + ./includes/shipping/legacy-local-delivery + ./includes/shipping/legacy-local-pickup + ./includes/updates + ./includes/vendor + ./includes/widgets + ./packages + ./src + ./vendor + ./includes/wc-deprecated-functions.php + ./includes/wc-template-hooks.php + ./includes/wc-widget-functions.php + + diff --git a/plugins/woocommerce/readme.txt b/plugins/woocommerce/readme.txt index 7614651e0b0..efff28109f1 100644 --- a/plugins/woocommerce/readme.txt +++ b/plugins/woocommerce/readme.txt @@ -4,7 +4,7 @@ Tags: online store, ecommerce, shop, shopping cart, sell online, storefront, che Requires at least: 5.9 Tested up to: 6.1 Requires PHP: 7.2 -Stable tag: 7.4.1 +Stable tag: 7.5.1 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html @@ -163,6 +163,6 @@ WooCommerce comes with some sample data you can use to see how products look; im == Changelog == -= 7.6.0 2023-XX-XX = += 7.7.0 2023-XX-XX = [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/trunk/changelog.txt). diff --git a/plugins/woocommerce/src/Admin/API/Init.php b/plugins/woocommerce/src/Admin/API/Init.php index 80d74c8c2ad..d0e6197ec7e 100644 --- a/plugins/woocommerce/src/Admin/API/Init.php +++ b/plugins/woocommerce/src/Admin/API/Init.php @@ -90,6 +90,7 @@ class Init { 'Automattic\WooCommerce\Admin\API\NavigationFavorites', 'Automattic\WooCommerce\Admin\API\Taxes', 'Automattic\WooCommerce\Admin\API\MobileAppMagicLink', + 'Automattic\WooCommerce\Admin\API\ShippingPartnerSuggestions', ); $product_form_controllers = array(); diff --git a/plugins/woocommerce/src/Admin/API/Orders.php b/plugins/woocommerce/src/Admin/API/Orders.php index e85bec04c10..64138466a65 100644 --- a/plugins/woocommerce/src/Admin/API/Orders.php +++ b/plugins/woocommerce/src/Admin/API/Orders.php @@ -10,6 +10,8 @@ namespace Automattic\WooCommerce\Admin\API; defined( 'ABSPATH' ) || exit; use Automattic\WooCommerce\Admin\API\Reports\Controller as ReportsController; +use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; +use Automattic\WooCommerce\Utilities\OrderUtil; /** * Orders controller. @@ -54,30 +56,61 @@ class Orders extends \WC_REST_Orders_Controller { * @return array */ protected function prepare_objects_query( $request ) { - global $wpdb; $args = parent::prepare_objects_query( $request ); - // Search by partial order number. if ( ! empty( $request['number'] ) ) { - $partial_number = trim( $request['number'] ); - $limit = intval( $args['posts_per_page'] ); - $order_ids = $wpdb->get_col( + $args = $this->search_partial_order_number( $request['number'], $args ); + } + + return $args; + } + + /** + * Helper method to allow searching by partial order number. + * + * @param int $number Partial order number match. + * @param array $args List of arguments for the request. + * + * @return array Modified args with partial order search included. + */ + private function search_partial_order_number( $number, $args ) { + global $wpdb; + + $partial_number = trim( $number ); + $limit = intval( $args['posts_per_page'] ); + if ( OrderUtil::custom_orders_table_usage_is_enabled() ) { + $order_table_name = OrdersTableDataStore::get_orders_table_name(); + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $orders_table_name is hardcoded. + $order_ids = $wpdb->get_col( $wpdb->prepare( - "SELECT ID - FROM {$wpdb->prefix}posts - WHERE post_type = 'shop_order' - AND ID LIKE %s + "SELECT id + FROM $order_table_name + WHERE type = 'shop_order' + AND id LIKE %s LIMIT %d", $wpdb->esc_like( absint( $partial_number ) ) . '%', $limit ) ); - - // Force WP_Query return empty if don't found any order. - $order_ids = empty( $order_ids ) ? array( 0 ) : $order_ids; - $args['post__in'] = $order_ids; + // phpcs:enable + } else { + $order_ids = $wpdb->get_col( + $wpdb->prepare( + "SELECT ID + FROM {$wpdb->prefix}posts + WHERE post_type = 'shop_order' + AND ID LIKE %s + LIMIT %d", + $wpdb->esc_like( absint( $partial_number ) ) . '%', + $limit + ) + ); } + // Force WP_Query return empty if don't found any order. + $order_ids = empty( $order_ids ) ? array( 0 ) : $order_ids; + $args['post__in'] = $order_ids; + return $args; } diff --git a/plugins/woocommerce/src/Admin/API/PaymentGatewaySuggestions.php b/plugins/woocommerce/src/Admin/API/PaymentGatewaySuggestions.php index d0a83050b49..14d51cb4485 100644 --- a/plugins/woocommerce/src/Admin/API/PaymentGatewaySuggestions.php +++ b/plugins/woocommerce/src/Admin/API/PaymentGatewaySuggestions.php @@ -168,6 +168,16 @@ class PaymentGatewaySuggestions extends \WC_REST_Data_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'transaction_processors' => array( + 'description' => __( 'Array of transaction processors and their images.', 'woocommerce' ), + 'type' => 'object', + 'addtionalProperties' => array( + 'type' => 'string', + 'format' => 'uri', + ), + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), ), ); diff --git a/plugins/woocommerce/src/Admin/API/Reports/Customers/Controller.php b/plugins/woocommerce/src/Admin/API/Reports/Customers/Controller.php index 6bef8c341d4..25459d87825 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Customers/Controller.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Customers/Controller.php @@ -420,22 +420,22 @@ class Controller extends \WC_REST_Reports_Controller implements ExportableInterf ), ); $params['name_includes'] = array( - 'description' => __( 'Limit response to objects with specfic names.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific names.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['name_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic names.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific names.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['username_includes'] = array( - 'description' => __( 'Limit response to objects with specfic usernames.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific usernames.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['username_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic usernames.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific usernames.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); @@ -450,12 +450,12 @@ class Controller extends \WC_REST_Reports_Controller implements ExportableInterf 'validate_callback' => 'rest_validate_request_arg', ); $params['country_includes'] = array( - 'description' => __( 'Limit response to objects with specfic countries.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific countries.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['country_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic countries.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific countries.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); diff --git a/plugins/woocommerce/src/Admin/API/Reports/Customers/DataStore.php b/plugins/woocommerce/src/Admin/API/Reports/Customers/DataStore.php index e1ca489389a..18a4d7a8c4c 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Customers/DataStore.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Customers/DataStore.php @@ -84,7 +84,19 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { * Set up all the hooks for maintaining and populating table data. */ public static function init() { + add_action( 'woocommerce_new_customer', array( __CLASS__, 'update_registered_customer' ) ); + + add_action( 'woocommerce_update_customer', array( __CLASS__, 'update_registered_customer' ) ); add_action( 'profile_update', array( __CLASS__, 'update_registered_customer' ) ); + + add_action( 'added_user_meta', array( __CLASS__, 'update_registered_customer_via_last_active' ), 10, 3 ); + add_action( 'updated_user_meta', array( __CLASS__, 'update_registered_customer_via_last_active' ), 10, 3 ); + + add_action( 'delete_user', array( __CLASS__, 'delete_customer_by_user_id' ) ); + add_action( 'remove_user_from_blog', array( __CLASS__, 'delete_customer_by_user_id' ) ); + + add_action( 'woocommerce_privacy_remove_order_personal_data', array( __CLASS__, 'anonymize_customer' ) ); + add_action( 'woocommerce_analytics_delete_order_stats', array( __CLASS__, 'sync_on_order_delete' ), 15, 2 ); } @@ -775,6 +787,20 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { return $results; } + /** + * Update the database if the "last active" meta value was changed. + * Function expects to be hooked into the `added_user_meta` and `updated_user_meta` actions. + * + * @param int $meta_id ID of updated metadata entry. + * @param int $user_id ID of the user being updated. + * @param string $meta_key Meta key being updated. + */ + public static function update_registered_customer_via_last_active( $meta_id, $user_id, $meta_key ) { + if ( 'wc_last_active' === $meta_key ) { + self::update_registered_customer( $user_id ); + } + } + /** * Check if a user ID is a valid customer or other user role with past orders. * @@ -835,6 +861,11 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { public static function delete_customer_by_user_id( $user_id ) { global $wpdb; + if ( (int) $user_id < 1 || doing_action( 'wp_uninitialize_site' ) ) { + // Skip the deletion. + return; + } + $user_id = (int) $user_id; $num_deleted = $wpdb->delete( self::get_db_table_name(), array( 'user_id' => $user_id ) ); @@ -843,6 +874,59 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { } } + /** + * Anonymize the customer data for a single order. + * + * @internal + * @param int $order_id Order id. + * @return void + */ + public static function anonymize_customer( $order_id ) { + global $wpdb; + + $customer_id = $wpdb->get_var( + $wpdb->prepare( "SELECT customer_id FROM {$wpdb->prefix}wc_order_stats WHERE order_id = %d", $order_id ) + ); + + if ( ! $customer_id ) { + return; + } + + // Long form query because $wpdb->update rejects [deleted]. + $deleted_text = __( '[deleted]', 'woocommerce' ); + $updated = $wpdb->query( + $wpdb->prepare( + "UPDATE {$wpdb->prefix}wc_customer_lookup + SET + user_id = NULL, + username = %s, + first_name = %s, + last_name = %s, + email = %s, + country = '', + postcode = %s, + city = %s, + state = %s + WHERE + customer_id = %d", + array( + $deleted_text, + $deleted_text, + $deleted_text, + 'deleted@site.invalid', + $deleted_text, + $deleted_text, + $deleted_text, + $customer_id, + ) + ) + ); + // If the customer row was anonymized, flush the cache. + if ( $updated ) { + ReportsCache::invalidate(); + } + } + /** * Initialize query objects. */ diff --git a/plugins/woocommerce/src/Admin/API/Reports/Customers/Stats/Controller.php b/plugins/woocommerce/src/Admin/API/Reports/Customers/Stats/Controller.php index f6c214c96ba..0dcff06e2ab 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Customers/Stats/Controller.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Customers/Stats/Controller.php @@ -221,22 +221,22 @@ class Controller extends \WC_REST_Reports_Controller { ), ); $params['name_includes'] = array( - 'description' => __( 'Limit response to objects with specfic names.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific names.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['name_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic names.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific names.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['username_includes'] = array( - 'description' => __( 'Limit response to objects with specfic usernames.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific usernames.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['username_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic usernames.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific usernames.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); @@ -251,12 +251,12 @@ class Controller extends \WC_REST_Reports_Controller { 'validate_callback' => 'rest_validate_request_arg', ); $params['country_includes'] = array( - 'description' => __( 'Limit response to objects with specfic countries.', 'woocommerce' ), + 'description' => __( 'Limit response to objects with specific countries.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); $params['country_excludes'] = array( - 'description' => __( 'Limit response to objects excluding specfic countries.', 'woocommerce' ), + 'description' => __( 'Limit response to objects excluding specific countries.', 'woocommerce' ), 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', ); diff --git a/plugins/woocommerce/src/Admin/API/Reports/DataStore.php b/plugins/woocommerce/src/Admin/API/Reports/DataStore.php index b84c843d281..082d36992dc 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/DataStore.php +++ b/plugins/woocommerce/src/Admin/API/Reports/DataStore.php @@ -1305,11 +1305,10 @@ class DataStore extends SqlQuery { * Returns product attribute subquery elements used in JOIN and WHERE clauses, * based on query arguments from the user. * - * @param array $query_args Parameters supplied by the user. - * @param string $table_name Database table name. + * @param array $query_args Parameters supplied by the user. * @return array */ - protected function get_attribute_subqueries( $query_args, $table_name ) { + protected function get_attribute_subqueries( $query_args ) { global $wpdb; $sql_clauses = array( @@ -1363,11 +1362,11 @@ class DataStore extends SqlQuery { $meta_value = esc_sql( $attribute_term[1] ); } - $join_alias = 'orderitemmeta1'; + $join_alias = 'orderitemmeta1'; + $table_to_join_on = "{$wpdb->prefix}wc_order_product_lookup"; if ( empty( $sql_clauses['join'] ) ) { - $table_name = esc_sql( $table_name ); - $sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_items orderitems ON orderitems.order_id = {$table_name}.order_id"; + $sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_items orderitems ON orderitems.order_id = {$table_to_join_on}.order_id"; } // If we're matching all filters (AND), we'll need multiple JOINs on postmeta. @@ -1375,7 +1374,7 @@ class DataStore extends SqlQuery { if ( 'AND' === $match_operator || 1 === count( $sql_clauses['join'] ) ) { $join_idx = count( $sql_clauses['join'] ); $join_alias = 'orderitemmeta' . $join_idx; - $sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_itemmeta as {$join_alias} ON {$join_alias}.order_item_id = orderitems.order_item_id"; + $sql_clauses['join'][] = "JOIN {$wpdb->prefix}woocommerce_order_itemmeta as {$join_alias} ON {$join_alias}.order_item_id = {$table_to_join_on}.order_item_id"; } // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared diff --git a/plugins/woocommerce/src/Admin/API/Reports/Orders/DataStore.php b/plugins/woocommerce/src/Admin/API/Reports/Orders/DataStore.php index e2523030c87..0c8a86a607d 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Orders/DataStore.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Orders/DataStore.php @@ -191,7 +191,7 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { $where_subquery[] = "{$order_tax_lookup_table}.tax_rate_id NOT IN ({$excluded_tax_rates}) OR {$order_tax_lookup_table}.tax_rate_id IS NULL"; } - $attribute_subqueries = $this->get_attribute_subqueries( $query_args, $order_stats_lookup_table ); + $attribute_subqueries = $this->get_attribute_subqueries( $query_args ); if ( $attribute_subqueries['join'] && $attribute_subqueries['where'] ) { $this->subquery->add_sql_clause( 'join', "JOIN {$order_product_lookup_table} ON {$order_stats_lookup_table}.order_id = {$order_product_lookup_table}.order_id" ); diff --git a/plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php b/plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php index 45d3245686d..897d5ce44df 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php @@ -113,6 +113,7 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { * Set up all the hooks for maintaining and populating table data. */ public static function init() { + add_action( 'woocommerce_before_delete_order', array( __CLASS__, 'delete_order' ) ); add_action( 'delete_post', array( __CLASS__, 'delete_order' ) ); } @@ -208,7 +209,7 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { ); // Product attribute filters. - $attribute_subqueries = $this->get_attribute_subqueries( $query_args, $orders_stats_table ); + $attribute_subqueries = $this->get_attribute_subqueries( $query_args ); if ( $attribute_subqueries['join'] && $attribute_subqueries['where'] ) { // Build a subquery for getting order IDs by product attribute(s). // Done here since our use case is a little more complicated than get_object_where_filter() can handle. diff --git a/plugins/woocommerce/src/Admin/API/Reports/Variations/DataStore.php b/plugins/woocommerce/src/Admin/API/Reports/Variations/DataStore.php index 7b86926db3f..6b84a8c216d 100644 --- a/plugins/woocommerce/src/Admin/API/Reports/Variations/DataStore.php +++ b/plugins/woocommerce/src/Admin/API/Reports/Variations/DataStore.php @@ -119,7 +119,7 @@ class DataStore extends ReportsDataStore implements DataStoreInterface { */ protected function get_order_item_by_attribute_subquery( $query_args ) { $order_product_lookup_table = self::get_db_table_name(); - $attribute_subqueries = $this->get_attribute_subqueries( $query_args, $order_product_lookup_table ); + $attribute_subqueries = $this->get_attribute_subqueries( $query_args ); if ( $attribute_subqueries['join'] && $attribute_subqueries['where'] ) { // Perform a subquery for DISTINCT order items that match our attribute filters. diff --git a/plugins/woocommerce/src/Admin/API/ShippingPartnerSuggestions.php b/plugins/woocommerce/src/Admin/API/ShippingPartnerSuggestions.php new file mode 100644 index 00000000000..0c5c8c2a95d --- /dev/null +++ b/plugins/woocommerce/src/Admin/API/ShippingPartnerSuggestions.php @@ -0,0 +1,212 @@ +namespace, + '/' . $this->rest_base, + array( + array( + 'methods' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_suggestions' ), + 'permission_callback' => array( $this, 'get_permission_check' ), + 'args' => array( + 'force_default_suggestions' => array( + 'type' => 'boolean', + 'description' => __( 'Return the default shipping partner suggestions when woocommerce_show_marketplace_suggestions option is set to no', 'woocommerce' ), + ), + ), + ), + 'schema' => array( $this, 'get_suggestions_schema' ), + ) + ); + + } + + /** + * Check if a given request has access to manage plugins. + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|boolean + */ + public function get_permission_check( $request ) { + if ( ! current_user_can( 'install_plugins' ) ) { + return new \WP_Error( 'woocommerce_rest_cannot_update', __( 'Sorry, you cannot manage plugins.', 'woocommerce' ), array( 'status' => rest_authorization_required_code() ) ); + } + return true; + } + + /** + * Check if suggestions should be shown in the settings screen. + * + * @return bool + */ + private function should_display() { + if ( 'no' === get_option( 'woocommerce_show_marketplace_suggestions', 'yes' ) ) { + return false; + } + + /** + * The return value can be controlled via woocommerce_allow_shipping_partner_suggestions filter. + * + * @since 7.4.1 + */ + return apply_filters( 'woocommerce_allow_shipping_partner_suggestions', true ); + } + + /** + * Return suggested shipping partners. + * + * @param WP_REST_Request $request Full details about the request. + * @return \WP_Error|\WP_HTTP_Response|\WP_REST_Response + */ + public function get_suggestions( $request ) { + $should_display = $this->should_display(); + $force_default = $request->get_param( 'force_default_suggestions' ); + + if ( $should_display ) { + return Suggestions::get_suggestions(); + } elseif ( false === $should_display && true === $force_default ) { + return rest_ensure_response( Suggestions::get_suggestions( DefaultShippingPartners::get_all() ) ); + } + + return rest_ensure_response( Suggestions::get_suggestions( DefaultShippingPartners::get_all() ) ); + } + + /** + * Get the schema, conforming to JSON Schema. + * + * @return array + */ + public static function get_suggestions_schema() { + $feature_def = array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'icon' => array( + 'type' => 'string', + ), + 'title' => array( + 'type' => 'string', + ), + 'description' => array( + 'type' => 'string', + ), + ), + ), + ); + $layout_def = array( + 'type' => 'object', + 'properties' => array( + 'image' => array( + 'type' => 'string', + 'description' => '', + ), + 'features' => $feature_def, + ), + ); + + $item_schema = array( + 'type' => 'object', + 'required' => array( 'name', 'is_visible', 'available_layouts' ), + // require layout_row or layout_column. One of them must exist. + 'anyOf' => array( + array( + 'required' => 'layout_row', + ), + array( + 'required' => 'layout_column', + ), + ), + 'properties' => array( + 'name' => array( + 'description' => __( 'Plugin name.', 'woocommerce' ), + 'type' => 'string', + 'required' => true, + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'slug' => array( + 'description' => __( 'Plugin slug used in https://wordpress.org/plugins/{slug}.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'layout_row' => $layout_def, + 'layout_column' => $layout_def, + 'description' => array( + 'description' => __( 'Description', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'learn_more_link' => array( + 'description' => __( 'Learn more link .', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'is_visible' => array( + 'description' => __( 'Suggestion visibility.', 'woocommerce' ), + 'type' => 'boolean', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'available_layouts' => array( + 'description' => __( 'Available layouts -- single, dual, or both', 'woocommerce' ), + 'type' => 'array', + 'items' => array( + 'type' => 'string', + 'enum' => array( 'row', 'column' ), + ), + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ); + + $schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'shipping-partner-suggestions', + 'type' => 'array', + 'items' => array( $item_schema ), + ); + + return $schema; + } +} diff --git a/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php b/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php index a1846b7ef81..b23fc7b06c4 100644 --- a/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php +++ b/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php @@ -47,6 +47,263 @@ class DefaultPaymentGateways { */ public static function get_all() { $payment_gateways = array( + array( + 'id' => 'affirm', + 'title' => __( 'Affirm', 'woocommerce' ), + 'content' => __( 'Affirm’s tailored Buy Now Pay Later programs remove price as a barrier, turning browsers into buyers, increasing average order value, and expanding your customer base.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/affirm.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/affirm.png', + 'plugins' => array(), + 'external_link' => 'https://woocommerce.com/products/woocommerce-gateway-affirm', + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'US', + 'CA', + ) + ), + ), + 'category_other' => array(), + 'category_additional' => array( + 'US', + 'CA', + ), + ), + array( + 'id' => 'afterpay', + 'title' => __( 'Afterpay', 'woocommerce' ), + 'content' => __( 'Afterpay allows customers to receive products immediately and pay for purchases over four installments, always interest-free.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/afterpay.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/afterpay.png', + 'plugins' => array( 'afterpay-gateway-for-woocommerce' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'US', + 'CA', + 'AU', + ) + ), + ), + 'category_other' => array(), + 'category_additional' => array( + 'US', + 'CA', + 'AU', + ), + ), + array( + 'id' => 'amazon_payments_advanced', + 'title' => __( 'Amazon Pay', 'woocommerce' ), + 'content' => __( 'Enable a familiar, fast checkout for hundreds of millions of active Amazon customers globally.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/amazonpay.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/amazonpay.png', + 'plugins' => array( 'woocommerce-gateway-amazon-payments-advanced' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'US', + 'AT', + 'BE', + 'CY', + 'DK', + 'ES', + 'FR', + 'DE', + 'GB', + 'HU', + 'IE', + 'IT', + 'LU', + 'NL', + 'PT', + 'SL', + 'SE', + 'JP', + ) + ), + ), + 'category_other' => array(), + 'category_additional' => array( + 'US', + 'AT', + 'BE', + 'CY', + 'DK', + 'ES', + 'FR', + 'DE', + 'GB', + 'HU', + 'IE', + 'IT', + 'LU', + 'NL', + 'PT', + 'SL', + 'SE', + 'JP', + ), + ), + array( + 'id' => 'bacs', + 'title' => __( 'Direct bank transfer', 'woocommerce' ), + 'content' => __( 'Take payments via bank transfer.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/bacs.svg', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/bacs.png', + 'is_visible' => array( + self::get_rules_for_cbd( false ), + ), + 'is_offline' => true, + ), + array( + 'id' => 'cod', + 'title' => __( 'Cash on delivery', 'woocommerce' ), + 'content' => __( 'Take payments in cash upon delivery.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/cod.svg', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/cod.png', + 'is_visible' => array( + self::get_rules_for_cbd( false ), + ), + 'is_offline' => true, + ), + array( + 'id' => 'eway', + 'title' => __( 'Eway', 'woocommerce' ), + 'content' => __( 'The Eway extension for WooCommerce allows you to take credit card payments directly on your store without redirecting your customers to a third party site to make payment.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/eway.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/eway.png', + 'plugins' => array( 'woocommerce-gateway-eway' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'NZ', + 'HK', + 'SG', + 'AU', + ) + ), + self::get_rules_for_cbd( false ), + ), + 'category_other' => array( + 'NZ', + 'HK', + 'SG', + 'AU', + ), + 'category_additional' => array(), + ), + array( + 'id' => 'kco', + 'title' => __( 'Klarna Checkout', 'woocommerce' ), + 'content' => __( 'Choose the payment that you want, pay now, pay later or slice it. No credit card numbers, no passwords, no worries.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/klarna-black.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/klarna.png', + 'plugins' => array( 'klarna-checkout-for-woocommerce' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'NO', + 'SE', + 'FI', + ) + ), + self::get_rules_for_cbd( false ), + ), + 'category_other' => array( + 'NO', + 'SE', + 'FI', + ), + 'category_additional' => array(), + ), + array( + 'id' => 'klarna_payments', + 'title' => __( 'Klarna Payments', 'woocommerce' ), + 'content' => __( 'Choose the payment that you want, pay now, pay later or slice it. No credit card numbers, no passwords, no worries.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/klarna-black.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/klarna.png', + 'plugins' => array( 'klarna-payments-for-woocommerce' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'AT', + 'BE', + 'CH', + 'DK', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'IT', + 'NL', + 'NO', + 'PL', + 'SE', + ) + ), + self::get_rules_for_cbd( false ), + ), + 'category_other' => array(), + 'category_additional' => array( + 'US', + 'CA', + 'AT', + 'BE', + 'CH', + 'DK', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'IT', + 'NL', + 'NO', + 'PL', + 'SE', + ), + ), + array( + 'id' => 'mollie_wc_gateway_banktransfer', + 'title' => __( 'Mollie', 'woocommerce' ), + 'content' => __( 'Effortless payments by Mollie: Offer global and local payment methods, get onboarded in minutes, and supported in your language.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/mollie.svg', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/mollie.png', + 'plugins' => array( 'mollie-payments-for-woocommerce' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'AT', + 'BE', + 'CH', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'IT', + 'NL', + 'PL', + ) + ), + ), + 'category_other' => array( + 'AT', + 'BE', + 'CH', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'IT', + 'NL', + 'PL', + ), + 'category_additional' => array(), + ), array( 'id' => 'payfast', 'title' => __( 'PayFast', 'woocommerce' ), @@ -55,27 +312,10 @@ class DefaultPaymentGateways { 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/payfast.png', 'plugins' => array( 'woocommerce-payfast-gateway' ), 'is_visible' => array( - self::get_rules_for_countries( array( 'ZA', 'GH', 'NG' ) ), + self::get_rules_for_countries( array( 'ZA' ) ), self::get_rules_for_cbd( false ), ), - 'category_other' => array( 'ZA', 'GH', 'NG' ), - 'category_additional' => array(), - ), - array( - 'id' => 'stripe', - 'title' => __( ' Stripe', 'woocommerce' ), - 'content' => __( 'Accept debit and credit cards in 135+ currencies, methods such as Alipay, and one-touch checkout with Apple Pay.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/stripe.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/stripe.png', - 'plugins' => array( 'woocommerce-gateway-stripe' ), - 'is_visible' => array( - // https://stripe.com/global. - self::get_rules_for_countries( - array( 'AU', 'AT', 'BE', 'BG', 'BR', 'CA', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HK', 'IN', 'IE', 'IT', 'JP', 'LV', 'LT', 'LU', 'MY', 'MT', 'MX', 'NL', 'NZ', 'NO', 'PL', 'PT', 'RO', 'SG', 'SK', 'SI', 'ES', 'SE', 'CH', 'GB', 'US', 'PR', 'HU', 'SL', 'ID', 'MY', 'SI', 'PR' ) - ), - self::get_rules_for_cbd( false ), - ), - 'category_other' => array( 'AU', 'AT', 'BE', 'BG', 'BR', 'CA', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HK', 'IN', 'IE', 'IT', 'JP', 'LV', 'LT', 'LU', 'MY', 'MT', 'MX', 'NL', 'NZ', 'NO', 'PL', 'PT', 'RO', 'SG', 'SK', 'SI', 'ES', 'SE', 'CH', 'GB', 'US', 'PR', 'HU', 'SL', 'ID', 'MY', 'SI', 'PR' ), + 'category_other' => array( 'ZA' ), 'category_additional' => array(), ), array( @@ -93,62 +333,21 @@ class DefaultPaymentGateways { 'category_additional' => array(), ), array( - 'id' => 'kco', - 'title' => __( 'Klarna Checkout', 'woocommerce' ), - 'content' => __( 'Choose the payment that you want, pay now, pay later or slice it. No credit card numbers, no passwords, no worries.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/klarna-black.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/klarna.png', - 'plugins' => array( 'klarna-checkout-for-woocommerce' ), + 'id' => 'payubiz', + 'title' => __( 'PayU for WooCommerce', 'woocommerce' ), + 'content' => __( 'Enable PayU’s exclusive plugin for WooCommerce to start accepting payments in 100+ payment methods available in India including credit cards, debit cards, UPI, & more!', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/payu.svg', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/payu.png', + 'plugins' => array( 'payu-india' ), 'is_visible' => array( - self::get_rules_for_countries( array( 'SE', 'FI', 'NO' ) ), - self::get_rules_for_cbd( false ), - ), - 'category_other' => array( 'SE', 'FI', 'NO' ), - 'category_additional' => array(), - ), - array( - 'id' => 'klarna_payments', - 'title' => __( 'Klarna Payments', 'woocommerce' ), - 'content' => __( 'Choose the payment that you want, pay now, pay later or slice it. No credit card numbers, no passwords, no worries.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/klarna-black.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/klarna.png', - 'plugins' => array( 'klarna-payments-for-woocommerce' ), - 'is_visible' => array( - self::get_rules_for_countries( - array( 'DK', 'DE', 'AT', 'NL', 'CH', 'BE', 'SP', 'PL', 'FR', 'IT', 'GB', 'ES', 'FI', 'NO', 'SE', 'ES', 'FI', 'NO', 'SE' ) + (object) array( + 'type' => 'base_location_country', + 'value' => 'IN', + 'operation' => '=', ), self::get_rules_for_cbd( false ), ), - 'category_other' => array(), - 'category_additional' => array( 'DK', 'DE', 'AT', 'NL', 'CH', 'BE', 'SP', 'PL', 'FR', 'IT', 'GB', 'ES', 'FI', 'NO', 'SE', 'ES', 'FI', 'NO', 'SE' ), - ), - array( - 'id' => 'mollie_wc_gateway_banktransfer', - 'title' => __( 'Mollie', 'woocommerce' ), - 'content' => __( 'Effortless payments by Mollie: Offer global and local payment methods, get onboarded in minutes, and supported in your language.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/mollie.svg', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/mollie.png', - 'plugins' => array( 'mollie-payments-for-woocommerce' ), - 'is_visible' => array( - self::get_rules_for_countries( - array( 'FR', 'DE', 'GB', 'AT', 'CH', 'ES', 'IT', 'PL', 'FI', 'NL', 'BE' ) - ), - ), - 'category_other' => array( 'FR', 'DE', 'GB', 'AT', 'CH', 'ES', 'IT', 'PL', 'FI', 'NL', 'BE' ), - 'category_additional' => array(), - ), - array( - 'id' => 'woo-mercado-pago-custom', - 'title' => __( 'Mercado Pago Checkout Pro & Custom', 'woocommerce' ), - 'content' => __( 'Accept credit and debit cards, offline (cash or bank transfer) and logged-in payments with money in Mercado Pago. Safe and secure payments with the leading payment processor in LATAM.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/mercadopago.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/mercadopago.png', - 'plugins' => array( 'woocommerce-mercadopago' ), - 'is_visible' => array( - self::get_rules_for_countries( array( 'AR', 'BR', 'CL', 'CO', 'MX', 'PE', 'UY' ) ), - ), - 'is_local_partner' => true, - 'category_other' => array( 'AR', 'BR', 'CL', 'CO', 'MX', 'PE', 'UY' ), + 'category_other' => array( 'IN' ), 'category_additional' => array(), ), array( @@ -166,30 +365,304 @@ class DefaultPaymentGateways { ), self::get_rules_for_cbd( false ), ), - 'category_other' => array( 'US', 'CA', 'AT', 'BE', 'BG', 'HR', 'CH', 'CY', 'CZ', 'DK', 'EE', 'ES', 'FI', 'FR', 'DE', 'GB', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'SK', 'SL', 'SE', 'MX', 'BR', 'AR', 'CL', 'CO', 'EC', 'PE', 'UY', 'VE', 'AU', 'NZ', 'HK', 'JP', 'SG', 'CN', 'ID', 'ZA', 'NG', 'GH' ), - 'category_additional' => array( 'US', 'CA', 'AT', 'BE', 'BG', 'HR', 'CH', 'CY', 'CZ', 'DK', 'EE', 'ES', 'FI', 'FR', 'DE', 'GB', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'SK', 'SL', 'SE', 'MX', 'BR', 'AR', 'CL', 'CO', 'EC', 'PE', 'UY', 'VE', 'AU', 'NZ', 'HK', 'JP', 'SG', 'CN', 'ID', 'IN', 'ZA', 'NG', 'GH' ), + 'category_other' => array( + 'US', + 'CA', + 'MX', + 'BR', + 'AR', + 'CL', + 'CO', + 'EC', + 'PE', + 'UY', + 'VE', + 'AT', + 'BE', + 'BG', + 'HR', + 'CH', + 'CY', + 'CZ', + 'DK', + 'EE', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'GR', + 'HU', + 'IE', + 'IT', + 'LV', + 'LT', + 'LU', + 'MT', + 'NL', + 'NO', + 'PL', + 'PT', + 'RO', + 'SK', + 'SL', + 'SE', + 'AU', + 'NZ', + 'HK', + 'JP', + 'SG', + 'CN', + 'ID', + 'IN', + ), + 'category_additional' => array( + 'US', + 'CA', + 'ZA', + 'NG', + 'GH', + 'EC', + 'VE', + 'AR', + 'CL', + 'CO', + 'PE', + 'UY', + 'MX', + 'BR', + 'AT', + 'BE', + 'BG', + 'HR', + 'CH', + 'CY', + 'CZ', + 'DK', + 'EE', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'GR', + 'HU', + 'IE', + 'IT', + 'LV', + 'LT', + 'LU', + 'MT', + 'NL', + 'NO', + 'PL', + 'PT', + 'RO', + 'SK', + 'SL', + 'SE', + 'AU', + 'NZ', + 'HK', + 'JP', + 'SG', + 'CN', + 'ID', + ), ), array( - 'id' => 'cod', - 'title' => __( 'Cash on delivery', 'woocommerce' ), - 'content' => __( 'Take payments in cash upon delivery.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/cod.svg', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/cod.png', - 'is_visible' => array( + 'id' => 'razorpay', + 'title' => __( 'Razorpay', 'woocommerce' ), + 'content' => __( 'The official Razorpay extension for WooCommerce allows you to accept credit cards, debit cards, netbanking, wallet, and UPI payments.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/razorpay.svg', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/razorpay.png', + 'plugins' => array( 'woo-razorpay' ), + 'is_visible' => array( + (object) array( + 'type' => 'base_location_country', + 'value' => 'IN', + 'operation' => '=', + ), self::get_rules_for_cbd( false ), ), - 'is_offline' => true, + 'category_other' => array( 'IN' ), + 'category_additional' => array(), ), array( - 'id' => 'bacs', - 'title' => __( 'Direct bank transfer', 'woocommerce' ), - 'content' => __( 'Take payments via bank transfer.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/bacs.svg', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/bacs.png', - 'is_visible' => array( + 'id' => 'square_credit_card', + 'title' => __( 'Square', 'woocommerce' ), + 'content' => __( 'Securely accept credit and debit cards with one low rate, no surprise fees (custom rates available). Sell online and in store and track sales and inventory in one place.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/square-black.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/square.png', + 'plugins' => array( 'woocommerce-square' ), + 'is_visible' => array( + (object) array( + 'type' => 'or', + 'operands' => (object) array( + array( + self::get_rules_for_countries( array( 'US' ) ), + self::get_rules_for_cbd( true ), + ), + array( + self::get_rules_for_countries( + array( + 'US', + 'CA', + 'IE', + 'ES', + 'FR', + 'GB', + 'AU', + 'JP', + ) + ), + self::get_rules_for_selling_venues( array( 'brick-mortar', 'brick-mortar-other' ) ), + ), + ), + ), + ), + 'category_other' => array( + 'US', + 'CA', + 'IE', + 'ES', + 'FR', + 'GB', + 'AU', + 'JP', + ), + 'category_additional' => array(), + ), + array( + 'id' => 'stripe', + 'title' => __( ' Stripe', 'woocommerce' ), + 'content' => __( 'Accept debit and credit cards in 135+ currencies, methods such as Alipay, and one-touch checkout with Apple Pay.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/stripe.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/stripe.png', + 'plugins' => array( 'woocommerce-gateway-stripe' ), + 'is_visible' => array( + // https://stripe.com/global. + self::get_rules_for_countries( + array( + 'US', + 'CA', + 'MX', + 'BR', + 'AT', + 'BE', + 'BG', + 'CH', + 'CY', + 'CZ', + 'DK', + 'EE', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'GR', + 'HU', + 'IE', + 'IT', + 'LV', + 'LT', + 'LU', + 'MT', + 'NL', + 'NO', + 'PL', + 'PT', + 'RO', + 'SK', + 'SL', + 'SE', + 'AU', + 'NZ', + 'HK', + 'JP', + 'SG', + 'ID', + 'IN', + ) + ), self::get_rules_for_cbd( false ), ), - 'is_offline' => true, + 'category_other' => array( + 'US', + 'CA', + 'MX', + 'BR', + 'AT', + 'BE', + 'BG', + 'CH', + 'CY', + 'CZ', + 'DK', + 'EE', + 'ES', + 'FI', + 'FR', + 'DE', + 'GB', + 'GR', + 'HU', + 'IE', + 'IT', + 'LV', + 'LT', + 'LU', + 'MT', + 'NL', + 'NO', + 'PL', + 'PT', + 'RO', + 'SK', + 'SL', + 'SE', + 'AU', + 'NZ', + 'HK', + 'JP', + 'SG', + 'ID', + 'IN', + ), + 'category_additional' => array(), + ), + array( + 'id' => 'woo-mercado-pago-custom', + 'title' => __( 'Mercado Pago Checkout Pro & Custom', 'woocommerce' ), + 'content' => __( 'Accept credit and debit cards, offline (cash or bank transfer) and logged-in payments with money in Mercado Pago. Safe and secure payments with the leading payment processor in LATAM.', 'woocommerce' ), + 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/mercadopago.png', + 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/mercadopago.png', + 'plugins' => array( 'woocommerce-mercadopago' ), + 'is_visible' => array( + self::get_rules_for_countries( + array( + 'AR', + 'CL', + 'CO', + 'PE', + 'UY', + 'MX', + 'BR', + ) + ), + ), + 'is_local_partner' => true, + 'category_other' => array( + 'AR', + 'CL', + 'CO', + 'PE', + 'UY', + 'MX', + 'BR', + ), + 'category_additional' => array(), ), // This is for backwards compatibility only (WC < 5.10.0-dev or WCA < 2.9.0-dev). array( @@ -303,121 +776,6 @@ class DefaultPaymentGateways { ), ), ), - array( - 'id' => 'razorpay', - 'title' => __( 'Razorpay', 'woocommerce' ), - 'content' => __( 'The official Razorpay extension for WooCommerce allows you to accept credit cards, debit cards, netbanking, wallet, and UPI payments.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/razorpay.svg', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/razorpay.png', - 'plugins' => array( 'woo-razorpay' ), - 'is_visible' => array( - (object) array( - 'type' => 'base_location_country', - 'value' => 'IN', - 'operation' => '=', - ), - self::get_rules_for_cbd( false ), - ), - 'category_other' => array( 'IN' ), - 'category_additional' => array(), - ), - array( - 'id' => 'payubiz', - 'title' => __( 'PayU for WooCommerce', 'woocommerce' ), - 'content' => __( 'Enable PayU’s exclusive plugin for WooCommerce to start accepting payments in 100+ payment methods available in India including credit cards, debit cards, UPI, & more!', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/payu.svg', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/payu.png', - 'plugins' => array( 'payu-india' ), - 'is_visible' => array( - (object) array( - 'type' => 'base_location_country', - 'value' => 'IN', - 'operation' => '=', - ), - self::get_rules_for_cbd( false ), - ), - 'category_other' => array( 'IN' ), - 'category_additional' => array(), - ), - array( - 'id' => 'eway', - 'title' => __( 'Eway', 'woocommerce' ), - 'content' => __( 'The Eway extension for WooCommerce allows you to take credit card payments directly on your store without redirecting your customers to a third party site to make payment.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/onboarding/eway.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/eway.png', - 'plugins' => array( 'woocommerce-gateway-eway' ), - 'is_visible' => array( - self::get_rules_for_countries( array( 'AU', 'NZ' ) ), - self::get_rules_for_cbd( false ), - ), - 'category_other' => array( 'AU', 'NZ' ), - 'category_additional' => array(), - ), - array( - 'id' => 'square_credit_card', - 'title' => __( 'Square', 'woocommerce' ), - 'content' => __( 'Securely accept credit and debit cards with one low rate, no surprise fees (custom rates available). Sell online and in store and track sales and inventory in one place.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/square-black.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/square.png', - 'plugins' => array( 'woocommerce-square' ), - 'is_visible' => array( - (object) array( - 'type' => 'or', - 'operands' => (object) array( - array( - self::get_rules_for_countries( array( 'US' ) ), - self::get_rules_for_cbd( true ), - ), - array( - self::get_rules_for_countries( array( 'US', 'CA', 'JP', 'GB', 'AU', 'IE', 'FR', 'ES', 'FI' ) ), - self::get_rules_for_selling_venues( array( 'brick-mortar', 'brick-mortar-other' ) ), - ), - ), - ), - ), - 'category_other' => array( 'US', 'CA', 'JP', 'GB', 'AU', 'IE', 'FR', 'ES', 'FI' ), - 'category_additional' => array(), - ), - array( - 'id' => 'afterpay', - 'title' => __( 'Afterpay', 'woocommerce' ), - 'content' => __( 'Afterpay allows customers to receive products immediately and pay for purchases over four installments, always interest-free.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/afterpay.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/afterpay.png', - 'plugins' => array( 'afterpay-gateway-for-woocommerce' ), - 'is_visible' => array( - self::get_rules_for_countries( array( 'US', 'CA' ) ), - ), - 'category_other' => array(), - 'category_additional' => array( 'US', 'CA' ), - ), - array( - 'id' => 'amazon_payments_advanced', - 'title' => __( 'Amazon Pay', 'woocommerce' ), - 'content' => __( 'Enable a familiar, fast checkout for hundreds of millions of active Amazon customers globally.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/amazonpay.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/amazonpay.png', - 'plugins' => array( 'woocommerce-gateway-amazon-payments-advanced' ), - 'is_visible' => array( - self::get_rules_for_countries( array( 'US', 'GB', 'JP', 'AT', 'BE', 'CY', 'DK', 'ES', 'FR', 'DE', 'HU', 'IE', 'IT', 'LU', 'NL', 'PT', 'SL', 'SE' ) ), - ), - 'category_other' => array(), - 'category_additional' => array( 'US', 'GB', 'JP', 'AT', 'BE', 'CY', 'DK', 'ES', 'FR', 'DE', 'HU', 'IE', 'IT', 'LU', 'NL', 'PT', 'SL', 'SE' ), - ), - array( - 'id' => 'affirm', - 'title' => __( 'Affirm', 'woocommerce' ), - 'content' => __( 'Affirm’s tailored Buy Now Pay Later programs remove price as a barrier, turning browsers into buyers, increasing average order value, and expanding your customer base.', 'woocommerce' ), - 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/affirm.png', - 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/affirm.png', - 'plugins' => array(), - 'external_link' => 'https://woocommerce.com/products/woocommerce-gateway-affirm', - 'is_visible' => array( - self::get_rules_for_countries( array( 'US', 'CA' ) ), - ), - 'category_other' => array(), - 'category_additional' => array( 'US', 'CA' ), - ), ); foreach ( $payment_gateways as $index => $payment_gateway ) { diff --git a/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php new file mode 100644 index 00000000000..866d156482c --- /dev/null +++ b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php @@ -0,0 +1,250 @@ +plugin_url() . '/assets/images/shipping_partners/'; + $column_layout_features = array( + array( + 'icon' => $asset_base_url . 'timer.svg', + 'title' => __( 'Save time', 'woocommerce' ), + 'description' => __( + 'Automatically import order information to quickly print your labels.', + 'woocommerce' + ), + ), + array( + 'icon' => $asset_base_url . 'discount.svg', + 'title' => __( 'Save money', 'woocommerce' ), + 'description' => __( + 'Shop for the best shipping rates, and access pre-negotiated discounted rates.', + 'woocommerce' + ), + ), + array( + 'icon' => $asset_base_url . 'star.svg', + 'title' => __( 'Wow your shoppers', 'woocommerce' ), + 'description' => __( + 'Keep your customers informed with tracking notifications.', + 'woocommerce' + ), + ), + ); + + $check_icon = $asset_base_url . 'check.svg'; + + return array( + array( + 'name' => 'ShipStation', + 'slug' => 'woocommerce-shipstation-integration', + 'description' => __( 'Powerful yet easy-to-use solution:', 'woocommerce' ), + 'layout_column' => array( + 'image' => $asset_base_url . 'shipstation-column.svg', + 'features' => $column_layout_features, + ), + 'layout_row' => array( + 'image' => $asset_base_url . 'shipstation-row.svg', + 'features' => array( + array( + 'icon' => $check_icon, + 'description' => __( + 'Print labels from Royal Mail, Parcel Force, DPD, and many more', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( + 'Shop for the best rates, in real-time', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Connect selling channels easily', 'woocommerce' ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Advance automated workflows', 'woocommerce' ), + ), + array( + 'icon' => $check_icon, + 'description' => __( '30-days free trial', 'woocommerce' ), + ), + ), + ), + 'learn_more_link' => 'https://wordpress.org/plugins/woocommerce-shipstation-integration/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'AU', 'CA', 'GB' ) ), + ), + 'available_layouts' => array( 'row', 'column' ), + ), + array( + 'name' => 'Skydropx', + 'slug' => 'skydropx-cotizador-y-envios', + 'layout_column' => array( + 'image' => $asset_base_url . 'skydropx-column.svg', + 'features' => $column_layout_features, + ), + 'description' => '', + 'learn_more_link' => 'https://wordpress.org/plugins/skydropx-cotizador-y-envios/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'MX', 'CO' ) ), + ), + 'available_layouts' => array( 'column' ), + ), + array( + 'name' => 'Envia', + 'slug' => '', + 'description' => '', + 'layout_column' => array( + 'image' => $asset_base_url . 'envia-column.svg', + 'features' => $column_layout_features, + ), + 'learn_more_link' => 'https://woocommerce.com/products/envia-shipping-and-fulfillment/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'CL', 'AR', 'PE', 'BR', 'UY', 'GT' ) ), + ), + 'available_layouts' => array( 'column' ), + ), + array( + 'name' => 'Sendcloud', + 'slug' => 'sendcloud-shipping', + 'description' => __( 'All-in-one shipping tool:', 'woocommerce' ), + 'layout_column' => array( + 'image' => $asset_base_url . 'sendcloud-column.svg', + 'features' => $column_layout_features, + ), + 'layout_row' => array( + 'image' => $asset_base_url . 'sendcloud-row.svg', + 'features' => array( + array( + 'icon' => $check_icon, + 'description' => __( 'Print labels from 80+ carriers', 'woocommerce' ), + ), + array( + 'icon' => $check_icon, + 'description' => __( + 'Process orders in just a few clicks', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Customize checkout options', 'woocommerce' ), + ), + + array( + 'icon' => $check_icon, + 'description' => __( 'Self-service tracking & returns', 'woocommerce' ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Start with a free plan', 'woocommerce' ), + ), + ), + ), + 'learn_more_link' => 'https://wordpress.org/plugins/sendcloud-shipping/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'NL', 'AT', 'BE', 'FR', 'DE', 'ES', 'GB', 'IT' ) ), + ), + 'available_layouts' => array( 'row', 'column' ), + ), + array( + 'name' => 'Packlink', + 'slug' => 'packlink-pro-shipping', + 'description' => __( 'Optimize your full shipping process:', 'woocommerce' ), + 'layout_column' => array( + 'image' => $asset_base_url . 'packlink-column.svg', + 'features' => $column_layout_features, + ), + 'layout_row' => array( + 'image' => $asset_base_url . 'packlink-row.svg', + 'features' => array( + array( + 'icon' => $check_icon, + 'description' => __( + 'Automated, real-time order import', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( + 'Direct access to leading carriers', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( + 'Access competitive shipping prices', + 'woocommerce' + ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Quickly bulk print labels', 'woocommerce' ), + ), + array( + 'icon' => $check_icon, + 'description' => __( 'Free shipping platform', 'woocommerce' ), + ), + ), + ), + 'learn_more_link' => 'https://wordpress.org/plugins/packlink-pro-shipping/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'FR', 'DE', 'ES', 'IT' ) ), + ), + 'available_layouts' => array( 'row', 'column' ), + ), + array( + 'title' => 'WooCommerce Shipping', + 'slug' => 'woocommerce-services', + 'description' => __( 'Save time and money by printing your shipping labels right from your computer with WooCommerce Shipping. Try WooCommerce Shipping for free.', 'woocommerce' ), + 'layout_column' => array( + 'image' => $asset_base_url . 'wcs-column.svg', + 'features' => $column_layout_features, + ), + 'learn_more_link' => 'https://woocommerce.com/products/shipping/', + 'is_visible' => array( + self::get_rules_for_countries( array( 'US' ) ), + ), + 'available_layouts' => array( 'column' ), + ), + ); + } + + /** + * Get rules that match the store base location to one of the provided countries. + * + * @param array $countries Array of countries to match. + * @return object Rules to match. + */ + public static function get_rules_for_countries( $countries ) { + $rules = array(); + + foreach ( $countries as $country ) { + $rules[] = (object) array( + 'type' => 'base_location_country', + 'value' => $country, + 'operation' => '=', + ); + } + + return (object) array( + 'type' => 'or', + 'operands' => $rules, + ); + } +} diff --git a/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestions.php b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestions.php new file mode 100644 index 00000000000..dd31e22d5ea --- /dev/null +++ b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestions.php @@ -0,0 +1,70 @@ +is_visible ) ) { + $is_visible = $rule_evaluator->evaluate( $spec->is_visible ); + if ( $is_visible ) { + $spec->is_visible = true; + $suggestions[] = $spec; + } + } + } + + return $suggestions; + } + + /** + * Get specs or fetch remotely if they don't exist. + */ + public static function get_specs_from_datasource() { + if ( 'no' === get_option( 'woocommerce_show_marketplace_suggestions', 'yes' ) ) { + /** + * It can be used to modify shipping partner suggestions spec. + * + * @since 7.4.1 + */ + return apply_filters( 'woocommerce_admin_shipping_partner_suggestions_specs', DefaultShippingPartners::get_all() ); + } + $specs = ShippingPartnerSuggestionsDataSourcePoller::get_instance()->get_specs_from_data_sources(); + + // Fetch specs if they don't yet exist. + if ( false === $specs || ! is_array( $specs ) || 0 === count( $specs ) ) { + /** + * It can be used to modify shipping partner suggestions spec. + * + * @since 7.4.1 + */ + return apply_filters( 'woocommerce_admin_shipping_partner_suggestions_specs', DefaultShippingPartners::get_all() ); + } + + /** + * It can be used to modify shipping partner suggestions spec. + * + * @since 7.4.1 + */ + return apply_filters( 'woocommerce_admin_shipping_partner_suggestions_specs', $specs ); + } +} diff --git a/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestionsDataSourcePoller.php b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestionsDataSourcePoller.php new file mode 100644 index 00000000000..04c2708c523 --- /dev/null +++ b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/ShippingPartnerSuggestionsDataSourcePoller.php @@ -0,0 +1,40 @@ +queue()->schedule_single( time(), 'woocommerce_run_on_woocommerce_admin_updated', diff --git a/plugins/woocommerce/src/Caches/OrderCache.php b/plugins/woocommerce/src/Caches/OrderCache.php index 6f49fa308dd..fed5b0be0d7 100644 --- a/plugins/woocommerce/src/Caches/OrderCache.php +++ b/plugins/woocommerce/src/Caches/OrderCache.php @@ -2,6 +2,7 @@ namespace Automattic\WooCommerce\Caches; +use Automattic\WooCommerce\Caching\CacheException; use Automattic\WooCommerce\Caching\ObjectCache; /** diff --git a/plugins/woocommerce/src/Internal/Admin/Events.php b/plugins/woocommerce/src/Internal/Admin/Events.php index edb5e13a7b7..bf03ef7ba34 100644 --- a/plugins/woocommerce/src/Internal/Admin/Events.php +++ b/plugins/woocommerce/src/Internal/Admin/Events.php @@ -44,6 +44,8 @@ use Automattic\WooCommerce\Internal\Admin\Notes\WooCommerceSubscriptions; use Automattic\WooCommerce\Internal\Admin\Notes\WooSubscriptionsNotes; use Automattic\WooCommerce\Internal\Admin\Schedulers\MailchimpScheduler; use Automattic\WooCommerce\Admin\Notes\Note; +use Automattic\WooCommerce\Admin\Features\PaymentGatewaySuggestions\PaymentGatewaySuggestionsDataSourcePoller; +use Automattic\WooCommerce\Internal\Admin\RemoteFreeExtensions\RemoteFreeExtensionsDataSourcePoller; /** * Events Class. @@ -143,6 +145,7 @@ class Events { $this->possibly_add_notes(); $this->possibly_delete_notes(); $this->possibly_update_notes(); + $this->possibly_refresh_data_source_pollers(); if ( $this->is_remote_inbox_notifications_enabled() ) { DataSourcePoller::get_instance()->read_specs_from_data_sources(); @@ -250,4 +253,21 @@ class Events { // All checks have passed. return true; } + + /** + * Refresh transient for the following DataSourcePollers on wc_admin_daily cron job. + * - PaymentGatewaySuggestionsDataSourcePoller + * - RemoteFreeExtensionsDataSourcePoller + */ + protected function possibly_refresh_data_source_pollers() { + $completed_tasks = get_option( 'woocommerce_task_list_tracked_completed_tasks', array() ); + + if ( ! in_array( 'payments', $completed_tasks, true ) && ! in_array( 'woocommerce-payments', $completed_tasks, true ) ) { + PaymentGatewaySuggestionsDataSourcePoller::get_instance()->read_specs_from_data_sources(); + } + + if ( ! in_array( 'store_details', $completed_tasks, true ) && ! in_array( 'marketing', $completed_tasks, true ) ) { + RemoteFreeExtensionsDataSourcePoller::get_instance()->read_specs_from_data_sources(); + } + } } diff --git a/plugins/woocommerce/src/Internal/Admin/Schedulers/CustomersScheduler.php b/plugins/woocommerce/src/Internal/Admin/Schedulers/CustomersScheduler.php index 4b8533d3efc..05bba2f5802 100644 --- a/plugins/woocommerce/src/Internal/Admin/Schedulers/CustomersScheduler.php +++ b/plugins/woocommerce/src/Internal/Admin/Schedulers/CustomersScheduler.php @@ -27,13 +27,6 @@ class CustomersScheduler extends ImportScheduler { * @internal */ public static function init() { - add_action( 'woocommerce_new_customer', array( __CLASS__, 'schedule_import' ) ); - add_action( 'woocommerce_update_customer', array( __CLASS__, 'schedule_import' ) ); - add_action( 'updated_user_meta', array( __CLASS__, 'schedule_import_via_last_active' ), 10, 3 ); - add_action( 'woocommerce_privacy_remove_order_personal_data', array( __CLASS__, 'schedule_anonymize' ) ); - add_action( 'delete_user', array( __CLASS__, 'schedule_user_delete' ) ); - add_action( 'remove_user_from_blog', array( __CLASS__, 'schedule_user_delete' ) ); - CustomersDataStore::init(); parent::init(); } @@ -47,8 +40,6 @@ class CustomersScheduler extends ImportScheduler { public static function get_dependencies() { return array( 'delete_batch_init' => OrdersScheduler::get_action( 'delete_batch_init' ), - 'anonymize' => self::get_action( 'import' ), - 'delete_user' => self::get_action( 'import' ), ); } @@ -120,74 +111,6 @@ class CustomersScheduler extends ImportScheduler { return $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}wc_customer_lookup" ); } - /** - * Get all available scheduling actions. - * Used to determine action hook names and clear events. - * - * @internal - * @return array - */ - public static function get_scheduler_actions() { - $actions = parent::get_scheduler_actions(); - $actions['anonymize'] = 'wc-admin_anonymize_' . static::$name; - $actions['delete_user'] = 'wc-admin_delete_user_' . static::$name; - return $actions; - } - - /** - * Schedule import. - * - * @internal - * @param int $user_id User ID. - * @return void - */ - public static function schedule_import( $user_id ) { - self::schedule_action( 'import', array( $user_id ) ); - } - - /** - * Schedule an import if the "last active" meta value was changed. - * Function expects to be hooked into the `updated_user_meta` action. - * - * @internal - * @param int $meta_id ID of updated metadata entry. - * @param int $user_id ID of the user being updated. - * @param string $meta_key Meta key being updated. - */ - public static function schedule_import_via_last_active( $meta_id, $user_id, $meta_key ) { - if ( 'wc_last_active' === $meta_key ) { - self::schedule_import( $user_id ); - } - } - - /** - * Schedule an action to anonymize a single Order. - * - * @internal - * @param WC_Order $order Order object. - * @return void - */ - public static function schedule_anonymize( $order ) { - if ( is_a( $order, 'WC_Order' ) ) { - // Postpone until any pending updates are completed. - self::schedule_action( 'anonymize', array( $order->get_id() ) ); - } - } - - /** - * Schedule an action to delete a single User. - * - * @internal - * @param int $user_id User ID. - * @return void - */ - public static function schedule_user_delete( $user_id ) { - if ( (int) $user_id > 0 && ! doing_action( 'wp_uninitialize_site' ) ) { - // Postpone until any pending updates are completed. - self::schedule_action( 'delete_user', array( $user_id ) ); - } - } - /** * Imports a single customer. * @@ -220,68 +143,4 @@ class CustomersScheduler extends ImportScheduler { CustomersDataStore::delete_customer( $customer_id ); } } - - /** - * Anonymize the customer data for a single order. - * - * @internal - * @param int $order_id Order id. - * @return void - */ - public static function anonymize( $order_id ) { - global $wpdb; - - $customer_id = $wpdb->get_var( - $wpdb->prepare( "SELECT customer_id FROM {$wpdb->prefix}wc_order_stats WHERE order_id = %d", $order_id ) - ); - - if ( ! $customer_id ) { - return; - } - - // Long form query because $wpdb->update rejects [deleted]. - $deleted_text = __( '[deleted]', 'woocommerce' ); - $updated = $wpdb->query( - $wpdb->prepare( - "UPDATE {$wpdb->prefix}wc_customer_lookup - SET - user_id = NULL, - username = %s, - first_name = %s, - last_name = %s, - email = %s, - country = '', - postcode = %s, - city = %s, - state = %s - WHERE - customer_id = %d", - array( - $deleted_text, - $deleted_text, - $deleted_text, - 'deleted@site.invalid', - $deleted_text, - $deleted_text, - $deleted_text, - $customer_id, - ) - ) - ); - // If the customer row was anonymized, flush the cache. - if ( $updated ) { - ReportsCache::invalidate(); - } - } - - /** - * Delete the customer data for a single user. - * - * @internal - * @param int $user_id User ID. - * @return void - */ - public static function delete_user( $user_id ) { - CustomersDataStore::delete_customer_by_user_id( $user_id ); - } } diff --git a/plugins/woocommerce/src/Internal/Admin/Translations.php b/plugins/woocommerce/src/Internal/Admin/Translations.php index cbbde4d5597..cbd6004f3a7 100644 --- a/plugins/woocommerce/src/Internal/Admin/Translations.php +++ b/plugins/woocommerce/src/Internal/Admin/Translations.php @@ -59,28 +59,16 @@ class Translations { } /** - * Find and combine translation chunk files. + * Combines data from translation chunk files based on officially downloaded file format. * - * Only targets files that aren't represented by a registered script (e.g. not passed to wp_register_script()). - * - * @param string $lang_dir Path to language files. - * @param string $domain Text domain. - * @param string $locale Locale being retrieved. + * @param array $json_i18n_filenames List of JSON chunk files. * @return array Combined translation chunk data. */ - private function get_translation_chunk_data( $lang_dir, $domain, $locale ) { - // So long as this function is called during the 'upgrader_process_complete' action, + private function combine_official_translation_chunks( $json_i18n_filenames ) { // the filesystem object should be hooked up. global $wp_filesystem; - - // Grab all JSON files in the current language pack. - $json_i18n_filenames = glob( $lang_dir . $domain . '-' . $locale . '-*.json' ); $combined_translation_data = array(); - if ( false === $json_i18n_filenames ) { - return $combined_translation_data; - } - foreach ( $json_i18n_filenames as $json_filename ) { if ( ! $wp_filesystem->is_readable( $json_filename ) ) { continue; @@ -93,10 +81,6 @@ class Translations { continue; } - if ( ! isset( $chunk_data['comment']['reference'] ) ) { - continue; - } - $reference_file = $chunk_data['comment']['reference']; // Only combine "app" files (not scripts registered with WP). @@ -121,10 +105,107 @@ class Translations { // Remove inaccurate reference comment. unset( $combined_translation_data['comment'] ); - return $combined_translation_data; } + /** + * Combines data from translation chunk files based on user-generated file formats, + * such as wp-cli tool or Loco Translate plugin. + * + * @param array $json_i18n_filenames List of JSON chunk files. + * @return array Combined translation chunk data. + */ + private function combine_user_translation_chunks( $json_i18n_filenames ) { + // the filesystem object should be hooked up. + global $wp_filesystem; + $combined_translation_data = array(); + + foreach ( $json_i18n_filenames as $json_filename ) { + if ( ! $wp_filesystem->is_readable( $json_filename ) ) { + continue; + } + + $file_contents = $wp_filesystem->get_contents( $json_filename ); + $chunk_data = \json_decode( $file_contents, true ); + + if ( empty( $chunk_data ) ) { + continue; + } + + $reference_file = $chunk_data['source']; + + // Only combine "app" files (not scripts registered with WP). + if ( + false === strpos( $reference_file, WC_ADMIN_DIST_JS_FOLDER . 'app/index.js' ) && + false === strpos( $reference_file, WC_ADMIN_DIST_JS_FOLDER . 'chunks/' ) + ) { + continue; + } + + if ( empty( $combined_translation_data ) ) { + // Use the first translation file as the base structure. + $combined_translation_data = $chunk_data; + } else { + // Combine all messages from all chunk files. + $combined_translation_data['locale_data']['woocommerce'] = array_merge( + $combined_translation_data['locale_data']['woocommerce'], + $chunk_data['locale_data']['woocommerce'] + ); + } + } + + // Remove inaccurate reference comment. + unset( $combined_translation_data['source'] ); + return $combined_translation_data; + } + + /** + * Find and combine translation chunk files. + * + * Only targets files that aren't represented by a registered script (e.g. not passed to wp_register_script()). + * + * @param string $lang_dir Path to language files. + * @param string $domain Text domain. + * @param string $locale Locale being retrieved. + * @return array Combined translation chunk data. + */ + private function get_translation_chunk_data( $lang_dir, $domain, $locale ) { + // So long as this function is called during the 'upgrader_process_complete' action, + // the filesystem object should be hooked up. + global $wp_filesystem; + + // Grab all JSON files in the current language pack. + $json_i18n_filenames = glob( $lang_dir . $domain . '-' . $locale . '-*.json' ); + $combined_translation_data = array(); + + if ( false === $json_i18n_filenames ) { + return $combined_translation_data; + } + + // Use first JSON file to determine file format. This check is required due to + // file format difference between official language files and user translated files. + $format_determine_file = reset( $json_i18n_filenames ); + + if ( ! $wp_filesystem->is_readable( $format_determine_file ) ) { + return $combined_translation_data; + } + + $file_contents = $wp_filesystem->get_contents( $format_determine_file ); + $format_determine_data = \json_decode( $file_contents, true ); + + if ( empty( $format_determine_data ) ) { + return $combined_translation_data; + } + + if ( isset( $format_determine_data['comment'] ) ) { + return $this->combine_official_translation_chunks( $json_i18n_filenames ); + } elseif ( isset( $format_determine_data['source'] ) ) { + return $this->combine_user_translation_chunks( $json_i18n_filenames ); + } else { + return $combined_translation_data; + } + } + /** * Combine and save translations for a specific locale. * diff --git a/plugins/woocommerce/src/Internal/DataStores/CustomMetaDataStore.php b/plugins/woocommerce/src/Internal/DataStores/CustomMetaDataStore.php index 3a082eeb289..f9c13e2f9bc 100644 --- a/plugins/woocommerce/src/Internal/DataStores/CustomMetaDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/CustomMetaDataStore.php @@ -78,6 +78,8 @@ abstract class CustomMetaDataStore { * * @param WC_Data $object WC_Data object. * @param stdClass $meta (containing at least ->id). + * + * @return bool */ public function delete_meta( &$object, $meta ) { global $wpdb; @@ -127,6 +129,8 @@ abstract class CustomMetaDataStore { * * @param WC_Data $object WC_Data object. * @param stdClass $meta (containing ->id, ->key and ->value). + * + * @return bool */ public function update_meta( &$object, $meta ) { global $wpdb; diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index e461f6a1f31..0d57404a4f1 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -11,6 +11,7 @@ use Automattic\WooCommerce\Internal\Utilities\DatabaseUtil; use Automattic\WooCommerce\Proxies\LegacyProxy; use Automattic\WooCommerce\Utilities\ArrayUtil; use Exception; +use WC_Abstract_Order; use WC_Data; use WC_Order; @@ -198,6 +199,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements /** * Get the names of all the tables involved in the custom orders table feature. * + * See also : get_all_table_names_with_id. + * * @return string[] */ public function get_all_table_names() { @@ -209,6 +212,22 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements ); } + /** + * Similar to get_all_table_names, but also returns the table name along with the items table. + * + * @return array Names of the tables. + */ + public static function get_all_table_names_with_id() { + global $wpdb; + return array( + 'orders' => self::get_orders_table_name(), + 'addresses' => self::get_addresses_table_name(), + 'operational_data' => self::get_operational_data_table_name(), + 'meta' => self::get_meta_table_name(), + 'items' => $wpdb->prefix . 'woocommerce_order_items', + ); + } + /** * Table column to WC_Order mapping for wc_orders table. * @@ -572,7 +591,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether permissions are granted. */ public function get_download_permissions_granted( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; + $order_id = is_int( $order ) ? $order : $order->get_id(); + $order = wc_get_order( $order_id ); return $order->get_download_permissions_granted(); } @@ -598,7 +618,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether sales are recorded. */ public function get_recorded_sales( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; + $order_id = is_int( $order ) ? $order : $order->get_id(); + $order = wc_get_order( $order_id ); return $order->get_recorded_sales(); } @@ -624,7 +645,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether coupon counts were updated. */ public function get_recorded_coupon_usage_counts( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; + $order_id = is_int( $order ) ? $order : $order->get_id(); + $order = wc_get_order( $order_id ); return $order->get_recorded_coupon_usage_counts(); } @@ -650,7 +672,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether email is sent. */ public function get_email_sent( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; + $order_id = is_int( $order ) ? $order : $order->get_id(); + $order = wc_get_order( $order_id ); return $order->get_new_order_email_sent(); } @@ -676,8 +699,7 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether email was sent. */ public function get_new_order_email_sent( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; - return $order->get_new_order_email_sent(); + return $this->get_email_sent( $order ); } /** @@ -702,7 +724,8 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements * @return bool Whether stock was reduced. */ public function get_stock_reduced( $order ) { - $order = is_int( $order ) ? wc_get_order( $order ) : $order; + $order_id = is_int( $order ) ? $order : $order->get_id(); + $order = wc_get_order( $order_id ); return $order->get_order_stock_reduced(); } @@ -1809,7 +1832,12 @@ FROM $order_meta_table $order->set_id( 0 ); - // Only delete post data if the orders table is authoritative and synchronization is enabled. + /** We can delete the post data if: + * 1. The HPOS table is authoritative and synchronization is enabled. + * 2. The post record is of type `shop_order_placehold`, since this is created by the HPOS in the first place. + * + * In other words, we do not delete the post record when HPOS table is authoritative and synchronization is disabled but post record is a full record and not just a placeholder, because it implies that the order was created before HPOS was enabled. + */ $orders_table_is_authoritative = $order->get_data_store()->get_current_class_name() === self::class; if ( $orders_table_is_authoritative ) { @@ -2049,21 +2077,6 @@ FROM $order_meta_table $order->delete_meta_data( '_wp_trash_meta_comments_status' ); $order->save_meta_data(); - $data_synchronizer = wc_get_container()->get( DataSynchronizer::class ); - if ( $data_synchronizer->data_sync_is_enabled() ) { - // The previous $order->save() will have forced a sync to the posts table, - // this implies that the post status is not "trash" anymore, and thus - // wp_untrash_post would do nothing. - wp_update_post( - array( - 'ID' => $id, - 'post_status' => 'trash', - ) - ); - - wp_untrash_post( $id ); - } - return true; } @@ -2543,9 +2556,17 @@ CREATE TABLE $meta_table ( * * @param WC_Data $object WC_Data object. * @param stdClass $meta (containing at least ->id). + * + * @return bool */ public function delete_meta( &$object, $meta ) { - return $this->data_store_meta->delete_meta( $object, $meta ); + $delete_meta = $this->data_store_meta->delete_meta( $object, $meta ); + + if ( $object instanceof WC_Abstract_Order ) { + $this->maybe_backfill_post_record( $object ); + } + + return $delete_meta; } /** @@ -2553,10 +2574,17 @@ CREATE TABLE $meta_table ( * * @param WC_Data $object WC_Data object. * @param stdClass $meta (containing ->key and ->value). - * @return int meta ID + * + * @return int|bool meta ID or false on failure */ public function add_meta( &$object, $meta ) { - return $this->data_store_meta->add_meta( $object, $meta ); + $add_meta = $this->data_store_meta->add_meta( $object, $meta ); + + if ( $object instanceof WC_Abstract_Order ) { + $this->maybe_backfill_post_record( $object ); + } + + return $add_meta; } /** @@ -2564,8 +2592,16 @@ CREATE TABLE $meta_table ( * * @param WC_Data $object WC_Data object. * @param stdClass $meta (containing ->id, ->key and ->value). + * + * @return bool */ public function update_meta( &$object, $meta ) { - return $this->data_store_meta->update_meta( $object, $meta ); + $update_meta = $this->data_store_meta->update_meta( $object, $meta ); + + if ( $object instanceof WC_Abstract_Order ) { + $this->maybe_backfill_post_record( $object ); + } + + return $update_meta; } } diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableQuery.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableQuery.php index b6ff8f91be6..92148b218c6 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableQuery.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableQuery.php @@ -164,6 +164,12 @@ class OrdersTableQuery { */ private $date_query = null; + /** + * Instance of the OrdersTableDataStore class. + * + * @var OrdersTableDataStore + */ + private $order_datastore = null; /** * Sets up and runs the query after processing arguments. @@ -171,19 +177,11 @@ class OrdersTableQuery { * @param array $args Array of query vars. */ public function __construct( $args = array() ) { - global $wpdb; + // Note that ideally we would inject this dependency via constructor, but that's not possible since this class needs to be backward compatible with WC_Order_Query class. + $this->order_datastore = wc_get_container()->get( OrdersTableDataStore::class ); - $datastore = wc_get_container()->get( OrdersTableDataStore::class ); - - // TODO: maybe OrdersTableDataStore::get_all_table_names() could return these keys/indices instead. - $this->tables = array( - 'orders' => $datastore::get_orders_table_name(), - 'addresses' => $datastore::get_addresses_table_name(), - 'operational_data' => $datastore::get_operational_data_table_name(), - 'meta' => $datastore::get_meta_table_name(), - 'items' => $wpdb->prefix . 'woocommerce_order_items', - ); - $this->mappings = $datastore->get_all_order_column_mappings(); + $this->tables = $this->order_datastore::get_all_table_names_with_id(); + $this->mappings = $this->order_datastore->get_all_order_column_mappings(); $this->args = $args; @@ -202,13 +200,13 @@ class OrdersTableQuery { private function maybe_remap_args(): void { $mapping = array( // WP_Query legacy. - 'post_date' => 'date_created_gmt', + 'post_date' => 'date_created', 'post_date_gmt' => 'date_created_gmt', - 'post_modified' => 'date_modified_gmt', + 'post_modified' => 'date_updated', 'post_modified_gmt' => 'date_updated_gmt', 'post_status' => 'status', - '_date_completed' => 'date_completed_gmt', - '_date_paid' => 'date_paid_gmt', + '_date_completed' => 'date_completed', + '_date_paid' => 'date_paid', 'paged' => 'page', 'post_parent' => 'parent_order_id', 'post_parent__in' => 'parent_order_id', @@ -231,12 +229,8 @@ class OrdersTableQuery { // Translate from WC_Order_Query to table structure. 'version' => 'woocommerce_version', - 'date_created' => 'date_created_gmt', - 'date_modified' => 'date_updated_gmt', + 'date_modified' => 'date_updated', 'date_modified_gmt' => 'date_updated_gmt', - 'date_completed' => 'date_completed_gmt', - 'date_completed_gmt' => 'date_completed_gmt', - 'date_paid' => 'date_paid_gmt', 'discount_total' => 'discount_total_amount', 'discount_tax' => 'discount_tax_amount', 'shipping_total' => 'shipping_total_amount', @@ -276,16 +270,26 @@ class OrdersTableQuery { $this->args['meta_query'] = array( $shortcut_meta_query ); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query } } + + // Date query. + if ( isset( $this->args['date_query'] ) && is_array( $this->args['date_query'] ) ) { + foreach ( $this->args['date_query'] as $index => $query ) { + if ( isset( $query['column'] ) && isset( $mapping[ $query['column'] ] ) ) { + $this->args['date_query'][ $index ]['column'] = $mapping[ $query['column'] ]; + } + } + } } /** * Generates a `WP_Date_Query` compatible query from a given date. * YYYY-MM-DD queries have 'day' precision for backwards compatibility. * - * @param mixed $date The date. Can be a {@see \WC_DateTime}, a timestamp or a string. + * @param mixed $date The date. Can be a {@see \WC_DateTime}, a timestamp or a string. + * @param string $timezone The timezone to use for the date. * @return array An array with keys 'year', 'month', 'day' and possibly 'hour', 'minute' and 'second'. */ - private function date_to_date_query_arg( $date ): array { + private function date_to_date_query_arg( $date, $timezone ): array { $result = array( 'year' => '', 'month' => '', @@ -294,7 +298,7 @@ class OrdersTableQuery { $precision = 'second'; if ( is_numeric( $date ) ) { - $date = new \WC_DateTime( "@{$date}", new \DateTimeZone( 'UTC' ) ); + $date = new \WC_DateTime( "@{$date}", new \DateTimeZone( $timezone ) ); } elseif ( ! is_a( $date, 'WC_DateTime' ) ) { // YYYY-MM-DD queries have 'day' precision for backwards compat. $date = wc_string_to_datetime( $date ); @@ -321,30 +325,54 @@ class OrdersTableQuery { * @throws \Exception When date args are invalid. */ private function process_date_args(): void { - $valid_operators = array( '>', '>=', '=', '<=', '<', '...' ); - $date_queries = array(); - $gmt_date_keys = array( - 'date_created_gmt', - 'date_updated_gmt', - 'date_paid_gmt', - 'date_completed_gmt', + $valid_operators = array( '>', '>=', '=', '<=', '<', '...' ); + $date_queries = array(); + $local_to_gmt_date_keys = array( + 'date_created' => 'date_created_gmt', + 'date_updated' => 'date_updated_gmt', + 'date_paid' => 'date_paid_gmt', + 'date_completed' => 'date_completed_gmt', ); + $gmt_date_keys = array_values( $local_to_gmt_date_keys ); + $local_date_keys = array_keys( $local_to_gmt_date_keys ); - foreach ( array_filter( $gmt_date_keys, array( $this, 'arg_isset' ) ) as $date_key ) { + $valid_date_keys = array_merge( $gmt_date_keys, $local_date_keys ); + $date_keys = array_filter( $valid_date_keys, array( $this, 'arg_isset' ) ); + + // Process already passed date queries args. + if ( $this->arg_isset( 'date_query' ) && is_array( $this->args['date_query'] ) ) { + foreach ( $this->args['date_query'] as $index => $query ) { + if ( ! isset( $query['column'] ) || ! in_array( $query['column'], $valid_date_keys, true ) ) { + unset( $this->args['date_query'][ $index ] ); + continue; + } + // Convert any local dates to GMT. + if ( isset( $local_to_gmt_date_keys[ $query['column'] ] ) ) { + $this->args['date_query'][ $index ]['column'] = $local_to_gmt_date_keys[ $query['column'] ]; + $op = isset( $query['after'] ) ? 'after' : 'before'; + $date_value_local = $query[ $op ]; + $date_value_gmt = wc_string_to_timestamp( get_gmt_from_date( wc_string_to_datetime( $date_value_local ) ) ); + $this->args['date_query'][ $index ][ $op ] = $this->date_to_date_query_arg( $date_value_gmt, 'UTC' ); + } + } + } + + foreach ( $date_keys as $date_key ) { $date_value = $this->args[ $date_key ]; $operator = '='; $dates = array(); + $timezone = in_array( $date_key, $gmt_date_keys, true ) ? '+0000' : wc_timezone_string(); if ( is_string( $date_value ) && preg_match( self::REGEX_SHORTHAND_DATES, $date_value, $matches ) ) { $operator = in_array( $matches[2], $valid_operators, true ) ? $matches[2] : ''; if ( ! empty( $matches[1] ) ) { - $dates[] = $this->date_to_date_query_arg( $matches[1] ); + $dates[] = $this->date_to_date_query_arg( $matches[1], $timezone ); } - $dates[] = $this->date_to_date_query_arg( $matches[3] ); + $dates[] = $this->date_to_date_query_arg( $matches[3], $timezone ); } else { - $dates[] = $this->date_to_date_query_arg( $date_value ); + $dates[] = $this->date_to_date_query_arg( $date_value, $timezone ); } if ( empty( $dates ) || ! $operator || ( '...' === $operator && count( $dates ) < 2 ) ) { @@ -361,6 +389,7 @@ class OrdersTableQuery { $operator_to_keys[] = 'before'; } + $date_key = in_array( $date_key, $local_date_keys, true ) ? $local_to_gmt_date_keys[ $date_key ] : $date_key; $date_queries[] = array_merge( array( 'column' => $date_key, @@ -874,6 +903,9 @@ class OrdersTableQuery { $ids[] = absint( $value ); } elseif ( is_string( $value ) && is_email( $value ) ) { $emails[] = sanitize_email( $value ); + } else { + // Invalid query. + $pieces[] = '1=0'; } } diff --git a/plugins/woocommerce/tests/api-core-tests/tests/orders/order-search.test.js b/plugins/woocommerce/tests/api-core-tests/tests/orders/order-search.test.js index 03ae15d9253..e7d1f400a58 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/orders/order-search.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/orders/order-search.test.js @@ -2,6 +2,9 @@ const { test, expect } = require( '@playwright/test' ); const { getOrderExampleSearchTest } = require( '../../data/order' ); const { customerShippingSearchTest } = require( '../../data/shared/customer' ); +const { + simpleProduct, +} = require('../../data/products-crud'); /** * Order to be searched @@ -55,6 +58,15 @@ const searchParams = [ */ test.describe( 'Order Search API tests', () => { test.beforeAll( async ( { request } ) => { + // Create a product to be associated with the order + const productResponse = await request.post('wp-json/wc/v3/products', { + data: simpleProduct, + }); + const productResponseJSON = await productResponse.json(); + + // Save the created product id against the order line_items + order.line_items[0].product_id = productResponseJSON.id; + // Create an order and save its ID const response = await request.post( '/wp-json/wc/v3/orders', { data: order, @@ -64,6 +76,10 @@ test.describe( 'Order Search API tests', () => { } ); test.afterAll( async ( { request } ) => { + // Cleanup: Delete the product + await request.delete( `/wp-json/wc/v3/products/${ order.line_items[0].product_id }`, { + data: { force: true }, + } ); // Cleanup: Delete the order await request.delete( `/wp-json/wc/v3/orders/${ order.id }`, { data: { force: true }, diff --git a/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js index f1e83fe7dba..cdc7509c080 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js @@ -135,7 +135,7 @@ test.describe('Payment Gateways API tests', () => { "default": "", "tip": "If COD is only available for certain methods, set it up here. Leave blank to enable for all methods.", "placeholder": "", - "options": { + "options": expect.objectContaining({ "Flat rate": { "flat_rate": "Any "Flat rate" method" }, @@ -145,7 +145,7 @@ test.describe('Payment Gateways API tests', () => { "Local pickup": { "local_pickup": "Any "Local pickup" method" } - } + }) }, "enable_for_virtual": { "id": "enable_for_virtual", diff --git a/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js index 098f686712a..9ab7a6163e1 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js @@ -929,7 +929,7 @@ test.describe('Products API tests: CRUD', () => { productTagId = responseJSON.id; expect(response.status()).toEqual(201); - expect(typeof productId).toEqual('number'); + expect(typeof productTagId).toEqual('number'); expect(responseJSON.name).toEqual('Leather Shoes'); expect(responseJSON.slug).toEqual('leather-shoes'); }); diff --git a/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-method.test.js b/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-method.test.js index 51f52e70144..72ac2b705f7 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-method.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-method.test.js @@ -66,7 +66,7 @@ test.describe('Shipping methods API tests', () => { const responseJSON = await response.json(); expect(response.status()).toEqual(200); expect(Array.isArray(responseJSON)).toBe(true); - expect(responseJSON.length).toEqual(3); + expect(responseJSON.length).toBeGreaterThanOrEqual(3); expect(responseJSON[0].id).toEqual("flat_rate"); expect(responseJSON[1].id).toEqual("free_shipping"); expect(responseJSON[2].id).toEqual("local_pickup"); diff --git a/plugins/woocommerce/tests/e2e-pw/global-setup.js b/plugins/woocommerce/tests/e2e-pw/global-setup.js index ca20d995231..9b4673b1047 100644 --- a/plugins/woocommerce/tests/e2e-pw/global-setup.js +++ b/plugins/woocommerce/tests/e2e-pw/global-setup.js @@ -60,6 +60,8 @@ module.exports = async ( config ) => { await adminPage.fill( 'input[name="pwd"]', admin.password ); await adminPage.click( 'text=Log In' ); await adminPage.waitForLoadState( 'networkidle' ); + await adminPage.goto( `/wp-admin` ); + await adminPage.waitForLoadState( 'domcontentloaded' ); await expect( adminPage.locator( 'div.wrap > h1' ) ).toHaveText( 'Dashboard' diff --git a/plugins/woocommerce/tests/e2e-pw/test-data/data.js b/plugins/woocommerce/tests/e2e-pw/test-data/data.js index c4423c86be4..4a2868141e0 100644 --- a/plugins/woocommerce/tests/e2e-pw/test-data/data.js +++ b/plugins/woocommerce/tests/e2e-pw/test-data/data.js @@ -95,6 +95,24 @@ const storeDetails = { downloadable: 'Downloads', }, }, + liberia: { + store: { + address: 'addr1', + city: 'Kakata', + zip: 'Division 1', + email: admin.email, + country: 'Liberia — Margibi', // corresponding to the text value of the option, + countryCode: 'LR', + }, + expectedIndustries: 8, // There are 8 checkboxes on the page (in Liberia), adjust this constant if we change that + industries: { + other: 'Other', + }, + products: { + physical: 'Physical products', + downloadable: 'Downloads', + }, + }, }; module.exports = { diff --git a/plugins/woocommerce/tests/e2e-pw/tests/activate-and-setup/complete-onboarding-wizard.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/activate-and-setup/complete-onboarding-wizard.spec.js index 6fe61713ae1..a4ecc40164d 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/activate-and-setup/complete-onboarding-wizard.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/activate-and-setup/complete-onboarding-wizard.spec.js @@ -145,23 +145,23 @@ test.describe( 'Store owner can complete onboarding wizard', () => { } ); } ); -// !Changed from Japanese to Malta store, as Japanese Yen does not use decimals +// !Changed from Japanese to Liberian store, as Japanese Yen does not use decimals test.describe( - 'A Malta store can complete the selective bundle install but does not include WCPay.', + 'A Liberian store can complete the selective bundle install but does not include WCPay.', () => { test.use( { storageState: process.env.ADMINSTATE } ); test.beforeEach( async () => { // Complete "Store Details" step through the API to prevent flakiness when run on external sites. - await api.update.storeDetails( storeDetails.malta.store ); + await api.update.storeDetails( storeDetails.liberia.store ); } ); // eslint-disable-next-line jest/expect-expect test( 'can choose the "Other" industry', async ( { page } ) => { await onboarding.completeIndustrySection( page, - storeDetails.malta.industries, - storeDetails.malta.expectedIndustries + storeDetails.liberia.industries, + storeDetails.liberia.expectedIndustries ); await page.click( 'button >> text=Continue' ); } ); @@ -174,14 +174,14 @@ test.describe( await onboarding.completeIndustrySection( page, - storeDetails.malta.industries, - storeDetails.malta.expectedIndustries + storeDetails.liberia.industries, + storeDetails.liberia.expectedIndustries ); await page.click( 'button >> text=Continue' ); await onboarding.completeProductTypesSection( page, - storeDetails.malta.products + storeDetails.liberia.products ); // Make sure WC Payments is NOT present await expect( diff --git a/plugins/woocommerce/tests/e2e-pw/tests/admin-analytics/analytics-overview.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/admin-analytics/analytics-overview.spec.js index 9c1e273bcb3..1fc2dab43a5 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/admin-analytics/analytics-overview.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/admin-analytics/analytics-overview.spec.js @@ -36,7 +36,13 @@ test.describe( 'Analytics pages', () => { '//button[@title="Choose which analytics to display and the section name"]' ); await page.click( 'text=Move up' ); - await page.waitForTimeout( 1000 ); + + // wait for the changes to be saved + await page.waitForResponse( + ( response ) => + response.url().includes( '/users/' ) && + response.status() === 200 + ); } } ); diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-variable-product.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-variable-product.spec.js index 22409e42599..1eebd2fec28 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-variable-product.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-variable-product.spec.js @@ -14,7 +14,7 @@ const defaultAttributes = [ 'val2', 'val1', 'val2' ]; const stockAmount = '100'; const lowStockAmount = '10'; -test.describe.serial( 'Add New Variable Product Page', () => { +test.describe( 'Add New Variable Product Page', () => { test.use( { storageState: process.env.ADMINSTATE } ); test.afterAll( async ( { baseURL } ) => { @@ -40,8 +40,7 @@ test.describe.serial( 'Add New Variable Product Page', () => { await api.post( 'products/batch', { delete: ids } ); } ); - // tests build upon one another, so running one in the middle will fail. - test( 'can create product, attributes and variations', async ( { + test( 'can create product, attributes and variations, edit variations and delete variations', async ( { page, } ) => { await page.goto( 'wp-admin/post-new.php?post_type=product' ); @@ -55,35 +54,31 @@ test.describe.serial( 'Add New Variable Product Page', () => { if ( i > 0 ) { await page.click( 'button.add_attribute' ); } - await page.fill( - `input[name="attribute_names[${ i }]"]`, - `attr #${ i + 1 }` - ); - await page.fill( - `textarea[name="attribute_values[${ i }]"]`, - 'val1 | val2' - ); + await page.waitForSelector( `input[name="attribute_names[${ i }]"]` ); + + await page.locator( `input[name="attribute_names[${ i }]"]` ).first().type( `attr #${ i + 1 }` ); + await page.locator( `textarea[name="attribute_values[${ i }]"]` ).first().type( 'val1 | val2' ); } - await page.keyboard.press( 'ArrowUp' ); await page.click( 'text=Save attributes' ); + // wait for the attributes to be saved + await page.waitForResponse( + ( response ) => + response.url().includes( '/post.php?post=' ) && + response.status() === 200 + ); // Save before going to the Variations tab to prevent variations from all attributes to be automatically created await page.locator( '#save-post' ).click(); await expect( page.getByText( 'Product draft updated. ' ) ).toBeVisible(); - await page.click( '.updated.notice .notice-dismiss' ); // manually create variations from all attributes await page.click( 'a[href="#variable_product_options"]' ); - await page.selectOption( '#field_to_edit', 'link_all_variations', { - force: true, - } ); + await page.selectOption( '#field_to_edit', 'link_all_variations' ); page.on( 'dialog', ( dialog ) => dialog.accept() ); + await page.click( 'a.do_variation_action' ); - - await page.waitForLoadState( 'networkidle' ); - // add variation attributes for ( let i = 0; i < 8; i++ ) { const val1 = 'val1'; @@ -106,14 +101,8 @@ test.describe.serial( 'Add New Variable Product Page', () => { await expect( page.locator( '#message.notice-success' ) ).toContainText( 'Product draft updated.' ); - } ); - test( 'can set the variation attributes, bulk edit variations', async ( { - page, - } ) => { - await page.goto( 'wp-admin/edit.php?post_type=product' ); - await page.locator( `a:has-text("${ variableProductName }")` ).click(); - await page.waitForLoadState( 'networkidle' ); + // set variation attributes and bulk edit variations await page.click( 'a[href="#variable_product_options"]' ); // set the variation attributes @@ -146,7 +135,7 @@ test.describe.serial( 'Add New Variable Product Page', () => { await page.click( '#variable_product_options .toolbar-top a.expand_all' ); - for ( let i = 0; i < 8; i++ ) { + for ( let i = 0; i < 4; i++ ) { const checkBox = page.locator( `input[name="variable_is_downloadable[${ i }]"]` ); @@ -159,43 +148,29 @@ test.describe.serial( 'Add New Variable Product Page', () => { await page.click( '#variable_product_options .toolbar-top a.expand_all' ); - for ( let i = 0; i < 8; i++ ) { - const checkBox = page.locator( + for ( let i = 0; i < 4; i++ ) { + const checkBox = await page.locator( `input[name="variable_is_downloadable[${ i }]"]` ); await expect( checkBox ).toBeChecked(); } await page.locator( '#save-post' ).click(); - } ); - - test( 'can delete all variations', async ( { page } ) => { - await page.goto( 'wp-admin/edit.php?post_type=product' ); - await page.locator( `a:has-text("${ variableProductName }")` ).click(); - await page.waitForLoadState( 'networkidle' ); - await page.click( 'a[href="#variable_product_options"]' ); - page.on( 'dialog', ( dialog ) => dialog.accept() ); - await Promise.all( [ - page.waitForResponse( - ( resp ) => - resp.url().includes( 'admin-ajax.php' ) && - resp.status() === 200 - ), - page.selectOption( '#field_to_edit', 'delete_all', { - force: true, - } ), - ] ); // delete all variations + await page.click( 'a[href="#variable_product_options"]' ); + await page.waitForLoadState( 'networkidle' ); + await page.selectOption( '#field_to_edit', 'delete_all' ); await page.click( 'a.do_variation_action' ); await page.waitForSelector( '.woocommerce_variation', { state: 'detached', } ); const variationsCount = await page.$$( '.woocommerce_variation' ); await expect( variationsCount ).toHaveLength( 0 ); + } ); - test( 'can manually add a variation', async ( { page } ) => { + test( 'can manually add a variation, manage stock levels, set variation defaults and remove a variation', async ( { page } ) => { await page.goto( 'wp-admin/post-new.php?post_type=product' ); await page.fill( '#title', manualVariableProduct ); await page.selectOption( '#product-type', 'variable', { force: true } ); @@ -205,22 +180,18 @@ test.describe.serial( 'Add New Variable Product Page', () => { if ( i > 0 ) { await page.click( 'button.add_attribute' ); } - await page.fill( - `input[name="attribute_names[${ i }]"]`, - `attr #${ i + 1 }` - ); - await page.fill( - `textarea[name="attribute_values[${ i }]"]`, - 'val1 | val2' - ); - await page.keyboard.press( 'ArrowUp' ); - await page.click( 'text=Save attributes' ); - await expect( - page - .locator( '.woocommerce_attribute.closed' ) - .filter( { hasText: `attr #${ i + 1 }` } ) - ).toBeVisible(); + await page.waitForSelector( `input[name="attribute_names[${ i }]"]` ); + + await page.locator( `input[name="attribute_names[${ i }]"]` ).first().type( `attr #${ i + 1 }` ); + await page.locator( `textarea[name="attribute_values[${ i }]"]` ).first().type( 'val1 | val2' ); } + await page.click( 'text=Save attributes' ); + // wait for the attributes to be saved + await page.waitForResponse( + ( response ) => + response.url().includes( '/post.php?post=' ) && + response.status() === 200 + ); // Save before going to the Variations tab to prevent variations from all attributes to be automatically created await page.locator( '#save-post' ).click(); @@ -258,18 +229,10 @@ test.describe.serial( 'Add New Variable Product Page', () => { await expect( page.getByText( 'Product draft updated. ' ) ).toBeVisible(); - } ); - - test( 'can manage stock at variation level', async ( { page } ) => { - await page.goto( 'wp-admin/edit.php?post_type=product' ); - await page - .locator( `a:has-text("${ manualVariableProduct }")` ) - .click(); - await page.waitForLoadState( 'networkidle' ); - await page.click( 'a[href="#variable_product_options"]' ); - await page.waitForLoadState( 'networkidle' ); // manage stock at variation level + await page.click( 'a[href="#variable_product_options"]' ); + await page.waitForLoadState( 'networkidle' ); await page.click( '#variable_product_options .toolbar-top a.expand_all' ); @@ -296,14 +259,8 @@ test.describe.serial( 'Add New Variable Product Page', () => { await expect( page.locator( '#variable_backorders0 > option[selected]' ) ).toHaveText( 'Allow, but notify customer' ); - } ); - test( 'can set variation defaults', async ( { page } ) => { - await page.goto( 'wp-admin/edit.php?post_type=product' ); - await page - .locator( `a:has-text("${ manualVariableProduct }")` ) - .click(); - await page.waitForLoadState( 'networkidle' ); + // set variation defaults await page.click( 'a[href="#variable_product_options"]' ); // set variation defaults @@ -313,7 +270,7 @@ test.describe.serial( 'Add New Variable Product Page', () => { defaultAttributes[ i ] ); } - await page.click( 'button.save-variation-changes', { force: true } ); + await page.click( 'button.save-variation-changes' ); await page.waitForSelector( 'input#variable_low_stock_amount0', { state: 'hidden', } ); @@ -324,22 +281,14 @@ test.describe.serial( 'Add New Variable Product Page', () => { ) ).toHaveValue( `${ defaultAttributes[ i ] }` ); } - } ); - test( 'can remove a variation', async ( { page } ) => { - await page.goto( 'wp-admin/edit.php?post_type=product' ); - await page - .locator( `a:has-text("${ manualVariableProduct }")` ) - .click(); - await page.waitForLoadState( 'networkidle' ); + // remove a variation await page.click( 'a[href="#variable_product_options"]' ); // remove a variation page.on( 'dialog', ( dialog ) => dialog.accept() ); await page.hover( '.woocommerce_variation' ); await page.click( '.remove_variation.delete' ); - await expect( page.locator( '.woocommerce_variation' ) ).toHaveCount( - 0 - ); + await expect( page.locator( '.woocommerce_variation' ) ).toHaveCount( 0 ); } ); } ); diff --git a/plugins/woocommerce/tests/e2e-pw/tests/smoke-tests/update-woocommerce.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/smoke-tests/update-woocommerce.spec.js index 72e4c47d77b..37ced7053b2 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/smoke-tests/update-woocommerce.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/smoke-tests/update-woocommerce.spec.js @@ -46,6 +46,9 @@ const getWCDownloadURL = async () => { headers: { Accept: 'application/vnd.github+json', }, + params: { + per_page: 100 + } }; if ( GITHUB_TOKEN ) { diff --git a/plugins/woocommerce/tests/legacy/bootstrap.php b/plugins/woocommerce/tests/legacy/bootstrap.php index 01aef6f2c19..7463227d793 100644 --- a/plugins/woocommerce/tests/legacy/bootstrap.php +++ b/plugins/woocommerce/tests/legacy/bootstrap.php @@ -89,6 +89,10 @@ class WC_Unit_Tests_Bootstrap { // re-initialize dependency injection, this needs to be the last operation after everything else is in place. $this->initialize_dependency_injection(); + if ( getenv( 'HPOS' ) ) { + $this->initialize_hpos(); + } + error_reporting(error_reporting() & ~E_DEPRECATED); } @@ -140,6 +144,17 @@ class WC_Unit_Tests_Bootstrap { CodeHacker::enable(); } + /** + * Initialize HPOS if tests need to run in HPOS context. + * + * @return void + */ + private function initialize_hpos() { + \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::delete_order_custom_tables(); + \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::create_order_custom_table_if_not_exist(); + \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::toggle_cot( true ); + } + /** * Re-initialize the dependency injection engine. * diff --git a/plugins/woocommerce/tests/legacy/framework/class-wc-unit-test-case.php b/plugins/woocommerce/tests/legacy/framework/class-wc-unit-test-case.php index a7f00cb42e7..8760170c266 100644 --- a/plugins/woocommerce/tests/legacy/framework/class-wc-unit-test-case.php +++ b/plugins/woocommerce/tests/legacy/framework/class-wc-unit-test-case.php @@ -7,6 +7,7 @@ use Automattic\WooCommerce\Proxies\LegacyProxy; use Automattic\WooCommerce\Testing\Tools\CodeHacking\CodeHacker; +use Automattic\WooCommerce\Utilities\OrderUtil; use PHPUnit\Framework\Constraint\IsType; /** @@ -19,6 +20,8 @@ use PHPUnit\Framework\Constraint\IsType; */ class WC_Unit_Test_Case extends WP_HTTP_TestCase { + public const DEFAULT_FLOAT_COMPARISON_DELTA = 1e-10; + /** * Holds the WC_Unit_Test_Factory instance. * @@ -388,4 +391,27 @@ class WC_Unit_Test_Case extends WP_HTTP_TestCase { $events = self::get_tracks_events( $event_name ); $this->assertEmpty( $events ); } + + /** + * Assert that the difference between two floats is smaller than a given delta. + * + * @param float $expected The expected value. + * @param float $actual The actual value. + * @param float|null $delta The maximum allowed difference, defaults to DEFAULT_FLOAT_COMPARISON_DELTA. + * @param string $message An optional error message to use if the assertion fails. + */ + public function assertFloatEquals( $expected, $actual, ?float $delta = null, string $message = '' ) { + $this->assertEqualsWithDelta( $expected, $actual, $delta ?? self::DEFAULT_FLOAT_COMPARISON_DELTA, $message ); + } + + /** + * Mark test skipped when HPOS is enabled. + * + * @param string $message Message to display when test is skipped. + */ + protected function skip_if_hpos_enabled( $message ) { + if ( OrderUtil::custom_orders_table_usage_is_enabled() ) { + $this->markTestSkipped( $message ); + } + } } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/admin/class-wc-tests-admin-dashboard.php b/plugins/woocommerce/tests/legacy/unit-tests/admin/class-wc-tests-admin-dashboard.php index 56b0e4cd6ca..73069b34ec5 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/admin/class-wc-tests-admin-dashboard.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/admin/class-wc-tests-admin-dashboard.php @@ -37,6 +37,7 @@ class WC_Tests_Admin_Dashboard extends WC_Unit_Test_Case { * Test: get_status_widget */ public function test_status_widget() { + $this->skip_if_hpos_enabled( 'We don\'t support legacy reports on HPOS' ); wp_set_current_user( $this->user ); $order = WC_Helper_Order::create_order(); $order->set_status( 'completed' ); @@ -48,16 +49,17 @@ class WC_Tests_Admin_Dashboard extends WC_Unit_Test_Case { $widget_output = $this->getActualOutput(); - $this->assertRegExp( '/page\=wc-admin\&\#038\;path\=\%2Fanalytics\%2Frevenue/', $widget_output ); - $this->assertRegExp( '/page\=wc-admin\&\#038\;filter\=single_product/', $widget_output ); - $this->assertRegExp( '/page\=wc-admin\&\#038\;type\=lowstock/', $widget_output ); - $this->assertRegExp( '/page\=wc-admin\&\#038\;type\=outofstock/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-admin\&\#038\;path\=\%2Fanalytics\%2Frevenue/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-admin\&\#038\;filter\=single_product/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-admin\&\#038\;type\=lowstock/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-admin\&\#038\;type\=outofstock/', $widget_output ); } /** * Test: get_status_widget with woo admin disabled. */ public function test_status_widget_with_woo_admin_disabled() { + $this->skip_if_hpos_enabled( 'We don\'t support legacy reports on HPOS' ); wp_set_current_user( $this->user ); $order = WC_Helper_Order::create_order(); $order->set_status( 'completed' ); @@ -70,10 +72,10 @@ class WC_Tests_Admin_Dashboard extends WC_Unit_Test_Case { ( new WC_Admin_Dashboard() )->status_widget(); $widget_output = $this->getActualOutput(); - $this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;range\=month/', $widget_output ); - $this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;report\=sales_by_product/', $widget_output ); - $this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=low_in_stock/', $widget_output ); - $this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=out_of_stock/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;range\=month/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;report\=sales_by_product/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=low_in_stock/', $widget_output ); + $this->assertMatchesRegularExpression( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=out_of_stock/', $widget_output ); remove_filter( 'woocommerce_admin_disabled', '__return_true' ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-admin-report.php b/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-admin-report.php index 480af399bdc..4b21d058eb3 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-admin-report.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-admin-report.php @@ -18,6 +18,16 @@ class WC_Tests_Admin_Report extends WC_Unit_Test_Case { include_once WC_Unit_Tests_Bootstrap::instance()->plugin_dir . '/includes/admin/reports/class-wc-admin-report.php'; } + /** + * Set up the test. + */ + public function setUp(): void { + parent::setUp(); + if ( \Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled() ) { + $this->markTestSkipped( 'This test is not compatible with the custom orders table.' ); + } + } + /** * Clear cached report data. * diff --git a/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-report-sales-by-date.php b/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-report-sales-by-date.php index 8f3364deb11..b7e602e0c56 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-report-sales-by-date.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/admin/reports/class-wc-tests-report-sales-by-date.php @@ -18,6 +18,16 @@ class WC_Tests_Report_Sales_By_Date extends WC_Unit_Test_Case { include_once WC_Unit_Tests_Bootstrap::instance()->plugin_dir . '/includes/admin/reports/class-wc-report-sales-by-date.php'; } + /** + * Set up the test. + */ + public function setUp(): void { + parent::setUp(); + if ( \Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled() ) { + $this->markTestSkipped( 'This test is not compatible with the custom orders table.' ); + } + } + /** * Clear cached report data. * diff --git a/plugins/woocommerce/tests/legacy/unit-tests/core/main-class.php b/plugins/woocommerce/tests/legacy/unit-tests/core/main-class.php index bc90cbf5fce..0ebe5e3bcec 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/core/main-class.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/core/main-class.php @@ -37,7 +37,7 @@ class WC_Test_WooCommerce extends WC_Unit_Test_Case { * @since 2.2 */ public function test_wc_instance() { - $this->assertClassHasStaticAttribute( '_instance', 'WooCommerce' ); + $this->assertTrue( property_exists( WooCommerce::class, '_instance' ) ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/crud/meta.php b/plugins/woocommerce/tests/legacy/unit-tests/crud/meta.php index 3bcc8da38d8..00c34fd5eac 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/crud/meta.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/crud/meta.php @@ -1,4 +1,7 @@ assertCount( 1, $order->get_meta_data() ); $this->assertTrue( in_array( 'random', wp_list_pluck( $order->get_meta_data(), 'key' ) ) ); - // The new $order should have 3 items of meta since it's freshly loaded. - $this->assertCount( 3, $new_order->get_meta_data() ); + $expected_count = OrderUtil::custom_orders_table_usage_is_enabled() ? 2 : 3; + // The new $order should have 3 items (or 2 in case of HPOS since direct post updates are not read) of meta since it's freshly loaded. + $this->assertCount( $expected_count, $new_order->get_meta_data() ); $this->assertTrue( in_array( 'random', wp_list_pluck( $new_order->get_meta_data(), 'key' ) ) ); $this->assertTrue( in_array( 'random_other', wp_list_pluck( $new_order->get_meta_data(), 'key' ) ) ); - $this->assertTrue( in_array( 'random_other_pre_crud', wp_list_pluck( $new_order->get_meta_data(), 'key' ) ) ); + if ( ! OrderUtil::custom_orders_table_usage_is_enabled() ) { + $this->assertTrue( in_array( 'random_other_pre_crud', wp_list_pluck( $new_order->get_meta_data(), 'key' ), true ) ); + } } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index 6496a0f903c..d309bacb331 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -219,13 +219,13 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { $this->assertEquals( 4.53592, wc_get_weight( 10, 'kg' ) ); $this->assertEquals( 4535.92, wc_get_weight( 10, 'g' ) ); $this->assertEquals( 10, wc_get_weight( 10, 'lbs' ) ); - $this->assertEquals( 160.00004208, wc_get_weight( 10, 'oz' ) ); + $this->assertFloatEquals( 160.00004208, wc_get_weight( 10, 'oz' ) ); // oz. update_option( 'woocommerce_weight_unit', 'oz' ); $this->assertEquals( 0.283495, wc_get_weight( 10, 'kg' ) ); $this->assertEquals( 283.495, wc_get_weight( 10, 'g' ) ); - $this->assertEquals( 0.6249987469, wc_get_weight( 10, 'lbs' ) ); + $this->assertFloatEquals( 0.6249987469, wc_get_weight( 10, 'lbs' ) ); $this->assertEquals( 10, wc_get_weight( 10, 'oz' ) ); // Custom from unit. diff --git a/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-email.php b/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-email.php index f463d3ed211..26b4dee49b4 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-email.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-email.php @@ -184,7 +184,8 @@ class WC_Tests_Log_Handler_Email extends WC_Unit_Test_Case { $handler->handle( time(), 'notice', '', array() ); $handler->send_log_email(); - $this->assertObjectHasAttribute( 'body', $mailer->get_sent( 0 ) ); + + $this->assertTrue( property_exists( $mailer->get_sent( 0 ), 'body' ) ); } /** @@ -206,7 +207,7 @@ class WC_Tests_Log_Handler_Email extends WC_Unit_Test_Case { $handler->handle( time(), 'info', '', array() ); $handler->send_log_email(); - $this->assertObjectHasAttribute( 'body', $mailer->get_sent( 0 ) ); + $this->assertTrue( property_exists( $mailer->get_sent( 0 ), 'body' ) ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-file.php b/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-file.php index 062427d815a..43a835283c7 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-file.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/log/log-handler-file.php @@ -1,4 +1,9 @@ handle( time(), 'debug', 'debug', array( 'source' => $log_name ) ); $handler->remove( wc_get_log_file_name( $log_name ) ); - $this->assertFileNotExists( WC_Log_Handler_File::get_log_file_path( $log_name ) ); + $this->assertFileDoesNotExist( WC_Log_Handler_File::get_log_file_path( $log_name ) ); } /** @@ -165,20 +182,21 @@ class WC_Tests_Log_Handler_File extends WC_Unit_Test_Case { * @since 3.0.0 */ public function test_log_rotate() { + // phpcs:disable WordPress.WP.AlternativeFunctions - // Handler with log size limit of 5mb + // Handler with log size limit of 5mb. $handler = new WC_Log_Handler_File( 5 * 1024 * 1024 ); $time = time(); $log_name = '_test_log_rotate'; $base_log_file = WC_Log_Handler_File::get_log_file_path( $log_name ); - // Create log file larger than 5mb to ensure log is rotated + // Create log file larger than 5mb to ensure log is rotated. $handle = fopen( $base_log_file, 'w' ); fseek( $handle, 5 * 1024 * 1024 ); fwrite( $handle, '_base_log_file_contents_' ); fclose( $handle ); - // Write some files to ensure they've rotated correctly + // Write some files to ensure they've rotated correctly. for ( $i = 0; $i < 10; $i++ ) { file_put_contents( WC_Log_Handler_File::get_log_file_path( $log_name . ".{$i}" ), $i ); // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_file_put_contents } @@ -188,14 +206,16 @@ class WC_Tests_Log_Handler_File extends WC_Unit_Test_Case { $this->assertFileExists( WC_Log_Handler_File::get_log_file_path( $log_name ) ); - // Ensure the handled log is correct + // Ensure the handled log is correct. $this->assertStringEndsWith( 'EMERGENCY emergency' . PHP_EOL, $this->read_content( $log_name ) ); - // Ensure other logs have rotated correctly + // Ensure other logs have rotated correctly. $this->assertEquals( '_base_log_file_contents_', trim( $this->read_content( $log_name . '.0' ) ) ); for ( $i = 1; $i < 10; $i++ ) { $this->assertEquals( $i - 1, $this->read_content( $log_name . ".{$i}" ) ); } + + // phpcs:enable WordPress.WP.AlternativeFunctions } /** @@ -205,7 +225,7 @@ class WC_Tests_Log_Handler_File extends WC_Unit_Test_Case { */ public function test_get_log_file_path() { $log_dir = trailingslashit( WC_LOG_DIR ); - $date_suffix = date( 'Y-m-d', time() ); + $date_suffix = gmdate( 'Y-m-d', time() ); $hash_name = sanitize_file_name( wp_hash( 'unit-tests' ) ); $this->assertEquals( $log_dir . 'unit-tests-' . $date_suffix . '-' . $hash_name . '.log', WC_Log_Handler_File::get_log_file_path( 'unit-tests' ) ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/log/logger.php b/plugins/woocommerce/tests/legacy/unit-tests/log/logger.php index ac6930da466..b21c98f1b1e 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/log/logger.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/log/logger.php @@ -1,4 +1,9 @@ clear( 'unit-tests' ); $this->assertEquals( '', file_get_contents( $file ) ); + // phpcs:enable WordPress.WP.AlternativeFunctions } /** @@ -67,6 +74,8 @@ class WC_Tests_Logger extends WC_Unit_Test_Case { * @since 3.0.0 */ public function test_log() { + $this->expectNotToPerformAssertions(); + $handler = $this->create_mock_handler(); $log = new WC_Logger( array( $handler ), 'debug' ); $log->log( 'debug', 'debug message' ); @@ -121,6 +130,8 @@ class WC_Tests_Logger extends WC_Unit_Test_Case { * @since 3.0.0 */ public function test_level_methods() { + $this->expectNotToPerformAssertions(); + $handler = $this->create_mock_handler(); $log = new WC_Logger( array( $handler ), 'debug' ); $log->debug( 'debug message' ); @@ -160,29 +171,27 @@ class WC_Tests_Logger extends WC_Unit_Test_Case { public function test_threshold_defaults() { $time = time(); - // Test no filtering by default + // Test no filtering by default. delete_option( 'woocommerce_log_threshold' ); $handler = $this ->getMockBuilder( 'WC_Log_Handler_Interface' ) ->setMethods( array( 'handle' ) ) ->getMock(); $handler - ->expects( $this->at( 0 ) ) ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'bad-level' ), - $this->equalTo( 'bad-level message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 1 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'debug' ), - $this->equalTo( 'debug message' ), - $this->equalTo( array() ) + ->withConsecutive( + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'bad-level' ), + $this->equalTo( 'bad-level message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'debug' ), + $this->equalTo( 'debug message' ), + $this->equalTo( array() ), + ) ); $log = new WC_Logger( array( $handler ) ); @@ -192,7 +201,7 @@ class WC_Tests_Logger extends WC_Unit_Test_Case { // Bad level also complains. $this->setExpectedIncorrectUsage( 'WC_Logger::log' ); - // Debug is lowest recognized level + // Debug is lowest recognized level. $log->debug( 'debug message' ); } @@ -251,76 +260,56 @@ class WC_Tests_Logger extends WC_Unit_Test_Case { ->getMock(); $handler - ->expects( $this->at( 0 ) ) ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'debug' ), - $this->equalTo( 'debug message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 1 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'info' ), - $this->equalTo( 'info message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 2 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'notice' ), - $this->equalTo( 'notice message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 3 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'warning' ), - $this->equalTo( 'warning message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 4 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'error' ), - $this->equalTo( 'error message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 5 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'critical' ), - $this->equalTo( 'critical message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 6 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'alert' ), - $this->equalTo( 'alert message' ), - $this->equalTo( array() ) - ); - $handler - ->expects( $this->at( 7 ) ) - ->method( 'handle' ) - ->with( - $this->greaterThanOrEqual( $time ), - $this->equalTo( 'emergency' ), - $this->equalTo( 'emergency message' ), - $this->equalTo( array() ) + ->withConsecutive( + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'debug' ), + $this->equalTo( 'debug message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'info' ), + $this->equalTo( 'info message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'notice' ), + $this->equalTo( 'notice message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'warning' ), + $this->equalTo( 'warning message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'error' ), + $this->equalTo( 'error message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'critical' ), + $this->equalTo( 'critical message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'alert' ), + $this->equalTo( 'alert message' ), + $this->equalTo( array() ), + ), + array( + $this->greaterThanOrEqual( $time ), + $this->equalTo( 'emergency' ), + $this->equalTo( 'emergency message' ), + $this->equalTo( array() ), + ) ); return $handler; diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order-items/class-wc-tests-order-item-product.php b/plugins/woocommerce/tests/legacy/unit-tests/order-items/class-wc-tests-order-item-product.php index 669231741c0..3225cb3ab94 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order-items/class-wc-tests-order-item-product.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order-items/class-wc-tests-order-item-product.php @@ -130,7 +130,7 @@ class WC_Tests_Order_Item_Product extends WC_Unit_Test_Case { $product_item->set_order_id( $order->get_id() ); $expected_regex = '/download_file=.*&order=wc_order_.*&email=test%40woocommerce.com&key=100/'; - $this->assertRegexp( $expected_regex, $product_item->get_item_download_url( 100 ) ); + $this->assertMatchesRegularExpression( $expected_regex, $product_item->get_item_download_url( 100 ) ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-crud-orders.php b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-crud-orders.php index 1d6a917bc02..e85e8f0fe50 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-crud-orders.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-crud-orders.php @@ -5,6 +5,8 @@ * @package WooCommerce\Tests\CRUD */ +use Automattic\WooCommerce\Utilities\OrderUtil; + /** * Meta * @@ -882,10 +884,10 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $object = new WC_Order(); // Save + create. - $save_id = $object->save(); - $post = get_post( $save_id ); - $this->assertEquals( 'shop_order', $post->post_type ); - $this->assertEquals( 'shop_order', $post->post_type ); + $save_id = $object->save(); + $post = get_post( $save_id ); + $expected_post_type = OrderUtil::custom_orders_table_usage_is_enabled() ? 'shop_order_placehold' : 'shop_order'; + $this->assertEquals( $expected_post_type, $post->post_type ); // Update. $update_id = $object->save(); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-order-functions.php b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-order-functions.php index 56d3965f06f..b79ef79f688 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-order-functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-order-functions.php @@ -109,15 +109,19 @@ class WC_Tests_Order_Functions extends WC_Unit_Test_Case { ->will( $this->returnValueMap( $test_counts[ $order_type ] ) ); } - $add_mock_datastores = function( $stores ) use ( $mock_datastores ) { + $add_mock_datastores = function ( $stores ) use ( $mock_datastores ) { return array_merge( $stores, $mock_datastores ); }; - $add_mock_order_type = function( $order_types ) use ( $mock_datastores ) { + $add_mock_order_type = function ( $order_types ) use ( $mock_datastores ) { return array( 'shop_order', 'order-fake-type' ); }; + $return_mock_order_data_store = function ( $stores ) use ( $mock_datastores ) { + return $mock_datastores['order']; + }; add_filter( 'woocommerce_data_stores', $add_mock_datastores ); add_filter( 'wc_order_types', $add_mock_order_type ); + add_filter( 'woocommerce_order_data_store', $return_mock_order_data_store, 1000, 2 ); // Check counts for specific order types. $this->assertEquals( 2, wc_orders_count( 'on-hold', 'shop_order' ) ); @@ -131,6 +135,7 @@ class WC_Tests_Order_Functions extends WC_Unit_Test_Case { remove_filter( 'woocommerce_data_stores', $add_mock_datastores ); remove_filter( 'wc_order_types', $add_mock_order_type ); + remove_filter( 'woocommerce_order_data_store', $return_mock_order_data_store, 1000 ); // Confirm that everything's back to normal. wp_cache_flush(); @@ -190,7 +195,8 @@ class WC_Tests_Order_Functions extends WC_Unit_Test_Case { // Assert the return when $the_order args is false. $this->assertFalse( wc_get_order( false ) ); - $post = get_post( $order->get_id() ); + $post = get_post( $order->get_id() ); + $theorder = $order; $this->assertInstanceOf( 'WC_Order', wc_get_order(), diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php b/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php index 4402fed16c4..a5306b1544e 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php @@ -253,7 +253,7 @@ class WC_Tests_Order_Coupons extends WC_Unit_Test_Case { $order->apply_coupon( 'test-coupon-2' ); $this->assertEquals( 401, $order->get_discount_total(), $order->get_discount_total() ); - $this->assertEquals( ( 1000 - 401 ) * 1.1, $order->get_total(), $order->get_total() ); + $this->assertFloatEquals( ( 1000 - 401 ) * 1.1, $order->get_total(), $order->get_total() ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php b/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php index 444ae97fc1a..586392ac3a8 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php @@ -545,6 +545,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { $sale_products = $product_store->get_on_sale_products(); $sale_product_ids = wp_list_pluck( $sale_products, 'id' ); + $sale_product_ids = array_map( 'absint', $sale_product_ids ); $this->assertContains( $sale_product->get_id(), $sale_product_ids ); $this->assertNotContains( $not_sale_product->get_id(), $sale_product_ids ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/product/data.php b/plugins/woocommerce/tests/legacy/unit-tests/product/data.php index 10590f71414..ae732e1a3f5 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/product/data.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/product/data.php @@ -5,6 +5,8 @@ * @package WooCommerce\Tests\Product */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Data Functions. * @@ -13,6 +15,8 @@ */ class WC_Tests_Product_Data extends WC_Unit_Test_Case { + use ArraySubsetAsserts; + /** * Test product setters and getters * @@ -79,16 +83,15 @@ class WC_Tests_Product_Data extends WC_Unit_Test_Case { $this->assertEquals( $value, $product->{"get_{$function}"}(), $function ); } $this->assertCount( 1, $product->get_attributes() ); - $this->assertContains( - current( $product->get_attributes() )->get_data(), + $this->assertArraySubset( array( - 'attribute_id' => 0, - 'name' => 'Test Attribute', - 'options' => array( 'Fish', 'Fingers' ), - 'position' => 0, - 'visible' => true, - 'variation' => false, - ) + 'name' => 'Test Attribute', + 'options' => array( 'Fish', 'Fingers' ), + 'position' => 0, + 'visible' => true, + 'variation' => false, + ), + current( $product->get_attributes() )->get_data() ); $this->assertEquals( $product->get_date_on_sale_from()->getTimestamp(), 1475798400 ); $this->assertEquals( $product->get_date_on_sale_to()->getTimestamp(), 1477267200 ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/queue/queue.php b/plugins/woocommerce/tests/legacy/unit-tests/queue/queue.php index e3f6d7657b8..f4f8db05040 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/queue/queue.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/queue/queue.php @@ -4,9 +4,9 @@ * @package WooCommerce\Tests\Queue */ - /** - * WC_Tests_Discounts. - */ +/** + * WC_Tests_Discounts. + */ class WC_Tests_Queue extends WC_Unit_Test_Case { /** @@ -35,21 +35,24 @@ class WC_Tests_Queue extends WC_Unit_Test_Case { // Test that the action can be found. $action_ids = $queue->search( array( - 'hook' => $hook, - 'args' => $args, + 'hook' => $hook, + 'args' => $args, 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $single, $action_ids ); + $action_ids = $queue->search( array( - 'hook' => $hook, + 'hook' => $hook, 'search' => $unique_hash, - 'group' => $group, + 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $single, $action_ids ); // Schedule a recurring action. @@ -63,21 +66,24 @@ class WC_Tests_Queue extends WC_Unit_Test_Case { // Test that the action can be found. $action_ids = $queue->search( array( - 'hook' => $hook, - 'args' => $args, + 'hook' => $hook, + 'args' => $args, 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $recurring, $action_ids ); + $action_ids = $queue->search( array( - 'hook' => $hook, + 'hook' => $hook, 'search' => $unique_hash, - 'group' => $group, + 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $recurring, $action_ids ); // Schedule a cron action on a daily midnight schedule starting at the next midnight. @@ -93,21 +99,24 @@ class WC_Tests_Queue extends WC_Unit_Test_Case { // Test that the action can be found. $action_ids = $queue->search( array( - 'hook' => $hook, - 'args' => $args, + 'hook' => $hook, + 'args' => $args, 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $cron_action, $action_ids ); + $action_ids = $queue->search( array( - 'hook' => $hook, + 'hook' => $hook, 'search' => $unique_hash, - 'group' => $group, + 'group' => $group, ), 'ids' ); + $action_ids = array_map( 'absint', $action_ids ); $this->assertContains( $cron_action, $action_ids ); // Test wildcard search. diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php index 4742d15e3f6..5678dc7b271 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php @@ -14,6 +14,7 @@ use Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableControlle use Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer; use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; use Automattic\WooCommerce\Internal\Features\FeaturesController; +use Automattic\WooCommerce\Utilities\OrderUtil; use WC_Data_Store; use WC_Mock_Payment_Gateway; use WC_Order; @@ -151,6 +152,23 @@ class OrderHelper { } } + /** + * Enables or disables the custom orders table across WP temporarily. + * + * @param boolean $enabled TRUE to enable COT or FALSE to disable. + * @return void + */ + public static function toggle_cot( bool $enabled ) { + $features_controller = wc_get_container()->get( Featurescontroller::class ); + $features_controller->change_feature_enable( 'custom_order_tables', $enabled ); + + update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, wc_bool_to_string( $enabled ) ); + + // Confirm things are really correct. + $wc_data_store = WC_Data_Store::load( 'order' ); + assert( is_a( $wc_data_store->get_current_class_name(), OrdersTableDataStore::class, true ) === $enabled ); + } + /** * Helper method to create custom tables if not present. */ @@ -170,6 +188,8 @@ class OrderHelper { * @return int Order ID */ public static function create_complex_wp_post_order() { + $current_cot_state = OrderUtil::custom_orders_table_usage_is_enabled(); + self::toggle_cot( false ); update_option( 'woocommerce_prices_include_tax', 'yes' ); update_option( 'woocommerce_calc_taxes', 'yes' ); $uniq_cust_id = wp_generate_password( 10, false ); @@ -239,6 +259,8 @@ class OrderHelper { $order->save(); $order->save_meta_data(); + self::toggle_cot( $current_cot_state ); + return $order->get_id(); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/coupons.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/coupons.php index 8c1c1d50297..02fa3b35a00 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/coupons.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/coupons.php @@ -1,11 +1,25 @@ assertEquals( 200, $response->get_status() ); $this->assertEquals( 2, count( $coupons ) ); - $this->assertContains( + + $matching_coupon_data = current( + array_filter( + $coupons, + function( $coupon ) use ( $coupon_1 ) { + return $coupon['id'] === $coupon_1->get_id(); + } + ) + ); + $this->assertIsArray( $matching_coupon_data ); + + $this->assertArraySubset( array( 'id' => $coupon_1->get_id(), 'code' => 'dummycoupon-1', @@ -92,7 +117,7 @@ class WC_Tests_API_Coupons_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $coupons + $matching_coupon_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/customers.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/customers.php index 97a8d7d6773..af02cd77b67 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/customers.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/customers.php @@ -6,6 +6,8 @@ * @since 3.0.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Tests for the Customers REST API. * @@ -13,6 +15,7 @@ * @extends WC_REST_Unit_Test_Case */ class Customers_V2 extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -58,7 +61,17 @@ class Customers_V2 extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( 2, count( $customers ) ); - $this->assertContains( + $matching_customer_data = current( + array_filter( + $customers, + function( $customer ) use ( $customer_1 ) { + return $customer['id'] === $customer_1->get_id(); + } + ) + ); + $this->assertIsArray( $matching_customer_data ); + + $this->assertArraySubset( array( 'id' => $customer_1->get_id(), 'date_created' => wc_rest_prepare_date_response( $customer_1->get_date_created(), false ), @@ -113,7 +126,7 @@ class Customers_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $customers + $matching_customer_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/payment-gateways.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/payment-gateways.php index be3a8b09dfc..61d4882c0c6 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/payment-gateways.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/payment-gateways.php @@ -6,10 +6,13 @@ * @since 3.0.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Payment gateway test class. */ class Payment_Gateways_V2 extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -47,7 +50,18 @@ class Payment_Gateways_V2 extends WC_REST_Unit_Test_Case { $gateways = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + + $matching_gateway_data = current( + array_filter( + $gateways, + function( $gateway ) { + return 'cheque' === $gateway['id']; + } + ) + ); + $this->assertIsArray( $matching_gateway_data ); + + $this->assertArraySubset( array( 'id' => 'cheque', 'title' => 'Check payments', @@ -82,7 +96,7 @@ class Payment_Gateways_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $gateways + $matching_gateway_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/products.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/products.php index dfe3fbb54b6..36b350538b4 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/products.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/products.php @@ -6,10 +6,14 @@ * @since 3.0.0 */ +use Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper; +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Products_API_V2 class. */ class Products_API_V2 extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -77,19 +81,20 @@ class Products_API_V2 extends WC_REST_Unit_Test_Case { */ public function test_get_product() { wp_set_current_user( $this->user ); - $simple = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\ProductHelper::create_external_product(); + $simple = ProductHelper::create_external_product(); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v2/products/' . $simple->get_id() ) ); $product = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + + $this->assertArraySubset( array( 'id' => $simple->get_id(), 'name' => 'Dummy External Product', - 'type' => 'simple', + 'type' => 'external', 'status' => 'publish', 'sku' => 'DUMMY EXTERNAL SKU', - 'regular_price' => 10, + 'regular_price' => '10', ), $product ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/settings.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/settings.php index 9c6950ac1d6..32a96fb95dc 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/settings.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/settings.php @@ -6,10 +6,13 @@ * @since 3.0.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Class Settings_V2. */ class Settings_V2 extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -50,7 +53,18 @@ class Settings_V2 extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + $this->assertEquals( 200, $response->get_status() ); + $matching_settings_data = current( + array_filter( + $data, + function( $settings ) { + return 'test' === $settings['id']; + } + ) + ); + $this->assertIsArray( $matching_settings_data ); + + $this->assertArraySubset( array( 'id' => 'test', 'label' => 'Test extension', @@ -65,10 +79,20 @@ class Settings_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_settings_data ); - $this->assertContains( + $matching_settings_data = current( + array_filter( + $data, + function( $settings ) { + return 'sub-test' === $settings['id']; + } + ) + ); + $this->assertIsArray( $matching_settings_data ); + + $this->assertArraySubset( array( 'id' => 'sub-test', 'label' => 'Sub test', @@ -83,7 +107,7 @@ class Settings_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_settings_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/system-status.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/system-status.php index 6592f1c38f0..4fe9ef49a99 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/system-status.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/system-status.php @@ -5,6 +5,8 @@ * @package Automattic/WooCommerce/Tests */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * System Status REST Tests. * @@ -12,6 +14,7 @@ * @since 3.0 */ class WC_Tests_REST_System_Status_V2 extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server. @@ -251,7 +254,18 @@ class WC_Tests_REST_System_Status_V2 extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( count( $raw_tools ), count( $data ) ); - $this->assertContains( + + $matching_tool_data = current( + array_filter( + $data, + function( $tool ) { + return 'regenerate_thumbnails' === $tool['id']; + } + ) + ); + $this->assertIsArray( $matching_tool_data ); + + $this->assertArraySubset( array( 'id' => 'regenerate_thumbnails', 'name' => 'Regenerate shop thumbnails', @@ -266,7 +280,7 @@ class WC_Tests_REST_System_Status_V2 extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_tool_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/coupons.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/coupons.php index 03a41651159..5690e1dda12 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/coupons.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/coupons.php @@ -5,6 +5,8 @@ * @package WooCommerce\Tests\API */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + // phpcs:ignore Squiz.Commenting.FileComment.Missing require_once __DIR__ . '/date-filtering.php'; @@ -14,6 +16,7 @@ require_once __DIR__ . '/date-filtering.php'; * @since 3.5.0 */ class WC_Tests_API_Coupons extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; use DateFilteringForCrudControllers; /** @@ -62,7 +65,18 @@ class WC_Tests_API_Coupons extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( 2, count( $coupons ) ); - $this->assertContains( + + $matching_coupon_data = current( + array_filter( + $coupons, + function( $coupon ) use ( $coupon_1 ) { + return $coupon['id'] === $coupon_1->get_id(); + } + ) + ); + $this->assertIsArray( $matching_coupon_data ); + + $this->assertArraySubset( array( 'id' => $coupon_1->get_id(), 'code' => 'dummycoupon-1', @@ -105,7 +119,7 @@ class WC_Tests_API_Coupons extends WC_REST_Unit_Test_Case { ), ), ), - $coupons + $matching_coupon_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/customers.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/customers.php index 945128c18b3..442bb3ccecb 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/customers.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/customers.php @@ -6,6 +6,8 @@ * @since 3.5.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Tests for the Customers REST API. * @@ -13,6 +15,7 @@ * @extends WC_REST_Unit_Test_Case */ class Customers extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -59,7 +62,17 @@ class Customers extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( 2, count( $customers ) ); - $this->assertContains( + $matching_customer_data = current( + array_filter( + $customers, + function( $customer ) use ( $customer_1 ) { + return $customer['id'] === $customer_1->get_id(); + } + ) + ); + $this->assertIsArray( $matching_customer_data ); + + $this->assertArraySubset( array( 'id' => $customer_1->get_id(), 'date_created' => wc_rest_prepare_date_response( $date_created, false ), @@ -112,7 +125,7 @@ class Customers extends WC_REST_Unit_Test_Case { ), ), ), - $customers + $matching_customer_data ); update_option( 'timezone_tring', 'America/New York' ); @@ -130,7 +143,17 @@ class Customers extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + $matching_customer_data = current( + array_filter( + $customers, + function( $customer ) use ( $customer_3 ) { + return $customer['id'] === $customer_3->get_id(); + } + ) + ); + $this->assertIsArray( $matching_customer_data ); + + $this->assertArraySubset( array( 'id' => $customer_3->get_id(), 'date_created' => wc_rest_prepare_date_response( $date_created, false ), @@ -183,9 +206,8 @@ class Customers extends WC_REST_Unit_Test_Case { ), ), ), - $customers + $matching_customer_data ); - } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/date-filtering.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/date-filtering.php index 2a513e41dc4..b18c201cb44 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/date-filtering.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/date-filtering.php @@ -10,6 +10,9 @@ * @package WooCommerce\Tests\API */ +use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; +use Automattic\WooCommerce\Utilities\OrderUtil; + /** * Trait for testing the date filtering on controllers that inherit from WC_REST_CRUD_Controller. */ @@ -34,18 +37,34 @@ trait DateFilteringForCrudControllers { public function test_filter_by_creation_or_modification_date( $param_name, $filter_by_gmt, $expected_to_be_returned ) { global $wpdb; + $timezone_string_option = get_option( 'timezone_string' ); + update_option( 'timezone_string', 'Africa/Blantyre', true ); // +02:00 wp_set_current_user( $this->user ); - $item_id = $this->get_item_for_date_filtering_tests()->get_id(); + $item = $this->get_item_for_date_filtering_tests(); + $item_id = $item->get_id(); - // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( - 'UPDATE ' . $wpdb->prefix . "posts SET + if ( $item instanceof WC_Abstract_Order && OrderUtil::custom_orders_table_usage_is_enabled() ) { + $wpdb->update( + OrdersTableDataStore::get_orders_table_name(), + array( + 'date_created_gmt' => '2000-01-01T10:00:00', + 'date_updated_gmt' => '2000-02-01T10:00:00', + ), + array( + 'id' => $item->get_id(), + ) + ); + } else { + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + $wpdb->query( + 'UPDATE ' . $wpdb->prefix . "posts SET post_date = '2000-01-01T12:00:00', post_date_gmt = '2000-01-01T10:00:00', post_modified = '2000-02-01T12:00:00', post_modified_gmt = '2000-02-01T10:00:00' WHERE ID = " . $item_id - ); + ); + } // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared $request = new WP_REST_Request( 'GET', $this->get_endpoint_for_date_filtering_tests() ); @@ -60,6 +79,7 @@ trait DateFilteringForCrudControllers { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( $expected_to_be_returned ? 1 : 0, count( $response_items ) ); + update_option( 'timezone_string', $timezone_string_option ); } /** @@ -80,19 +100,35 @@ trait DateFilteringForCrudControllers { public function test_can_filter_by_more_than_one_date( $first_param_name, $first_param_value, $second_param_name, $second_param_value, $filter_by_gmt, $expected_to_be_returned ) { global $wpdb; + $timezone_string_option = get_option( 'timezone_string' ); + update_option( 'timezone_string', 'Africa/Blantyre', true ); // +02:00 wp_set_current_user( $this->user ); - $item_id = $this->get_item_for_date_filtering_tests()->get_id(); + $item = $this->get_item_for_date_filtering_tests(); + $item_id = $item->get_id(); - // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( - 'UPDATE ' . $wpdb->prefix . "posts SET + if ( $item instanceof WC_Abstract_Order && OrderUtil::custom_orders_table_usage_is_enabled() ) { + $wpdb->update( + OrdersTableDataStore::get_orders_table_name(), + array( + 'date_created_gmt' => '2000-01-01T10:00:00', + 'date_updated_gmt' => '2000-02-01T10:00:00', + ), + array( + 'id' => $item->get_id(), + ) + ); + } else { + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + $wpdb->query( + 'UPDATE ' . $wpdb->prefix . "posts SET post_date = '2000-01-01T12:00:00', post_date_gmt = '2000-01-01T10:00:00', post_modified = '2000-02-01T12:00:00', post_modified_gmt = '2000-02-01T10:00:00' WHERE ID = " . $item_id - ); - // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared + ); + // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared + } $request = new WP_REST_Request( 'GET', $this->get_endpoint_for_date_filtering_tests() ); $request->set_query_params( @@ -107,5 +143,6 @@ trait DateFilteringForCrudControllers { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( $expected_to_be_returned ? 1 : 0, count( $response_items ) ); + update_option( 'timezone_string', $timezone_string_option ); } } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php index 4bddc3f5a0e..8456ad81911 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php @@ -6,10 +6,13 @@ * @since 3.5.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Payment gateway test class. */ class Payment_Gateways extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -47,7 +50,18 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { $gateways = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + + $matching_gateway_data = current( + array_filter( + $gateways, + function( $gateway ) { + return 'cheque' === $gateway['id']; + } + ) + ); + $this->assertIsArray( $matching_gateway_data ); + + $this->assertArraySubset( array( 'id' => 'cheque', 'title' => 'Check payments', @@ -85,7 +99,7 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { ), ), ), - $gateways + $matching_gateway_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/products.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/products.php index 552a54c4f75..8806ea422c7 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/products.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/products.php @@ -6,6 +6,8 @@ * @since 3.5.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + // phpcs:ignore Squiz.Commenting.FileComment.Missing require_once __DIR__ . '/date-filtering.php'; @@ -13,8 +15,9 @@ require_once __DIR__ . '/date-filtering.php'; * WC_Tests_API_Product class. */ class WC_Tests_API_Product extends WC_REST_Unit_Test_Case { - use WC_REST_API_Complex_Meta; + use ArraySubsetAsserts; use DateFilteringForCrudControllers; + use WC_REST_API_Complex_Meta; /** * Setup our test server, endpoints, and user info. @@ -140,14 +143,14 @@ class WC_Tests_API_Product extends WC_REST_Unit_Test_Case { $product = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); - $this->assertContains( + $this->assertArraySubset( array( 'id' => $simple->get_id(), 'name' => 'Dummy External Product', - 'type' => 'simple', + 'type' => 'external', 'status' => 'publish', 'sku' => 'DUMMY EXTERNAL SKU', - 'regular_price' => 10, + 'regular_price' => '10', ), $product ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/settings.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/settings.php index d82cc9b5ad8..d8890569eff 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/settings.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/settings.php @@ -6,10 +6,13 @@ * @since 3.5.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * Class Settings. */ class Settings extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * Setup our test server, endpoints, and user info. @@ -49,8 +52,17 @@ class Settings extends WC_REST_Unit_Test_Case { $data = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); + $matching_settings_data = current( + array_filter( + $data, + function( $settings ) { + return 'test' === $settings['id']; + } + ) + ); + $this->assertIsArray( $matching_settings_data ); - $this->assertContains( + $this->assertArraySubset( array( 'id' => 'test', 'label' => 'Test extension', @@ -65,10 +77,20 @@ class Settings extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_settings_data ); - $this->assertContains( + $matching_settings_data = current( + array_filter( + $data, + function( $settings ) { + return 'sub-test' === $settings['id']; + } + ) + ); + $this->assertIsArray( $matching_settings_data ); + + $this->assertArraySubset( array( 'id' => 'sub-test', 'label' => 'Sub test', @@ -83,7 +105,7 @@ class Settings extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_settings_data ); } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/system-status.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/system-status.php index 8d8333a5b52..4fe8ef29055 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/system-status.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/system-status.php @@ -5,6 +5,8 @@ * @package Automattic/WooCommerce/Tests */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * System Status REST Tests. * @@ -12,6 +14,7 @@ * @since 3.5.0 */ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { + use ArraySubsetAsserts; /** * User variable. @@ -117,8 +120,8 @@ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { } $expected_data = array( 'environment' => array( - 'version' => WC()->version - ) + 'version' => WC()->version, + ), ); $request = new WP_REST_Request( 'GET', '/wc/v3/system_status' ); @@ -178,7 +181,8 @@ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { $theme = (array) $data['theme']; $this->assertEquals( 13, count( $theme ) ); - $this->assertEquals( $active_theme->Name, $theme['name'] ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar + // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + $this->assertEquals( $active_theme->Name, $theme['name'] ); } /** @@ -264,7 +268,18 @@ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( count( $raw_tools ), count( $data ) ); - $this->assertContains( + + $matching_tool_data = current( + array_filter( + $data, + function( $tool ) { + return 'regenerate_thumbnails' === $tool['id']; + } + ) + ); + $this->assertIsArray( $matching_tool_data ); + + $this->assertArraySubset( array( 'id' => 'regenerate_thumbnails', 'name' => 'Regenerate shop thumbnails', @@ -279,7 +294,7 @@ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { ), ), ), - $data + $matching_tool_data ); $query_params = array( @@ -292,12 +307,23 @@ class WC_Tests_REST_System_Status extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( count( $raw_tools ), count( $data ) ); - $this->assertContains( + + $matching_tool_data = current( + array_filter( + $data, + function( $tool ) { + return 'regenerate_thumbnails' === $tool['id']; + } + ) + ); + $this->assertIsArray( $matching_tool_data ); + + $this->assertArraySubset( array( 'id' => 'regenerate_thumbnails', 'name' => 'Regenerate shop thumbnails', ), - $data + $matching_tool_data ); foreach ( $data as $item ) { // Fields that are not requested are not returned in response. diff --git a/plugins/woocommerce/tests/legacy/unit-tests/util/class-wc-tests-wc-query.php b/plugins/woocommerce/tests/legacy/unit-tests/util/class-wc-tests-wc-query.php index da9b8e751c2..a324a548e27 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/util/class-wc-tests-wc-query.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/util/class-wc-tests-wc-query.php @@ -6,10 +6,13 @@ * @since 3.3.0 */ +use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts; + /** * WC_Query tests. */ class WC_Tests_WC_Query extends WC_Unit_Test_Case { + use ArraySubsetAsserts; /** * Test WC_Query gets initialized properly. @@ -353,8 +356,17 @@ class WC_Tests_WC_Query extends WC_Unit_Test_Case { // phpcs:enable WordPress.DB.SlowDBQuery WC()->query->product_query( new WP_Query( $query_args ) ); - $tax_queries = WC_Query::get_main_tax_query(); - $this->assertContains( $tax_query, $tax_queries ); + $tax_queries = WC_Query::get_main_tax_query(); + $matching_tax_data = current( + array_filter( + $tax_queries, + function( $tax ) { + return 'product_tag' === $tax['taxonomy']; + } + ) + ); + $this->assertIsArray( $matching_tax_data ); + $this->assertArraySubset( $tax_query, $matching_tax_data ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/util/install.php b/plugins/woocommerce/tests/legacy/unit-tests/util/install.php index 70af9b7c15c..5783c85e7b9 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/util/install.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/util/install.php @@ -166,4 +166,5 @@ class WC_Tests_Install extends WC_Unit_Test_Case { $this->assertContains( 'some_table_name', WC_Install::get_tables() ); } + } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php index ed6812b89e6..ff2855420f8 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api-init.php @@ -104,26 +104,4 @@ class WC_Admin_Tests_API_Init extends WC_REST_Unit_Test_Case { $this->assertEmpty( $this->queue->actions ); } - - /** - * Test that updating wc_last_active triggers a customer sync. - * - * @return void - */ - public function test_other_last_active_update_customer_sync() { - // First call creates the meta key. - // These don't use wc_update_user_last_active() because the timestamps will be the same. - update_user_meta( 1, 'wc_last_active', time() - 10 ); - // Second call updates it which triggers the sync. - update_user_meta( 1, 'wc_last_active', time() ); - - $this->assertCount( 1, $this->queue->actions ); - $this->assertArraySubset( - array( - 'hook' => CustomersScheduler::get_action( 'import' ), - 'args' => array( 1 ), - ), - $this->queue->actions[0] - ); - } } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php index b4a78652004..b70e973b83f 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php @@ -207,7 +207,6 @@ class WC_Admin_Tests_API_Reports_Import extends WC_REST_Unit_Test_Case { $pending_actions ); $this->assertContains( 'wc-admin_import_orders', $pending_hooks ); - $this->assertContains( 'wc-admin_import_customers', $pending_hooks ); // Cancel outstanding actions. $request = new WP_REST_Request( 'POST', $this->endpoint . '/cancel' ); @@ -226,7 +225,6 @@ class WC_Admin_Tests_API_Reports_Import extends WC_REST_Unit_Test_Case { $pending_actions ); $this->assertNotContains( 'wc-admin_import_orders', $pending_hooks ); - $this->assertNotContains( 'wc-admin_import_customers', $pending_hooks ); } /** @@ -323,13 +321,8 @@ class WC_Admin_Tests_API_Reports_Import extends WC_REST_Unit_Test_Case { // Create 1 draft order - to be excluded from totals. $order = WC_Helper_Order::create_order( $this->customer, $product ); $order->set_date_created( time() - ( 5 * DAY_IN_SECONDS ) ); + $order->set_status( 'auto-draft' ); $order->save(); - wp_update_post( - array( - 'ID' => $order->get_id(), - 'post_status' => 'auto-draft', - ) - ); // Test totals and total params. $request = new WP_REST_Request( 'GET', $this->endpoint . '/totals' ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php index 6aabe4b0cdf..0d57109a7b8 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php @@ -260,13 +260,13 @@ class WC_Admin_Tests_OnboardingTasks_TaskList extends WC_Unit_Test_Case { ) ); $json = $this->list->get_json(); - $this->assertContains( 'id', $json ); - $this->assertContains( 'title', $json ); - $this->assertContains( 'isHidden', $json ); - $this->assertContains( 'isVisible', $json ); - $this->assertContains( 'isComplete', $json ); - $this->assertContains( 'tasks', $json ); - $this->assertContains( 'isComplete', $json['tasks'][0] ); + $this->assertArrayHasKey( 'id', $json ); + $this->assertArrayHasKey( 'title', $json ); + $this->assertArrayHasKey( 'isHidden', $json ); + $this->assertArrayHasKey( 'isVisible', $json ); + $this->assertArrayHasKey( 'isComplete', $json ); + $this->assertArrayHasKey( 'tasks', $json ); + $this->assertArrayHasKey( 'isComplete', $json['tasks'][0] ); } /** diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/field.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/field.php index 8fb257ee73a..ddcb3e0013a 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/field.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/field.php @@ -21,7 +21,7 @@ class WC_Admin_Tests_ProductForm_Field extends WC_Unit_Test_Case { new Field( 'id', 'woocommerce', - array(), + array() ); } } diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/form-factory.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/form-factory.php index 148ac5c4c3e..403aaa46e96 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/form-factory.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/product-form/form-factory.php @@ -18,7 +18,7 @@ class WC_Admin_Tests_ProductForm_Form_Factory extends WC_Unit_Test_Case { $field = Form::add_field( 'id', 'woocommerce', array() ); $this->assertInstanceOf( 'WP_Error', $field ); - $this->assertContains( 'You are missing required arguments of WooCommerce ProductForm Field: type, section, properties.name, properties.label', $field->get_error_message() ); + $this->assertStringContainsString( 'You are missing required arguments of WooCommerce ProductForm Field: type, section, properties.name, properties.label', $field->get_error_message() ); } /** @@ -51,7 +51,7 @@ class WC_Admin_Tests_ProductForm_Form_Factory extends WC_Unit_Test_Case { ) ); $this->assertInstanceOf( 'WP_Error', $field_duplicate ); - $this->assertContains( 'You have attempted to register a duplicate form field with WooCommerce Form: `id`', $field_duplicate->get_error_message() ); + $this->assertStringContainsString( 'You have attempted to register a duplicate form field with WooCommerce Form: `id`', $field_duplicate->get_error_message() ); } /** diff --git a/plugins/woocommerce/tests/php/helpers/HPOSToggleTrait.php b/plugins/woocommerce/tests/php/helpers/HPOSToggleTrait.php index f50cf300f9c..c3bf9cf2731 100644 --- a/plugins/woocommerce/tests/php/helpers/HPOSToggleTrait.php +++ b/plugins/woocommerce/tests/php/helpers/HPOSToggleTrait.php @@ -49,14 +49,7 @@ trait HPOSToggleTrait { * @return void */ private function toggle_cot_feature_and_usage( bool $enabled ): void { - $features_controller = wc_get_container()->get( Featurescontroller::class ); - $features_controller->change_feature_enable( 'custom_order_tables', $enabled ); - - update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, wc_bool_to_string( $enabled ) ); - - // Confirm things are really correct. - $wc_data_store = WC_Data_Store::load( 'order' ); - assert( is_a( $wc_data_store->get_current_class_name(), OrdersTableDataStore::class, true ) === $enabled ); + OrderHelper::toggle_cot( $enabled ); } /** diff --git a/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-dashboard-setup-test.php b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-dashboard-setup-test.php index 637f4cdeaf5..f08e55c233d 100644 --- a/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-dashboard-setup-test.php +++ b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-dashboard-setup-test.php @@ -165,7 +165,7 @@ class WC_Admin_Dashboard_Setup_Test extends WC_Unit_Test_Case { ); foreach ( $required_strings as $required_string ) { - $this->assertRegexp( "/{$required_string}/", $html ); + $this->assertMatchesRegularExpression( "/{$required_string}/", $html ); } } @@ -191,7 +191,7 @@ class WC_Admin_Dashboard_Setup_Test extends WC_Unit_Test_Case { if ( $completed_tasks_count === $tasks_count ) { $this->assertEmpty( $this->get_widget_output() ); } else { - $this->assertRegexp( "/Step {$step_number} of 6/", $this->get_widget_output() ); + $this->assertMatchesRegularExpression( "/Step {$step_number} of 6/", $this->get_widget_output() ); } } } diff --git a/plugins/woocommerce/tests/php/includes/class-wc-cart-test.php b/plugins/woocommerce/tests/php/includes/class-wc-cart-test.php index 84ea12c767b..bf6a85bbd9c 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-cart-test.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-cart-test.php @@ -187,6 +187,6 @@ class WC_Cart_Test extends \WC_Unit_Test_Case { $this->assertArrayHasKey( 'error', $notices ); $this->assertCount( 1, $notices['error'] ); - $this->assertRegExp( '/Please choose product options by visiting/', $notices['error'][0]['notice'] ); + $this->assertMatchesRegularExpression( '/Please choose product options by visiting/', $notices['error'][0]['notice'] ); } } diff --git a/plugins/woocommerce/tests/php/includes/class-wc-install-test.php b/plugins/woocommerce/tests/php/includes/class-wc-install-test.php index a2ec3899ec6..0afda1bbea1 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-install-test.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-install-test.php @@ -97,4 +97,12 @@ class WC_Install_Test extends \WC_Unit_Test_Case { $this->assertContains( 'premium_support', array_keys( $plugin_row_data ) ); } + /** + * Test that dbDelta is a noop on an installed site. + */ + public function test_dbDelta_is_a_noop() { + $db_delta_result = WC_Install::create_tables(); + $this->assertEmpty( $db_delta_result ); + } + } diff --git a/plugins/woocommerce/tests/php/includes/class-wc-order-factory-test.php b/plugins/woocommerce/tests/php/includes/class-wc-order-factory-test.php index e3af7d32052..9675e0e8fc4 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-order-factory-test.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-order-factory-test.php @@ -1,16 +1,48 @@ cot_state = \Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled(); + OrderHelper::toggle_cot( false ); + } + + /** + * Restore COT state after the test. + * + * @return void + */ + public function tearDown(): void { + parent::tearDown(); + wp_cache_flush(); + OrderHelper::toggle_cot( $this->cot_state ); + } + /** * @testDox get_orders should be able to return multiple orders of different types. */ public function test_get_orders_with_multiple_order_type() { - $order1 = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::create_complex_wp_post_order(); - $order2 = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::create_complex_wp_post_order(); + $order1 = OrderHelper::create_complex_wp_post_order(); + $order2 = OrderHelper::create_complex_wp_post_order(); assert( $order1 > 0 ); assert( $order2 > 0 ); @@ -45,4 +77,23 @@ class WC_Order_Factory_Test extends WC_Unit_Test_Case { $this->assertInstanceOf( WC_Order_Refund::class, $orders_with_diff_types[3] ); } + /** + * @testDox Test that cache does not interfere with order sorting. + */ + public function test_cache_dont_interfere_with_orders() { + OrderHelper::toggle_cot( $this->cot_state ); + $order1 = OrderHelper::create_order(); + $order2 = OrderHelper::create_order(); + + wp_cache_flush(); + $cache = wc_get_container()->get( OrderCache::class ); + $cache->set( $order2, $order2->get_id() ); + + $orders = WC_Order_Factory::get_orders( array( $order1->get_id(), $order2->get_id() ) ); + $this->assertEquals( 2, count( $orders ) ); + $this->assertEquals( $order1->get_id(), $orders[0]->get_id() ); + $this->assertEquals( $order2->get_id(), $orders[1]->get_id() ); + OrderHelper::toggle_cot( false ); + } + } diff --git a/plugins/woocommerce/tests/php/includes/data-stores/class-wc-customer-data-store-session-test.php b/plugins/woocommerce/tests/php/includes/data-stores/class-wc-customer-data-store-session-test.php index 75ef103b8e0..126d1b055a5 100644 --- a/plugins/woocommerce/tests/php/includes/data-stores/class-wc-customer-data-store-session-test.php +++ b/plugins/woocommerce/tests/php/includes/data-stores/class-wc-customer-data-store-session-test.php @@ -11,11 +11,12 @@ class WC_Customer_Data_Store_Session_Test extends WC_Unit_Test_Case { * @see https://github.com/woocommerce/woocommerce/issues/28759 * @dataProvider provide_customers_with_different_addresses * - * @param WC_Customer $customer The customer object being tested. - * @param bool $states_should_match If the billing and shipping states should match. - * @param bool $countries_should_match If the billing and shipping countries should match. + * @param Closure $customer_closure The customer object being tested. + * @param bool $states_should_match If the billing and shipping states should match. + * @param bool $countries_should_match If the billing and shipping countries should match. */ - public function test_setting_default_address_fields( WC_Customer $customer, bool $states_should_match, bool $countries_should_match ) { + public function test_setting_default_address_fields( Closure $customer_closure, bool $states_should_match, bool $countries_should_match ) { + $customer = $customer_closure(); $session_data = new WC_Customer_Data_Store_Session(); $session_data->read( $customer ); @@ -46,66 +47,78 @@ class WC_Customer_Data_Store_Session_Test extends WC_Unit_Test_Case { * @return array[] */ public function provide_customers_with_different_addresses() { - $has_billing_address_only = new WC_Customer(); - $has_billing_address_only->set_email( 'wc-customer-test-01@test.user' ); - $has_billing_address_only->set_billing_address( '1234 Quality Lane' ); - $has_billing_address_only->set_billing_city( 'Testville' ); - $has_billing_address_only->set_billing_country( 'US' ); - $has_billing_address_only->set_billing_state( 'CA' ); - $has_billing_address_only->set_billing_postcode( '90123' ); - $has_billing_address_only->save(); + $cust1_closure = function () { + $has_billing_address_only = new WC_Customer(); + $has_billing_address_only->set_email( 'wc-customer-test-01@test.user' ); + $has_billing_address_only->set_billing_address( '1234 Quality Lane' ); + $has_billing_address_only->set_billing_city( 'Testville' ); + $has_billing_address_only->set_billing_country( 'US' ); + $has_billing_address_only->set_billing_state( 'CA' ); + $has_billing_address_only->set_billing_postcode( '90123' ); + $has_billing_address_only->save(); + return $has_billing_address_only; + }; - $separate_billing_and_shipping_state_and_country = new WC_Customer(); - $separate_billing_and_shipping_state_and_country->set_email( 'wc-customer-test-02@test.user' ); - $separate_billing_and_shipping_state_and_country->set_billing_address( '4567 Scenario Street' ); - $separate_billing_and_shipping_state_and_country->set_billing_city( 'Unitly' ); - $separate_billing_and_shipping_state_and_country->set_billing_country( 'UK' ); - $separate_billing_and_shipping_state_and_country->set_billing_state( 'Computershire' ); - $separate_billing_and_shipping_state_and_country->set_billing_postcode( 'ZX1 2PQ' ); - $separate_billing_and_shipping_state_and_country->set_shipping_address( '8901 Situation Court' ); - $separate_billing_and_shipping_state_and_country->set_shipping_city( 'Endtoendly' ); - $separate_billing_and_shipping_state_and_country->set_shipping_country( 'CA' ); - $separate_billing_and_shipping_state_and_country->set_shipping_state( 'BC' ); - $separate_billing_and_shipping_state_and_country->set_shipping_postcode( 'A1B 2C3' ); - $separate_billing_and_shipping_state_and_country->save(); + $cust2_closure = function () { + $separate_billing_and_shipping_state_and_country = new WC_Customer(); + $separate_billing_and_shipping_state_and_country->set_email( 'wc-customer-test-02@test.user' ); + $separate_billing_and_shipping_state_and_country->set_billing_address( '4567 Scenario Street' ); + $separate_billing_and_shipping_state_and_country->set_billing_city( 'Unitly' ); + $separate_billing_and_shipping_state_and_country->set_billing_country( 'UK' ); + $separate_billing_and_shipping_state_and_country->set_billing_state( 'Computershire' ); + $separate_billing_and_shipping_state_and_country->set_billing_postcode( 'ZX1 2PQ' ); + $separate_billing_and_shipping_state_and_country->set_shipping_address( '8901 Situation Court' ); + $separate_billing_and_shipping_state_and_country->set_shipping_city( 'Endtoendly' ); + $separate_billing_and_shipping_state_and_country->set_shipping_country( 'CA' ); + $separate_billing_and_shipping_state_and_country->set_shipping_state( 'BC' ); + $separate_billing_and_shipping_state_and_country->set_shipping_postcode( 'A1B 2C3' ); + $separate_billing_and_shipping_state_and_country->save(); + return $separate_billing_and_shipping_state_and_country; + }; - $separate_billing_state_same_country = new WC_Customer(); - $separate_billing_state_same_country->set_email( 'wc-customer-test-03@test.user' ); - $separate_billing_state_same_country->set_billing_address( '4567 Scenario Street' ); - $separate_billing_state_same_country->set_billing_city( 'Unitly' ); - $separate_billing_state_same_country->set_billing_country( 'UK' ); - $separate_billing_state_same_country->set_billing_state( 'Computershire' ); - $separate_billing_state_same_country->set_billing_postcode( 'ZX1 2PQ' ); - $separate_billing_state_same_country->set_shipping_address( '8901 Situation Court' ); - $separate_billing_state_same_country->set_shipping_city( 'Endtoendly' ); - $separate_billing_state_same_country->set_shipping_country( 'UK' ); - $separate_billing_state_same_country->set_shipping_state( 'Byteshire' ); - $separate_billing_state_same_country->set_shipping_postcode( 'RS1 2TU' ); - $separate_billing_state_same_country->save(); + $cust3_closure = function () { + $separate_billing_state_same_country = new WC_Customer(); + $separate_billing_state_same_country->set_email( 'wc-customer-test-03@test.user' ); + $separate_billing_state_same_country->set_billing_address( '4567 Scenario Street' ); + $separate_billing_state_same_country->set_billing_city( 'Unitly' ); + $separate_billing_state_same_country->set_billing_country( 'UK' ); + $separate_billing_state_same_country->set_billing_state( 'Computershire' ); + $separate_billing_state_same_country->set_billing_postcode( 'ZX1 2PQ' ); + $separate_billing_state_same_country->set_shipping_address( '8901 Situation Court' ); + $separate_billing_state_same_country->set_shipping_city( 'Endtoendly' ); + $separate_billing_state_same_country->set_shipping_country( 'UK' ); + $separate_billing_state_same_country->set_shipping_state( 'Byteshire' ); + $separate_billing_state_same_country->set_shipping_postcode( 'RS1 2TU' ); + $separate_billing_state_same_country->save(); + return $separate_billing_state_same_country; + }; - $shipping_address_is_effectively_empty = new WC_Customer(); - $shipping_address_is_effectively_empty->set_email( 'wc-customer-test-04@test.user' ); - $shipping_address_is_effectively_empty->set_shipping_address( ' ' ); - $shipping_address_is_effectively_empty->save(); + $cust4_closure = function () { + $shipping_address_is_effectively_empty = new WC_Customer(); + $shipping_address_is_effectively_empty->set_email( 'wc-customer-test-04@test.user' ); + $shipping_address_is_effectively_empty->set_shipping_address( ' ' ); + $shipping_address_is_effectively_empty->save(); + return $shipping_address_is_effectively_empty; + }; return array( 'has_billing_address_only' => array( - $has_billing_address_only, + $cust1_closure, true, true, ), 'separate_billing_and_shipping_state_and_country' => array( - $separate_billing_and_shipping_state_and_country, + $cust2_closure, false, false, ), 'separate_billing_state_same_country' => array( - $separate_billing_state_same_country, + $cust3_closure, false, true, ), 'shipping_address_is_effectively_empty' => array( - $shipping_address_is_effectively_empty, + $cust4_closure, true, true, ), diff --git a/plugins/woocommerce/tests/php/includes/data-stores/class-wc-order-data-store-cpt-test.php b/plugins/woocommerce/tests/php/includes/data-stores/class-wc-order-data-store-cpt-test.php index 011a0bdf776..4fb6bd7132c 100644 --- a/plugins/woocommerce/tests/php/includes/data-stores/class-wc-order-data-store-cpt-test.php +++ b/plugins/woocommerce/tests/php/includes/data-stores/class-wc-order-data-store-cpt-test.php @@ -1,9 +1,40 @@ prev_cot_state = OrderUtil::custom_orders_table_usage_is_enabled(); + OrderHelper::toggle_cot( false ); + } + + /** + * Restore the COT state after the test. + * + * @return void + */ + public function tearDown(): void { + OrderHelper::toggle_cot( $this->prev_cot_state ); + parent::tearDown(); + } /** * Test that refund cache are invalidated correctly when refund is deleted. @@ -131,7 +162,7 @@ class WC_Order_Data_Store_CPT_Test extends WC_Unit_Test_Case { * Legacy getters and setters for props migrated from data stores should be set/reset properly. */ public function test_legacy_getters_setters() { - $order_id = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::create_complex_wp_post_order(); + $order_id = OrderHelper::create_complex_wp_post_order(); $order = wc_get_order( $order_id ); $bool_props = array( '_download_permissions_granted' => 'download_permissions_granted', diff --git a/plugins/woocommerce/tests/php/includes/gateways/paypal/class-wc-gateway-paypal-test.php b/plugins/woocommerce/tests/php/includes/gateways/paypal/class-wc-gateway-paypal-test.php index 7f319dc4181..4f26bdfad79 100644 --- a/plugins/woocommerce/tests/php/includes/gateways/paypal/class-wc-gateway-paypal-test.php +++ b/plugins/woocommerce/tests/php/includes/gateways/paypal/class-wc-gateway-paypal-test.php @@ -29,8 +29,8 @@ class WC_Gateway_Paypal_Test extends \WC_Unit_Test_Case { $order = WC_Helper_Order::create_order(); $order->save(); - update_post_meta( $order->get_id(), '_paypal_status', 'pending' ); - update_post_meta( $order->get_id(), '_transaction_id', $this->transaction_id_26960 ); + $order->update_meta_data( '_paypal_status', 'pending' ); + $order->set_transaction_id( $this->transaction_id_26960 ); $order->set_payment_method( 'paypal' ); $order->save(); @@ -56,8 +56,8 @@ class WC_Gateway_Paypal_Test extends \WC_Unit_Test_Case { $order = WC_Helper_Order::create_order(); $order->save(); - update_post_meta( $order->get_id(), '_paypal_status', 'pending' ); - update_post_meta( $order->get_id(), '_transaction_id', $this->transaction_id_26960 ); + $order->update_meta_data( '_paypal_status', 'pending' ); + $order->set_transaction_id( $this->transaction_id_26960 ); $order->set_payment_method( 'paypal' ); $order->save(); diff --git a/plugins/woocommerce/tests/php/includes/wc-core-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-core-functions-test.php index ae8d36ed897..2b08dd3917f 100644 --- a/plugins/woocommerce/tests/php/includes/wc-core-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-core-functions-test.php @@ -97,7 +97,7 @@ class WC_Core_Functions_Test extends \WC_Unit_Test_Case { ); $actual = wc_add_number_precision( $value, $round ); - $this->assertEquals( $expected, $actual ); + $this->assertFloatEquals( $expected, $actual ); remove_all_filters( 'wc_get_price_decimals' ); } diff --git a/plugins/woocommerce/tests/php/includes/wc-product-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-product-functions-test.php index 2a68d98f8c2..1dcba8d1356 100644 --- a/plugins/woocommerce/tests/php/includes/wc-product-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-product-functions-test.php @@ -128,4 +128,73 @@ class WC_Product_Functions_Tests extends \WC_Unit_Test_Case { remove_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' ); } } + + /** + * @testdox Test 'wc_get_price_including_tax'. + * + * @testWith [true, true] + * [true, false] + * [false, true] + * [false, false] + * + * @param bool $prices_include_tax Whether entered prices are inclusive of tax. + * @param bool $is_vat_exempt Whether the VAT is exempted for customer. + */ + public function test_wc_get_price_including_tax( $prices_include_tax, $is_vat_exempt ) { + // Set VAT exempt and Mock prices_include_tax. + WC()->customer->set_is_vat_exempt( $is_vat_exempt ); + FunctionsMockerHack::add_function_mocks( + array( + 'wc_prices_include_tax' => $prices_include_tax ? '__return_true' : '__return_false', + ) + ); + + // Add dummy tax-rate. + $tax_rate = array( + 'tax_rate_country' => '', + 'tax_rate_state' => '', + 'tax_rate' => '20.0000', + 'tax_rate_name' => 'VAT', + 'tax_rate_priority' => '1', + 'tax_rate_compound' => '0', + 'tax_rate_shipping' => '1', + 'tax_rate_order' => '1', + 'tax_rate_class' => '', + ); + $tax_rate_id = WC_Tax::_insert_tax_rate( $tax_rate ); + + $wc_tax_enabled = wc_tax_enabled(); + if ( ! $wc_tax_enabled ) { + update_option( 'woocommerce_calc_taxes', 'yes' ); + } + + $product = WC_Helper_Product::create_simple_product(); + $expected_prices = array( + '10' => array( 8.33, 10, 10, 12 ), + '50' => array( 41.67, 50, 50, 60 ), + '100' => array( 83.33, 100, 100, 120 ), + ); + + foreach ( $expected_prices as $price => $value ) { + $product->set_price( $price ); + $product->save(); + if ( $prices_include_tax && $is_vat_exempt ) { + $this->assertEquals( $value[0], wc_get_price_including_tax( $product ) ); + } elseif ( $prices_include_tax && ! $is_vat_exempt ) { + $this->assertEquals( $value[1], wc_get_price_including_tax( $product ) ); + } elseif ( ! $prices_include_tax && $is_vat_exempt ) { + $this->assertEquals( $value[2], wc_get_price_including_tax( $product ) ); + } elseif ( ! $prices_include_tax && ! $is_vat_exempt ) { + $this->assertEquals( $value[3], wc_get_price_including_tax( $product ) ); + } + } + + // Test clean up. + WC()->customer->set_is_vat_exempt( false ); + WC_Tax::_delete_tax_rate( $tax_rate_id ); + WC_Helper_Product::delete_product( $product->get_id() ); + if ( ! $wc_tax_enabled ) { + update_option( 'woocommerce_calc_taxes', 'no' ); + } + } } diff --git a/plugins/woocommerce/tests/php/src/Caching/OrderCacheTest.php b/plugins/woocommerce/tests/php/src/Caching/OrderCacheTest.php new file mode 100644 index 00000000000..cd165a223a3 --- /dev/null +++ b/plugins/woocommerce/tests/php/src/Caching/OrderCacheTest.php @@ -0,0 +1,51 @@ +sut = new OrderCache(); + } + + /** + * Test that the order cache does not cause duplicate data storage. + */ + public function test_meta_is_not_duplicated_when_cached() { + global $wpdb; + if ( ! OrderUtil::orders_cache_usage_is_enabled() ) { + // tip: add HPOS=1 env variable to run this test. + $this->markTestSkipped( 'HPOS based caching is not enabled.' ); + } + $order = WC_Helper_Order::create_order(); + $order->add_meta_data( 'test', 'test' ); + $order->save_meta_data(); + + $order = wc_get_order( $order->get_id() ); + $this->assertTrue( $this->sut->is_cached( $order->get_id() ), 'Order was not cached, but it was expected to be cached. Are you sure that HPOS based caching is enabled.' ); + + $order2 = wc_get_order( $order->get_id() ); + $order2->save_meta_data(); + + $orders_meta_table = OrdersTableDataStore::get_meta_table_name(); + $query = $wpdb->prepare( "SELECT id FROM $orders_meta_table WHERE order_id = %d AND meta_key = %s", $order->get_id(), 'test' ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $this->assertEquals( 1, count( $wpdb->get_col( $query ) ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Already prepared query. + } + +} diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php index af0543a3350..489ebb26744 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/DataSynchronizerTests.php @@ -412,4 +412,74 @@ class DataSynchronizerTests extends HposTestCase { $this->assertEquals( array( "Order {$order_1_id} doesn't exist in the backup table, thus it can't be deleted" ), $logger->warnings ); } + + /* + * When sync is enabled, changes to meta data should propagate from the Custom Orders Table to + * the post meta table whenever the order object's save_meta_data() method is called. + * + * @return void + */ + public function test_meta_data_changes_propagate_from_cot_to_cpt(): void { + // Sync enabled and COT authoritative. + update_option( $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, 'yes' ); + update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, 'yes' ); + + $order = OrderHelper::create_order(); + $order->add_meta_data( 'foo', 'bar' ); + $order->add_meta_data( 'bar', 'baz' ); + $order->save_meta_data(); + + $order->delete_meta_data( 'bar' ); + $order->save_meta_data(); + + update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, 'no' ); + $refreshed_order = wc_get_order( $order->get_id() ); + + $this->assertEquals( + $refreshed_order->get_meta( 'foo' ), + 'bar', + 'Meta data persisted via the HPOS datastore is accessible via the CPT datastore.' + ); + + $this->assertEquals( + $refreshed_order->get_meta( 'bar' ), + '', + 'Meta data deleted from the HPOS datastore should also be deleted from the CPT datastore.' + ); + } + + /** + * When sync is enabled, changes to meta data should propagate from the post meta table to + * the Custom Orders Table whenever the order object's save_meta_data() method is called. + * + * @return void + */ + public function test_meta_data_changes_propagate_from_cpt_to_cot(): void { + // Sync enabled and CPT authoritative. + update_option( $this->sut::ORDERS_DATA_SYNC_ENABLED_OPTION, 'yes' ); + update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, 'no' ); + + $order = OrderHelper::create_order(); + $order->add_meta_data( 'foo', 'bar' ); + $order->add_meta_data( 'bar', 'baz' ); + $order->save_meta_data(); + + $order->delete_meta_data( 'bar' ); + $order->save_meta_data(); + + update_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, 'yes' ); + $refreshed_order = wc_get_order( $order->get_id() ); + + $this->assertEquals( + $refreshed_order->get_meta( 'foo' ), + 'bar', + 'Meta data persisted via the CPT datastore is accessible via the HPOS datastore.' + ); + + $this->assertEquals( + $refreshed_order->get_meta( 'bar' ), + '', + 'Meta data deleted from the CPT datastore should also be deleted from the HPOS datastore.' + ); + } } diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index 4bbff934e0e..31fea37495f 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -7,6 +7,7 @@ use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableQuery; use Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper; use Automattic\WooCommerce\RestApi\UnitTests\HPOSToggleTrait; +use Automattic\WooCommerce\Utilities\OrderUtil; require_once __DIR__ . '/../../../../helpers/HPOSToggleTrait.php'; @@ -39,6 +40,12 @@ class OrdersTableDataStoreTests extends HposTestCase { */ private $cpt_data_store; + /** + * Whether COT was enabled before the test. + * @var bool + */ + private $cot_state; + /** * Initializes system under test. */ @@ -50,11 +57,12 @@ class OrdersTableDataStoreTests extends HposTestCase { parent::setUp(); // Remove the Test Suite’s use of temporary tables https://wordpress.stackexchange.com/a/220308. $this->setup_cot(); + $this->cot_state = OrderUtil::custom_orders_table_usage_is_enabled(); $this->toggle_cot_feature_and_usage( false ); $container = wc_get_container(); $container->reset_all_resolved(); - $this->sut = $container->get( OrdersTableDataStore::class ); - $this->migrator = $container->get( PostsToOrdersMigrationController::class ); + $this->sut = wc_get_container()->get( OrdersTableDataStore::class ); + $this->migrator = wc_get_container()->get( PostsToOrdersMigrationController::class ); $this->cpt_data_store = new WC_Order_Data_Store_CPT(); } @@ -64,6 +72,7 @@ class OrdersTableDataStoreTests extends HposTestCase { public function tearDown(): void { //phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set -- We need to change the timezone to test the date sync fields. update_option( 'timezone_string', $this->original_time_zone ); + $this->toggle_cot( $this->cot_state ); $this->clean_up_cot_setup(); parent::tearDown(); } @@ -210,6 +219,7 @@ class OrdersTableDataStoreTests extends HposTestCase { wp_cache_flush(); $order = new WC_Order(); $order->set_id( $post_order->get_id() ); + $this->toggle_cot( true ); $this->switch_data_store( $order, $this->sut ); $this->sut->read( $order ); @@ -244,6 +254,7 @@ class OrdersTableDataStoreTests extends HposTestCase { foreach ( $datastore_updates as $prop => $value ) { $this->assertEquals( $value, $this->sut->{"get_$prop"}( $order ), "Unable to match prop $prop" ); } + $this->toggle_cot( false ); } /** @@ -1772,6 +1783,7 @@ class OrdersTableDataStoreTests extends HposTestCase { * Ideally, this should be possible only from getters and setters for objects, but for backward compatibility, earlier ways are also supported. */ public function test_internal_ds_getters_and_setters() { + $this->toggle_cot( true ); $props_to_test = array( '_download_permissions_granted', '_recorded_sales', @@ -1818,6 +1830,7 @@ class OrdersTableDataStoreTests extends HposTestCase { $order->save(); } $this->assert_get_prop_via_ds_object_and_metadata( $props_to_test, $order, false, $ds_getter_setter_names ); + $this->toggle_cot( false ); } /** @@ -1860,7 +1873,8 @@ class OrdersTableDataStoreTests extends HposTestCase { * @testDox Legacy getters and setters for props migrated from data stores should be set/reset properly. */ public function test_legacy_getters_setters() { - $order_id = \Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper::create_complex_wp_post_order(); + $this->toggle_cot( true ); + $order_id = OrderHelper::create_complex_data_store_order( $this->sut ); $order = wc_get_order( $order_id ); $this->switch_data_store( $order, $this->sut ); $bool_props = array( @@ -1892,7 +1906,7 @@ class OrdersTableDataStoreTests extends HposTestCase { $this->assert_props_value_via_data_store( $order, $bool_props, true ); $this->assert_props_value_via_order_object( $order, $bool_props, true ); - + $this->toggle_cot( false ); } /** @@ -1989,8 +2003,9 @@ class OrdersTableDataStoreTests extends HposTestCase { */ public function test_read_multiple_dont_sync_again_for_same_order() { $this->toggle_cot_feature_and_usage( true ); - $this->enable_cot_sync(); $order = $this->create_complex_cot_order(); + $this->sut->backfill_post_record( $order ); + $this->enable_cot_sync(); $order_id = $order->get_id(); @@ -2004,6 +2019,7 @@ class OrdersTableDataStoreTests extends HposTestCase { $this->assertTrue( $should_sync_callable->call( $this->sut, $order ) ); $this->sut->read_multiple( $orders ); $this->assertFalse( $should_sync_callable->call( $this->sut, $order ) ); + $this->toggle_cot( false ); } /** diff --git a/plugins/woocommerce/woocommerce.php b/plugins/woocommerce/woocommerce.php index 5fb548b0296..d900b75b4ac 100644 --- a/plugins/woocommerce/woocommerce.php +++ b/plugins/woocommerce/woocommerce.php @@ -3,13 +3,13 @@ * Plugin Name: WooCommerce * Plugin URI: https://woocommerce.com/ * Description: An eCommerce toolkit that helps you sell anything. Beautifully. - * Version: 7.6.0-dev + * Version: 7.7.0-dev * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woocommerce * Domain Path: /i18n/languages/ * Requires at least: 5.9 - * Requires PHP: 7.2 + * Requires PHP: 7.3 * * @package WooCommerce */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9d1ba4ea06..2fee5e7396c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,77 +9,77 @@ importers: .: specifiers: '@babel/core': 7.12.9 - '@babel/preset-env': ^7.16.11 - '@babel/runtime': ^7.17.2 - '@types/node': 14.14.33 + '@babel/preset-env': ^7.20.2 + '@babel/runtime': ^7.21.0 + '@types/node': ^16.18.18 '@woocommerce/eslint-plugin': workspace:* - '@wordpress/babel-plugin-import-jsx-pragma': ^3.1.0 - '@wordpress/babel-preset-default': ^6.4.1 + '@wordpress/babel-plugin-import-jsx-pragma': ^3.2.0 + '@wordpress/babel-preset-default': ^6.17.0 '@wordpress/data': wp-6.0 '@wordpress/eslint-plugin': ^11.1.0 - '@wordpress/prettier-config': ^1.1.1 - babel-loader: ^8.2.3 + '@wordpress/prettier-config': ^1.4.0 + babel-loader: ^8.3.0 chalk: ^4.1.2 copy-webpack-plugin: ^10.2.4 - core-js: ^3.21.1 - css-loader: ^6.7.0 - glob: ^7.2.0 + core-js: ^3.29.1 + css-loader: ^6.7.3 + glob: ^7.2.3 husky: ^7.0.4 - jest: ^27.3.1 - lint-staged: ^12.3.7 + jest: ^27.5.1 + lint-staged: ^12.5.0 lodash: ^4.17.21 mkdirp: ^1.0.4 - moment: ^2.29.1 + moment: ^2.29.4 node-stream-zip: ^1.15.0 postcss-loader: ^4.3.0 - prettier: npm:wp-prettier@^2.2.1-beta-1 - regenerator-runtime: ^0.13.9 + prettier: npm:wp-prettier@^2.6.2 + regenerator-runtime: ^0.13.11 request: ^2.88.2 - sass: ^1.49.9 - sass-loader: ^10.2.1 + sass: ^1.59.3 + sass-loader: ^10.4.1 syncpack: ^9.8.4 - turbo: ^1.8.3 - typescript: ^4.8.3 + turbo: ^1.8.5 + typescript: ^4.9.5 url-loader: ^1.1.2 - webpack: ^5.70.0 + webpack: ^5.76.2 wp-textdomain: 1.0.1 dependencies: '@babel/core': 7.12.9 - '@wordpress/babel-plugin-import-jsx-pragma': 3.1.0_@babel+core@7.12.9 - '@wordpress/babel-preset-default': 6.4.1 + '@wordpress/babel-plugin-import-jsx-pragma': 3.2.0_@babel+core@7.12.9 + '@wordpress/babel-preset-default': 6.17.0 lodash: 4.17.21 wp-textdomain: 1.0.1 devDependencies: - '@babel/preset-env': 7.16.11_@babel+core@7.12.9 - '@babel/runtime': 7.17.7 - '@types/node': 14.14.33 + '@babel/preset-env': 7.20.2_@babel+core@7.12.9 + '@babel/runtime': 7.21.0 + '@types/node': 16.18.18 '@woocommerce/eslint-plugin': link:packages/js/eslint-plugin '@wordpress/data': 6.6.1_react@17.0.2 - '@wordpress/eslint-plugin': 11.1.0_sxmqrsrdaatoogkbdrkrjpdxyi - '@wordpress/prettier-config': 1.1.1 - babel-loader: 8.2.3_2p3p4wasefxeg63hu27rmsqfnq + '@wordpress/eslint-plugin': 11.1.0_vahpu6tlfovxovqgmr2jx5nrui + '@wordpress/prettier-config': 1.4.0_wp-prettier@2.6.2 + babel-loader: 8.3.0_khr5lu7a3zaopuzq65kuhj7rva chalk: 4.1.2 - copy-webpack-plugin: 10.2.4_webpack@5.70.0 - core-js: 3.21.1 - css-loader: 6.7.1_webpack@5.70.0 - glob: 7.2.0 + copy-webpack-plugin: 10.2.4_webpack@5.76.3 + core-js: 3.29.1 + css-loader: 6.7.3_webpack@5.76.3 + glob: 7.2.3 husky: 7.0.4 - jest: 27.3.1 - lint-staged: 12.3.7 + jest: 27.5.1 + lint-staged: 12.5.0 mkdirp: 1.0.4 - moment: 2.29.1 + moment: 2.29.4 node-stream-zip: 1.15.0 - postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 + postcss-loader: 4.3.0_twwyhqqim6liv4fz2ggv7g4m5a prettier: /wp-prettier/2.6.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 request: 2.88.2 - sass: 1.49.9 - sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 + sass: 1.59.3 + sass-loader: 10.4.1_sass@1.59.3+webpack@5.76.3 syncpack: 9.8.4 - turbo: 1.8.3 - typescript: 4.8.4 - url-loader: 1.1.2_webpack@5.70.0 - webpack: 5.70.0 + turbo: 1.8.5 + typescript: 4.9.5 + url-loader: 1.1.2_webpack@5.76.3 + webpack: 5.76.3 packages/js/admin-e2e-tests: specifiers: @@ -102,7 +102,7 @@ importers: puppeteer: ^2.0.0 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@jest/globals': 27.5.1 '@types/jest': 27.4.1 @@ -115,16 +115,16 @@ importers: '@types/config': 0.0.41 '@types/expect-puppeteer': 4.4.7 '@types/puppeteer': 5.4.5 - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q '@woocommerce/api': link:../api '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 - jest-mock-extended: 1.0.18_l3u6ka6x73lqye3ea4q6yelf2e + jest-mock-extended: 1.0.18_cnngzrja2umb46xxazlucyx2qu rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/admin-layout: specifiers: @@ -136,6 +136,7 @@ importers: '@wordpress/browserslist-config': wp-6.0 '@wordpress/components': wp-6.0 '@wordpress/element': wp-6.0 + concurrently: ^7.0.0 css-loader: ^3.6.0 eslint: ^8.32.0 jest: ^27.5.1 @@ -145,12 +146,12 @@ importers: react-dom: ^17.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: '@woocommerce/components': link:../components - '@wordpress/components': 19.8.5_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.8.5_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/element': 4.4.1 devDependencies: '@types/react': 17.0.50 @@ -158,16 +159,17 @@ importers: '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/internal-style-build': link:../internal-style-build '@wordpress/browserslist-config': 4.1.3 + concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 - postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 + postcss-loader: 4.3.0_te76w36hqjt7wyjpohjlseuh2q react: 17.0.2 react-dom: 17.0.2_react@17.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_ov7a56uwol5kdfttgshloa6ls4 + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -175,7 +177,7 @@ importers: specifiers: '@types/create-hmac': 1.1.0 '@types/jest': ^27.4.1 - '@types/node': 13.13.5 + '@types/node': ^16.18.18 '@typescript-eslint/eslint-plugin': ^5.54.0 '@typescript-eslint/parser': ^5.54.0 '@woocommerce/eslint-plugin': workspace:* @@ -186,7 +188,7 @@ importers: jest: ^27 oauth-1.0a: 2.2.6 ts-jest: ^27 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: axios: 0.24.0 create-hmac: 1.1.7 @@ -194,15 +196,15 @@ importers: devDependencies: '@types/create-hmac': 1.1.0 '@types/jest': 27.4.1 - '@types/node': 13.13.5 - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@types/node': 16.18.18 + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@woocommerce/eslint-plugin': link:../eslint-plugin axios-mock-adapter: 1.20.0_axios@0.24.0 eslint: 8.32.0 jest: 27.5.1 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_kf3ytuxcuctivbjasfbyoij3w4 + typescript: 4.9.5 packages/js/api-core-tests: specifiers: @@ -271,6 +273,7 @@ importers: '@woocommerce/data': workspace:* '@woocommerce/date': workspace:* '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/internal-style-build': workspace:* '@woocommerce/navigation': workspace:* '@wordpress/a11y': wp-6.0 @@ -331,7 +334,7 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 uuid: ^8.3.0 webpack: ^5.70.0 webpack-cli: ^3.3.12 @@ -401,15 +404,15 @@ importers: '@babel/runtime': 7.17.7 '@storybook/addon-actions': 6.4.19_hiunvzosbwliizyirxfy6hjyim '@storybook/addon-console': 1.2.3_kthckm6zfmobggl2ahqbjihlce - '@storybook/addon-controls': 6.4.19_wl7ffu5ts6ayqm24qlkw7h6j4e - '@storybook/addon-docs': 6.4.19_td5ldnqdrdzplltfsjeiin6b2q + '@storybook/addon-controls': 6.4.19_3a6aovxwhedlmqwktyt45v2x3e + '@storybook/addon-docs': 6.4.19_7blblzzrctoqfdyapozrjiyhoa '@storybook/addon-knobs': 6.4.0_nu75ilgc3qugomjhuwv2hk42im '@storybook/addon-links': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim '@storybook/core-events': 6.4.19 - '@storybook/react': 6.4.19_cqdgeqmmrux6joug3kc73q4l6m + '@storybook/react': 6.4.19_whi4aahq4yrydcatxpponihg2i '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@testing-library/dom': 8.11.3 '@testing-library/jest-dom': 5.16.2 @@ -425,9 +428,10 @@ importers: '@types/wordpress__media-utils': 3.0.0_sfoxds7t5ydpegc3knd667wn6m '@types/wordpress__viewport': 2.5.4 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests '@woocommerce/internal-style-build': link:../internal-style-build '@wordpress/browserslist-config': 4.1.3 - '@wordpress/scripts': 12.6.1_h4xx42qb2l7ylq2u26dkj2fbyi + '@wordpress/scripts': 12.6.1_c6qmhwnhjoryl2mlu436oznfja concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.32.0 @@ -438,8 +442,8 @@ importers: react: 17.0.2 rimraf: 3.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 uuid: 8.3.2 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -451,46 +455,54 @@ importers: specifiers: '@babel/core': ^7.17.5 '@types/jest': ^27.4.1 + '@types/node': ^16.18.18 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* browser-filesaver: ^1.1.1 + concurrently: ^7.0.0 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 moment: ^2.29.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: + '@types/node': 16.18.18 browser-filesaver: 1.1.1 moment: 2.29.1 devDependencies: '@babel/core': 7.17.8 '@types/jest': 27.4.1 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/currency: specifiers: '@babel/core': ^7.17.5 '@types/jest': ^27.4.1 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/number': workspace:* '@wordpress/deprecated': wp-6.0 '@wordpress/element': wp-6.0 '@wordpress/hooks': wp-6.0 '@wordpress/html-entities': wp-6.0 '@wordpress/i18n': wp-6.0 + concurrently: ^7.0.0 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@woocommerce/number': link:../number '@wordpress/deprecated': 3.6.1 @@ -502,12 +514,14 @@ importers: '@babel/core': 7.17.8 '@types/jest': 27.4.1 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/customer-effort-score: specifiers: @@ -521,8 +535,10 @@ importers: '@woocommerce/data': workspace:* '@woocommerce/eslint-plugin': workspace:* '@woocommerce/experimental': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/internal-style-build': workspace:* '@woocommerce/navigation': workspace:* + '@woocommerce/tracks': workspace:* '@wordpress/browserslist-config': wp-6.0 '@wordpress/components': wp-6.0 '@wordpress/compose': wp-6.0 @@ -545,7 +561,7 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: @@ -571,8 +587,10 @@ importers: '@types/wordpress__data': 6.0.0 '@woocommerce/data': link:../data '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests '@woocommerce/internal-style-build': link:../internal-style-build '@woocommerce/navigation': link:../navigation + '@woocommerce/tracks': link:../tracks '@wordpress/browserslist-config': 4.1.3 concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 @@ -583,8 +601,8 @@ importers: postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 rimraf: 3.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -599,6 +617,7 @@ importers: '@types/jest': ^27.4.1 '@types/lodash': ^4.14.182 '@types/md5': ^2.3.2 + '@types/node': ^16.18.18 '@types/qs': ^6.9.7 '@types/react': ^17.0.2 '@types/wordpress__compose': ^4.0.1 @@ -607,7 +626,9 @@ importers: '@types/wordpress__data-controls': ^2.2.0 '@woocommerce/date': workspace:* '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/navigation': workspace:* + '@woocommerce/tracks': workspace:* '@wordpress/api-fetch': wp-6.0 '@wordpress/compose': wp-6.0 '@wordpress/core-data': wp-6.0 @@ -618,6 +639,7 @@ importers: '@wordpress/hooks': wp-6.0 '@wordpress/i18n': wp-6.0 '@wordpress/url': wp-6.0 + concurrently: ^7.0.0 dompurify: ^2.3.6 eslint: ^8.32.0 jest: ^27.5.1 @@ -631,10 +653,11 @@ importers: rememo: ^4.0.0 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@woocommerce/date': link:../date '@woocommerce/navigation': link:../navigation + '@woocommerce/tracks': link:../tracks '@wordpress/api-fetch': 6.3.1 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/core-data': 4.4.5_react@17.0.2 @@ -662,6 +685,7 @@ importers: '@types/jest': 27.4.1 '@types/lodash': 4.14.182 '@types/md5': 2.3.2 + '@types/node': 16.18.18 '@types/qs': 6.9.7 '@types/react': 17.0.50 '@types/wordpress__compose': 4.0.1 @@ -669,13 +693,15 @@ importers: '@types/wordpress__data': 6.0.0 '@types/wordpress__data-controls': 2.2.0 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 redux: 4.1.2 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/date: specifiers: @@ -683,10 +709,13 @@ importers: '@types/d3-time-format': ^2.3.0 '@types/jest': ^27.4.1 '@types/lodash': ^4.14.182 + '@types/node': ^16.18.18 '@types/qs': ^6.9.7 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@wordpress/date': wp-6.0 '@wordpress/i18n': wp-6.0 + concurrently: ^7.0.0 d3-time-format: ^2.3.0 eslint: ^8.32.0 jest: ^27.5.1 @@ -697,7 +726,7 @@ importers: qs: ^6.10.3 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@types/d3-time-format': 2.3.1 '@wordpress/date': 4.6.1 @@ -710,15 +739,18 @@ importers: '@babel/core': 7.17.8 '@types/jest': 27.4.1 '@types/lodash': 4.14.182 + '@types/node': 16.18.18 '@types/qs': 6.9.7 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 d3-time-format: 2.3.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/dependency-extraction-webpack-plugin: specifiers: @@ -730,7 +762,7 @@ importers: jest-cli: ^27.5.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: @@ -742,8 +774,8 @@ importers: jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -790,7 +822,7 @@ importers: '@wordpress/babel-preset-default': 3.0.2_@babel+core@7.12.9 '@wordpress/browserslist-config': 4.1.3 eslint: 8.32.0 - eslint-plugin-jest: 23.20.0_yygwinqv3a2io74xmwofqb7uka + eslint-plugin-jest: 23.20.0_et5x32uxl7z5ldub3ye5rhlyqm packages/js/e2e-environment: specifiers: @@ -904,15 +936,15 @@ importers: '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.12.9 '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/internal-e2e-builds': link:../internal-e2e-builds '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2_@babel+core@7.12.9 '@wordpress/browserslist-config': 4.1.3 eslint: 8.32.0 - eslint-plugin-jest: 23.20.0_yygwinqv3a2io74xmwofqb7uka + eslint-plugin-jest: 23.20.0_et5x32uxl7z5ldub3ye5rhlyqm packages/js/eslint-plugin: specifiers: @@ -927,21 +959,21 @@ importers: jest-cli: ^27.5.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka - '@wordpress/eslint-plugin': 14.1.0_gfyzvuspv2bauiwltqdx5274hy + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm + '@wordpress/eslint-plugin': 14.1.0_ak7jos5tfhufwkd24zstbgydxq eslint-plugin-react-hooks: 4.6.0_eslint@8.32.0 - eslint-plugin-testing-library: 5.10.2_yygwinqv3a2io74xmwofqb7uka + eslint-plugin-testing-library: 5.10.2_et5x32uxl7z5ldub3ye5rhlyqm devDependencies: '@babel/core': 7.17.8 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 packages/js/experimental: specifiers: @@ -960,6 +992,7 @@ importers: '@types/wordpress__components': ^19.10.3 '@woocommerce/components': workspace:* '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/internal-style-build': workspace:* '@wordpress/browserslist-config': wp-6.0 '@wordpress/components': ^19.5.0 @@ -985,7 +1018,7 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: @@ -1008,7 +1041,7 @@ importers: '@babel/runtime': 7.17.7 '@storybook/addon-actions': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-console': 1.2.3_kthckm6zfmobggl2ahqbjihlce - '@storybook/react': 6.4.19_pjugpuchrb7ea5kuxwnxihy6zq + '@storybook/react': 6.4.19_z2hxmhm42crgarow2l57qwcq74 '@testing-library/dom': 8.11.3 '@testing-library/react': 12.1.4_sfoxds7t5ydpegc3knd667wn6m '@testing-library/user-event': 13.5.0_gzufz4q333be4gqfrvipwvqt6a @@ -1018,6 +1051,7 @@ importers: '@types/testing-library__jest-dom': 5.14.3 '@types/wordpress__components': 19.10.5_sfoxds7t5ydpegc3knd667wn6m '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests '@woocommerce/internal-style-build': link:../internal-style-build '@wordpress/browserslist-config': 4.1.3 concurrently: 7.0.0 @@ -1029,8 +1063,8 @@ importers: postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 rimraf: 3.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -1041,12 +1075,14 @@ importers: '@babel/core': ^7.17.5 '@types/cookie': ^0.4.1 '@types/jest': ^27.4.1 - '@types/node': ^17.0.21 + '@types/node': ^16.18.18 '@types/qs': ^6.9.7 '@types/react': ^17.0.2 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@wordpress/api-fetch': wp-6.0 '@wordpress/hooks': wp-6.0 + concurrently: ^7.0.0 cookie: ^0.4.2 eslint: ^8.32.0 jest: ^27.5.1 @@ -1054,7 +1090,7 @@ importers: qs: ^6.10.3 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@automattic/explat-client': 0.0.3 '@automattic/explat-client-react-helpers': 0.0.4 @@ -1066,16 +1102,18 @@ importers: '@babel/core': 7.17.8 '@types/cookie': 0.4.1 '@types/jest': 27.4.1 - '@types/node': 17.0.21 + '@types/node': 16.18.18 '@types/qs': 6.9.7 '@types/react': 17.0.50 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/extend-cart-checkout-block: specifiers: {} @@ -1107,6 +1145,7 @@ importers: '@wordpress/data': wp-6.0 '@wordpress/i18n': wp-6.0 '@wordpress/jest-console': ^5.0.1 + babel-jest: ^27.5.1 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 @@ -1114,7 +1153,7 @@ importers: resize-observer-polyfill: 1.5.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@testing-library/jest-dom': 5.16.2 '@testing-library/react': 12.1.4_sfoxds7t5ydpegc3knd667wn6m @@ -1125,13 +1164,14 @@ importers: devDependencies: '@babel/core': 7.17.8 '@woocommerce/eslint-plugin': link:../eslint-plugin + babel-jest: 27.5.1_@babel+core@7.17.8 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 resize-observer-polyfill: 1.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_maf5odyzjfujvun24pqrldsxpy + typescript: 4.9.5 packages/js/internal-style-build: specifiers: @@ -1149,17 +1189,17 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-remove-empty-scripts: ^0.7.3 webpack-rtl-plugin: ^2.0.0 dependencies: '@automattic/color-studio': 2.5.0 '@wordpress/base-styles': 4.3.1 - '@wordpress/postcss-plugins-preset': 3.6.1_postcss@8.4.12 + '@wordpress/postcss-plugins-preset': 3.6.1_postcss@8.4.21 css-loader: 3.6.0_webpack@5.70.0 mini-css-extract-plugin: 2.6.0_webpack@5.70.0 - postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 + postcss-loader: 4.3.0_te76w36hqjt7wyjpohjlseuh2q sass-loader: 10.2.1_webpack@5.70.0 webpack-remove-empty-scripts: 0.7.3_webpack@5.70.0 webpack-rtl-plugin: 2.0.0 @@ -1170,8 +1210,8 @@ importers: jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 webpack: 5.70.0 packages/js/navigation: @@ -1181,6 +1221,7 @@ importers: '@types/jest': ^27.4.1 '@types/qs': ^6.9.7 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@wordpress/api-fetch': wp-6.0 '@wordpress/components': wp-6.0 '@wordpress/compose': wp-6.0 @@ -1189,6 +1230,7 @@ importers: '@wordpress/i18n': wp-6.0 '@wordpress/notices': wp-6.0 '@wordpress/url': wp-6.0 + concurrently: ^7.0.0 eslint: ^8.32.0 history: ^5.3.0 jest: ^27.5.1 @@ -1198,7 +1240,7 @@ importers: react-router-dom: ^6.3.0 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@wordpress/api-fetch': 6.3.1 '@wordpress/components': 19.8.5_rysvg2ttzfworbkpz2ftlx73d4 @@ -1218,12 +1260,14 @@ importers: '@types/jest': 27.4.1 '@types/qs': 6.9.7 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/notices: specifiers: @@ -1236,6 +1280,7 @@ importers: '@wordpress/a11y': wp-6.0 '@wordpress/data': wp-6.0 '@wordpress/notices': wp-6.0 + concurrently: ^7.0.0 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 @@ -1245,7 +1290,7 @@ importers: redux: ^4.2.0 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@wordpress/a11y': 3.6.1 '@wordpress/data': 6.6.1_react@17.0.2 @@ -1260,13 +1305,14 @@ importers: '@types/wordpress__data': 6.0.0 '@types/wordpress__notices': 3.5.0 '@woocommerce/eslint-plugin': link:../eslint-plugin + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 redux: 4.2.0 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 packages/js/number: specifiers: @@ -1275,13 +1321,15 @@ importers: '@types/jest': ^27.4.1 '@types/lodash': ^4.14.184 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* + concurrently: ^7.0.0 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 locutus: ^2.0.16 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: locutus: 2.0.16 devDependencies: @@ -1290,12 +1338,14 @@ importers: '@types/jest': 27.4.1 '@types/lodash': 4.14.184 '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_wfmhell6c5i72vvtgtvpmkkb6i - typescript: 4.8.4 + ts-jest: 27.1.3_z76afj7v5k462eeambgjfpsr3e + typescript: 4.9.5 packages/js/onboarding: specifiers: @@ -1324,7 +1374,7 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: @@ -1336,7 +1386,6 @@ importers: '@wordpress/components': 19.8.5_rysvg2ttzfworbkpz2ftlx73d4 '@wordpress/element': 4.4.1 '@wordpress/i18n': 4.6.1 - concurrently: 7.0.0 gridicons: 3.4.0_react@17.0.2 devDependencies: '@babel/core': 7.17.8 @@ -1345,6 +1394,7 @@ importers: '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/internal-style-build': link:../internal-style-build '@wordpress/browserslist-config': 4.1.3 + concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.32.0 jest: 27.5.1 @@ -1353,17 +1403,24 @@ importers: postcss-loader: 4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4 rimraf: 3.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 packages/js/product-editor: specifiers: '@automattic/interpolate-components': ^1.2.0 + '@babel/core': ^7.21.3 + '@babel/runtime': ^7.17.2 + '@testing-library/jest-dom': ^5.16.2 '@testing-library/react': ^12.1.3 + '@testing-library/react-hooks': ^8.0.1 + '@testing-library/user-event': ^13.5.0 + '@types/jest': ^27.4.1 '@types/lodash': ^4.14.179 '@types/react': ^17.0.2 + '@types/testing-library__jest-dom': ^5.14.3 '@types/wordpress__block-editor': ^7.0.0 '@types/wordpress__block-library': ^2.6.1 '@types/wordpress__blocks': ^11.0.7 @@ -1372,13 +1429,17 @@ importers: '@types/wordpress__data': ^6.0.2 '@types/wordpress__editor': ^13.0.0 '@types/wordpress__media-utils': ^3.0.0 + '@types/wordpress__plugins': ^3.0.0 + '@woocommerce/admin-layout': workspace:* '@woocommerce/components': workspace:* '@woocommerce/currency': workspace:* '@woocommerce/data': workspace:^4.1.0 '@woocommerce/eslint-plugin': workspace:* + '@woocommerce/internal-js-tests': workspace:* '@woocommerce/internal-style-build': workspace:* '@woocommerce/navigation': workspace:^8.1.0 '@woocommerce/number': workspace:* + '@woocommerce/settings': ^1.0.0 '@woocommerce/tracks': workspace:^1.3.0 '@wordpress/block-editor': ^9.8.0 '@wordpress/blocks': ^12.3.0 @@ -1395,6 +1456,7 @@ importers: '@wordpress/interface': wp-6.0 '@wordpress/keyboard-shortcuts': wp-6.0 '@wordpress/media-utils': wp-6.0 + '@wordpress/plugins': wp-6.0 '@wordpress/url': wp-6.0 classnames: ^2.3.1 concurrently: ^7.0.0 @@ -1412,40 +1474,50 @@ importers: rimraf: ^3.0.2 sass-loader: ^10.2.1 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 webpack-cli: ^3.3.12 dependencies: '@automattic/interpolate-components': 1.2.1_pxzommwrsowkd4kgag6q3sluym '@types/lodash': 4.14.184 '@types/wordpress__blocks': 11.0.7_sfoxds7t5ydpegc3knd667wn6m + '@woocommerce/admin-layout': link:../admin-layout '@woocommerce/components': link:../components '@woocommerce/currency': link:../currency '@woocommerce/data': link:../data '@woocommerce/navigation': link:../navigation '@woocommerce/number': link:../number + '@woocommerce/settings': 1.0.0 '@woocommerce/tracks': link:../tracks - '@wordpress/block-editor': 9.8.0_vcke6catv4iqpjdw24uwvlzyyi + '@wordpress/block-editor': 9.8.0_mtk4wljkd5jimhszw4p7nnxuzm '@wordpress/blocks': 12.5.0_react@17.0.2 - '@wordpress/components': 19.8.5_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.8.5_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/core-data': 4.4.5_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 - '@wordpress/editor': 12.5.10_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/editor': 12.5.10_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/element': 4.4.1 '@wordpress/html-entities': 3.6.1 '@wordpress/i18n': 4.6.1 '@wordpress/icons': 8.2.3 - '@wordpress/interface': 4.5.6_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/interface': 4.5.6_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/keyboard-shortcuts': 3.4.1_react@17.0.2 '@wordpress/media-utils': 3.4.1 + '@wordpress/plugins': 4.4.3_react@17.0.2 '@wordpress/url': 3.7.1 classnames: 2.3.1 lodash: 4.17.21 react-router-dom: 6.3.0_sfoxds7t5ydpegc3knd667wn6m devDependencies: + '@babel/core': 7.21.3 + '@babel/runtime': 7.19.0 + '@testing-library/jest-dom': 5.16.2 '@testing-library/react': 12.1.4_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/react-hooks': 8.0.1_hiunvzosbwliizyirxfy6hjyim + '@testing-library/user-event': 13.5.0_gzufz4q333be4gqfrvipwvqt6a + '@types/jest': 27.4.1 '@types/react': 17.0.50 + '@types/testing-library__jest-dom': 5.14.3 '@types/wordpress__block-editor': 7.0.0_sfoxds7t5ydpegc3knd667wn6m '@types/wordpress__block-library': 2.6.1 '@types/wordpress__components': 19.10.5_sfoxds7t5ydpegc3knd667wn6m @@ -1453,7 +1525,9 @@ importers: '@types/wordpress__data': 6.0.2 '@types/wordpress__editor': 13.0.0_sfoxds7t5ydpegc3knd667wn6m '@types/wordpress__media-utils': 3.0.0_sfoxds7t5ydpegc3knd667wn6m + '@types/wordpress__plugins': 3.0.0_sfoxds7t5ydpegc3knd667wn6m '@woocommerce/eslint-plugin': link:../eslint-plugin + '@woocommerce/internal-js-tests': link:../internal-js-tests '@woocommerce/internal-style-build': link:../internal-style-build '@wordpress/browserslist-config': 4.1.3 concurrently: 7.0.0 @@ -1468,8 +1542,8 @@ importers: react-hooks^8.0.1: link:@testing-library/react-hooks^8.0.1 rimraf: 3.0.2 sass-loader: 10.2.1_webpack@5.70.0 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_kf3ytuxcuctivbjasfbyoij3w4 + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -1478,25 +1552,27 @@ importers: '@babel/core': ^7.17.5 '@types/debug': ^4.1.7 '@woocommerce/eslint-plugin': workspace:* + concurrently: ^7.0.0 debug: ^4.3.3 eslint: ^8.32.0 jest: ^27.5.1 jest-cli: ^27.5.1 rimraf: ^3.0.2 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: debug: 4.3.3 devDependencies: '@babel/core': 7.17.8 '@types/debug': 4.1.7 '@woocommerce/eslint-plugin': link:../eslint-plugin + concurrently: 7.0.0 eslint: 8.32.0 jest: 27.5.1 jest-cli: 27.5.1 rimraf: 3.0.2 - ts-jest: 27.1.3_77oryishcckaigojnzbhxsiona - typescript: 4.8.4 + ts-jest: 27.1.3_4y4px6we76w7ab6r3dbcniovya + typescript: 4.9.5 plugins/woocommerce: specifiers: @@ -1540,7 +1616,7 @@ importers: mocha: 7.2.0 prettier: npm:wp-prettier@2.0.5 stylelint: ^13.8.0 - typescript: ^4.8.3 + typescript: ^4.9.5 uuid: ^8.3.2 webpack: 5.70.0 webpack-cli: 3.3.12 @@ -1553,9 +1629,9 @@ importers: '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@babel/register': 7.12.1_@babel+core@7.12.9 '@playwright/test': 1.30.0 - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/experimental-utils': 5.43.0_yygwinqv3a2io74xmwofqb7uka - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/experimental-utils': 5.43.0_et5x32uxl7z5ldub3ye5rhlyqm + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@woocommerce/admin-e2e-tests': link:../../packages/js/admin-e2e-tests '@woocommerce/api': link:../../packages/js/api '@woocommerce/api-core-tests': link:../../packages/js/api-core-tests @@ -1581,13 +1657,13 @@ importers: dotenv: 10.0.0 eslint: 8.32.0 eslint-config-wpcalypso: 5.0.0_3reg6c535tepz5eatsxybh5pja - eslint-plugin-jest: 23.20.0_yygwinqv3a2io74xmwofqb7uka + eslint-plugin-jest: 23.20.0_et5x32uxl7z5ldub3ye5rhlyqm istanbul: 1.0.0-alpha.2 jest: 27.5.1 mocha: 7.2.0 prettier: /wp-prettier/2.0.5 stylelint: 13.13.1 - typescript: 4.8.4 + typescript: 4.9.5 uuid: 8.3.2 webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 @@ -1762,7 +1838,7 @@ importers: style-loader: ^0.23.1 stylelint: ^14.5.3 ts-jest: ^27.1.3 - typescript: ^4.8.3 + typescript: ^4.9.5 url-loader: ^1.1.2 webpack: ^5.70.0 webpack-bundle-analyzer: ^3.9.0 @@ -1835,7 +1911,7 @@ importers: '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@babel/runtime': 7.17.7 '@octokit/core': 3.5.1 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_vvsky5staxf7riqd5ia3sjvzsm + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_kgzwhhiezcyg2m3alqq7chac3a '@testing-library/dom': 8.11.3 '@testing-library/jest-dom': 5.16.2 '@testing-library/react': 12.1.4_sfoxds7t5ydpegc3knd667wn6m @@ -1860,8 +1936,8 @@ importers: '@types/wordpress__media-utils': 3.0.0_sfoxds7t5ydpegc3knd667wn6m '@types/wordpress__notices': 3.3.0 '@types/wordpress__plugins': 3.0.0_sfoxds7t5ydpegc3knd667wn6m - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@woocommerce/admin-e2e-tests': link:../../packages/js/admin-e2e-tests '@woocommerce/admin-layout': link:../../packages/js/admin-layout '@woocommerce/components': link:../../packages/js/components @@ -1890,7 +1966,7 @@ importers: '@wordpress/postcss-plugins-preset': 1.6.0 '@wordpress/postcss-themes': 1.0.5 '@wordpress/prettier-config': 1.1.3 - '@wordpress/scripts': 12.6.1_h4xx42qb2l7ylq2u26dkj2fbyi + '@wordpress/scripts': 12.6.1_c6qmhwnhjoryl2mlu436oznfja '@wordpress/stylelint-config': 20.0.2_gnuvbpze6hr4gjidcj2xbzgequ autoprefixer: 10.4.4_postcss@8.4.12 await-exec: 0.1.2 @@ -1911,7 +1987,7 @@ importers: eslint-plugin-import: 2.25.4_4xxzfshi2bemfrxyrh2o66gegy eslint-plugin-react: 7.29.4_eslint@8.32.0 expose-loader: 3.1.0_webpack@5.70.0 - fork-ts-checker-webpack-plugin: 6.5.0_5spy6wmzwqixc3k64gvf5wblh4 + fork-ts-checker-webpack-plugin: 6.5.0_5ntqge7sf3ftfky7dw52icyvpy jest: 27.5.1 jest-environment-jsdom: 27.5.1 jest-environment-node: 27.5.1 @@ -1939,13 +2015,13 @@ importers: sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 style-loader: 0.23.1 stylelint: 14.6.0 - ts-jest: 27.1.3_yz745mftfbms5l53ptse4szmhe - typescript: 4.8.4 + ts-jest: 27.1.3_uoaxlxjq2ciqwfcb253eiln2ly + typescript: 4.9.5 url-loader: 1.1.2_webpack@5.70.0 webpack: 5.70.0_webpack-cli@4.9.2 webpack-bundle-analyzer: 3.9.0 - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi - webpack-dev-server: 4.11.1_jaxrlecucqtr54lmhmx67obzmy + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m + webpack-dev-server: 4.12.0_jaxrlecucqtr54lmhmx67obzmy webpack-fix-style-only-entries: 0.6.1 webpack-merge: 5.8.0 webpack-rtl-plugin: 2.0.0 @@ -1977,15 +2053,15 @@ importers: react: ^17.0.2 react-dom: ^17.0.2 ts-loader: ^9.4.1 - typescript: ^4.8.3 + typescript: ^4.9.5 uglify-js: ^3.5.3 dependencies: - '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme '@types/prop-types': 15.7.4 '@woocommerce/components': link:../../packages/js/components '@woocommerce/data': link:../../packages/js/data '@wordpress/api-fetch': 6.3.1 - '@wordpress/components': 19.8.5_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.8.5_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 '@wordpress/data-controls': 2.6.1_react@17.0.2 @@ -2002,15 +2078,16 @@ importers: '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin '@wordpress/env': 4.9.0 '@wordpress/prettier-config': 2.5.0_wp-prettier@2.6.2 - '@wordpress/scripts': 19.2.4_f7x7zdz3ccrnqxb4utvdtwqz4e + '@wordpress/scripts': 19.2.4_k7srtcnfu3w3ddpsnj7iktfq5i eslint: 8.32.0 prettier: /wp-prettier/2.6.2 - ts-loader: 9.4.1_27qmdvvfdw5s3nqwnln6yerdsa - typescript: 4.8.4 + ts-loader: 9.4.1_t37drsge5fnqkss6ynqsf64hyi + typescript: 4.9.5 uglify-js: 3.14.5 plugins/woocommerce/client/legacy: specifiers: + '@types/node': ^16.18.18 '@wordpress/stylelint-config': 19.1.0 autoprefixer: 9.8.6 browserslist: 4.19.3 @@ -2030,9 +2107,11 @@ importers: grunt-sass: 3.1.0 grunt-stylelint: 0.16.0 gruntify-eslint: 5.0.0 + nodemon: ^2.0.21 sass: ^1.45.0 stylelint: 13.8.0 devDependencies: + '@types/node': 16.18.18 '@wordpress/stylelint-config': 19.1.0_stylelint@13.8.0 autoprefixer: 9.8.6 browserslist: 4.19.3 @@ -2052,6 +2131,7 @@ importers: grunt-sass: 3.1.0_grunt@1.3.0 grunt-stylelint: 0.16.0_stylelint@13.8.0 gruntify-eslint: 5.0.0_grunt@1.3.0 + nodemon: 2.0.21 sass: 1.49.9 stylelint: 13.8.0 @@ -2064,19 +2144,19 @@ importers: ora: ^5.4.1 simple-git: ^3.10.0 ts-node: ^10.9.1 - typescript: ^4.8.3 + typescript: ^4.9.5 uuid: ^8.3.2 dependencies: chalk: 4.1.2 dotenv: 10.0.0 ora: 5.4.1 simple-git: 3.14.0 - ts-node: 10.9.1_vqcafhj4xvr2nzknlrdklk55zm + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu uuid: 8.3.2 devDependencies: '@tsconfig/node16': 1.0.3 '@types/uuid': 9.0.0 - typescript: 4.8.4 + typescript: 4.9.5 tools/code-analyzer: specifiers: @@ -2084,7 +2164,7 @@ importers: '@commander-js/extra-typings': ^0.1.0 '@oclif/core': ^2.4.0 '@tsconfig/node16': ^1.0.3 - '@types/node': ^16.9.4 + '@types/node': ^16.18.18 '@types/uuid': ^8.3.4 '@woocommerce/eslint-plugin': workspace:* cli-core: workspace:* @@ -2094,7 +2174,7 @@ importers: simple-git: ^3.10.0 ts-node: ^10.2.1 tslib: ^2.3.1 - typescript: ^4.8.3 + typescript: ^4.9.5 uuid: ^8.3.2 dependencies: '@actions/core': 1.10.0 @@ -2108,12 +2188,12 @@ importers: simple-git: 3.14.0 uuid: 8.3.2 devDependencies: - '@types/node': 16.10.3 + '@types/node': 16.18.18 '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin eslint: 8.32.0 - ts-node: 10.9.1_66qcjwcvmucahiv4aiph345ggy + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu tslib: 2.3.1 - typescript: 4.8.4 + typescript: 4.9.5 tools/create-extension: specifiers: @@ -2132,7 +2212,7 @@ importers: '@oclif/plugin-plugins': ^2.0.1 '@octokit/graphql': 4.8.0 '@octokit/request-error': ^3.0.1 - '@types/node': ^16.9.4 + '@types/node': ^16.18.18 '@woocommerce/eslint-plugin': workspace:* eslint: ^8.32.0 globby: ^11 @@ -2141,7 +2221,7 @@ importers: shx: ^0.3.3 ts-node: ^10.2.1 tslib: ^2.3.1 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@oclif/core': 1.16.1 '@oclif/plugin-help': 5.1.12 @@ -2149,23 +2229,23 @@ importers: '@octokit/graphql': 4.8.0 devDependencies: '@octokit/request-error': 3.0.1 - '@types/node': 16.10.3 + '@types/node': 16.18.18 '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin eslint: 8.32.0 globby: 11.0.4 - jscodeshift: 0.13.1_@babel+preset-env@7.19.3 + jscodeshift: 0.13.1_@babel+preset-env@7.20.2 oclif: 2.7.0_7yoz4vugw4qcykie6sit5r22dm shx: 0.3.4 - ts-node: 10.9.1_66qcjwcvmucahiv4aiph345ggy + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu tslib: 2.3.1 - typescript: 4.8.4 + typescript: 4.9.5 tools/package-release: specifiers: '@oclif/core': ^1 '@oclif/plugin-help': ^5 '@oclif/plugin-plugins': ^2.0.1 - '@types/node': ^16.9.4 + '@types/node': ^16.18.18 '@types/semver': ^7.3.10 '@woocommerce/eslint-plugin': workspace:* globby: ^11 @@ -2174,7 +2254,7 @@ importers: shx: ^0.3.3 ts-node: ^10.2.1 tslib: ^2.3.1 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@oclif/core': 1.16.1 '@oclif/plugin-help': 5.1.12 @@ -2182,14 +2262,14 @@ importers: '@types/semver': 7.3.12 semver: 7.3.5 devDependencies: - '@types/node': 16.10.3 + '@types/node': 16.18.18 '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin globby: 11.1.0 oclif: 2.7.0_7yoz4vugw4qcykie6sit5r22dm shx: 0.3.4 - ts-node: 10.9.1_66qcjwcvmucahiv4aiph345ggy + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu tslib: 2.3.1 - typescript: 4.8.4 + typescript: 4.9.5 tools/release-posts: specifiers: @@ -2199,7 +2279,7 @@ importers: '@types/ejs': ^3.1.1 '@types/express': ^4.17.13 '@types/lodash.shuffle': ^4.2.7 - '@types/node': ^18.11.18 + '@types/node': ^16.18.18 '@types/node-fetch': ^2.6.2 '@types/semver': ^7.3.10 cli-core: workspace:* @@ -2207,6 +2287,7 @@ importers: commander: 9.4.0 dotenv: ^10.0.0 ejs: ^3.1.8 + enquirer: ^2.3.6 express: ^4.18.1 form-data: ^4.0.0 lodash.shuffle: ^4.2.0 @@ -2214,7 +2295,7 @@ importers: open: ^8.4.0 semver: ^7.3.2 ts-node: ^10.9.1 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@commander-js/extra-typings': 0.1.0_commander@9.4.0 '@octokit/rest': 19.0.4 @@ -2223,22 +2304,23 @@ importers: commander: 9.4.0 dotenv: 10.0.0 ejs: 3.1.8 + enquirer: 2.3.6 express: 4.18.1 form-data: 4.0.0 lodash.shuffle: 4.2.0 node-fetch: 2.6.7 open: 8.4.0 semver: 7.3.7 - ts-node: 10.9.1_vqcafhj4xvr2nzknlrdklk55zm + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu devDependencies: '@tsconfig/node16': 1.0.3 '@types/ejs': 3.1.1 '@types/express': 4.17.14 '@types/lodash.shuffle': 4.2.7 - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/node-fetch': 2.6.2 '@types/semver': 7.3.12 - typescript: 4.8.4 + typescript: 4.9.5 tools/storybook: specifiers: @@ -2266,35 +2348,35 @@ importers: '@woocommerce/eslint-plugin': workspace:* react: ^17.0.2 react-dom: ^17.0.2 - typescript: ^4.8.3 + typescript: ^4.9.5 webpack: ^5.70.0 dependencies: - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.21.3 devDependencies: - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/preset-env': 7.16.11_@babel+core@7.21.3 '@babel/runtime': 7.17.7 '@storybook/addon-a11y': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-actions': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-console': 1.2.3_kthckm6zfmobggl2ahqbjihlce - '@storybook/addon-controls': 6.4.19_56jbash75ng5psbctf36wqywr4 - '@storybook/addon-docs': 6.4.19_4mzwqz5dtm4bsumwut2gxvl6x4 + '@storybook/addon-controls': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy + '@storybook/addon-docs': 6.4.19_u6jeeaexj5lsn5qca4nthuwg7e '@storybook/addon-knobs': 6.4.0_nu75ilgc3qugomjhuwv2hk42im '@storybook/addon-links': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-storysource': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-viewport': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/builder-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm + '@storybook/builder-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/core-events': 6.4.19 - '@storybook/manager-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/react': 6.4.19_a55upwwpdj22rf6pemjk4qxjbi + '@storybook/manager-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/react': 6.4.19_mhdmeu3qqzacem7x2i75qauaqu '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 5.70.0 tools/version-bump: @@ -2309,7 +2391,7 @@ importers: ora: ^5.4.1 semver: ^7.3.2 ts-node: ^10.9.1 - typescript: ^4.8.3 + typescript: ^4.9.5 dependencies: '@commander-js/extra-typings': 0.1.0_commander@9.4.0 chalk: 4.1.2 @@ -2318,11 +2400,11 @@ importers: express: 4.18.1 ora: 5.4.1 semver: 7.3.7 - ts-node: 10.9.1_vqcafhj4xvr2nzknlrdklk55zm + ts-node: 10.9.1_z2kt25o33of7k4uzjztqjquebu devDependencies: '@tsconfig/node16': 1.0.3 '@types/express': 4.17.14 - typescript: 4.8.4 + typescript: 4.9.5 packages: @@ -2343,7 +2425,14 @@ packages: resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.16 + '@jridgewell/trace-mapping': 0.3.17 + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 /@automattic/calypso-color-schemes/2.1.1: resolution: {integrity: sha512-X5gmQEDJVtw8N9NARgZGM/pmalfapV8ZyRzEn2o0sCLmTAXGYg6A28ucLCQdBIn1l9t2rghBDFkY71vyqjyyFQ==} @@ -2639,13 +2728,35 @@ packages: commander: 4.1.1 convert-source-map: 1.8.0 fs-readdir-recursive: 1.1.0 - glob: 7.2.0 + glob: 7.2.3 make-dir: 2.1.0 slash: 2.0.0 source-map: 0.5.7 optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 chokidar: 3.5.3 + dev: true + + /@babel/cli/7.17.6_@babel+core@7.21.3: + resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@jridgewell/trace-mapping': 0.3.16 + commander: 4.1.1 + convert-source-map: 1.8.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.3 + make-dir: 2.1.0 + slash: 2.0.0 + source-map: 0.5.7 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 + dev: false /@babel/code-frame/7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} @@ -2672,9 +2783,10 @@ packages: /@babel/compat-data/7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} + dev: true - /@babel/compat-data/7.19.3: - resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} + /@babel/compat-data/7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} /@babel/core/7.12.9: @@ -2700,29 +2812,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core/7.16.12: - resolution: {integrity: sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.3 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helpers': 7.17.8 - '@babel/parser': 7.19.3 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core/7.17.8: resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} engines: {node: '>=6.9.0'} @@ -2745,6 +2834,28 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.21.3: + resolution: {integrity: sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/eslint-parser/7.17.0_45t77ya3ofqya5ogk4q6xdzcpq: resolution: {integrity: sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -2773,14 +2884,14 @@ packages: semver: 6.3.0 dev: true - /@babel/eslint-parser/7.17.0_xujkgafwcpm5gwokncqwvv5ure: + /@babel/eslint-parser/7.17.0_xrfyhdkbwxl52yb52lr5ltkqvm: resolution: {integrity: sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 @@ -2791,7 +2902,7 @@ packages: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 jsesc: 2.5.2 source-map: 0.5.7 @@ -2799,34 +2910,45 @@ packages: resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.21.3: + resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.3 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure/7.16.0: resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + dev: true /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + dev: true /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-compilation-targets/7.16.3_@babel+core@7.12.9: resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} @@ -2834,123 +2956,76 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 + browserslist: 4.19.3 semver: 6.3.0 - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.12.9: + /@babel/helper-compilation-targets/7.17.7_@babel+core@7.21.3: resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.12.9 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 '@babel/helper-validator-option': 7.18.6 browserslist: 4.19.3 semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.19.3 - semver: 6.3.0 - dev: false - - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.19.3 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.12.9: - resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.16.12: - resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.17.8: resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.12.9: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.12.9: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 - '@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 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.17.8: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.17.8 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.16.12: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.3: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.16.12 - '@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 - transitivePeerDependencies: - - supports-color - dev: false + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} @@ -2961,14 +3036,32 @@ packages: '@babel/core': 7.17.8 '@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-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.19.1 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color + /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.21.3: + resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@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-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.12.9: resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} engines: {node: '>=6.9.0'} @@ -2978,32 +3071,14 @@ packages: '@babel/core': 7.12.9 '@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-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.19.1 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.16.12: - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@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 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} engines: {node: '>=6.9.0'} @@ -3013,10 +3088,27 @@ packages: '@babel/core': 7.17.8 '@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-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.19.1 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.21.3: + resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@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-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color @@ -3031,17 +3123,6 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.16.12: - resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.1 - dev: false - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} @@ -3051,6 +3132,17 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 + dev: true + + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.21.3: + resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.2.1 /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.17.8: resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} @@ -3058,10 +3150,28 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/traverse': 7.21.3 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.21.3: + resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/traverse': 7.21.3 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -3076,8 +3186,8 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -3085,30 +3195,30 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.16.12: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.17.8: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.3: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -3124,44 +3234,52 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 + + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 - /@babel/helper-member-expression-to-functions/7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-module-imports/7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-module-transforms/7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} @@ -3172,9 +3290,9 @@ packages: '@babel/helper-simple-access': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3184,12 +3302,27 @@ packages: dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 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.19.3 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + 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.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3197,7 +3330,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-plugin-utils/7.10.4: resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} @@ -3215,13 +3348,17 @@ packages: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-remap-async-to-generator/7.16.4: resolution: {integrity: sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3231,9 +3368,10 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.12.9: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -3245,25 +3383,10 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.16.12: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -3274,7 +3397,22 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.19.0 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3283,10 +3421,23 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3294,22 +3445,28 @@ packages: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.3 /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 - /@babel/helper-string-parser/7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier/7.19.1: @@ -3332,10 +3489,10 @@ packages: resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/helper-function-name': 7.21.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3343,9 +3500,19 @@ packages: resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -3362,43 +3529,40 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/parser/7.19.3: resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.12.9: + /@babel/parser/7.21.3: + resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.3 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.17.8: @@ -3408,44 +3572,42 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.12.9: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.16.12 - dev: false - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} @@ -3453,9 +3615,21 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 /@babel/plugin-proposal-async-generator-functions/7.16.4_@babel+core@7.12.9: resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} @@ -3470,44 +3644,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.12.9: + /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.21.3: resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.16.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.17.8: - resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 transitivePeerDependencies: - supports-color dev: true @@ -3520,11 +3666,12 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.17.8: resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} @@ -3534,11 +3681,55 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.17.8 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.12.9: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.17.8: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.21.3: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color /@babel/plugin-proposal-class-properties/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==} @@ -3552,32 +3743,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} engines: {node: '>=6.9.0'} @@ -3590,6 +3755,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -3598,7 +3776,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color @@ -3610,52 +3788,51 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.12.9: + /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.21.3: resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.16.12: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.17.8: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} @@ -3664,10 +3841,24 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color /@babel/plugin-proposal-decorators/7.16.4_@babel+core@7.17.8: resolution: {integrity: sha512-RESBNX16eNqnBeEVR5sCJpnW0mHiNLNNvGA8PrRuK/4ZJ4TO+6bHleRUuGQYDERVySOKtOhSya/C4MIhwAMAgg==} @@ -3677,12 +3868,26 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-decorators': 7.16.0_@babel+core@7.17.8 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-proposal-decorators/7.16.4_@babel+core@7.21.3: + resolution: {integrity: sha512-RESBNX16eNqnBeEVR5sCJpnW0mHiNLNNvGA8PrRuK/4ZJ4TO+6bHleRUuGQYDERVySOKtOhSya/C4MIhwAMAgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-decorators': 7.16.0_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-proposal-dynamic-import/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==} engines: {node: '>=6.9.0'} @@ -3693,39 +3898,28 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} @@ -3733,8 +3927,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-export-default-from/7.16.7_@babel+core@7.12.9: resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} @@ -3743,7 +3948,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-default-from': 7.16.7_@babel+core@7.12.9 /@babel/plugin-proposal-export-default-from/7.16.7_@babel+core@7.17.8: @@ -3753,8 +3958,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-default-from': 7.16.7_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-export-default-from/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-default-from': 7.16.7_@babel+core@7.21.3 /@babel/plugin-proposal-export-namespace-from/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==} @@ -3766,39 +3982,28 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.3 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 - dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} @@ -3806,8 +4011,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-json-strings/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==} @@ -3819,39 +4035,28 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 - dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} @@ -3859,8 +4064,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-logical-assignment-operators/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==} @@ -3872,39 +4088,28 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 - /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 - dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} @@ -3912,8 +4117,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 /@babel/plugin-proposal-nullish-coalescing-operator/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==} @@ -3925,28 +4141,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} engines: {node: '>=6.9.0'} @@ -3954,9 +4148,20 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + dev: true + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -3964,7 +4169,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.17.8: @@ -3974,8 +4179,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-numeric-separator/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==} @@ -3987,39 +4203,28 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 - dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} @@ -4027,8 +4232,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} @@ -4036,9 +4252,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 dev: true /@babel/plugin-proposal-object-rest-spread/7.16.0_@babel+core@7.12.9: @@ -4054,46 +4270,32 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.12.9 - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.12.9: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.16.12: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.8: resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.21.3: + resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 dev: true /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.12.9: @@ -4102,12 +4304,13 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 + dev: true /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} @@ -4115,12 +4318,53 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.12.9: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 + + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.17.8: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.17.8 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.21.3: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 /@babel/plugin-proposal-optional-catch-binding/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==} @@ -4132,37 +4376,15 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 - dev: false - - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 dev: true /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.12.9: @@ -4172,7 +4394,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.17.8: @@ -4182,8 +4404,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-optional-chaining/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==} @@ -4196,30 +4429,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} engines: {node: '>=6.9.0'} @@ -4227,10 +4436,22 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 + /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + dev: true + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.12.9: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -4238,22 +4459,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.16.12: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -4261,9 +4470,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 /@babel/plugin-proposal-private-methods/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==} @@ -4277,32 +4498,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.12.9: - resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.16.12: - resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.17.8: resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} engines: {node: '>=6.9.0'} @@ -4316,6 +4511,32 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.21.3: + resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} @@ -4324,39 +4545,22 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - - /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} @@ -4373,6 +4577,36 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} @@ -4382,10 +4616,25 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color /@babel/plugin-proposal-unicode-property-regex/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==} @@ -4397,37 +4646,15 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.12.9: @@ -4438,18 +4665,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.16.12: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -4459,7 +4675,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.9: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -4467,16 +4694,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.12: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.8: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -4484,7 +4702,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.3: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -4492,7 +4719,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: false /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.8: @@ -4501,7 +4728,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.12.9: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -4509,16 +4745,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.8: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -4526,7 +4753,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.3: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.12.9: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -4535,19 +4771,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.16.12: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.17.8: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -4555,7 +4781,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.21.3: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-decorators/7.16.0_@babel+core@7.17.8: resolution: {integrity: sha512-nxnnngZClvlY13nHJAIDow0S7Qzhq64fQ/NlqS+VER3kjW/4F0jLhXjeL8jcwSwz6Ca3rotT5NJD2T9I7lcv7g==} @@ -4564,7 +4800,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-decorators/7.16.0_@babel+core@7.21.3: + resolution: {integrity: sha512-nxnnngZClvlY13nHJAIDow0S7Qzhq64fQ/NlqS+VER3kjW/4F0jLhXjeL8jcwSwz6Ca3rotT5NJD2T9I7lcv7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.12.9: @@ -4573,16 +4819,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -4590,7 +4827,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-export-default-from/7.16.7_@babel+core@7.12.9: resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} @@ -4599,7 +4845,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-export-default-from/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} @@ -4608,7 +4854,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-export-default-from/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -4616,16 +4872,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -4633,7 +4880,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.12.9: resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} @@ -4642,7 +4898,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} @@ -4651,16 +4907,45 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.17.8: - resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} + /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.12.9: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.17.8: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.21.3: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.12.9: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -4668,7 +4953,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: false /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.8: @@ -4677,7 +4962,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.3: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -4685,16 +4979,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -4702,7 +4987,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} @@ -4710,7 +5004,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.12.9: @@ -4723,16 +5017,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} @@ -4740,7 +5024,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.12.9: @@ -4750,7 +5034,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} @@ -4759,7 +5043,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.9: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -4767,16 +5060,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.12: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.8: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -4784,7 +5068,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.3: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -4792,16 +5085,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -4809,7 +5093,15 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.9: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -4817,16 +5109,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.12: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.8: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -4834,7 +5117,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.3: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4842,16 +5134,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4859,7 +5142,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4867,16 +5159,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4884,7 +5167,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -4892,16 +5184,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.8: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -4909,7 +5192,15 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.3: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.12.9: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -4918,19 +5209,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.16.12: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.17.8: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -4938,7 +5219,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.21.3: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.12.9: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -4947,17 +5238,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.12: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.8: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -4966,17 +5247,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.3: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} @@ -4985,7 +5266,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} @@ -4994,16 +5284,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.17.8: + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.21.3: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==} @@ -5014,26 +5304,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} engines: {node: '>=6.9.0'} @@ -5041,7 +5311,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.12.9: @@ -5051,7 +5331,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -5060,7 +5340,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-async-to-generator/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==} @@ -5075,34 +5365,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.12.9: - resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.17.8: resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} engines: {node: '>=6.9.0'} @@ -5117,6 +5379,20 @@ packages: - supports-color dev: true + /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.21.3: + resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.16.8 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} @@ -5125,7 +5401,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 transitivePeerDependencies: - supports-color @@ -5138,10 +5414,24 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color /@babel/plugin-transform-block-scoped-functions/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==} @@ -5152,34 +5442,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.12.9: @@ -5189,7 +5459,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -5198,7 +5468,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-block-scoping/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==} @@ -5209,26 +5489,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} engines: {node: '>=6.9.0'} @@ -5236,7 +5496,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.12.9: @@ -5246,7 +5516,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} @@ -5255,7 +5526,36 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.17.8: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.21.3: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-classes/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==} @@ -5274,44 +5574,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@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.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@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.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} engines: {node: '>=6.9.0'} @@ -5321,10 +5583,29 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@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.12.0 transitivePeerDependencies: @@ -5339,16 +5620,17 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-classes/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} @@ -5358,12 +5640,71 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.12.9: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@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.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.17.8: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@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.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.21.3: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@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.12.0 transitivePeerDependencies: @@ -5378,34 +5719,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.12.9: @@ -5415,7 +5736,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -5424,7 +5745,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-destructuring/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==} @@ -5435,26 +5766,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} engines: {node: '>=6.9.0'} @@ -5462,7 +5773,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.21.3: + resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.12.9: @@ -5472,7 +5793,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.17.8: resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} @@ -5481,7 +5803,36 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-destructuring/7.21.3_@babel+core@7.12.9: + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-destructuring/7.21.3_@babel+core@7.17.8: + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-destructuring/7.21.3_@babel+core@7.21.3: + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-dotall-regex/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==} @@ -5493,37 +5844,15 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.12.9: @@ -5534,18 +5863,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.16.12: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -5555,7 +5873,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-duplicate-keys/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==} @@ -5566,34 +5895,24 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.17.8: @@ -5603,7 +5922,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-exponentiation-operator/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==} @@ -5615,37 +5944,15 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.21.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.12.9: @@ -5656,7 +5963,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -5666,7 +5973,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-flow-strip-types/7.16.7_@babel+core@7.12.9: resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} @@ -5675,7 +5993,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.12.9 /@babel/plugin-transform-flow-strip-types/7.16.7_@babel+core@7.17.8: @@ -5685,9 +6003,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.17.8 + /@babel/plugin-transform-flow-strip-types/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.21.3 + /@babel/plugin-transform-for-of/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==} engines: {node: '>=6.9.0'} @@ -5697,26 +6025,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} engines: {node: '>=6.9.0'} @@ -5724,7 +6032,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.12.9: @@ -5734,7 +6052,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.17.8: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -5743,7 +6061,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.21.3: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-function-name/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==} @@ -5755,40 +6083,16 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.12.9: @@ -5798,9 +6102,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -5809,9 +6113,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-literals/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==} @@ -5822,34 +6138,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-literals/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-literals/7.18.9_@babel+core@7.12.9: @@ -5859,7 +6155,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-literals/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -5868,7 +6164,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-member-expression-literals/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==} @@ -5879,34 +6185,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.12.9: @@ -5916,7 +6202,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -5925,7 +6211,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-modules-amd/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==} @@ -5934,49 +6230,35 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.19.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -5989,11 +6271,50 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.12.9: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.17.8: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.21.3: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color /@babel/plugin-transform-modules-commonjs/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==} @@ -6002,43 +6323,13 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-simple-access': 7.18.6 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} engines: {node: '>=6.9.0'} @@ -6046,13 +6337,28 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.21.3: + resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} @@ -6060,12 +6366,13 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} @@ -6074,12 +6381,53 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.12.9: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.17.8: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.21.3: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color /@babel/plugin-transform-modules-systemjs/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==} @@ -6089,55 +6437,39 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.12.9: + /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.21.3: resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.21.3 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.16.12: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.12.9: + resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 + '@babel/core': 7.12.9 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-identifier': 7.19.1 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.17.8: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -6152,12 +6484,57 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.12.9: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.17.8: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.21.3: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color /@babel/plugin-transform-modules-umd/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==} @@ -6166,46 +6543,33 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true @@ -6217,8 +6581,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color @@ -6231,34 +6608,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.12.9: + /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.21.3: resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.17.8: - resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 dev: true /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.12.9: @@ -6269,7 +6626,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.17.8: resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -6279,7 +6636,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.21.3: + resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-new-target/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==} @@ -6290,34 +6658,24 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.17.8: @@ -6327,7 +6685,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-object-super/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==} @@ -6341,41 +6709,15 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true @@ -6387,8 +6729,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color @@ -6399,8 +6741,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color @@ -6413,26 +6768,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} engines: {node: '>=6.9.0'} @@ -6440,7 +6775,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.12.9: @@ -6450,17 +6795,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.16.12: - resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false + '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.17.8: resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} @@ -6469,7 +6805,36 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-parameters/7.21.3_@babel+core@7.12.9: + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-parameters/7.21.3_@babel+core@7.17.8: + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-parameters/7.21.3_@babel+core@7.21.3: + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-property-literals/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==} @@ -6480,34 +6845,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.12.9: @@ -6517,7 +6862,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -6526,16 +6871,26 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-transform-react-constant-elements/7.17.6_@babel+core@7.17.8: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-react-constant-elements/7.17.6_@babel+core@7.21.3: resolution: {integrity: sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.12.9: @@ -6545,7 +6900,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} @@ -6554,7 +6909,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} @@ -6566,6 +6931,16 @@ packages: '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 dev: true + /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + dev: true + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} @@ -6573,16 +6948,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.17.8: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.21.3: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.12.9: resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} @@ -6591,16 +6966,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.17.8: + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.21.3: resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-jsx/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==} @@ -6616,20 +6991,6 @@ packages: '@babel/types': 7.16.0 dev: true - /@babel/plugin-transform-react-jsx/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.12 - '@babel/types': 7.16.0 - dev: false - /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.8: resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} engines: {node: '>=6.9.0'} @@ -6644,6 +7005,20 @@ packages: '@babel/types': 7.17.0 dev: true + /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.21.3: + resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@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+core@7.21.3 + '@babel/types': 7.21.3 + dev: true + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.12.9: resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} @@ -6653,9 +7028,9 @@ packages: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.12.9 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} @@ -6666,9 +7041,23 @@ packages: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.17.8 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + dev: true + + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.21.3: + resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@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+core@7.21.3 + '@babel/types': 7.21.3 /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==} @@ -6678,7 +7067,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-regenerator/7.16.0_@babel+core@7.12.9: @@ -6690,34 +7090,25 @@ packages: '@babel/core': 7.12.9 regenerator-transform: 0.14.5 - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - regenerator-transform: 0.14.5 - dev: true - - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - regenerator-transform: 0.14.5 - dev: false - - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - regenerator-transform: 0.14.5 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.0 dev: true /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.17.8: @@ -6727,7 +7118,18 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.0 + dev: true + + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.0 /@babel/plugin-transform-reserved-words/7.16.0_@babel+core@7.12.9: @@ -6739,34 +7141,24 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.17.8: @@ -6776,7 +7168,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-runtime/7.16.4_@babel+core@7.12.9: resolution: {integrity: sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==} @@ -6795,35 +7197,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime/7.16.4_@babel+core@7.16.12: + /@babel/plugin-transform-runtime/7.16.4_@babel+core@7.21.3: resolution: {integrity: sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 + '@babel/core': 7.21.3 '@babel/helper-module-imports': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 - babel-plugin-polyfill-corejs3: 0.4.0_@babel+core@7.16.12 - babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-runtime/7.16.4_@babel+core@7.17.8: - resolution: {integrity: sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.17.8 - babel-plugin-polyfill-corejs3: 0.4.0_@babel+core@7.17.8 - babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.17.8 + babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.21.3 + babel-plugin-polyfill-corejs3: 0.4.0_@babel+core@7.21.3 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.21.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -6837,7 +7222,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.9 babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.12.9 babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.12.9 @@ -6845,18 +7230,18 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-runtime/7.19.1_@babel+core@7.17.8: + /@babel/plugin-transform-runtime/7.19.1_@babel+core@7.21.3: resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.17.8 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.17.8 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.20.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -6870,26 +7255,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} engines: {node: '>=6.9.0'} @@ -6897,7 +7262,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.12.9: @@ -6907,7 +7282,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -6916,7 +7291,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-spread/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==} @@ -6928,28 +7313,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true - - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: false - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} engines: {node: '>=6.9.0'} @@ -6957,7 +7320,18 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true + + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true @@ -6968,7 +7342,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 /@babel/plugin-transform-spread/7.19.0_@babel+core@7.17.8: @@ -6978,7 +7352,18 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true + + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.21.3: + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 /@babel/plugin-transform-sticky-regex/7.16.0_@babel+core@7.12.9: @@ -6990,34 +7375,14 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.12.9: @@ -7027,7 +7392,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -7036,7 +7401,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-template-literals/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==} @@ -7047,26 +7422,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} engines: {node: '>=6.9.0'} @@ -7074,7 +7429,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.12.9: @@ -7084,7 +7449,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -7093,7 +7458,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-typeof-symbol/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==} @@ -7104,34 +7479,24 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.17.8: @@ -7141,21 +7506,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8: resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} @@ -7165,11 +7526,24 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.21.3: + resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.12.9: resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} engines: {node: '>=6.9.0'} @@ -7178,21 +7552,21 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.12.9 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.17.8: + /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.21.3: resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.21.3 transitivePeerDependencies: - supports-color @@ -7205,34 +7579,24 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.12.9: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.17.8: @@ -7242,7 +7606,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.21.3: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-unicode-regex/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==} @@ -7254,37 +7628,15 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.21.3: resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.12.9: @@ -7295,7 +7647,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -7305,7 +7657,18 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.3: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.20.2 /@babel/polyfill/7.12.1: resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} @@ -7396,28 +7759,28 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.12.9 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.12.9 - '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.12.9 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@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+core@7.12.9 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.9 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.9 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 @@ -7432,228 +7795,58 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.12.9 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.12.9 - '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.9 '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.12.9 + '@babel/types': 7.21.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.9 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.12.9 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.12.9 - core-js-compat: 3.21.1 + core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-env/7.16.11_@babel+core@7.16.12: - resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.16.12 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.16.12 - '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.16.12 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.16.12 - '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.16.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.16.12 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.16.12 - babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 - core-js-compat: 3.21.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-env/7.16.11_@babel+core@7.17.8: resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.17.8 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 - '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.8 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.8 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.17.8 - '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.17.8 - '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.17.8 - '@babel/preset-modules': 0.1.5_@babel+core@7.17.8 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.17.8 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.8 - babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.17.8 - core-js-compat: 3.21.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-env/7.19.3_@babel+core@7.17.8: - resolution: {integrity: sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 '@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+core@7.17.8 @@ -7678,7 +7871,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.17.8 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 @@ -7721,7 +7913,264 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.17.8 '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.17.8 '@babel/preset-modules': 0.1.5_@babel+core@7.17.8 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.8 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.17.8 + core-js-compat: 3.25.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env/7.16.11_@babel+core@7.21.3: + resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.21.3 + '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.21.3 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.21.3 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.21.3 + '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.21.3 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.21.3 + '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.21.3 + '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.21.3 + '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.21.3 + '@babel/preset-modules': 0.1.5_@babel+core@7.21.3 + '@babel/types': 7.17.0 + babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.21.3 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.21.3 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.21.3 + core-js-compat: 3.21.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env/7.20.2_@babel+core@7.12.9: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.9 + '@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+core@7.12.9 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.9 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.12.9 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.9 + '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 + '@babel/types': 7.21.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.9 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.12.9 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.12.9 + core-js-compat: 3.25.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env/7.20.2_@babel+core@7.17.8: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.17.8 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.17.8 + '@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+core@7.17.8 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.8 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.17.8 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.17.8 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.17.8 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.17.8 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.17.8 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.17.8 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.17.8 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.17.8 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.17.8 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.17.8 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.17.8 + '@babel/preset-modules': 0.1.5_@babel+core@7.17.8 + '@babel/types': 7.21.3 babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.17.8 babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.17.8 babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.17.8 @@ -7729,6 +8178,92 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/preset-env/7.20.2_@babel+core@7.21.3: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@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+core@7.21.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.21.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.21.3 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.3 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.21.3 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.21.3 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.21.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.3 + '@babel/preset-modules': 0.1.5_@babel+core@7.21.3 + '@babel/types': 7.21.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.3 + core-js-compat: 3.25.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color /@babel/preset-flow/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==} @@ -7737,10 +8272,22 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.17.8 + /@babel/preset-flow/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.21.3 + dev: true + /@babel/preset-modules/0.1.5_@babel+core@7.12.9: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: @@ -7750,22 +8297,9 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.9 '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.9 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 esutils: 2.0.3 - /@babel/preset-modules/0.1.5_@babel+core@7.16.12: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.16.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.16.12 - '@babel/types': 7.19.3 - esutils: 2.0.3 - dev: false - /@babel/preset-modules/0.1.5_@babel+core@7.17.8: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: @@ -7775,7 +8309,20 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.17.8 '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.17.8 - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 + esutils: 2.0.3 + dev: true + + /@babel/preset-modules/0.1.5_@babel+core@7.21.3: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.3 + '@babel/types': 7.21.3 esutils: 2.0.3 /@babel/preset-react/7.16.7_@babel+core@7.17.8: @@ -7785,7 +8332,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.17.8 '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 @@ -7793,19 +8340,20 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.16.7_@babel+core@7.17.8 dev: true - /@babel/preset-typescript/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} + /@babel/preset-react/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false + '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-react-pure-annotations': 7.16.7_@babel+core@7.21.3 + dev: true /@babel/preset-typescript/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} @@ -7814,22 +8362,35 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8 transitivePeerDependencies: - supports-color - /@babel/preset-typescript/7.18.6_@babel+core@7.17.8: + /@babel/preset-typescript/7.16.7_@babel+core@7.21.3: + resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + + /@babel/preset-typescript/7.18.6_@babel+core@7.21.3: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.3 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.17.8 + '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.21.3 transitivePeerDependencies: - supports-color @@ -7859,12 +8420,33 @@ packages: pirates: 4.0.5 source-map-support: 0.5.20 + /@babel/register/7.18.9_@babel+core@7.21.3: + resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.5 + source-map-support: 0.5.20 + dev: true + + /@babel/runtime-corejs2/7.5.5: + resolution: {integrity: sha512-FYATQVR00NSNi7mUfpPDp7E8RYMXDuO8gaix7u/w3GekfUinKgX1AcTxs7SoiEmoEW9mbpjrwqWSW6zCmw5h8A==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.13.11 + dev: false + /@babel/runtime-corejs3/7.16.3: resolution: {integrity: sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.19.1 - regenerator-runtime: 0.13.9 + core-js-pure: 3.29.1 + regenerator-runtime: 0.13.11 /@babel/runtime/7.17.7: resolution: {integrity: sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA==} @@ -7876,36 +8458,50 @@ packages: resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 + + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 /@babel/template/7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 /@babel/template/7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 + + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 /@babel/traverse/7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.3 + '@babel/generator': 7.21.3 '@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.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -7916,13 +8512,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.3 + '@babel/generator': 7.21.3 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@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.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse/7.21.3: + resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.3 + '@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.3 + '@babel/types': 7.21.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -7946,7 +8559,15 @@ packages: resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.18.10 + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@babel/types/7.21.3: + resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 @@ -7999,7 +8620,7 @@ packages: '@babel/core': 7.17.8 '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.17.8 - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -8010,6 +8631,26 @@ packages: source-map: 0.5.7 stylis: 4.1.3 + /@emotion/babel-plugin/11.10.5_@babel+core@7.21.3: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 + '@babel/runtime': 7.21.0 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/serialize': 1.1.1 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.1.3 + dev: false + /@emotion/cache/10.0.29: resolution: {integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==} dependencies: @@ -8043,7 +8684,7 @@ packages: peerDependencies: react: '>=16.3.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 10.0.29 '@emotion/css': 10.0.27 '@emotion/serialize': 0.11.16 @@ -8075,6 +8716,22 @@ packages: '@emotion/sheet': 1.2.1 '@emotion/utils': 1.2.0 + /@emotion/css/11.7.1_@babel+core@7.21.3: + resolution: {integrity: sha512-RUUgPlMZunlc7SE5A6Hg+VWRzb2cU6O9xlV78KCFgcnl25s7Qz/20oQg71iKudpLqk7xj0vhbJlwcJJMT0BOZg==} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.21.3 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.21.3 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + dev: false + /@emotion/hash/0.8.0: resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} @@ -8149,6 +8806,31 @@ packages: react: 17.0.2 dev: false + /@emotion/react/11.10.5_zg7wlf5auq2m3ro2gp4uufjvme: + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.21.3 + '@babel/runtime': 7.19.0 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.21.3 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + '@types/react': 17.0.50 + hoist-non-react-statics: 3.3.2 + react: 17.0.2 + dev: false + /@emotion/serialize/0.11.16: resolution: {integrity: sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==} dependencies: @@ -8191,7 +8873,7 @@ packages: '@emotion/core': ^10.0.28 react: '>=16.3.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/core': 10.3.1_react@17.0.2 '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 @@ -8211,6 +8893,30 @@ packages: react: 17.0.2 dev: true + /@emotion/styled/11.8.1_6t3indjc5ssefvr44gr3wo2uqu: + resolution: {integrity: sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==} + peerDependencies: + '@babel/core': ^7.0.0 + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.21.3 + '@babel/runtime': 7.21.0 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.21.3 + '@emotion/is-prop-valid': 1.1.2 + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme + '@emotion/serialize': 1.1.1 + '@emotion/utils': 1.2.0 + '@types/react': 17.0.50 + react: 17.0.2 + dev: false + /@emotion/styled/11.8.1_c2qm47vaialpqni522adyu6za4: resolution: {integrity: sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==} peerDependencies: @@ -8225,7 +8931,7 @@ packages: optional: true dependencies: '@babel/core': 7.17.8 - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.5_@babel+core@7.17.8 '@emotion/is-prop-valid': 1.1.2 '@emotion/react': 11.10.5_mcptgafjogap2nfvnfqvfwh6uu @@ -8248,7 +8954,7 @@ packages: optional: true dependencies: '@babel/core': 7.17.8 - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.5_@babel+core@7.17.8 '@emotion/is-prop-valid': 1.1.2 '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau @@ -8516,7 +9222,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -8528,7 +9234,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -8598,7 +9304,7 @@ packages: jest-util: 25.5.0 jest-validate: 25.5.0 jest-watcher: 25.5.0 - micromatch: 4.0.4 + micromatch: 4.0.5 p-each-series: 2.2.0 realpath-native: 2.0.0 rimraf: 3.0.2 @@ -8620,7 +9326,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -8638,7 +9344,7 @@ packages: jest-util: 26.6.2 jest-validate: 26.6.2 jest-watcher: 26.6.2 - micromatch: 4.0.4 + micromatch: 4.0.5 p-each-series: 2.2.0 rimraf: 3.0.2 slash: 3.0.0 @@ -8651,51 +9357,6 @@ packages: - utf-8-validate dev: true - /@jest/core/27.3.1: - resolution: {integrity: sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.11.18 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-changed-files: 27.5.1 - jest-config: 27.5.1 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.4 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /@jest/core/27.5.1: resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8710,7 +9371,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -8773,7 +9434,7 @@ packages: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 26.6.2 dev: true @@ -8783,7 +9444,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 27.5.1 /@jest/fake-timers/24.9.0: @@ -8814,7 +9475,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -8826,7 +9487,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -8867,7 +9528,7 @@ packages: '@jest/types': 24.9.0 chalk: 2.4.2 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 istanbul-lib-coverage: 2.0.5 istanbul-lib-instrument: 3.3.0 istanbul-lib-report: 2.0.8 @@ -8900,7 +9561,7 @@ packages: chalk: 3.0.0 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 4.0.3 @@ -8934,7 +9595,7 @@ packages: chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 4.0.3 @@ -8970,11 +9631,11 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.1.0 @@ -9128,7 +9789,7 @@ packages: resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==} engines: {node: '>= 6'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/types': 24.9.0 babel-plugin-istanbul: 5.2.0 chalk: 2.4.2 @@ -9152,7 +9813,7 @@ packages: resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/types': 25.5.0 babel-plugin-istanbul: 6.1.1 chalk: 3.0.0 @@ -9162,7 +9823,7 @@ packages: jest-haste-map: 25.5.1 jest-regex-util: 25.2.6 jest-util: 25.5.0 - micromatch: 4.0.4 + micromatch: 4.0.5 pirates: 4.0.5 realpath-native: 2.0.0 slash: 3.0.0 @@ -9176,7 +9837,7 @@ packages: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/types': 26.6.2 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -9186,7 +9847,7 @@ packages: jest-haste-map: 26.6.2 jest-regex-util: 26.0.0 jest-util: 26.6.2 - micromatch: 4.0.4 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 source-map: 0.6.1 @@ -9198,7 +9859,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -9208,7 +9869,7 @@ packages: jest-haste-map: 27.5.1 jest-regex-util: 27.5.1 jest-util: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 source-map: 0.6.1 @@ -9241,7 +9902,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/yargs': 15.0.14 chalk: 4.1.2 @@ -9251,17 +9912,24 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/yargs': 16.0.4 chalk: 4.1.2 + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.16 + '@jridgewell/trace-mapping': 0.3.17 /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} @@ -9280,6 +9948,12 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -9925,11 +10599,11 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 17.0.21 + '@types/node': 16.18.18 playwright-core: 1.30.0 dev: true - /@pmmmwh/react-refresh-webpack-plugin/0.5.10_vvsky5staxf7riqd5ia3sjvzsm: + /@pmmmwh/react-refresh-webpack-plugin/0.5.10_kgzwhhiezcyg2m3alqq7chac3a: resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} engines: {node: '>= 10.13'} peerDependencies: @@ -9957,7 +10631,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.29.0 + core-js-pure: 3.29.1 error-stack-parser: 2.0.6 find-up: 5.0.0 html-entities: 2.3.2 @@ -9966,7 +10640,7 @@ packages: schema-utils: 3.1.1 source-map: 0.7.3 webpack: 5.70.0_webpack-cli@4.9.2 - webpack-dev-server: 4.11.1_jaxrlecucqtr54lmhmx67obzmy + webpack-dev-server: 4.12.0_jaxrlecucqtr54lmhmx67obzmy dev: true /@pmmmwh/react-refresh-webpack-plugin/0.5.1_a3gyllrqvxpec3fpybsrposvju: @@ -9997,11 +10671,11 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.19.1 + core-js-pure: 3.29.1 error-stack-parser: 2.0.6 find-up: 5.0.0 html-entities: 2.3.2 - loader-utils: 2.0.2 + loader-utils: 2.0.4 react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 @@ -10031,7 +10705,7 @@ packages: '@react-native-community/cli-tools': 9.1.0 cosmiconfig: 5.2.1 deepmerge: 3.3.0 - glob: 7.2.0 + glob: 7.2.3 joi: 17.6.0 transitivePeerDependencies: - encoding @@ -10083,7 +10757,7 @@ packages: chalk: 4.1.2 execa: 1.0.0 fs-extra: 8.1.0 - glob: 7.2.0 + glob: 7.2.3 logkitty: 0.7.1 slash: 3.0.0 transitivePeerDependencies: @@ -10095,7 +10769,7 @@ packages: '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 execa: 1.0.0 - glob: 7.2.0 + glob: 7.2.3 ora: 5.4.1 transitivePeerDependencies: - encoding @@ -10345,14 +11019,14 @@ packages: resolution: {integrity: sha512-OkIJpiU2fz6HOJujhlhfIGrc8hB4ibqtf7nnbJQDerG0BqwZCfmgtK5sWzZ0TkXVRBKD5MpLrTmCYyMxoMCgPw==} engines: {node: '>= 8.9.0', npm: '>= 5.5.1'} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: false /@slack/logger/3.0.0: resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: false /@slack/types/1.10.0: @@ -10372,7 +11046,7 @@ packages: '@slack/logger': 2.0.0 '@slack/types': 1.10.0 '@types/is-stream': 1.1.0 - '@types/node': 18.11.18 + '@types/node': 16.18.18 axios: 0.21.4 eventemitter3: 3.1.2 form-data: 2.5.1 @@ -10390,7 +11064,7 @@ packages: '@slack/logger': 3.0.0 '@slack/types': 2.4.0 '@types/is-stream': 1.1.0 - '@types/node': 16.10.3 + '@types/node': 16.18.18 axios: 0.24.0 eventemitter3: 3.1.2 form-data: 2.5.1 @@ -10514,42 +11188,7 @@ packages: global: 4.4.0 dev: true - /@storybook/addon-controls/6.4.19_56jbash75ng5psbctf36wqywr4: - resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/node-logger': 6.4.19 - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - core-js: 3.21.1 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - eslint - - supports-color - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/addon-controls/6.4.19_wl7ffu5ts6ayqm24qlkw7h6j4e: + /@storybook/addon-controls/6.4.19_3a6aovxwhedlmqwktyt45v2x3e: resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -10564,7 +11203,7 @@ packages: '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -10584,7 +11223,155 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.4.19_4mzwqz5dtm4bsumwut2gxvl6x4: + /@storybook/addon-controls/6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy: + resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.4.19 + '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/node-logger': 6.4.19 + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.21.1 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-docs/6.4.19_7blblzzrctoqfdyapozrjiyhoa: + resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} + peerDependencies: + '@storybook/angular': 6.4.19 + '@storybook/html': 6.4.19 + '@storybook/react': 6.4.19 + '@storybook/vue': 6.4.19 + '@storybook/vue3': 6.4.19 + '@storybook/web-components': 6.4.19 + lit: ^2.0.0 + lit-html: ^1.4.1 || ^2.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + svelte: ^3.31.2 + sveltedoc-parser: ^4.1.0 + vue: ^2.6.10 || ^3.0.0 + webpack: '*' + peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/html': + optional: true + '@storybook/react': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true + react: + optional: true + react-dom: + optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.17.8 + '@babel/generator': 7.17.7 + '@babel/parser': 7.17.8 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 + '@babel/preset-env': 7.20.2_@babel+core@7.17.8 + '@jest/transform': 26.6.2 + '@mdx-js/loader': 1.6.22_react@17.0.2 + '@mdx-js/mdx': 1.6.22 + '@mdx-js/react': 1.6.22_react@17.0.2 + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/builder-webpack4': 6.4.19_m4hrdz25ld6u2my6lij2uqaeda + '@storybook/client-logger': 6.4.19 + '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@storybook/core': 6.4.19_j6ubfyuqzgsko3k3btiigyykzm + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.19 + '@storybook/node-logger': 6.4.19 + '@storybook/postinstall': 6.4.19 + '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/react': 6.4.19_whi4aahq4yrydcatxpponihg2i + '@storybook/source-loader': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 + core-js: 3.29.1 + doctrine: 3.0.0 + escodegen: 2.0.0 + fast-deep-equal: 3.1.3 + global: 4.4.0 + html-tags: 3.1.0 + js-string-escape: 1.0.1 + loader-utils: 2.0.2 + lodash: 4.17.21 + nanoid: 3.1.30 + p-limit: 3.1.0 + prettier: 2.3.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m + regenerator-runtime: 0.13.11 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.70.0_webpack-cli@3.3.12 + transitivePeerDependencies: + - '@storybook/builder-webpack5' + - '@storybook/manager-webpack5' + - '@types/react' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - typescript + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-docs/6.4.19_u6jeeaexj5lsn5qca4nthuwg7e: resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} peerDependencies: '@storybook/angular': 6.4.19 @@ -10642,17 +11429,17 @@ packages: '@mdx-js/react': 1.6.22_react@17.0.2 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/builder-webpack4': 6.4.19_6fawffbhajw2qfspjn7er622zq + '@storybook/builder-webpack4': 6.4.19_l5iuigklhzbnu7w24d3vqf2yqm '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core': 6.4.19_ybd46eyevy5nesjyz6rrqmwwmu + '@storybook/core': 6.4.19_klp3tns5wclbwz4emw354xdpea '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/postinstall': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/react': 6.4.19_a55upwwpdj22rf6pemjk4qxjbi + '@storybook/react': 6.4.19_mhdmeu3qqzacem7x2i75qauaqu '@storybook/source-loader': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -10697,119 +11484,6 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.4.19_td5ldnqdrdzplltfsjeiin6b2q: - resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} - peerDependencies: - '@storybook/angular': 6.4.19 - '@storybook/html': 6.4.19 - '@storybook/react': 6.4.19 - '@storybook/vue': 6.4.19 - '@storybook/vue3': 6.4.19 - '@storybook/web-components': 6.4.19 - lit: ^2.0.0 - lit-html: ^1.4.1 || ^2.0.0 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - svelte: ^3.31.2 - sveltedoc-parser: ^4.1.0 - vue: ^2.6.10 || ^3.0.0 - webpack: '*' - peerDependenciesMeta: - '@storybook/angular': - optional: true - '@storybook/html': - optional: true - '@storybook/react': - optional: true - '@storybook/vue': - optional: true - '@storybook/vue3': - optional: true - '@storybook/web-components': - optional: true - lit: - optional: true - lit-html: - optional: true - react: - optional: true - react-dom: - optional: true - svelte: - optional: true - sveltedoc-parser: - optional: true - vue: - optional: true - webpack: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.17.7 - '@babel/parser': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@jest/transform': 26.6.2 - '@mdx-js/loader': 1.6.22_react@17.0.2 - '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22_react@17.0.2 - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/builder-webpack4': 6.4.19_yuv5drn7ijijfjkwa6mxoauvrq - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim - '@storybook/core': 6.4.19_6cqelbxt6lx74wa4u7ecuuny7i - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.19 - '@storybook/node-logger': 6.4.19 - '@storybook/postinstall': 6.4.19 - '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/react': 6.4.19_cqdgeqmmrux6joug3kc73q4l6m - '@storybook/source-loader': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - acorn: 7.4.1 - acorn-jsx: 5.3.2_acorn@7.4.1 - acorn-walk: 7.2.0 - core-js: 3.21.1 - doctrine: 3.0.0 - escodegen: 2.0.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - html-tags: 3.1.0 - js-string-escape: 1.0.1 - loader-utils: 2.0.2 - lodash: 4.17.21 - nanoid: 3.1.30 - p-limit: 3.1.0 - prettier: 2.3.0 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m - regenerator-runtime: 0.13.9 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.70.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@storybook/builder-webpack5' - - '@storybook/manager-webpack5' - - '@types/react' - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - typescript - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/addon-knobs/6.4.0_nu75ilgc3qugomjhuwv2hk42im: resolution: {integrity: sha512-DiH1/5e2AFHoHrncl1qLu18ZHPHzRMMPvOLFz8AWvvmc+VCqTdIaE+tdxKr3e8rYylKllibgvDOzrLjfTNjF+Q==} deprecated: deprecating @storybook/addon-knobs in favor of @storybook/addon-controls @@ -10947,11 +11621,11 @@ packages: '@storybook/router': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/webpack-env': 1.16.3 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 dev: true /@storybook/api/6.4.19_sfoxds7t5ydpegc3knd667wn6m: @@ -10967,21 +11641,21 @@ packages: '@storybook/router': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/semver': 7.3.2 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - core-js: 3.21.1 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 memoizerific: 1.11.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 store2: 2.13.2 telejson: 5.3.3 ts-dedent: 2.2.0 util-deprecate: 1.0.2 dev: true - /@storybook/builder-webpack4/6.4.19_25m6hjymtvcmw3ioyxirlpsioi: + /@storybook/builder-webpack4/6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -10991,35 +11665,35 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 '@storybook/channels': 6.4.19 '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -11027,24 +11701,24 @@ packages: '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/node': 14.14.33 '@types/webpack': 4.41.32 autoprefixer: 9.8.6 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_62fz4gragfs3w5a4iegi53ru5i - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 + fork-ts-checker-webpack-plugin: 4.1.6_rkend4bmswxcu6hnzdf4d5pmre + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe @@ -11055,7 +11729,7 @@ packages: style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0_webpack-cli@3.3.12 @@ -11074,7 +11748,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.4.19_3n4gsnmxucj3bywv6syggoiztm: + /@storybook/builder-webpack4/6.4.19_6ys3ybvjg5af2djx64dzd2ojum: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11084,27 +11758,27 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -11112,7 +11786,7 @@ packages: '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -11124,20 +11798,20 @@ packages: '@types/node': 14.14.33 '@types/webpack': 4.41.32 autoprefixer: 9.8.6 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_lasgyenclx45ngbljrbo537mpe - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 + fork-ts-checker-webpack-plugin: 4.1.6_evijigonbo4skk2vlqtwtdqibu + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe @@ -11148,7 +11822,7 @@ packages: style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -11167,7 +11841,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.4.19_6fawffbhajw2qfspjn7er622zq: + /@storybook/builder-webpack4/6.4.19_l5iuigklhzbnu7w24d3vqf2yqm: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11177,27 +11851,27 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -11205,7 +11879,7 @@ packages: '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -11217,20 +11891,20 @@ packages: '@types/node': 14.14.33 '@types/webpack': 4.41.32 autoprefixer: 9.8.6 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_lasgyenclx45ngbljrbo537mpe - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 + fork-ts-checker-webpack-plugin: 4.1.6_evijigonbo4skk2vlqtwtdqibu + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe @@ -11241,7 +11915,7 @@ packages: style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -11260,7 +11934,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.4.19_o7sd63cu7bkdykipq4mkrzuw2i: + /@storybook/builder-webpack4/6.4.19_m4hrdz25ld6u2my6lij2uqaeda: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11270,120 +11944,27 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/channel-postmessage': 6.4.19 - '@storybook/channels': 6.4.19 - '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa - '@storybook/core-events': 6.4.19 - '@storybook/node-logger': 6.4.19 - '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/router': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@types/node': 14.14.33 - '@types/webpack': 4.41.32 - autoprefixer: 9.8.6 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy - babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 - css-loader: 3.6.0_webpack@4.46.0 - file-loader: 6.2.0_webpack@4.46.0 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_62fz4gragfs3w5a4iegi53ru5i - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 - global: 4.4.0 - html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 - postcss: 7.0.39 - postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe - raw-loader: 4.0.2_webpack@4.46.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - stable: 0.1.8 - style-loader: 1.3.0_webpack@4.46.0 - terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 - ts-dedent: 2.2.0 - typescript: 4.8.4 - url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy - util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@3.3.12 - webpack-dev-middleware: 3.7.3_webpack@4.46.0 - webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 - webpack-hot-middleware: 2.25.1 - webpack-virtual-modules: 0.2.2 - transitivePeerDependencies: - - '@types/react' - - acorn - - bluebird - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/builder-webpack4/6.4.19_yuv5drn7ijijfjkwa6mxoauvrq: - resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -11391,7 +11972,7 @@ packages: '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -11403,20 +11984,20 @@ packages: '@types/node': 14.14.33 '@types/webpack': 4.41.32 autoprefixer: 9.8.6 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_62fz4gragfs3w5a4iegi53ru5i - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 + fork-ts-checker-webpack-plugin: 4.1.6_rkend4bmswxcu6hnzdf4d5pmre + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe @@ -11427,7 +12008,7 @@ packages: style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0_webpack-cli@3.3.12 @@ -11446,7 +12027,100 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack5/6.4.19_3n4gsnmxucj3bywv6syggoiztm: + /@storybook/builder-webpack4/6.4.19_ug7mgzizhsglmkx7ebuhuskkim: + resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.4.19 + '@storybook/channels': 6.4.19 + '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.4.19 + '@storybook/components': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy + '@storybook/core-events': 6.4.19 + '@storybook/node-logger': 6.4.19 + '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@types/node': 14.14.33 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.6 + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa + babel-plugin-macros: 2.8.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.29.1 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6_rkend4bmswxcu6hnzdf4d5pmre + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe + raw-loader: 4.0.2_webpack@4.46.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.9.5 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@3.3.12 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - bluebird + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack5/6.4.19_6ys3ybvjg5af2djx64dzd2ojum: resolution: {integrity: sha512-AWM4YMN1gPaf7jfntqZTCGpIQ1tF6YRU1JtczPG4ox28rTaO6NMfOBi9aRhBre/59pPOh9bF6u2gu/MIHmRW+w==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11483,7 +12157,7 @@ packages: '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -11498,7 +12172,7 @@ packages: case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.21.1 css-loader: 5.2.7_webpack@5.70.0 - fork-ts-checker-webpack-plugin: 6.5.0_27qmdvvfdw5s3nqwnln6yerdsa + fork-ts-checker-webpack-plugin: 6.5.0_7tuhpze3ldk5r64y6dj6kgq4dy glob: 7.2.0 glob-promise: 3.4.0_glob@7.2.0 html-webpack-plugin: 5.5.0_acorn@8.8.1+webpack@5.70.0 @@ -11510,7 +12184,7 @@ packages: style-loader: 2.0.0_webpack@5.70.0 terser-webpack-plugin: 5.2.5_acorn@8.8.1+webpack@5.70.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 webpack: 5.70.0 webpack-dev-middleware: 4.3.0_webpack@5.70.0 @@ -11535,7 +12209,7 @@ packages: '@storybook/channels': 6.4.19 '@storybook/client-logger': 6.4.19 '@storybook/core-events': 6.4.19 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 qs: 6.10.3 telejson: 5.3.3 @@ -11546,7 +12220,7 @@ packages: dependencies: '@storybook/channels': 6.4.19 '@storybook/client-logger': 6.4.19 - core-js: 3.25.5 + core-js: 3.29.1 global: 4.4.0 telejson: 5.3.3 dev: true @@ -11554,7 +12228,7 @@ packages: /@storybook/channels/6.4.19: resolution: {integrity: sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==} dependencies: - core-js: 3.21.1 + core-js: 3.29.1 ts-dedent: 2.2.0 util-deprecate: 1.0.2 dev: true @@ -11574,7 +12248,7 @@ packages: '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/qs': 6.9.7 '@types/webpack-env': 1.16.3 - core-js: 3.25.5 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -11582,7 +12256,7 @@ packages: qs: 6.10.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 store2: 2.13.2 synchronous-promise: 2.0.15 ts-dedent: 2.2.0 @@ -11592,7 +12266,7 @@ packages: /@storybook/client-logger/6.4.19: resolution: {integrity: sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==} dependencies: - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 dev: true @@ -11610,7 +12284,7 @@ packages: '@types/overlayscrollbars': 1.12.1 '@types/react-syntax-highlighter': 11.0.5 color-convert: 2.0.1 - core-js: 3.21.1 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -11625,7 +12299,7 @@ packages: react-popper-tooltip: 3.1.1_sfoxds7t5ydpegc3knd667wn6m react-syntax-highlighter: 13.5.3_react@17.0.2 react-textarea-autosize: 8.3.3_pxzommwrsowkd4kgag6q3sluym - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 util-deprecate: 1.0.2 transitivePeerDependencies: @@ -11646,7 +12320,7 @@ packages: '@types/overlayscrollbars': 1.12.1 '@types/react-syntax-highlighter': 11.0.5 color-convert: 2.0.1 - core-js: 3.21.1 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -11661,14 +12335,14 @@ packages: react-popper-tooltip: 3.1.1_sfoxds7t5ydpegc3knd667wn6m react-syntax-highlighter: 13.5.3_react@17.0.2 react-textarea-autosize: 8.3.3_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 util-deprecate: 1.0.2 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-client/6.4.19_4khy3msxr4lnrhwh6cbg2lwt64: + /@storybook/core-client/6.4.19_4566jesxnohoezqtk5duz54hz4: resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11691,15 +12365,15 @@ packages: '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 lodash: 4.17.21 qs: 6.10.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 unfetch: 4.2.0 util-deprecate: 1.0.2 webpack: 4.46.0_webpack-cli@3.3.12 @@ -11707,85 +12381,7 @@ packages: - '@types/react' dev: true - /@storybook/core-client/6.4.19_i57eoi6p2gbobism6oxgcmupsa: - resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/channel-postmessage': 6.4.19 - '@storybook/channel-websocket': 6.4.19 - '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.21.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - ts-dedent: 2.2.0 - typescript: 4.8.4 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 5.70.0 - transitivePeerDependencies: - - '@types/react' - dev: true - - /@storybook/core-client/6.4.19_lb6j7tllhltqtas2n635xqdotu: - resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/channel-postmessage': 6.4.19 - '@storybook/channel-websocket': 6.4.19 - '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.21.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - ts-dedent: 2.2.0 - typescript: 4.8.4 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 4.46.0 - transitivePeerDependencies: - - '@types/react' - dev: true - - /@storybook/core-client/6.4.19_nj5p77xh6arla3uyzyeb3fmasm: + /@storybook/core-client/6.4.19_bgd4x74gnrnzeywlisy5yekbra: resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11808,15 +12404,15 @@ packages: '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 lodash: 4.17.21 qs: 6.10.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 unfetch: 4.2.0 util-deprecate: 1.0.2 webpack: 5.70.0_webpack-cli@3.3.12 @@ -11824,7 +12420,85 @@ packages: - '@types/react' dev: true - /@storybook/core-common/6.4.19_56jbash75ng5psbctf36wqywr4: + /@storybook/core-client/6.4.19_ugnwudovksvrodxvsvei5u2eva: + resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.4.19 + '@storybook/channel-websocket': 6.4.19 + '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.4.19 + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.29.1 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.11 + ts-dedent: 2.2.0 + typescript: 4.9.5 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + webpack: 5.70.0 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@storybook/core-client/6.4.19_zpymzxef3xv3tkikcnxd3qomju: + resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.4.19 + '@storybook/channel-websocket': 6.4.19 + '@storybook/client-api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.4.19 + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/preview-web': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.29.1 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.10.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.11 + ts-dedent: 2.2.0 + typescript: 4.9.5 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - '@types/react' + dev: true + + /@storybook/core-common/6.4.19_euc6zkclrannm52cemzqb5qojy: resolution: {integrity: sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11834,47 +12508,47 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@babel/register': 7.18.9_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 + '@babel/register': 7.18.9_@babel+core@7.21.3 '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@types/node': 14.14.33 '@types/pretty-hrtime': 1.0.1 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 chalk: 4.1.2 - core-js: 3.21.1 + core-js: 3.29.1 express: 4.18.1 file-system-cache: 1.0.5 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.0_lasgyenclx45ngbljrbo537mpe + fork-ts-checker-webpack-plugin: 6.5.0_rkend4bmswxcu6hnzdf4d5pmre fs-extra: 9.1.0 - glob: 7.2.0 + glob: 7.2.3 handlebars: 4.7.7 interpret: 2.2.0 - json5: 2.2.0 + json5: 2.2.3 lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.0 + picomatch: 2.3.1 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 react: 17.0.2 @@ -11883,9 +12557,9 @@ packages: slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 - webpack: 4.46.0 + webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: - eslint - supports-color @@ -11894,7 +12568,7 @@ packages: - webpack-command dev: true - /@storybook/core-common/6.4.19_mqzgkamhc7bbbitv65cxtf4gfa: + /@storybook/core-common/6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy: resolution: {integrity: sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11904,47 +12578,47 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@babel/register': 7.18.9_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 + '@babel/register': 7.18.9_@babel+core@7.21.3 '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@types/node': 14.14.33 '@types/pretty-hrtime': 1.0.1 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.21.3 chalk: 4.1.2 - core-js: 3.21.1 + core-js: 3.29.1 express: 4.18.1 file-system-cache: 1.0.5 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.0_62fz4gragfs3w5a4iegi53ru5i + fork-ts-checker-webpack-plugin: 6.5.0_evijigonbo4skk2vlqtwtdqibu fs-extra: 9.1.0 - glob: 7.2.0 + glob: 7.2.3 handlebars: 4.7.7 interpret: 2.2.0 - json5: 2.2.0 + json5: 2.2.3 lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.0 + picomatch: 2.3.1 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 react: 17.0.2 @@ -11953,9 +12627,9 @@ packages: slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0 transitivePeerDependencies: - eslint - supports-color @@ -11970,7 +12644,7 @@ packages: core-js: 3.21.1 dev: true - /@storybook/core-server/6.4.19_25m6hjymtvcmw3ioyxirlpsioi: + /@storybook/core-server/6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -11987,13 +12661,13 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_25m6hjymtvcmw3ioyxirlpsioi - '@storybook/core-client': 6.4.19_4khy3msxr4lnrhwh6cbg2lwt64 - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/builder-webpack4': 6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_25m6hjymtvcmw3ioyxirlpsioi + '@storybook/manager-webpack4': 6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -12007,7 +12681,7 @@ packages: cli-table3: 0.6.1 commander: 6.2.1 compression: 1.7.4 - core-js: 3.25.5 + core-js: 3.29.1 cpy: 8.1.2 detect-port: 1.3.0 express: 4.18.1 @@ -12021,16 +12695,16 @@ packages: prompts: 2.4.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 - watchpack: 2.3.1 + watchpack: 2.4.0 webpack: 4.46.0_webpack-cli@3.3.12 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - '@types/react' - acorn @@ -12045,7 +12719,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.19_2x3ckvxqfngstqwiutxqcrgnby: + /@storybook/core-server/6.4.19_m4hrdz25ld6u2my6lij2uqaeda: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -12062,15 +12736,13 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_6fawffbhajw2qfspjn7er622zq - '@storybook/builder-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/builder-webpack4': 6.4.19_m4hrdz25ld6u2my6lij2uqaeda + '@storybook/core-client': 6.4.19_4566jesxnohoezqtk5duz54hz4 + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_6fawffbhajw2qfspjn7er622zq - '@storybook/manager-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm + '@storybook/manager-webpack4': 6.4.19_m4hrdz25ld6u2my6lij2uqaeda '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -12084,7 +12756,7 @@ packages: cli-table3: 0.6.1 commander: 6.2.1 compression: 1.7.4 - core-js: 3.25.5 + core-js: 3.29.1 cpy: 8.1.2 detect-port: 1.3.0 express: 4.18.1 @@ -12098,16 +12770,93 @@ packages: prompts: 2.4.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 - watchpack: 2.3.1 + watchpack: 2.4.0 + webpack: 4.46.0_webpack-cli@3.3.12 + ws: 8.13.0 + transitivePeerDependencies: + - '@types/react' + - acorn + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.4.19_nfvbgl5wr2rvtjfhrohzuafa2y: + resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + '@storybook/manager-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.4.19_l5iuigklhzbnu7w24d3vqf2yqm + '@storybook/builder-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.19 + '@storybook/manager-webpack4': 6.4.19_l5iuigklhzbnu7w24d3vqf2yqm + '@storybook/manager-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/node-logger': 6.4.19 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 14.14.33 + '@types/node-fetch': 2.6.1 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.1 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.29.1 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.18.1 + file-system-cache: 1.0.5 + fs-extra: 9.1.0 + globby: 11.1.0 + ip: 1.1.5 + lodash: 4.17.21 + node-fetch: 2.6.7 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.11 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + typescript: 4.9.5 + util-deprecate: 1.0.2 + watchpack: 2.4.0 webpack: 4.46.0 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - '@types/react' - acorn @@ -12122,7 +12871,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.19_o7sd63cu7bkdykipq4mkrzuw2i: + /@storybook/core-server/6.4.19_pvbkqyxywym64bhly7k2ckodfu: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -12139,13 +12888,15 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_o7sd63cu7bkdykipq4mkrzuw2i - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/builder-webpack4': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/builder-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_o7sd63cu7bkdykipq4mkrzuw2i + '@storybook/manager-webpack4': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/manager-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -12159,7 +12910,7 @@ packages: cli-table3: 0.6.1 commander: 6.2.1 compression: 1.7.4 - core-js: 3.25.5 + core-js: 3.29.1 cpy: 8.1.2 detect-port: 1.3.0 express: 4.18.1 @@ -12173,168 +12924,16 @@ packages: prompts: 2.4.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 - watchpack: 2.3.1 - webpack: 4.46.0_webpack-cli@3.3.12 - ws: 8.12.1 - transitivePeerDependencies: - - '@types/react' - - acorn - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core-server/6.4.19_yuv5drn7ijijfjkwa6mxoauvrq: - resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - '@storybook/manager-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_yuv5drn7ijijfjkwa6mxoauvrq - '@storybook/core-client': 6.4.19_4khy3msxr4lnrhwh6cbg2lwt64 - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_yuv5drn7ijijfjkwa6mxoauvrq - '@storybook/node-logger': 6.4.19 - '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@types/node': 14.14.33 - '@types/node-fetch': 2.6.1 - '@types/pretty-hrtime': 1.0.1 - '@types/webpack': 4.41.32 - better-opn: 2.1.1 - boxen: 5.1.2 - chalk: 4.1.2 - cli-table3: 0.6.1 - commander: 6.2.1 - compression: 1.7.4 - core-js: 3.25.5 - cpy: 8.1.2 - detect-port: 1.3.0 - express: 4.18.1 - file-system-cache: 1.0.5 - fs-extra: 9.1.0 - globby: 11.1.0 - ip: 1.1.5 - lodash: 4.17.21 - node-fetch: 2.6.7 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - serve-favicon: 2.5.0 - slash: 3.0.0 - telejson: 5.3.3 - ts-dedent: 2.2.0 - typescript: 4.8.4 - util-deprecate: 1.0.2 - watchpack: 2.3.1 - webpack: 4.46.0_webpack-cli@3.3.12 - ws: 8.12.1 - transitivePeerDependencies: - - '@types/react' - - acorn - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core-server/6.4.19_zide44vnbwlw6buwpxyfzrhxya: - resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - '@storybook/manager-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/builder-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/manager-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/node-logger': 6.4.19 - '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@types/node': 14.14.33 - '@types/node-fetch': 2.6.1 - '@types/pretty-hrtime': 1.0.1 - '@types/webpack': 4.41.32 - better-opn: 2.1.1 - boxen: 5.1.2 - chalk: 4.1.2 - cli-table3: 0.6.1 - commander: 6.2.1 - compression: 1.7.4 - core-js: 3.25.5 - cpy: 8.1.2 - detect-port: 1.3.0 - express: 4.18.1 - file-system-cache: 1.0.5 - fs-extra: 9.1.0 - globby: 11.1.0 - ip: 1.1.5 - lodash: 4.17.21 - node-fetch: 2.6.7 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - serve-favicon: 2.5.0 - slash: 3.0.0 - telejson: 5.3.3 - ts-dedent: 2.2.0 - typescript: 4.8.4 - util-deprecate: 1.0.2 - watchpack: 2.3.1 + watchpack: 2.4.0 webpack: 4.46.0 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - '@types/react' - acorn @@ -12349,7 +12948,82 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_4cb7vxhorbasgfyagprjvpaxzu: + /@storybook/core-server/6.4.19_ug7mgzizhsglmkx7ebuhuskkim: + resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + '@storybook/manager-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.4.19_ug7mgzizhsglmkx7ebuhuskkim + '@storybook/core-client': 6.4.19_4566jesxnohoezqtk5duz54hz4 + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.19 + '@storybook/manager-webpack4': 6.4.19_ug7mgzizhsglmkx7ebuhuskkim + '@storybook/node-logger': 6.4.19 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 14.14.33 + '@types/node-fetch': 2.6.1 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.1 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.29.1 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.18.1 + file-system-cache: 1.0.5 + fs-extra: 9.1.0 + globby: 11.1.0 + ip: 1.1.5 + lodash: 4.17.21 + node-fetch: 2.6.7 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.11 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + typescript: 4.9.5 + util-deprecate: 1.0.2 + watchpack: 2.4.0 + webpack: 4.46.0_webpack-cli@3.3.12 + ws: 8.13.0 + transitivePeerDependencies: + - '@types/react' + - acorn + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.4.19_j6ubfyuqzgsko3k3btiigyykzm: resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -12363,47 +13037,11 @@ packages: typescript: optional: true dependencies: - '@storybook/builder-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-server': 6.4.19_zide44vnbwlw6buwpxyfzrhxya + '@storybook/core-client': 6.4.19_bgd4x74gnrnzeywlisy5yekbra + '@storybook/core-server': 6.4.19_m4hrdz25ld6u2my6lij2uqaeda react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 - webpack: 4.46.0 - transitivePeerDependencies: - - '@storybook/manager-webpack5' - - '@types/react' - - acorn - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core/6.4.19_6cqelbxt6lx74wa4u7ecuuny7i: - resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@storybook/core-client': 6.4.19_nj5p77xh6arla3uyzyeb3fmasm - '@storybook/core-server': 6.4.19_yuv5drn7ijijfjkwa6mxoauvrq - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@3.3.12 transitivePeerDependencies: - '@storybook/manager-webpack5' @@ -12420,7 +13058,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_jqd6s4xt6kov4uvvwofgl2yngm: + /@storybook/core/6.4.19_k55z6z7voempqbr5iibtxuys4m: resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -12434,11 +13072,11 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-server': 6.4.19_o7sd63cu7bkdykipq4mkrzuw2i + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-server': 6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: - '@storybook/manager-webpack5' @@ -12455,7 +13093,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_lyggee6zfyjj6ezzf7jaxeljxi: + /@storybook/core/6.4.19_klp3tns5wclbwz4emw354xdpea: resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -12469,47 +13107,12 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.4.19_4khy3msxr4lnrhwh6cbg2lwt64 - '@storybook/core-server': 6.4.19_25m6hjymtvcmw3ioyxirlpsioi + '@storybook/builder-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/core-client': 6.4.19_ugnwudovksvrodxvsvei5u2eva + '@storybook/core-server': 6.4.19_nfvbgl5wr2rvtjfhrohzuafa2y react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 - webpack: 4.46.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@storybook/manager-webpack5' - - '@types/react' - - acorn - - bluebird - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core/6.4.19_ybd46eyevy5nesjyz6rrqmwwmu: - resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@storybook/builder-webpack5': 6.4.19_3n4gsnmxucj3bywv6syggoiztm - '@storybook/core-client': 6.4.19_i57eoi6p2gbobism6oxgcmupsa - '@storybook/core-server': 6.4.19_2x3ckvxqfngstqwiutxqcrgnby - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 5.70.0 transitivePeerDependencies: - '@storybook/manager-webpack5' @@ -12526,25 +13129,96 @@ packages: - webpack-command dev: true + /@storybook/core/6.4.19_lnlgt7bgutyueo6ji5lqchn74y: + resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/builder-webpack5': 6.4.19_6ys3ybvjg5af2djx64dzd2ojum + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-server': 6.4.19_pvbkqyxywym64bhly7k2ckodfu + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + typescript: 4.9.5 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.4.19_lzedniubngxzgrh6ahbgl2qgru: + resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/core-client': 6.4.19_4566jesxnohoezqtk5duz54hz4 + '@storybook/core-server': 6.4.19_ug7mgzizhsglmkx7ebuhuskkim + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + typescript: 4.9.5 + webpack: 4.46.0_webpack-cli@3.3.12 + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/csf-tools/6.4.19: resolution: {integrity: sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==} dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/parser': 7.19.3 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/parser': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 '@mdx-js/mdx': 1.6.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - core-js: 3.25.5 + core-js: 3.29.1 fs-extra: 9.1.0 global: 4.4.0 js-string-escape: 1.0.1 lodash: 4.17.21 prettier: 2.3.0 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color @@ -12556,7 +13230,7 @@ packages: lodash: 4.17.21 dev: true - /@storybook/manager-webpack4/6.4.19_25m6hjymtvcmw3ioyxirlpsioi: + /@storybook/manager-webpack4/6.4.19_3q5qh5jdu3szc76hn7tc5lsa4i: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12566,21 +13240,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_4khy3msxr4lnrhwh6cbg2lwt64 - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/node-logger': 6.4.19 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/node': 14.14.33 '@types/webpack': 4.41.32 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -12589,17 +13263,17 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 style-loader: 1.3.0_webpack@4.46.0 telejson: 5.3.3 terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0_webpack-cli@3.3.12 @@ -12617,7 +13291,7 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack4/6.4.19_3n4gsnmxucj3bywv6syggoiztm: + /@storybook/manager-webpack4/6.4.19_6ys3ybvjg5af2djx64dzd2ojum: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12627,21 +13301,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/node-logger': 6.4.19 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/node': 14.14.33 '@types/webpack': 4.41.32 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -12650,17 +13324,17 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 style-loader: 1.3.0_webpack@4.46.0 telejson: 5.3.3 terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -12678,7 +13352,7 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack4/6.4.19_6fawffbhajw2qfspjn7er622zq: + /@storybook/manager-webpack4/6.4.19_l5iuigklhzbnu7w24d3vqf2yqm: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12688,21 +13362,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-client': 6.4.19_zpymzxef3xv3tkikcnxd3qomju + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/node-logger': 6.4.19 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/node': 14.14.33 '@types/webpack': 4.41.32 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -12711,17 +13385,17 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 style-loader: 1.3.0_webpack@4.46.0 telejson: 5.3.3 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -12739,7 +13413,7 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack4/6.4.19_o7sd63cu7bkdykipq4mkrzuw2i: + /@storybook/manager-webpack4/6.4.19_m4hrdz25ld6u2my6lij2uqaeda: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12749,82 +13423,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_lb6j7tllhltqtas2n635xqdotu - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa - '@storybook/node-logger': 6.4.19 - '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@types/node': 14.14.33 - '@types/webpack': 4.41.32 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.25.5 - css-loader: 3.6.0_webpack@4.46.0 - express: 4.18.1 - file-loader: 6.2.0_webpack@4.46.0 - file-system-cache: 1.0.5 - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2_webpack@4.46.0 - node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 - resolve-from: 5.0.0 - style-loader: 1.3.0_webpack@4.46.0 - telejson: 5.3.3 - terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 - ts-dedent: 2.2.0 - typescript: 4.8.4 - url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy - util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@3.3.12 - webpack-dev-middleware: 3.7.3_webpack@4.46.0 - webpack-virtual-modules: 0.2.2 - transitivePeerDependencies: - - '@types/react' - - acorn - - bluebird - - encoding - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/manager-webpack4/6.4.19_yuv5drn7ijijfjkwa6mxoauvrq: - resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_4khy3msxr4lnrhwh6cbg2lwt64 - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core-client': 6.4.19_4566jesxnohoezqtk5duz54hz4 + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/node-logger': 6.4.19 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim '@types/node': 14.14.33 '@types/webpack': 4.41.32 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.5 + core-js: 3.29.1 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -12833,17 +13446,17 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.4 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 style-loader: 1.3.0_webpack@4.46.0 telejson: 5.3.3 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0_webpack-cli@3.3.12 @@ -12861,7 +13474,68 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack5/6.4.19_3n4gsnmxucj3bywv6syggoiztm: + /@storybook/manager-webpack4/6.4.19_ug7mgzizhsglmkx7ebuhuskkim: + resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 + '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-client': 6.4.19_4566jesxnohoezqtk5duz54hz4 + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy + '@storybook/node-logger': 6.4.19 + '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.4.19_hiunvzosbwliizyirxfy6hjyim + '@types/node': 14.14.33 + '@types/webpack': 4.41.32 + babel-loader: 8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.29.1 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.18.1 + file-loader: 6.2.0_webpack@4.46.0 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.7 + pnp-webpack-plugin: 1.6.4_typescript@4.9.5 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.11 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 5.3.3 + terser-webpack-plugin: 4.2.3_acorn@8.8.1+webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.9.5 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@3.3.12 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - bluebird + - encoding + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/manager-webpack5/6.4.19_6ys3ybvjg5af2djx64dzd2ojum: resolution: {integrity: sha512-hVjWhWAOgWaymBy0HeRskN+MfKLpqLP4Txfw+3Xqg1qplgexV0w2O4BQrS/SNEH4V/1qF9h8XTsk3L3oQIj3Mg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12875,8 +13549,8 @@ packages: '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.4.19_i57eoi6p2gbobism6oxgcmupsa - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core-client': 6.4.19_ugnwudovksvrodxvsvei5u2eva + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/node-logger': 6.4.19 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/ui': 6.4.19_sfoxds7t5ydpegc3knd667wn6m @@ -12902,7 +13576,7 @@ packages: telejson: 5.3.3 terser-webpack-plugin: 5.2.5_acorn@8.8.1+webpack@5.70.0 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 util-deprecate: 1.0.2 webpack: 5.70.0 webpack-dev-middleware: 4.3.0_webpack@5.70.0 @@ -12926,7 +13600,7 @@ packages: dependencies: '@types/npmlog': 4.1.4 chalk: 4.1.2 - core-js: 3.21.1 + core-js: 3.29.1 npmlog: 5.0.1 pretty-hrtime: 1.0.3 dev: true @@ -12934,7 +13608,7 @@ packages: /@storybook/postinstall/6.4.19: resolution: {integrity: sha512-/0tHHxyIV82zt1rw4BW70GmrQbDVu9IJPAxOqFzGjC1fNojwJ53mK6FfUsOzbhG5mWk5p0Ip5+zr74moP119AA==} dependencies: - core-js: 3.21.1 + core-js: 3.29.1 dev: true /@storybook/preview-web/6.4.19_sfoxds7t5ydpegc3knd667wn6m: @@ -12950,20 +13624,20 @@ packages: '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m ansi-to-html: 0.6.15 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 lodash: 4.17.21 qs: 6.10.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 synchronous-promise: 2.0.15 ts-dedent: 2.2.0 unfetch: 4.2.0 util-deprecate: 1.0.2 dev: true - /@storybook/react-docgen-typescript-plugin/1.0.2-canary.253f8c1.0_lasgyenclx45ngbljrbo537mpe: + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.253f8c1.0_evijigonbo4skk2vlqtwtdqibu: resolution: {integrity: sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw==} peerDependencies: typescript: '>= 3.x' @@ -12973,16 +13647,16 @@ packages: endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.0.4 - micromatch: 4.0.4 - react-docgen-typescript: 2.2.2_typescript@4.8.4 + micromatch: 4.0.5 + react-docgen-typescript: 2.2.2_typescript@4.9.5 tslib: 2.5.0 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/react/6.4.19_a55upwwpdj22rf6pemjk4qxjbi: + /@storybook/react/6.4.19_mhdmeu3qqzacem7x2i75qauaqu: resolution: {integrity: sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==} engines: {node: '>=10.13.0'} hasBin: true @@ -12997,21 +13671,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/preset-flow': 7.16.7_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/preset-flow': 7.16.7_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_a3gyllrqvxpec3fpybsrposvju '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core': 6.4.19_4cb7vxhorbasgfyagprjvpaxzu - '@storybook/core-common': 6.4.19_56jbash75ng5psbctf36wqywr4 + '@storybook/core': 6.4.19_lnlgt7bgutyueo6ji5lqchn74y + '@storybook/core-common': 6.4.19_jgxnvbe4faw3ohf4h6p42qq6oy '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_lasgyenclx45ngbljrbo537mpe + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_evijigonbo4skk2vlqtwtdqibu '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/webpack-env': 1.16.3 babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-named-asset-import: 0.3.8_@babel+core@7.17.8 + babel-plugin-named-asset-import: 0.3.8_@babel+core@7.21.3 babel-plugin-react-docgen: 4.2.1 core-js: 3.21.1 global: 4.4.0 @@ -13023,7 +13697,7 @@ packages: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -13047,7 +13721,7 @@ packages: - webpack-plugin-serve dev: true - /@storybook/react/6.4.19_cqdgeqmmrux6joug3kc73q4l6m: + /@storybook/react/6.4.19_whi4aahq4yrydcatxpponihg2i: resolution: {integrity: sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==} engines: {node: '>=10.13.0'} hasBin: true @@ -13067,18 +13741,18 @@ packages: '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_a3gyllrqvxpec3fpybsrposvju '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core': 6.4.19_lyggee6zfyjj6ezzf7jaxeljxi - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core': 6.4.19_lzedniubngxzgrh6ahbgl2qgru + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_lasgyenclx45ngbljrbo537mpe + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_evijigonbo4skk2vlqtwtdqibu '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/webpack-env': 1.16.3 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-named-asset-import: 0.3.8_@babel+core@7.17.8 babel-plugin-react-docgen: 4.2.1 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 lodash: 4.17.21 prop-types: 15.8.1 @@ -13086,9 +13760,9 @@ packages: react-dom: 17.0.2_react@17.0.2 react-refresh: 0.11.0 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -13112,7 +13786,7 @@ packages: - webpack-plugin-serve dev: true - /@storybook/react/6.4.19_pjugpuchrb7ea5kuxwnxihy6zq: + /@storybook/react/6.4.19_z2hxmhm42crgarow2l57qwcq74: resolution: {integrity: sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==} engines: {node: '>=10.13.0'} hasBin: true @@ -13132,18 +13806,18 @@ packages: '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_a3gyllrqvxpec3fpybsrposvju '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core': 6.4.19_jqd6s4xt6kov4uvvwofgl2yngm - '@storybook/core-common': 6.4.19_mqzgkamhc7bbbitv65cxtf4gfa + '@storybook/core': 6.4.19_k55z6z7voempqbr5iibtxuys4m + '@storybook/core-common': 6.4.19_euc6zkclrannm52cemzqb5qojy '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_lasgyenclx45ngbljrbo537mpe + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_evijigonbo4skk2vlqtwtdqibu '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@types/webpack-env': 1.16.3 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-named-asset-import: 0.3.8_@babel+core@7.17.8 babel-plugin-react-docgen: 4.2.1 - core-js: 3.21.1 + core-js: 3.29.1 global: 4.4.0 lodash: 4.17.21 prop-types: 15.8.1 @@ -13151,9 +13825,9 @@ packages: react-dom: 17.0.2_react@17.0.2 react-refresh: 0.11.0 read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -13184,7 +13858,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 dependencies: '@storybook/client-logger': 6.4.19 - core-js: 3.21.1 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 history: 5.0.0 @@ -13203,7 +13877,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - core-js: 3.21.1 + core-js: 3.29.1 find-up: 4.1.0 dev: true @@ -13216,15 +13890,15 @@ packages: '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/client-logger': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 - core-js: 3.21.1 + core-js: 3.29.1 estraverse: 5.3.0 global: 4.4.0 - loader-utils: 2.0.2 + loader-utils: 2.0.4 lodash: 4.17.21 prettier: 2.3.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 dev: true /@storybook/store/6.4.19_sfoxds7t5ydpegc3knd667wn6m: @@ -13237,14 +13911,14 @@ packages: '@storybook/client-logger': 6.4.19 '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 - core-js: 3.21.1 + core-js: 3.29.1 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 memoizerific: 1.11.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 slash: 3.0.0 stable: 0.1.8 synchronous-promise: 2.0.15 @@ -13262,7 +13936,7 @@ packages: '@emotion/is-prop-valid': 0.8.8 '@emotion/styled': 10.3.0_gfrer23gq2rp2t523t6qbxrx6m '@storybook/client-logger': 6.4.19 - core-js: 3.21.1 + core-js: 3.29.1 deep-object-diff: 1.1.7 emotion-theming: 10.3.0_gfrer23gq2rp2t523t6qbxrx6m global: 4.4.0 @@ -13291,8 +13965,8 @@ packages: '@storybook/semver': 7.3.2 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m copy-to-clipboard: 3.3.1 - core-js: 3.25.5 - core-js-pure: 3.19.1 + core-js: 3.29.1 + core-js-pure: 3.29.1 downshift: 6.1.12_react@17.0.2 emotion-theming: 10.3.0_gfrer23gq2rp2t523t6qbxrx6m fuse.js: 3.6.1 @@ -13307,7 +13981,7 @@ packages: react-draggable: 4.4.4_sfoxds7t5ydpegc3knd667wn6m react-helmet-async: 1.2.3_sfoxds7t5ydpegc3knd667wn6m react-sizeme: 3.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 store2: 2.13.2 transitivePeerDependencies: @@ -13331,8 +14005,8 @@ packages: '@storybook/semver': 7.3.2 '@storybook/theming': 6.4.19_sfoxds7t5ydpegc3knd667wn6m copy-to-clipboard: 3.3.1 - core-js: 3.25.5 - core-js-pure: 3.19.1 + core-js: 3.29.1 + core-js-pure: 3.29.1 downshift: 6.1.12_react@17.0.2 emotion-theming: 10.3.0_gfrer23gq2rp2t523t6qbxrx6m fuse.js: 3.6.1 @@ -13347,7 +14021,7 @@ packages: react-draggable: 4.4.4_sfoxds7t5ydpegc3knd667wn6m react-helmet-async: 1.2.3_sfoxds7t5ydpegc3knd667wn6m react-sizeme: 3.0.2 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 resolve-from: 5.0.0 store2: 2.13.2 transitivePeerDependencies: @@ -13360,7 +14034,7 @@ packages: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 postcss: 7.0.39 postcss-syntax: 0.36.2_postcss@7.0.39 transitivePeerDependencies: @@ -13451,14 +14125,14 @@ packages: resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 dev: true /@svgr/plugin-jsx/5.5.0: resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@svgr/babel-preset': 5.5.0 '@svgr/hast-util-to-babel-ast': 5.5.0 svg-parser: 2.0.4 @@ -13479,14 +14153,14 @@ packages: resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-react-constant-elements': 7.17.6_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-constant-elements': 7.17.6_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-react': 7.16.7_@babel+core@7.21.3 '@svgr/core': 5.5.0 '@svgr/plugin-jsx': 5.5.0 '@svgr/plugin-svgo': 5.5.0 - loader-utils: 2.0.2 + loader-utils: 2.0.4 transitivePeerDependencies: - supports-color dev: true @@ -13522,7 +14196,7 @@ packages: engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/aria-query': 4.2.2 aria-query: 5.0.0 chalk: 4.1.2 @@ -13534,7 +14208,7 @@ packages: resolution: {integrity: sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@types/testing-library__jest-dom': 5.14.3 aria-query: 5.0.0 chalk: 3.0.0 @@ -13557,7 +14231,7 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 17.0.17 '@types/react-test-renderer': 17.0.1 @@ -13582,7 +14256,7 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -13596,7 +14270,7 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@testing-library/dom': 8.11.3 '@types/react-dom': 17.0.17 react: 17.0.2 @@ -13608,7 +14282,7 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@testing-library/dom': 8.11.3 dev: true @@ -13648,8 +14322,8 @@ packages: /@types/babel__core/7.1.16: resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} dependencies: - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 @@ -13657,30 +14331,30 @@ packages: /@types/babel__generator/7.6.3: resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 /@types/babel__traverse/7.14.2: resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 /@types/body-parser/1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/bonjour/3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/cacheable-request/6.0.2: @@ -13688,18 +14362,18 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/responselike': 1.0.0 /@types/cheerio/0.22.30: resolution: {integrity: sha512-t7ZVArWZlq3dFa9Yt33qFBQIK4CQd1Q3UJp0V+UhP6vgLWLM6Qug7vZuRSGXg45zXeB1Fm5X2vmBkEX58LV2Tw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 /@types/cli-progress/3.11.0: resolution: {integrity: sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: false /@types/color-convert/2.0.0: @@ -13720,13 +14394,13 @@ packages: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.31 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/cookie/0.4.1: @@ -13736,7 +14410,7 @@ packages: /@types/create-hmac/1.1.0: resolution: {integrity: sha512-BNYNdzdhOZZQWCOpwvIll3FSvgo3e55Y2M6s/jOY6TuOCwqt3cLmQsK4tSmJ5fayDot8EG4k3+hcZagfww9JlQ==} dependencies: - '@types/node': 16.10.3 + '@types/node': 16.18.18 dev: true /@types/d3-time-format/2.3.1: @@ -13788,7 +14462,7 @@ packages: /@types/express-serve-static-core/4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -13806,13 +14480,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.5 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 /@types/hast/2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} @@ -13838,7 +14512,7 @@ packages: /@types/http-proxy/1.17.10: resolution: {integrity: sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/is-function/1.0.1: @@ -13848,7 +14522,7 @@ packages: /@types/is-stream/1.1.0: resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: false /@types/istanbul-lib-coverage/2.0.3: @@ -13895,7 +14569,7 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 /@types/lodash.shuffle/4.2.7: resolution: {integrity: sha512-b+K0NBpB4WcNoQTfifuTmi5nm5mJXRw9DBdbFfBr1q1+EVoTKkClDxq/7r1sq2GZcRelMFRsFcGGHrHQgxRySg==} @@ -13949,14 +14623,14 @@ packages: /@types/node-fetch/2.6.1: resolution: {integrity: sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 form-data: 3.0.1 dev: true /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 form-data: 3.0.1 dev: true @@ -13964,10 +14638,6 @@ packages: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: false - /@types/node/13.13.5: - resolution: {integrity: sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==} - dev: true - /@types/node/14.14.33: resolution: {integrity: sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==} dev: true @@ -13976,15 +14646,8 @@ packages: resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} dev: true - /@types/node/16.10.3: - resolution: {integrity: sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==} - - /@types/node/17.0.21: - resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} - dev: true - - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node/16.18.18: + resolution: {integrity: sha512-fwGw1uvQAzabxL1pyoknPlJIF2t7+K90uTqynleKRx24n3lYcxWa3+KByLhgkF8GEAK2c7hC8Ki0RkNM5H15jQ==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -14029,13 +14692,13 @@ packages: /@types/puppeteer/4.0.2: resolution: {integrity: sha512-LOjNvVmJR9X2K7/hUJlt1VHss4VjNOLml27i21PJfwdQLGxxXq47mPRqcY54LR1J2IoFdyM0WFYddWFhFM51pw==} dependencies: - '@types/node': 17.0.21 + '@types/node': 16.18.18 dev: true /@types/puppeteer/5.4.5: resolution: {integrity: sha512-lxCjpDEY+DZ66+W3x5Af4oHnEmUXt0HuaRzkBGE2UZiZEp/V1d3StpLPlmNVu/ea091bdNmVPl44lu8Wy/0ZCA==} dependencies: - '@types/node': 17.0.21 + '@types/node': 16.18.18 dev: true /@types/q/1.5.5: @@ -14107,7 +14770,7 @@ packages: /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 /@types/retry/0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} @@ -14128,7 +14791,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/sizzle/2.3.3: @@ -14138,7 +14801,7 @@ packages: /@types/sockjs/0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/source-list-map/0.1.2: @@ -14198,7 +14861,7 @@ packages: resolution: {integrity: sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==} dependencies: '@types/expect': 1.20.4 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/webpack-env/1.16.3: @@ -14208,7 +14871,7 @@ packages: /@types/webpack-sources/0.1.9: resolution: {integrity: sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/source-list-map': 0.1.2 source-map: 0.6.1 dev: true @@ -14216,7 +14879,7 @@ packages: /@types/webpack/4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 '@types/tapable': 1.0.8 '@types/uglify-js': 3.13.1 '@types/webpack-sources': 0.1.9 @@ -14380,7 +15043,7 @@ packages: /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /@types/yargs-parser/20.2.1: @@ -14406,10 +15069,10 @@ packages: resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} requiresBuild: true dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 optional: true - /@typescript-eslint/eslint-plugin/4.33.0_k4l66av2tbo6kxzw52jzgbfzii: + /@typescript-eslint/eslint-plugin/4.33.0_s2qqtxhzmb7vugvfoyripfgp7i: resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -14420,8 +15083,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0_3rubbgt5ekhqrcgx4uwls3neim - '@typescript-eslint/parser': 4.33.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/parser': 4.33.0_et5x32uxl7z5ldub3ye5rhlyqm '@typescript-eslint/scope-manager': 4.33.0 debug: 4.3.4 eslint: 7.32.0 @@ -14429,13 +15092,13 @@ packages: ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.54.0_odmkqudqazj6zql7bilcklpxhm: + /@typescript-eslint/eslint-plugin/5.54.0_kfyz2y6ibx5q22pdsikxez2g7q: resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14446,10 +15109,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/type-utils': 5.54.0_yygwinqv3a2io74xmwofqb7uka - '@typescript-eslint/utils': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/type-utils': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm + '@typescript-eslint/utils': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm debug: 4.3.4 eslint: 8.32.0 grapheme-splitter: 1.0.4 @@ -14457,19 +15120,35 @@ packages: natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color - /@typescript-eslint/experimental-utils/2.34.0_3rubbgt5ekhqrcgx4uwls3neim: + /@typescript-eslint/experimental-utils/2.34.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} peerDependencies: eslint: '*' dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.9.5 + eslint: 8.32.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/experimental-utils/2.34.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.9 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.9.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 @@ -14478,23 +15157,7 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/2.34.0_yygwinqv3a2io74xmwofqb7uka: - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.8.4 - eslint: 8.32.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/experimental-utils/4.33.0_3rubbgt5ekhqrcgx4uwls3neim: + /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -14503,7 +15166,7 @@ packages: '@types/json-schema': 7.0.9 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -14512,20 +15175,20 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/5.43.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/experimental-utils/5.43.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-WkT637CumTJbm/hRbFfnHBMgfUYTKr08LitVsD7gQId7bi6rnkx3pu3jac67lmp5ObW4MpJ9SNFZAIOUB/Qbsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.43.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/utils': 5.43.0_et5x32uxl7z5ldub3ye5rhlyqm eslint: 8.32.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/4.33.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/parser/4.33.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -14537,15 +15200,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.32.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.54.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/parser/5.54.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14557,10 +15220,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.32.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -14587,7 +15250,7 @@ packages: '@typescript-eslint/types': 5.54.0 '@typescript-eslint/visitor-keys': 5.54.0 - /@typescript-eslint/type-utils/5.54.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/type-utils/5.54.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14597,12 +15260,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.8.4 - '@typescript-eslint/utils': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm debug: 4.3.4 eslint: 8.32.0 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -14620,7 +15283,7 @@ packages: resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@typescript-eslint/typescript-estree/2.34.0_typescript@4.8.4: + /@typescript-eslint/typescript-estree/2.34.0_typescript@4.9.5: resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} peerDependencies: @@ -14631,17 +15294,17 @@ packages: dependencies: debug: 4.3.4 eslint-visitor-keys: 1.3.0 - glob: 7.2.0 + glob: 7.2.3 is-glob: 4.0.3 lodash: 4.17.21 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/4.33.0_typescript@4.8.4: + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -14656,13 +15319,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.43.0_typescript@4.8.4: + /@typescript-eslint/typescript-estree/5.43.0_typescript@4.9.5: resolution: {integrity: sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14677,13 +15340,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.54.0_typescript@4.8.4: + /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14698,12 +15361,12 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color - /@typescript-eslint/utils/5.43.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/utils/5.43.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14713,7 +15376,7 @@ packages: '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.43.0 '@typescript-eslint/types': 5.43.0 - '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.5 eslint: 8.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.32.0 @@ -14723,7 +15386,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.54.0_yygwinqv3a2io74xmwofqb7uka: + /@typescript-eslint/utils/5.54.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14733,7 +15396,7 @@ packages: '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.54.0 '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.8.4 + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 eslint: 8.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.32.0 @@ -14994,6 +15657,16 @@ packages: '@xtuc/long': 4.2.2 dev: true + /@webpack-cli/configtest/1.1.1_hr47hglah7gcsaciyucioac67e: + resolution: {integrity: sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==} + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + dependencies: + webpack: 5.76.3_bgqcrdgdviybk52kjcpjat65sa + webpack-cli: 4.9.2_webpack@5.76.3 + dev: true + /@webpack-cli/configtest/1.1.1_spmstbzrmxjdafr7ccogoqrx6e: resolution: {integrity: sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==} peerDependencies: @@ -15001,7 +15674,7 @@ packages: webpack-cli: 4.x.x dependencies: webpack: 5.70.0_webpack-cli@4.9.2 - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m dev: true /@webpack-cli/info/1.4.1_webpack-cli@4.9.2: @@ -15010,10 +15683,10 @@ packages: webpack-cli: 4.x.x dependencies: envinfo: 7.8.1 - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m dev: true - /@webpack-cli/serve/1.6.1_oqvzz5d42buklxsrf2oiyc3dxq: + /@webpack-cli/serve/1.6.1_ht4xi23ezbiqlmpjtiwigrodwi: resolution: {integrity: sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==} peerDependencies: webpack-cli: 4.x.x @@ -15022,8 +15695,8 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi - webpack-dev-server: 4.11.1_jaxrlecucqtr54lmhmx67obzmy + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m + webpack-dev-server: 4.12.0_jaxrlecucqtr54lmhmx67obzmy dev: true /@webpack-cli/serve/1.6.1_webpack-cli@4.9.2: @@ -15035,7 +15708,7 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.9.2_webpack@5.70.0 + webpack-cli: 4.9.2_webpack@5.76.3 dev: true /@wojtekmaj/enzyme-adapter-react-17/0.6.6_7ltvq4e2railvf5uya4ffxpe2a: @@ -15084,6 +15757,12 @@ packages: - react-native dev: false + /@woocommerce/settings/1.0.0: + resolution: {integrity: sha512-BjrT56Cz8XTRHw2JNPmANRkYh2rzdF33wOa56lah1qb/MjHUKuVJ0PTSZ19S5Trb92IkxfcIVB26CSdxXnf5Og==} + dependencies: + '@babel/runtime-corejs2': 7.5.5 + dev: false + /@woocommerce/woocommerce-rest-api/1.0.1: resolution: {integrity: sha512-YBk3EEYE0zax/egx6Rhpbu6hcCFyZpYQrjH9JO4NUGU3n3T0W9Edn7oAUbjL/c7Oezcg+UaQluCaKjY/B3zwxg==} engines: {node: '>=8.0.0'} @@ -15100,7 +15779,7 @@ packages: resolution: {integrity: sha512-nXreWPc1vSBP0ak5cx8ZTZDmVj0DCqC32cCK/RP2J2ANpIQJ6PILO199CodicQhM6dXBAkXk0H7IBCgsqLG+Ng==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/dom-ready': 3.28.0 '@wordpress/i18n': 4.28.0 @@ -15108,7 +15787,7 @@ packages: resolution: {integrity: sha512-mOQtwpY5hUt4vMLyshZPPV1x9MBRF2FimUjIImfYJb1x8o6jY4npikzWplAfWYQUJJjWfw/1NmfqD7vUOh9+ww==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/dom-ready': 3.6.1 '@wordpress/i18n': 4.6.1 dev: false @@ -15116,7 +15795,7 @@ packages: /@wordpress/api-fetch/3.23.1_react-native@0.70.0: resolution: {integrity: sha512-dmeigLuvqYAzpQ2hWUQT1P5VQAjkj9hS1z7PgNi1CcULFPbY8BWW+KiBETUu6Wm+rlSbUL2dC8qrA4JDv9ja5A==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 3.20.0 '@wordpress/url': 2.22.2_react-native@0.70.0 transitivePeerDependencies: @@ -15126,7 +15805,7 @@ packages: /@wordpress/api-fetch/4.0.0_react-native@0.70.0: resolution: {integrity: sha512-4nWH/gEpG7/VnEJbjbOWS0AWBnX5snPc3ZaKcXNZsLQlv9YgsS8idL/BNkUl9/ylZeez/UX4lJLVkOR5clvg8A==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 3.20.0 '@wordpress/url': 2.22.2_react-native@0.70.0 transitivePeerDependencies: @@ -15137,7 +15816,7 @@ packages: resolution: {integrity: sha512-AG8KdCHwtYJWR38AAU7nEI+UbumUSqSBthQj3rShLUVyFbYGkQdpwXJJG6vFj7FjIp41zljiyj3K1Fh3cqdaAw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.6.1 '@wordpress/url': 3.7.1 dev: true @@ -15146,7 +15825,7 @@ packages: resolution: {integrity: sha512-VDs4E3nghISq1Qd+44cdJiB/K6tXWX67zMspzpwsSMa+F7PQaBHbHXimja4XTe5DVV/ZBzwZOdQaJj7qHaO+KQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.28.0 '@wordpress/url': 3.29.0 @@ -15154,7 +15833,7 @@ packages: resolution: {integrity: sha512-jfa5c+sffADJCz36oYr5xY5IihNUJPg0II+rZ6SyJfHQyA3NuUJfRk63hS2GF2vaD8Zgp2p5s7uD1h9ZMi+5iA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.6.1 '@wordpress/url': 3.7.1 dev: false @@ -15163,14 +15842,14 @@ packages: resolution: {integrity: sha512-Vl164Ilwmkx3M0LEyXkFdgksHjs3/FnHtw76tvdjjnLXtErUUIZ2y+hdCe+Esh8BhAUYXW420JU5KKvbidmykg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/autop/3.28.0: resolution: {integrity: sha512-plCKPzTBiZ+R69PsIXUk1wmn4+/JxmmsXL6SklwH/o5cKyY4dcuq6v6wPbfLv5Rb+S19wguNP8DdWFwjSsIOZQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/babel-plugin-import-jsx-pragma/1.1.3_@babel+core@7.12.9: resolution: {integrity: sha512-WkVeFZpM5yuHigWe8llZDeMRa4bhMQoHu9dzs1s3cmB1do2mhk341Iw34FidWto14Dzd+383K71vxJejqjKOwQ==} @@ -15181,17 +15860,17 @@ packages: '@babel/runtime': 7.17.7 dev: true - /@wordpress/babel-plugin-import-jsx-pragma/2.7.0_@babel+core@7.17.8: + /@wordpress/babel-plugin-import-jsx-pragma/2.7.0_@babel+core@7.21.3: resolution: {integrity: sha512-yR+rSyfHKfevW84vKBOERpjEslD/o00CaYMftywVYOjsOQ8GLS6xv/VgDcpQ8JomJ9eRRInLRpeGKTM3lOa4xQ==} engines: {node: '>=8'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 dev: true - /@wordpress/babel-plugin-import-jsx-pragma/3.1.0_@babel+core@7.12.9: - resolution: {integrity: sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==} + /@wordpress/babel-plugin-import-jsx-pragma/3.2.0_@babel+core@7.12.9: + resolution: {integrity: sha512-XK3Sdpi9MWoy5qPHnRroY/ypX0VtT5yI5809u5As1P/3k4vlXNw8USH4lJ+rkurAOVqqN5mFlf2XAL9AkpfXyg==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.12.9 @@ -15199,40 +15878,21 @@ packages: '@babel/core': 7.12.9 dev: false - /@wordpress/babel-plugin-import-jsx-pragma/3.1.0_@babel+core@7.16.12: - resolution: {integrity: sha512-518mL3goaSeXtJCQcPK9OYHUUiA0sjXuoGWHBwRalkyTIQZZy5ZZzlwrlSc9ESZcOw9BZ+Uo8CJRjV2OWnx+Zw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.12.9 - dependencies: - '@babel/core': 7.16.12 - dev: false - - /@wordpress/babel-plugin-import-jsx-pragma/3.1.2_@babel+core@7.17.8: - resolution: {integrity: sha512-oMJnM3cJlu1hQMO4XmTFDhNPclj0cLRIeV5Y6uIF/9oNhhSfaMFu+ty0B4zBYodqwes/vbndwRg4j2q2bhG/Dg==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.12.9 - dependencies: - '@babel/core': 7.17.8 - dev: true - - /@wordpress/babel-plugin-import-jsx-pragma/3.2.0_@babel+core@7.17.8: + /@wordpress/babel-plugin-import-jsx-pragma/3.2.0_@babel+core@7.21.3: resolution: {integrity: sha512-XK3Sdpi9MWoy5qPHnRroY/ypX0VtT5yI5809u5As1P/3k4vlXNw8USH4lJ+rkurAOVqqN5mFlf2XAL9AkpfXyg==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.12.9 dependencies: - '@babel/core': 7.17.8 - dev: true + '@babel/core': 7.21.3 - /@wordpress/babel-plugin-import-jsx-pragma/4.11.0_@babel+core@7.17.8: + /@wordpress/babel-plugin-import-jsx-pragma/4.11.0_@babel+core@7.21.3: resolution: {integrity: sha512-yOK+vnuL9vm5GFwKyQ4SnMfcNBPHN21HeSPEFA7bB+pLT4xwgvdN7CVEYfvoRZbtZna/fMJgBqhhdEKXjlxViw==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.12.9 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 dev: false /@wordpress/babel-preset-default/3.0.2_@babel+core@7.12.9: @@ -15258,16 +15918,16 @@ packages: resolution: {integrity: sha512-VKPoC5We2GNxon5umOeZ7NIP4CfP7X5gqslSnNrLW4kD1XgmbVaCs2ISFF8+mObVVb6KAzbaUjI6OWljcUb5UA==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/runtime': 7.19.0 - '@wordpress/babel-plugin-import-jsx-pragma': 2.7.0_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/runtime': 7.21.0 + '@wordpress/babel-plugin-import-jsx-pragma': 2.7.0_@babel+core@7.21.3 '@wordpress/browserslist-config': 2.7.0 '@wordpress/element': 2.20.3 '@wordpress/warning': 1.4.2 - core-js: 3.21.1 + core-js: 3.29.1 transitivePeerDependencies: - supports-color dev: true @@ -15276,58 +15936,37 @@ packages: resolution: {integrity: sha512-mBB1KHWT2vN+maKIPYLQSxhhAzW6CNwYiJNRSNaNBALie9TULe7etrnwoZ1eqPVsuYvBlXB4XKcPaSm3/FW+qQ==} engines: {node: '>=12'} dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 - '@babel/runtime': 7.19.0 - '@wordpress/babel-plugin-import-jsx-pragma': 3.2.0_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 + '@babel/runtime': 7.21.0 + '@wordpress/babel-plugin-import-jsx-pragma': 3.2.0_@babel+core@7.21.3 '@wordpress/browserslist-config': 4.1.3 '@wordpress/element': 4.20.0 '@wordpress/warning': 2.28.0 - browserslist: 4.21.4 - core-js: 3.25.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@wordpress/babel-preset-default/6.4.1: - resolution: {integrity: sha512-T0+dPOn0Hus/FSP043H3C2awjGNWLJcSahm7LhLqT5uUtgdg6QD9yf4jSr7G5mpLO/DXgz2ZnaYMUj+d1/gk9w==} - engines: {node: '>=12'} - dependencies: - '@babel/core': 7.16.12 - '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.16.12 - '@babel/preset-env': 7.16.11_@babel+core@7.16.12 - '@babel/preset-typescript': 7.16.7_@babel+core@7.16.12 - '@babel/runtime': 7.17.7 - '@wordpress/babel-plugin-import-jsx-pragma': 3.1.0_@babel+core@7.16.12 - '@wordpress/browserslist-config': 4.1.3 - '@wordpress/element': 4.4.1 - '@wordpress/warning': 2.2.2 browserslist: 4.19.3 - core-js: 3.21.1 + core-js: 3.29.1 transitivePeerDependencies: - supports-color - dev: false /@wordpress/babel-preset-default/6.6.1: resolution: {integrity: sha512-eqw6u6ndjbseWOQju9TpnXho6eimtGMlfRwPv1kO3yHV7EXDRw0p5MRMmoN29+lSG1b3MtSj6k9XwYNW0YF/qw==} engines: {node: '>=12'} dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@babel/runtime': 7.17.7 - '@wordpress/babel-plugin-import-jsx-pragma': 3.1.2_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.21.3 + '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-typescript': 7.16.7_@babel+core@7.21.3 + '@babel/runtime': 7.21.0 + '@wordpress/babel-plugin-import-jsx-pragma': 3.2.0_@babel+core@7.21.3 '@wordpress/browserslist-config': 4.1.3 '@wordpress/element': 4.4.1 '@wordpress/warning': 2.6.1 browserslist: 4.20.2 - core-js: 3.21.1 + core-js: 3.29.1 transitivePeerDependencies: - supports-color dev: true @@ -15336,18 +15975,18 @@ packages: resolution: {integrity: sha512-nMTVxJAfNTT8fOJfmcFgM1424wyzj/B00J1ulQG3QGYCLCqmXFmfevYepoElEDQrafFNTgvWfUYZs6oTVMrAZQ==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 - '@babel/runtime': 7.19.0 - '@wordpress/babel-plugin-import-jsx-pragma': 4.11.0_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.21.3 + '@babel/runtime': 7.21.0 + '@wordpress/babel-plugin-import-jsx-pragma': 4.11.0_@babel+core@7.21.3 '@wordpress/browserslist-config': 5.11.0 '@wordpress/element': 5.5.0 '@wordpress/warning': 2.28.0 - browserslist: 4.21.4 - core-js: 3.25.5 + browserslist: 4.19.3 + core-js: 3.29.1 transitivePeerDependencies: - supports-color dev: false @@ -15367,13 +16006,71 @@ packages: resolution: {integrity: sha512-nw0oOg8bUgPaVcwfpdczY77ZO1Cy844DX5yXY5gKwVB9VHHfwhttVRr85GMxq9uQhH6rzkDerX+YzIGK8x4c+A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/blob/3.28.0: resolution: {integrity: sha512-Nf9nd8+uzmYu2/yObQLKukCxRORS/KgSBpGiDMRoEOZv8kGOLmwqyCXdx5oEc46yjytOW0v3D8Vt3M79R/0LNw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 + + /@wordpress/block-editor/10.2.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-9Bxq9hY3WEqodn/K/WSE+PoIwv6jKkKBP0pxXFJTWV1yc8/Np9QHV/7wG7qjztxxgu00FrYF7u8OZyvjPrSNYw==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@react-spring/web': 9.5.5_sfoxds7t5ydpegc3knd667wn6m + '@wordpress/a11y': 3.28.0 + '@wordpress/api-fetch': 6.25.0 + '@wordpress/blob': 3.28.0 + '@wordpress/blocks': 11.18.0_react@17.0.2 + '@wordpress/components': 21.2.0_mtk4wljkd5jimhszw4p7nnxuzm + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/data': 7.3.0_react@17.0.2 + '@wordpress/date': 4.28.0 + '@wordpress/deprecated': 3.28.0 + '@wordpress/dom': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/hooks': 3.28.0 + '@wordpress/html-entities': 3.28.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/keyboard-shortcuts': 3.17.0_react@17.0.2 + '@wordpress/keycodes': 3.28.0 + '@wordpress/notices': 3.28.0_react@17.0.2 + '@wordpress/rich-text': 5.17.0_react@17.0.2 + '@wordpress/shortcode': 3.28.0 + '@wordpress/style-engine': 1.2.0 + '@wordpress/token-list': 2.28.0 + '@wordpress/url': 3.29.0 + '@wordpress/warning': 2.28.0 + '@wordpress/wordcount': 3.28.0 + classnames: 2.3.1 + colord: 2.9.2 + diff: 4.0.2 + dom-scroll-into-view: 1.2.1 + inherits: 2.0.4 + lodash: 4.17.21 + react: 17.0.2 + react-autosize-textarea: 7.1.0_sfoxds7t5ydpegc3knd667wn6m + react-dom: 17.0.2_react@17.0.2 + react-easy-crop: 4.5.1_sfoxds7t5ydpegc3knd667wn6m + rememo: 4.0.0 + remove-accents: 0.4.2 + traverse: 0.6.6 + transitivePeerDependencies: + - '@babel/core' + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/react' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - vite + dev: false /@wordpress/block-editor/10.2.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-9Bxq9hY3WEqodn/K/WSE+PoIwv6jKkKBP0pxXFJTWV1yc8/Np9QHV/7wG7qjztxxgu00FrYF7u8OZyvjPrSNYw==} @@ -15382,7 +16079,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@react-spring/web': 9.5.5_sfoxds7t5ydpegc3knd667wn6m '@wordpress/a11y': 3.28.0 '@wordpress/api-fetch': 6.25.0 @@ -15433,20 +16130,20 @@ packages: - vite dev: false - /@wordpress/block-editor/8.6.0_tufdcic6wklrwyy3rhbsbktylu: + /@wordpress/block-editor/8.6.0_eqi5qhcxfphl6j3pngzexvnehi: resolution: {integrity: sha512-Low88BcV7pUSULNytPbO8KWrrMnQA7FnbYW1UOj+GJt+zsYqIleYZccjI5DoFTsXAAKn8RYPytX0i6F6jDM6XQ==} engines: {node: '>=12'} peerDependencies: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@react-spring/web': 9.5.5_sfoxds7t5ydpegc3knd667wn6m '@wordpress/a11y': 3.28.0 '@wordpress/api-fetch': 6.25.0 '@wordpress/blob': 3.28.0 '@wordpress/blocks': 11.18.0_react@17.0.2 - '@wordpress/components': 19.12.0_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.12.0_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/compose': 5.17.0_react@17.0.2 '@wordpress/data': 6.15.0_react@17.0.2 '@wordpress/date': 4.28.0 @@ -15486,6 +16183,60 @@ packages: - react-with-direction dev: false + /@wordpress/block-editor/9.8.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-zIPqEysaLFJMnVKU/yCoCEBT3Co9xsa4Ow91T/LI94ll3LeWG/pyiX4PSSQNTx74AqbcNO2p79LVON4FLdu+mQ==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@react-spring/web': 9.5.5_sfoxds7t5ydpegc3knd667wn6m + '@wordpress/a11y': 3.28.0 + '@wordpress/api-fetch': 6.25.0 + '@wordpress/blob': 3.19.0 + '@wordpress/blocks': 11.18.0_react@17.0.2 + '@wordpress/components': 20.0.0_mtk4wljkd5jimhszw4p7nnxuzm + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/data': 7.3.0_react@17.0.2 + '@wordpress/date': 4.28.0 + '@wordpress/deprecated': 3.28.0 + '@wordpress/dom': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/hooks': 3.28.0 + '@wordpress/html-entities': 3.28.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/is-shallow-equal': 4.19.0 + '@wordpress/keyboard-shortcuts': 3.17.0_react@17.0.2 + '@wordpress/keycodes': 3.28.0 + '@wordpress/notices': 3.28.0_react@17.0.2 + '@wordpress/rich-text': 5.17.0_react@17.0.2 + '@wordpress/shortcode': 3.19.0 + '@wordpress/style-engine': 0.15.0 + '@wordpress/token-list': 2.19.0 + '@wordpress/url': 3.29.0 + '@wordpress/warning': 2.28.0 + '@wordpress/wordcount': 3.19.0 + change-case: 4.1.2 + classnames: 2.3.1 + colord: 2.9.2 + diff: 4.0.2 + dom-scroll-into-view: 1.2.1 + inherits: 2.0.4 + lodash: 4.17.21 + react: 17.0.2 + react-autosize-textarea: 7.1.0_sfoxds7t5ydpegc3knd667wn6m + react-dom: 17.0.2_react@17.0.2 + react-easy-crop: 3.5.3_sfoxds7t5ydpegc3knd667wn6m + rememo: 4.0.0 + remove-accents: 0.4.2 + traverse: 0.6.6 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + dev: false + /@wordpress/block-editor/9.8.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-zIPqEysaLFJMnVKU/yCoCEBT3Co9xsa4Ow91T/LI94ll3LeWG/pyiX4PSSQNTx74AqbcNO2p79LVON4FLdu+mQ==} engines: {node: '>=12'} @@ -15493,7 +16244,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@react-spring/web': 9.5.5_sfoxds7t5ydpegc3knd667wn6m '@wordpress/a11y': 3.28.0 '@wordpress/api-fetch': 6.25.0 @@ -15546,7 +16297,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.28.0 '@wordpress/api-fetch': 6.25.0 '@wordpress/autop': 3.19.0 @@ -15597,7 +16348,7 @@ packages: resolution: {integrity: sha512-ZtrcHI3PbWgWQO1AmL7IXGTItV8y/dfz+OhmgANpDil/OWUhACOgBIgiPn3ymwspjgsw6r2MB6s3rRMEzjzhxg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/blocks/11.18.0_react@17.0.2: resolution: {integrity: sha512-6YHyDQNa6UrAzF3oKFOyu/1F32u7h5q/gpsE1439KDGVLsrc8rSxx3rE6G6TXbJ5YC8MqDrOItMwbw14TGKPAQ==} @@ -15605,7 +16356,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/autop': 3.28.0 '@wordpress/blob': 3.28.0 '@wordpress/block-serialization-default-parser': 4.28.0 @@ -15638,7 +16389,7 @@ packages: peerDependencies: react: ^18.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/autop': 3.28.0 '@wordpress/blob': 3.28.0 '@wordpress/block-serialization-default-parser': 4.28.0 @@ -15682,6 +16433,60 @@ packages: engines: {node: '>=14'} dev: false + /@wordpress/components/19.12.0_eqi5qhcxfphl6j3pngzexvnehi: + resolution: {integrity: sha512-Ac1+aIMM7NDgN3G7i5kcaETSvZfeqB4U6PubApPmM6FdBF5VfkYUZeqNcC7cuJdveyokRrqHg11/l+DcJGA7/g==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@emotion/cache': 11.10.5 + '@emotion/css': 11.7.1_@babel+core@7.21.3 + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme + '@emotion/serialize': 1.1.1 + '@emotion/styled': 11.8.1_6t3indjc5ssefvr44gr3wo2uqu + '@emotion/utils': 1.0.0 + '@floating-ui/react-dom': 0.6.3_hiunvzosbwliizyirxfy6hjyim + '@use-gesture/react': 10.2.10_react@17.0.2 + '@wordpress/a11y': 3.28.0 + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/date': 4.28.0 + '@wordpress/deprecated': 3.28.0 + '@wordpress/dom': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/escape-html': 2.28.0 + '@wordpress/hooks': 3.28.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/keycodes': 3.28.0 + '@wordpress/primitives': 3.26.0 + '@wordpress/rich-text': 5.17.0_react@17.0.2 + '@wordpress/warning': 2.28.0 + classnames: 2.3.1 + colord: 2.9.2 + dom-scroll-into-view: 1.2.1 + downshift: 6.1.12_react@17.0.2 + framer-motion: 6.2.8_sfoxds7t5ydpegc3knd667wn6m + gradient-parser: 0.1.5 + highlight-words-core: 1.2.2 + lodash: 4.17.21 + memize: 1.1.0 + moment: 2.29.4 + re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m + react: 17.0.2 + react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m + react-dates: 21.8.0_mvmv5ggfjdn6m4qx5h4gchay5i + react-dom: 17.0.2_react@17.0.2 + reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - react-with-direction + dev: false + /@wordpress/components/19.12.0_tufdcic6wklrwyy3rhbsbktylu: resolution: {integrity: sha512-Ac1+aIMM7NDgN3G7i5kcaETSvZfeqB4U6PubApPmM6FdBF5VfkYUZeqNcC7cuJdveyokRrqHg11/l+DcJGA7/g==} engines: {node: '>=12'} @@ -15689,7 +16494,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau @@ -15726,7 +16531,7 @@ packages: re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m react: 17.0.2 react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m - react-dates: 21.8.0_nquzpvbbca3w4vywjbffgfreli + react-dates: 21.8.0_mvmv5ggfjdn6m4qx5h4gchay5i react-dom: 17.0.2_react@17.0.2 reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m uuid: 8.3.2 @@ -15743,7 +16548,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.7.1 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_mcptgafjogap2nfvnfqvfwh6uu @@ -15775,11 +16580,65 @@ packages: highlight-words-core: 1.2.2 lodash: 4.17.21 memize: 1.1.0 - moment: 2.29.1 + moment: 2.29.4 re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m react: 17.0.2 react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m - react-dates: 17.2.0_doem77jvh4k7pyuvpbnkip467u + react-dates: 17.2.0_mbqv3i57zshgl3mhyvv367ttdu + react-dom: 17.0.2_react@17.0.2 + react-resize-aware: 3.1.1_react@17.0.2 + reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - react-with-direction + dev: false + + /@wordpress/components/19.8.5_eqi5qhcxfphl6j3pngzexvnehi: + resolution: {integrity: sha512-36d8fSk/nWfNv2nEZrC2gLx1rN9rGWFt425yXoH6JiakDvdXacN/04xcxZGBRkS+JDz6v22uyPMEol9TzwXOLg==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@emotion/cache': 11.10.5 + '@emotion/css': 11.7.1_@babel+core@7.21.3 + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme + '@emotion/serialize': 1.1.1 + '@emotion/styled': 11.8.1_6t3indjc5ssefvr44gr3wo2uqu + '@emotion/utils': 1.0.0 + '@use-gesture/react': 10.2.10_react@17.0.2 + '@wordpress/a11y': 3.6.1 + '@wordpress/compose': 5.4.1_react@17.0.2 + '@wordpress/date': 4.6.1 + '@wordpress/deprecated': 3.6.1 + '@wordpress/dom': 3.6.1 + '@wordpress/element': 4.4.1 + '@wordpress/escape-html': 2.28.0 + '@wordpress/hooks': 3.6.1 + '@wordpress/i18n': 4.6.1 + '@wordpress/icons': 8.2.3 + '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/keycodes': 3.6.1 + '@wordpress/primitives': 3.4.1 + '@wordpress/rich-text': 5.4.2_react@17.0.2 + '@wordpress/warning': 2.6.1 + classnames: 2.3.1 + colord: 2.9.2 + dom-scroll-into-view: 1.2.1 + downshift: 6.1.12_react@17.0.2 + framer-motion: 6.2.8_sfoxds7t5ydpegc3knd667wn6m + gradient-parser: 0.1.5 + highlight-words-core: 1.2.2 + lodash: 4.17.21 + memize: 1.1.0 + moment: 2.29.4 + re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m + react: 17.0.2 + react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m + react-dates: 17.2.0_mbqv3i57zshgl3mhyvv367ttdu react-dom: 17.0.2_react@17.0.2 react-resize-aware: 3.1.1_react@17.0.2 reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m @@ -15797,7 +16656,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_mcptgafjogap2nfvnfqvfwh6uu @@ -15851,7 +16710,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_mcptgafjogap2nfvnfqvfwh6uu @@ -15905,7 +16764,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau @@ -15952,6 +16811,61 @@ packages: - react-with-direction dev: false + /@wordpress/components/20.0.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-RBPjtGLSoiV5YKhrBYh+/X8LbzbA99BJaB4Q+P0e1rVOwGzeBF3M7YEjmg1PrrzWaItqJZTvDoyZo+ql7c0KfA==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@emotion/cache': 11.10.5 + '@emotion/css': 11.7.1_@babel+core@7.21.3 + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme + '@emotion/serialize': 1.1.1 + '@emotion/styled': 11.8.1_6t3indjc5ssefvr44gr3wo2uqu + '@emotion/utils': 1.2.0 + '@floating-ui/react-dom': 1.0.0_sfoxds7t5ydpegc3knd667wn6m + '@use-gesture/react': 10.2.10_react@17.0.2 + '@wordpress/a11y': 3.28.0 + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/date': 4.28.0 + '@wordpress/deprecated': 3.28.0 + '@wordpress/dom': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/escape-html': 2.28.0 + '@wordpress/hooks': 3.28.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/keycodes': 3.28.0 + '@wordpress/primitives': 3.26.0 + '@wordpress/rich-text': 5.17.0_react@17.0.2 + '@wordpress/warning': 2.28.0 + change-case: 4.1.2 + classnames: 2.3.1 + colord: 2.9.2 + date-fns: 2.29.3 + dom-scroll-into-view: 1.2.1 + downshift: 6.1.12_react@17.0.2 + framer-motion: 6.2.8_sfoxds7t5ydpegc3knd667wn6m + gradient-parser: 0.1.5 + highlight-words-core: 1.2.2 + lodash: 4.17.21 + memize: 1.1.0 + re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m + react: 17.0.2 + react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m + react-dom: 17.0.2_react@17.0.2 + reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m + remove-accents: 0.4.2 + use-lilius: 2.0.3_sfoxds7t5ydpegc3knd667wn6m + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + dev: false + /@wordpress/components/20.0.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-RBPjtGLSoiV5YKhrBYh+/X8LbzbA99BJaB4Q+P0e1rVOwGzeBF3M7YEjmg1PrrzWaItqJZTvDoyZo+ql7c0KfA==} engines: {node: '>=12'} @@ -15959,7 +16873,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau @@ -16006,6 +16920,67 @@ packages: - '@babel/core' - '@types/react' + /@wordpress/components/21.2.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-pYz+EY+Tv/O2JuDBXpaFH/zv9Evty/e6NOGjOzddSeaShZ/mCq2DpUSWPuTFBEAjtv6h9HnpkakbNnEeio5yNA==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@emotion/cache': 11.10.5 + '@emotion/css': 11.7.1_@babel+core@7.21.3 + '@emotion/react': 11.10.5_zg7wlf5auq2m3ro2gp4uufjvme + '@emotion/serialize': 1.1.1 + '@emotion/styled': 11.8.1_6t3indjc5ssefvr44gr3wo2uqu + '@emotion/utils': 1.2.0 + '@floating-ui/react-dom': 1.0.0_sfoxds7t5ydpegc3knd667wn6m + '@use-gesture/react': 10.2.10_react@17.0.2 + '@wordpress/a11y': 3.28.0 + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/date': 4.28.0 + '@wordpress/deprecated': 3.28.0 + '@wordpress/dom': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/escape-html': 2.28.0 + '@wordpress/hooks': 3.28.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/is-shallow-equal': 4.28.0 + '@wordpress/keycodes': 3.28.0 + '@wordpress/primitives': 3.26.0 + '@wordpress/rich-text': 5.17.0_react@17.0.2 + '@wordpress/warning': 2.28.0 + change-case: 4.1.2 + classnames: 2.3.1 + colord: 2.9.2 + date-fns: 2.29.3 + dom-scroll-into-view: 1.2.1 + downshift: 6.1.12_react@17.0.2 + framer-motion: 6.2.8_sfoxds7t5ydpegc3knd667wn6m + gradient-parser: 0.1.5 + highlight-words-core: 1.2.2 + lodash: 4.17.21 + memize: 1.1.0 + re-resizable: 6.9.5_sfoxds7t5ydpegc3knd667wn6m + react: 17.0.2 + react-colorful: 5.5.1_sfoxds7t5ydpegc3knd667wn6m + react-dom: 17.0.2_react@17.0.2 + reakit: 1.3.11_sfoxds7t5ydpegc3knd667wn6m + remove-accents: 0.4.2 + use-lilius: 2.0.3_sfoxds7t5ydpegc3knd667wn6m + uuid: 8.3.2 + valtio: 1.7.2_react@17.0.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/react' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - vite + dev: false + /@wordpress/components/21.2.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-pYz+EY+Tv/O2JuDBXpaFH/zv9Evty/e6NOGjOzddSeaShZ/mCq2DpUSWPuTFBEAjtv6h9HnpkakbNnEeio5yNA==} engines: {node: '>=12'} @@ -16013,7 +16988,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/css': 11.7.1_@babel+core@7.17.8 '@emotion/react': 11.10.5_lvgioobbs7lf3pr6y4xfpughau @@ -16070,7 +17045,7 @@ packages: /@wordpress/compose/3.25.3_react@17.0.2: resolution: {integrity: sha512-tCO2EnJCkCH548OqA0uU8V1k/1skz2QwBlHs8ZQSpimqUS4OWWsAlndCEFe4U4vDTqFt2ow7tzAir+05Cw8MAg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/deprecated': 2.12.3 '@wordpress/dom': 2.18.0 '@wordpress/element': 2.20.3 @@ -16092,7 +17067,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/mousetrap': 1.6.9 '@wordpress/deprecated': 3.28.0 '@wordpress/dom': 3.28.0 @@ -16112,7 +17087,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/lodash': 4.14.184 '@types/mousetrap': 1.6.9 '@wordpress/deprecated': 3.6.1 @@ -16134,7 +17109,7 @@ packages: peerDependencies: react: ^18.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/mousetrap': 1.6.9 '@wordpress/deprecated': 3.28.0 '@wordpress/dom': 3.28.0 @@ -16154,7 +17129,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 '@wordpress/blocks': 11.18.0_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 @@ -16178,7 +17153,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.25.0 '@wordpress/blocks': 11.18.0_react@17.0.2 '@wordpress/compose': 5.17.0_react@17.0.2 @@ -16211,7 +17186,7 @@ packages: /@wordpress/data-controls/1.21.3_6mfjqmjzo7vxk4q6gjrwvpc2y4: resolution: {integrity: sha512-aLpx/HvKaxCQfWSLGIz699SB9Guyq8Yoq5XLlH8eNWnf/8HkQg8hQ6yagDY8BinV/t8HScc5A7a6n6pvZNGtjg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 4.0.0_react-native@0.70.0 '@wordpress/data': 4.27.3_react@17.0.2 '@wordpress/deprecated': 2.12.3 @@ -16226,7 +17201,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.25.0 '@wordpress/data': 6.15.0_react@17.0.2 '@wordpress/deprecated': 3.28.0 @@ -16239,7 +17214,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 '@wordpress/data': 6.6.1_react@17.0.2 '@wordpress/deprecated': 3.6.1 @@ -16249,7 +17224,7 @@ packages: /@wordpress/data/4.27.3_react@17.0.2: resolution: {integrity: sha512-5763NgNV9IIa1CC3Q80dAvrH6108tJtj3IrHfUCZmUk1atSNsOMBCkLdQ7tGTTi2JFejeGEMg1LJI22JD5zM6Q==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 3.25.3_react@17.0.2 '@wordpress/deprecated': 2.12.3 '@wordpress/element': 2.20.3 @@ -16273,7 +17248,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0_react@17.0.2 '@wordpress/deprecated': 3.28.0 '@wordpress/element': 4.20.0 @@ -16296,7 +17271,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/deprecated': 3.6.1 '@wordpress/element': 4.4.1 @@ -16317,7 +17292,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0_react@17.0.2 '@wordpress/deprecated': 3.28.0 '@wordpress/element': 4.20.0 @@ -16339,7 +17314,7 @@ packages: peerDependencies: react: ^18.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 6.5.0_react@17.0.2 '@wordpress/deprecated': 3.28.0 '@wordpress/element': 5.5.0 @@ -16360,7 +17335,7 @@ packages: resolution: {integrity: sha512-NtKVryepjrYIKS1gRubCtJhcT++3KtiHuf9w1nNWnbY0Onk0pMQUXkZyVL2Bk1EZ3ylUx6S6k/TLOv0QVPxgzA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/deprecated': 3.28.0 moment: 2.29.4 moment-timezone: 0.5.41 @@ -16369,7 +17344,7 @@ packages: resolution: {integrity: sha512-7/w2pzCDvzbidqAl2Rhd/FeA6QZhZmb03Y7rPIO0eJR33L8QWnLiyw+r4Et2DLji8A7N8/gcc+hsRL6lcEsGMA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 moment: 2.29.4 moment-timezone: 0.5.41 dev: false @@ -16397,54 +17372,54 @@ packages: /@wordpress/deprecated/2.12.3: resolution: {integrity: sha512-qr+yDfTQfI3M4h6oY6IeHWwoHr4jxbILjSlV+Ht6Jjto9Owap6OuzSqR13Ev4xqIoG4C7b5B3gZXVfwVDae1zg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 2.12.3 /@wordpress/deprecated/3.28.0: resolution: {integrity: sha512-t0rYH9Gkq90PZt46PzzadxJfpNv5YT7QtfBpokogRYqugSRmb2auyjr5GoozJZbr/ee/39HJRcnCvJFik7SSYw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 3.28.0 /@wordpress/deprecated/3.6.1: resolution: {integrity: sha512-ilOkjXejcnJMxnq1gTVkBnDPP9W+XjlEe1TIfaMKcCwKsfsNy6bgURxWl1qIM2dPjH+5KK65bPjW0XELTMJy4w==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 3.6.1 /@wordpress/dom-ready/3.28.0: resolution: {integrity: sha512-PFFAnuPUouV0uSDZN6G/B8yksybtxzS/6H53OZJEA3h3EsNCicKRMGSowkumvLwXA23HV0K2Kht6JuS+bDECzA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/dom-ready/3.6.1: resolution: {integrity: sha512-G6OnfLLC0MIWi9efTW6DMNEtEoy7tCoV0MxD19gUuG3/rDOi8RgHYwuNCvt6ieQMISiLiHnsg4tZc4D45zdfZA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/dom/2.18.0: resolution: {integrity: sha512-tM2WeQuSObl3nzWjUTF0/dyLnA7sdl/MXaSe32D64OF89bjSyJvjUipI7gjKzI3kJ7ddGhwcTggGvSB06MOoCQ==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 /@wordpress/dom/3.28.0: resolution: {integrity: sha512-osmWEYuA9qtjZ+fQZ9cB8rjscrrziSgQPgtbGKb2EddSSpElprksLUEivdVmphJtZ21vdy/NpJJS3ATm04YlRA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/deprecated': 3.28.0 /@wordpress/dom/3.6.1: resolution: {integrity: sha512-wdWBzfxU8iUPpxxTACkFpYbEoC0f+Hqs24IYOkhn/8ERp2LFpUdFcwF7/DmY6agSpUs8iWT/2hSGdUz9Lw2f0w==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 /@wordpress/e2e-test-utils/3.0.0_ddjhsfu4aotkh3cuzmpsln6ywq: @@ -16454,7 +17429,7 @@ packages: jest: '>=24' puppeteer: '>=1.19.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/keycodes': 2.19.3 '@wordpress/url': 2.22.2_react-native@0.70.0 jest: 24.9.0 @@ -16472,7 +17447,7 @@ packages: jest: '>=24' puppeteer: '>=1.19.0' dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@wordpress/keycodes': 2.19.3 '@wordpress/url': 2.22.2_react-native@0.70.0 jest: 27.5.1 @@ -16491,7 +17466,7 @@ packages: jest: '>=27' puppeteer-core: '>=11' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 '@wordpress/keycodes': 3.6.1 '@wordpress/url': 3.7.1 @@ -16499,24 +17474,24 @@ packages: jest: 27.5.1 lodash: 4.17.21 node-fetch: 2.6.7 - puppeteer-core: 19.7.3_typescript@4.8.4 + puppeteer-core: 19.7.3_typescript@4.9.5 transitivePeerDependencies: - encoding dev: false - /@wordpress/editor/12.5.10_tufdcic6wklrwyy3rhbsbktylu: + /@wordpress/editor/12.5.10_eqi5qhcxfphl6j3pngzexvnehi: resolution: {integrity: sha512-FEgNLDRAtOjGrXXNUXWucf3zMfM1rWCgc/eQrJFwj0atWGJmqQERvmF4H4jeUO6gqetOHmnko38fLVAnE7QWYw==} engines: {node: '>=12'} peerDependencies: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 '@wordpress/api-fetch': 6.3.1 - '@wordpress/block-editor': 8.6.0_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/block-editor': 8.6.0_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/blocks': 11.18.0_react@17.0.2 - '@wordpress/components': 19.8.5_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.8.5_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/core-data': 4.4.5_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 @@ -16531,10 +17506,10 @@ packages: '@wordpress/keycodes': 3.6.1 '@wordpress/media-utils': 3.4.1 '@wordpress/notices': 3.6.1_react@17.0.2 - '@wordpress/preferences': 1.3.0_tufdcic6wklrwyy3rhbsbktylu - '@wordpress/reusable-blocks': 3.17.0_vcke6catv4iqpjdw24uwvlzyyi + '@wordpress/preferences': 1.3.0_eqi5qhcxfphl6j3pngzexvnehi + '@wordpress/reusable-blocks': 3.17.0_mtk4wljkd5jimhszw4p7nnxuzm '@wordpress/rich-text': 5.4.2_react@17.0.2 - '@wordpress/server-side-render': 3.17.0_vcke6catv4iqpjdw24uwvlzyyi + '@wordpress/server-side-render': 3.17.0_mtk4wljkd5jimhszw4p7nnxuzm '@wordpress/url': 3.7.1 '@wordpress/wordcount': 3.28.0 classnames: 2.3.1 @@ -16558,7 +17533,7 @@ packages: /@wordpress/element/2.20.3: resolution: {integrity: sha512-f4ZPTDf9CxiiOXiMxc4v1K7jcBMT4dsiehVOpkKzCDKboNXp4qVf8oe5PE23VGZNEjcOj5Mkg9hB57R0nqvMTw==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 16.9.16 '@wordpress/escape-html': 1.12.2 @@ -16570,7 +17545,7 @@ packages: resolution: {integrity: sha512-YXJhtBF8FnFYwA9X6Dvs4k6yJf5wy1lhU04VNJVzoUDwCt/pK747RGePIPDdUWVd3X/TlyNH2yLRtcCyOC/SzQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 16.9.16 '@wordpress/escape-html': 2.28.0 @@ -16583,7 +17558,7 @@ packages: resolution: {integrity: sha512-Ou7EoGtGe4FUL6fKALINXJLKoSfyWTBJzkJfN2HzSgM1wira9EuWahl8MQN0HAUaWeOoDqMKPvnglfS+kC8JLA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 17.0.17 '@wordpress/escape-html': 2.28.0 @@ -16596,7 +17571,7 @@ packages: resolution: {integrity: sha512-2QZdyv0IOIzk8jmJ/BKCDO1TjkdBQeujqjhfL+Ff6P9uX4vcKc9JCvNVQZ3k4Zx3bAxZm9staxfQUz27qvSQXw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 17.0.17 '@wordpress/escape-html': 2.28.0 @@ -16608,7 +17583,7 @@ packages: resolution: {integrity: sha512-f2Mb70xvGxZWNWh5pFhOoRgrd+tKs9Xk9hpDgRB7iPel/zbAIxNebr0Jqm5Nt+MDiDl/dogTPc9GyrkYCm9u0g==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 17.0.17 '@wordpress/escape-html': 2.15.0 @@ -16621,7 +17596,7 @@ packages: resolution: {integrity: sha512-fyePV7Zso797R2FyeOQG6y1nZA77NAa+fyGk6wE90KoKDQY+8FD38eHpri29G0SkXXrI7BT+QOtH6tpr+d2ifg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@types/react': 17.0.50 '@types/react-dom': 18.0.11 '@wordpress/escape-html': 2.28.0 @@ -16653,29 +17628,29 @@ packages: /@wordpress/escape-html/1.12.2: resolution: {integrity: sha512-FabgSwznhdaUwe6hr1CsGpgxQbzqEoGevv73WIL1B9GvlZ6csRWodgHfWh4P6fYqpzxFL4WYB8wPJ1PdO32XFA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/escape-html/2.15.0: resolution: {integrity: sha512-eW655uSjCK835/eBt1lgCBtLFfgxSX4MiMTe7Dxo8pqZmP5cwh9zNJuirEnVnaamjAjfIVRel4awNGZebflJeg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/escape-html/2.28.0: resolution: {integrity: sha512-GvtHuTfmfaIQ05BHUHGMmAKM1vU9Z2glE02m+7a0NqlzQAaNK3zG4tQ1xeu1kLEt+iHcTnLhYgPVBDxTNbN/FA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/escape-html/2.4.1: resolution: {integrity: sha512-iom52wT6VqUQUytnSvsOSJp3J/amKC55bTp4AQjGIhM6uLzpWD32n9ZDl8ntuNsck+v5llxehq9XKJZBZiCR+g==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false - /@wordpress/eslint-plugin/11.1.0_sxmqrsrdaatoogkbdrkrjpdxyi: + /@wordpress/eslint-plugin/11.1.0_vahpu6tlfovxovqgmr2jx5nrui: resolution: {integrity: sha512-NNIgJQqibdj5BsctkhCqjYt5NAs8eGBnuMSTnbhYCuUrs/PF3iF+jwY4OEOBOSlr00KyM9BfDxr9/5EWG8PmOw==} engines: {node: '>=12', npm: '>=6.9'} peerDependencies: @@ -16691,15 +17666,15 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/eslint-parser': 7.17.0_ghetaprrho5qxr5lt7srlprvom - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@wordpress/babel-preset-default': 6.17.0 - '@wordpress/prettier-config': 1.1.3 + '@wordpress/prettier-config': 1.4.0_wp-prettier@2.6.2 cosmiconfig: 7.0.1 eslint: 8.32.0 eslint-config-prettier: 8.5.0_eslint@8.32.0 eslint-plugin-import: 2.25.4_op65hrlmg4esunydfgass5vyay - eslint-plugin-jest: 25.7.0_klkfojxgfcgqwugydjzhwslcdy + eslint-plugin-jest: 25.7.0_fn5ksat3toxexlkdgvm3hm2yl4 eslint-plugin-jsdoc: 37.9.7_eslint@8.32.0 eslint-plugin-jsx-a11y: 6.5.1_eslint@8.32.0 eslint-plugin-playwright: 0.8.0_bue26mukq4crcytfui3g7egwhy @@ -16709,7 +17684,7 @@ packages: globals: 13.12.0 prettier: /wp-prettier/2.6.2 requireindex: 1.2.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16717,7 +17692,7 @@ packages: - supports-color dev: true - /@wordpress/eslint-plugin/14.1.0_gfyzvuspv2bauiwltqdx5274hy: + /@wordpress/eslint-plugin/14.1.0_ak7jos5tfhufwkd24zstbgydxq: resolution: {integrity: sha512-9RLpGuYNWPrSq+56bJ95KTCSJF8FBhCtbQRcAys36NOIKY9yE3q5YlqEjTPme8HNEXphLJcHKutNTDSThbTitQ==} engines: {node: '>=14', npm: '>=6.14.4'} peerDependencies: @@ -16733,15 +17708,15 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/eslint-parser': 7.17.0_45t77ya3ofqya5ogk4q6xdzcpq - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm '@wordpress/babel-preset-default': 7.12.0 '@wordpress/prettier-config': 2.11.0_prettier@2.3.0 cosmiconfig: 7.0.1 eslint: 8.32.0 eslint-config-prettier: 8.5.0_eslint@8.32.0 eslint-plugin-import: 2.25.4_op65hrlmg4esunydfgass5vyay - eslint-plugin-jest: 27.2.1_b3vzfonseicqu2u4eqopdzaqsm + eslint-plugin-jest: 27.2.1_fn5ksat3toxexlkdgvm3hm2yl4 eslint-plugin-jsdoc: 39.9.1_eslint@8.32.0 eslint-plugin-jsx-a11y: 6.5.1_eslint@8.32.0 eslint-plugin-prettier: 3.4.1_kkndast3snpxc6vned3vep6fka @@ -16750,7 +17725,7 @@ packages: globals: 13.19.0 prettier: 2.3.0 requireindex: 1.2.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16758,7 +17733,7 @@ packages: - supports-color dev: false - /@wordpress/eslint-plugin/7.4.0_3rubbgt5ekhqrcgx4uwls3neim: + /@wordpress/eslint-plugin/7.4.0_jofidmxrjzhj7l6vknpw5ecvfe: resolution: {integrity: sha512-HJpDYz2drtC9rY8MiYtYJ3cimioEIweGyb3P2DQTjUZ3sC4AGg+97PhXLHUdKfsFQ31JRxyLS9kKuGdDVBwWww==} engines: {node: '>=10', npm: '>=6.9'} peerDependencies: @@ -16769,7 +17744,7 @@ packages: cosmiconfig: 7.0.1 eslint: 7.32.0 eslint-config-prettier: 6.15.0_eslint@7.32.0 - eslint-plugin-jest: 23.20.0_3rubbgt5ekhqrcgx4uwls3neim + eslint-plugin-jest: 23.20.0_jofidmxrjzhj7l6vknpw5ecvfe eslint-plugin-jsdoc: 30.7.13_eslint@7.32.0 eslint-plugin-jsx-a11y: 6.5.1_eslint@7.32.0 eslint-plugin-prettier: 3.4.1_zguzx6zo4kxwciwcj7pnjjrv2u @@ -16783,7 +17758,7 @@ packages: - typescript dev: true - /@wordpress/eslint-plugin/9.3.0_gvdiv7jt74qfcmw4bmvrh4kane: + /@wordpress/eslint-plugin/9.3.0_rulnzty5fcllmqugmn4bptievq: resolution: {integrity: sha512-9F7B60gHAjiTIi9vBw5ZoH0MZW3UnmbuKols4kWpJVdgsvG4X1Wj6XXTLmQKrzh/Em7mD1CCIbCSyWknEzIOLw==} engines: {node: '>=12', npm: '>=6.9'} peerDependencies: @@ -16793,15 +17768,15 @@ packages: typescript: optional: true dependencies: - '@babel/eslint-parser': 7.17.0_xujkgafwcpm5gwokncqwvv5ure - '@typescript-eslint/eslint-plugin': 4.33.0_k4l66av2tbo6kxzw52jzgbfzii - '@typescript-eslint/parser': 4.33.0_yygwinqv3a2io74xmwofqb7uka - '@wordpress/prettier-config': 1.1.3 + '@babel/eslint-parser': 7.17.0_xrfyhdkbwxl52yb52lr5ltkqvm + '@typescript-eslint/eslint-plugin': 4.33.0_s2qqtxhzmb7vugvfoyripfgp7i + '@typescript-eslint/parser': 4.33.0_et5x32uxl7z5ldub3ye5rhlyqm + '@wordpress/prettier-config': 1.4.0_wp-prettier@2.2.1-beta-1 cosmiconfig: 7.0.1 eslint: 7.32.0 eslint-config-prettier: 7.2.0_eslint@7.32.0 eslint-plugin-import: 2.25.4_ffi3uiz42rv3jyhs6cr7p7qqry - eslint-plugin-jest: 24.7.0_pycg7frr72nxxf2dj537ozbyqq + eslint-plugin-jest: 24.7.0_bfrijen5mqdzfbbsgrvmb4p2hy eslint-plugin-jsdoc: 36.1.1_eslint@7.32.0 eslint-plugin-jsx-a11y: 6.5.1_eslint@7.32.0 eslint-plugin-prettier: 3.4.1_gs3qp45fhmeuf44rtqp7mvwogy @@ -16810,7 +17785,7 @@ packages: globals: 12.4.0 prettier: /wp-prettier/2.2.1-beta-1 requireindex: 1.2.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - '@babel/core' - eslint-import-resolver-typescript @@ -16821,38 +17796,38 @@ packages: /@wordpress/hooks/2.12.3: resolution: {integrity: sha512-LmKiwKldZt6UYqOxV/a6+eUFXdvALFnB/pQx3RmrMvO64sgFhfR6dhrlv+uVbuuezSuv8dce1jx8lUWAT0krMA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/hooks/3.28.0: resolution: {integrity: sha512-u81dqGGhvq9QGjll41hN6vYhQP3UoT06vIls4xhp7Uc+fhQpce3cGyRw9PYjPrL17gK2derJy30edmQR5v7OzQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/hooks/3.6.1: resolution: {integrity: sha512-4sIngmH64M1jzcprfkffo1GHsQbd/QNbTweq6cSPIJNorKfE63Inf59NQ6r0pq6+Nz+cuq64eMz5v4eyngjZ/A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/html-entities/3.28.0: resolution: {integrity: sha512-UAaU6au8UTrSkowkV33pE/EvdPov2mA9W51vh6t88KsJPzt4171EzIchGnQuzt04HuZLdLyWy2A+7JCOSbfhBA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/html-entities/3.6.1: resolution: {integrity: sha512-Nb0nCYIdTEehWJ6HoA76bxpseKDY/12rYZ10eqf5OSr6oMvtyJ5j4fkNMKuHFQ00Mhppl9fkYWp2c8ZzBcp5Vw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/i18n/3.20.0: resolution: {integrity: sha512-SIoOJFB4UrrYAScS4H91CYCLW9dX3Ghv8pBKc/yHGculb1AdGr6gRMlmJxZV62Cn3CZ4Ga86c+FfR+GiBu0JPg==} hasBin: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 2.12.3 gettext-parser: 1.4.0 lodash: 4.17.21 @@ -16865,7 +17840,7 @@ packages: engines: {node: '>=12'} hasBin: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 3.28.0 gettext-parser: 1.4.0 memize: 1.1.0 @@ -16877,7 +17852,7 @@ packages: engines: {node: '>=12'} hasBin: true dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 3.6.1 gettext-parser: 1.4.0 lodash: 4.17.21 @@ -16891,7 +17866,7 @@ packages: engines: {node: '>=12'} hasBin: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/hooks': 3.6.1 gettext-parser: 1.4.0 lodash: 4.17.21 @@ -16903,7 +17878,7 @@ packages: resolution: {integrity: sha512-fNq0Mnzzf03uxIwKqQeU/G48wElyypwkhcBZWYQRpmwLZrOR231dxUeK9mzPOSGlYbgM+YKK+k3lzysGmrJU0A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.4.1 '@wordpress/primitives': 3.4.1 dev: false @@ -16912,7 +17887,7 @@ packages: resolution: {integrity: sha512-e73iDdlo+c6h8Rhm7mKg+CX7s8cSlGVqtKQooeM3RRo54UaN2hh4Va/zjXZj45+AYG3gx75PPSKFElhHt3LW4Q==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.4.1 '@wordpress/primitives': 3.4.1 dev: false @@ -16921,7 +17896,7 @@ packages: resolution: {integrity: sha512-N/bzt5z534JyAWdTyDdsu9G+6NQ5FvykmNbKZrZuUHTuEI8KbxYaN/5lT6W6Lkwq32D/B6ibpt1LpSQJ37IZWw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.20.0 '@wordpress/primitives': 3.26.0 dev: false @@ -16930,20 +17905,20 @@ packages: resolution: {integrity: sha512-mjpchAandG1igJSDgK2JON61rTaTT7dIZ2X47o6mNCODbh1AVE0O6aX7+edRRCFyeUdyYnUFin+MALH2n7jKog==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 5.5.0 '@wordpress/primitives': 3.26.0 - /@wordpress/interface/4.5.6_tufdcic6wklrwyy3rhbsbktylu: + /@wordpress/interface/4.5.6_eqi5qhcxfphl6j3pngzexvnehi: resolution: {integrity: sha512-Sige1gYGJOvD7UvKIUA4VCezFOxr157NCSQXn8/x2krjKybJzemI07ZJcTApawEYW0gutZbBizoUzaR8YLiiVA==} engines: {node: '>=12'} peerDependencies: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 - '@wordpress/components': 19.8.5_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.8.5_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 '@wordpress/deprecated': 3.6.1 @@ -16951,7 +17926,7 @@ packages: '@wordpress/i18n': 4.6.1 '@wordpress/icons': 8.2.3 '@wordpress/plugins': 4.4.3_react@17.0.2 - '@wordpress/preferences': 1.3.0_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/preferences': 1.3.0_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/viewport': 4.4.1_react@17.0.2 classnames: 2.3.1 lodash: 4.17.21 @@ -16966,25 +17941,25 @@ packages: /@wordpress/is-shallow-equal/3.1.3: resolution: {integrity: sha512-eDLhfC4aaSgklzqwc6F/F4zmJVpTVTAvhqX+q0SP/8LPcP2HuKErPHVrEc75PMWqIutja2wJg98YSNPdewrj1w==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/is-shallow-equal/4.19.0: resolution: {integrity: sha512-/9DPUHJqX7QU7XuN67JHp/B3y1lqutb+UAJ+abT4fW9tCOoIRpPnBYAfqI6sNh7a/CQo1/FnCmOqfvzTb2U5dQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/is-shallow-equal/4.28.0: resolution: {integrity: sha512-RN6ME/m+HJ3BwwpSJBG7kl7SSJgCkaJ7MR7v27vRRvzt9iAiGbv7s5wq2P1WiwX7xqCViRYDC3HVGbwqB7miAA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/is-shallow-equal/4.4.1: resolution: {integrity: sha512-NlcqqrukKe4zT5fCs3O5FVYwqmHhtqM//KqWs7xfIaoz9B07oKZQNZqOrU72mgz7mgRliQumTQHzFM76RO0hZQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/jest-console/3.10.0_jest@25.5.4: @@ -16993,7 +17968,7 @@ packages: peerDependencies: jest: '>=24' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 jest: 25.5.4 jest-matcher-utils: 25.5.0 lodash: 4.17.21 @@ -17005,7 +17980,7 @@ packages: peerDependencies: jest: '>=26' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 jest: 26.6.3 jest-matcher-utils: 26.6.2 lodash: 4.17.21 @@ -17017,7 +17992,7 @@ packages: peerDependencies: jest: '>=26' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 jest: 27.5.1 jest-matcher-utils: 26.6.2 lodash: 4.17.21 @@ -17029,7 +18004,7 @@ packages: peerDependencies: jest: '>=27' dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 jest: 27.5.1 jest-matcher-utils: 27.5.1 lodash: 4.17.21 @@ -17054,7 +18029,7 @@ packages: - supports-color dev: true - /@wordpress/jest-preset-default/7.1.3_3kt4xu3sgkhoqdvxwcvxppk7nm: + /@wordpress/jest-preset-default/7.1.3_32bilwwi7li3aoepmefcbmhmcy: resolution: {integrity: sha512-rz9V/YRr3TjLdZJQu7DAZHo848PpZ4N5ThtP4Lujy1O/UtcvtKF0r34SZTNDlFQO/G1USZQX/WL6HRhgl57iHA==} engines: {node: '>=12'} peerDependencies: @@ -17062,7 +18037,7 @@ packages: dependencies: '@wojtekmaj/enzyme-adapter-react-17': 0.6.6_7ltvq4e2railvf5uya4ffxpe2a '@wordpress/jest-console': 4.1.1_jest@26.6.3 - babel-jest: 26.6.3_@babel+core@7.17.8 + babel-jest: 26.6.3_@babel+core@7.21.3 enzyme: 3.11.0 enzyme-to-json: 3.6.2_enzyme@3.11.0 jest: 26.6.3 @@ -17120,7 +18095,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/data': 7.3.0_react@17.0.2 '@wordpress/element': 4.20.0 '@wordpress/keycodes': 3.28.0 @@ -17133,7 +18108,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/data': 6.6.1_react@17.0.2 '@wordpress/element': 4.4.1 '@wordpress/keycodes': 3.6.1 @@ -17145,7 +18120,7 @@ packages: /@wordpress/keycodes/2.19.3: resolution: {integrity: sha512-8rNdmP5M1ifTgLIL0dt/N1uTGsq/Rx1ydCXy+gg24WdxBRhyu5sudNVCtascVXo26aIfOH9OJRdqRZZTEORhog==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 3.20.0 lodash: 4.17.21 @@ -17153,7 +18128,7 @@ packages: resolution: {integrity: sha512-J449VGhB6txs7jBlwSv4MHTihIWDmh2RbG6CTxS9mG3jKL7YJq3+smZ8OUYYH1/4CAZCBumFXShokH5WP6Aynw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.28.0 change-case: 4.1.2 @@ -17161,7 +18136,7 @@ packages: resolution: {integrity: sha512-z/pIY0JtLVCxMClKZFnSbhumDbTDf69F4vHYLESNRdAJktqPRRzKsSeg69tJKI+00QzVakKWAvoyyyjopmxoCQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.6.1 lodash: 4.17.21 dev: false @@ -17170,7 +18145,7 @@ packages: resolution: {integrity: sha512-bqKk3zaJ2tN0hYBhrrgajKnsFMnahQT3FxR5fvqA6e1jVeRAntve3ILUUNTW3lKjmZpKXUaYs7fVrCbRNa4q3A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/i18n': 4.6.1 lodash: 4.17.21 @@ -17178,7 +18153,7 @@ packages: resolution: {integrity: sha512-WNAaMqqw6Eqy61KTWBy1NlgXSZH82Cm2SPVbz0v6yhJ4ktJmSRFm7Fd4mTMFS/L7NKTxwo+DFqEHlTGKj3lyzQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.3.1 '@wordpress/blob': 3.28.0 '@wordpress/element': 4.4.1 @@ -17190,7 +18165,7 @@ packages: resolution: {integrity: sha512-XftApWHyLlf2vq6FLYiqACoG4CxDsRqc6zQSjOA5UHQooVPbSsbYXl4eadloPtMnJohlzjzvb0SEIafjMyxjCA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.28.0 '@wordpress/data': 8.5.0_react@17.0.2 transitivePeerDependencies: @@ -17202,7 +18177,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 '@wordpress/data': 6.6.1_react@17.0.2 lodash: 4.17.21 @@ -17233,7 +18208,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/element': 4.4.1 '@wordpress/hooks': 3.6.1 @@ -17264,21 +18239,21 @@ packages: postcss: 8.4.12 dev: true - /@wordpress/postcss-plugins-preset/3.6.1_postcss@8.4.12: + /@wordpress/postcss-plugins-preset/3.6.1_postcss@8.4.21: resolution: {integrity: sha512-q/pTHuBaxwJQuT8sngj1X1R6/YETqTrc4UmWLuYJt0RDRh31NukEwbWHKEDqOOA7aEDxEBuyPA7EKiffGxYbrQ==} engines: {node: '>=12'} peerDependencies: postcss: ^8.0.0 dependencies: '@wordpress/base-styles': 4.3.1 - autoprefixer: 10.4.4_postcss@8.4.12 - postcss: 8.4.12 + autoprefixer: 10.4.4_postcss@8.4.21 + postcss: 8.4.21 dev: false /@wordpress/postcss-themes/1.0.5: resolution: {integrity: sha512-Oig71+VQG3UxLadd98oWMQfIqWrVY+G375/yKCHRklwEIZhKtAeK7qZlL1dEjdGPGvPXFeggB7KG5SGyrmdOZA==} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 autoprefixer: 8.6.5 postcss: 6.0.23 postcss-color-function: 4.1.0 @@ -17293,16 +18268,16 @@ packages: postcss: 7.0.39 dev: true - /@wordpress/preferences/1.3.0_tufdcic6wklrwyy3rhbsbktylu: + /@wordpress/preferences/1.3.0_eqi5qhcxfphl6j3pngzexvnehi: resolution: {integrity: sha512-2ACfz6LkQY2oAcEgTVpkfpasywo/nSmN5jbpT2gNoF/W/RCFBso+VDyuLsfpJ1INbbq+6pPKLccLBWYAvwuFdA==} engines: {node: '>=12'} peerDependencies: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.28.0 - '@wordpress/components': 19.12.0_tufdcic6wklrwyy3rhbsbktylu + '@wordpress/components': 19.12.0_eqi5qhcxfphl6j3pngzexvnehi '@wordpress/data': 6.15.0_react@17.0.2 '@wordpress/i18n': 4.28.0 '@wordpress/icons': 8.4.0 @@ -17320,16 +18295,29 @@ packages: engines: {node: '>=10'} dev: true - /@wordpress/prettier-config/1.1.1: - resolution: {integrity: sha512-qjpBK5KB2ieCLv+1fGNKRW4urf5tFN1eUn3Qy+JINxNwAx6Jj9uhfXA4AldCSnD+WkzsN2UgBvgAj5/SWwzRZQ==} - engines: {node: '>=12'} - dev: true - /@wordpress/prettier-config/1.1.3: resolution: {integrity: sha512-0ogGFvywFxVVhw5rXZUCDCV7aaw2KII5a3Xy0t1CAJYBP1TCF7tPNZIRyGD4bPzm5FM6IjmUMyB6NPzwRnpXrg==} engines: {node: '>=12'} dev: true + /@wordpress/prettier-config/1.4.0_wp-prettier@2.2.1-beta-1: + resolution: {integrity: sha512-uvrgUAhRnOvIysXjcXH9VDsrKLqH9r3BfdGoy+WFLSHFnTfdMhW7bdDQXl4F4UIUuefUwGi+ZvT/rChg9zoBkQ==} + engines: {node: '>=12'} + peerDependencies: + prettier: '>=2' + dependencies: + prettier: /wp-prettier/2.2.1-beta-1 + dev: true + + /@wordpress/prettier-config/1.4.0_wp-prettier@2.6.2: + resolution: {integrity: sha512-uvrgUAhRnOvIysXjcXH9VDsrKLqH9r3BfdGoy+WFLSHFnTfdMhW7bdDQXl4F4UIUuefUwGi+ZvT/rChg9zoBkQ==} + engines: {node: '>=12'} + peerDependencies: + prettier: '>=2' + dependencies: + prettier: /wp-prettier/2.6.2 + dev: true + /@wordpress/prettier-config/2.11.0_prettier@2.3.0: resolution: {integrity: sha512-dIZFb5JOI4AuDJoYJIj30eKhsAVic08ine+zRccFDKtK6IKcoRqKbY/AVEjXcpBpk1sg/Fz7zRCE23K5KVS1Sw==} engines: {node: '>=14'} @@ -17352,7 +18340,7 @@ packages: resolution: {integrity: sha512-alFOs74tqKeP2ByRqVOT9QYjXPLVZV+hM+8myusCN+60VB0hCTrUwTktFTAkftGbfpjoBOTe46pQ5eS/BZ1u/A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.20.0 classnames: 2.3.1 dev: false @@ -17361,7 +18349,7 @@ packages: resolution: {integrity: sha512-cqx/hTFYqLOzIf75nY5h4aafreiu/2vR2xhGeLinexqHMQ6QurvDbZOmJmlSnkpnTVBr8OHJFIuagjp0GlJZbg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 5.5.0 classnames: 2.3.1 @@ -17369,7 +18357,7 @@ packages: resolution: {integrity: sha512-2QzRVBgMzd2nBLseyq4QFi2SFAD2Vu8lC6tIRW7SuCaeGSJT9JKQIeowc18ji5Y2856YRUNL4Lz0DxFyinWqQw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.4.1 classnames: 2.3.1 dev: false @@ -17378,7 +18366,7 @@ packages: resolution: {integrity: sha512-XOtNtYseCkdGwMWQT9bl4rMAlIX1cNByIFVsDGRVjA58qW3oghZgEJH41R/eCEVkU5z3YKhnflS096y0Xg1ZtA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.20.0 classnames: 2.3.1 dev: false @@ -17386,26 +18374,26 @@ packages: /@wordpress/priority-queue/1.11.2: resolution: {integrity: sha512-ulwmUOklY3orn1xXpcPnTyGWV5B/oycxI+cHZ6EevBVgM5sq+BW3xo0PKLR/MMm6UNBtFTu/71QAJrNZcD6V1g==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/priority-queue/2.28.0: resolution: {integrity: sha512-BRWkNcm1s5n+RfQk8YjhhzkFpsZJ98clBQR7l7GnIBTEHgcsIXSZUU32HwO7p/N8g6QdJabgAgYamRNW6ACHTQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 requestidlecallback: 0.3.0 /@wordpress/private-apis/0.10.0: resolution: {integrity: sha512-0sc5lBWJ+gyEIhZ8KWlfzGAS0q7CmQtZIyNNqrnlIGJnyRkz6BNQ4NGd3rDaaGa4OWCZ6fbhIZo7NLWGi8Ub7A==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/react-i18n/3.8.0: resolution: {integrity: sha512-5jg7DY05jCWfzCZRt+VCT4cKn6mCZwQhQlJIApcuzUGT51tlLk/BwyxBMfnn5ZT5IVSp9YxedExycohNPXEPjg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/element': 4.20.0 '@wordpress/i18n': 4.28.0 utility-types: 3.10.0 @@ -17414,7 +18402,7 @@ packages: /@wordpress/redux-routine/3.14.2: resolution: {integrity: sha512-aqi4UtvMP/+NhULxyCR8ktG0v4BJVTRcMpByAqDg7Oabq2sz2LPuShxd5UY8vxQYQY9t1uUJbslhom4ytcohWg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 is-promise: 4.0.0 lodash: 4.17.21 rungen: 0.3.2 @@ -17426,12 +18414,41 @@ packages: peerDependencies: redux: '>=4' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 is-plain-object: 5.0.0 is-promise: 4.0.0 redux: 4.2.0 rungen: 0.3.2 + /@wordpress/reusable-blocks/3.17.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-7ZfhtpWGvtT7xWqY/mCwC93zFHTVPQf8SZRjy2jAhcl7RNY6KZpW82rMRKNROEKJ4cYbTOMMf7WL2ulYi6cNFw==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@wordpress/block-editor': 10.2.0_mtk4wljkd5jimhszw4p7nnxuzm + '@wordpress/blocks': 11.18.0_react@17.0.2 + '@wordpress/components': 21.2.0_mtk4wljkd5jimhszw4p7nnxuzm + '@wordpress/core-data': 5.2.0_react@17.0.2 + '@wordpress/data': 7.3.0_react@17.0.2 + '@wordpress/element': 4.20.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/icons': 9.19.0 + '@wordpress/notices': 3.28.0_react@17.0.2 + '@wordpress/url': 3.29.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/react' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - vite + dev: false + /@wordpress/reusable-blocks/3.17.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-7ZfhtpWGvtT7xWqY/mCwC93zFHTVPQf8SZRjy2jAhcl7RNY6KZpW82rMRKNROEKJ4cYbTOMMf7WL2ulYi6cNFw==} engines: {node: '>=12'} @@ -17467,7 +18484,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.28.0 '@wordpress/compose': 5.17.0_react@17.0.2 '@wordpress/data': 7.3.0_react@17.0.2 @@ -17486,7 +18503,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/a11y': 3.6.1 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 @@ -17500,7 +18517,7 @@ packages: rememo: 3.0.0 dev: false - /@wordpress/scripts/12.6.1_h4xx42qb2l7ylq2u26dkj2fbyi: + /@wordpress/scripts/12.6.1_c6qmhwnhjoryl2mlu436oznfja: resolution: {integrity: sha512-pDLtACFrP5gUA414qrE49dUrR7yMy40+//1e/5Nx821lnmDb7GAGWGo1gX4lJ2gbfSjePwmRoZe6Mph87vSnLQ==} engines: {node: '>=10', npm: '>=6.9'} hasBin: true @@ -17508,13 +18525,13 @@ packages: '@svgr/webpack': 5.5.0 '@wordpress/babel-preset-default': 4.20.0 '@wordpress/dependency-extraction-webpack-plugin': 2.9.0_webpack@4.46.0 - '@wordpress/eslint-plugin': 7.4.0_3rubbgt5ekhqrcgx4uwls3neim + '@wordpress/eslint-plugin': 7.4.0_jofidmxrjzhj7l6vknpw5ecvfe '@wordpress/jest-preset-default': 6.6.0_slykazngj4ewgpxsih7vabcvku '@wordpress/npm-package-json-lint-config': 3.1.0_ngbyqqcq5j4itme2ewj5k5pf2y '@wordpress/postcss-plugins-preset': 1.6.0 '@wordpress/prettier-config': 0.4.0 babel-jest: 25.5.1_@babel+core@7.17.8 - babel-loader: 8.2.3_w4x3pzrj2omidyjy5w3nzug7xy + babel-loader: 8.3.0_w4x3pzrj2omidyjy5w3nzug7xy chalk: 4.1.2 check-node-version: 3.3.0 clean-webpack-plugin: 3.0.0_webpack@4.46.0 @@ -17536,8 +18553,8 @@ packages: puppeteer: /puppeteer-core/3.0.0 read-pkg-up: 1.0.1 resolve-bin: 0.4.3 - sass: 1.49.9 - sass-loader: 8.0.2_sass@1.49.9+webpack@4.46.0 + sass: 1.59.3 + sass-loader: 8.0.2_sass@1.59.3+webpack@4.46.0 source-map-loader: 0.2.4 stylelint: 13.13.1 stylelint-config-wordpress: 17.0.0_stylelint@13.13.1 @@ -17566,7 +18583,7 @@ packages: - webpack-command dev: true - /@wordpress/scripts/19.2.4_f7x7zdz3ccrnqxb4utvdtwqz4e: + /@wordpress/scripts/19.2.4_k7srtcnfu3w3ddpsnj7iktfq5i: resolution: {integrity: sha512-klkfjBOPfr/RT/3Tvmx+gLbZ+dxq5L0dJQHCHxEURMRW/A8SfJJPtmC29L9sE1KhO3zUMWxrkn2L6HhSzbvQbA==} engines: {node: '>=12.13', npm: '>=6.9'} hasBin: true @@ -17575,14 +18592,14 @@ packages: '@wordpress/babel-preset-default': 6.6.1 '@wordpress/browserslist-config': 4.1.3 '@wordpress/dependency-extraction-webpack-plugin': 3.4.1_webpack@5.70.0 - '@wordpress/eslint-plugin': 9.3.0_gvdiv7jt74qfcmw4bmvrh4kane - '@wordpress/jest-preset-default': 7.1.3_3kt4xu3sgkhoqdvxwcvxppk7nm + '@wordpress/eslint-plugin': 9.3.0_rulnzty5fcllmqugmn4bptievq + '@wordpress/jest-preset-default': 7.1.3_32bilwwi7li3aoepmefcbmhmcy '@wordpress/npm-package-json-lint-config': 4.2.0_ngbyqqcq5j4itme2ewj5k5pf2y '@wordpress/postcss-plugins-preset': 3.10.0_postcss@8.4.12 '@wordpress/prettier-config': 1.1.3 '@wordpress/stylelint-config': 19.1.0_stylelint@13.13.1 - babel-jest: 26.6.3_@babel+core@7.17.8 - babel-loader: 8.2.3_7kihywspc3gmje7ccze4zrmvoq + babel-jest: 26.6.3_@babel+core@7.21.3 + babel-loader: 8.2.3_wxlqalhv5b6426466bgbroq3uq browserslist: 4.20.4 chalk: 4.1.2 check-node-version: 4.2.1 @@ -17620,7 +18637,7 @@ packages: url-loader: 4.1.1_webpack@5.70.0 webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa webpack-bundle-analyzer: 4.6.1 - webpack-cli: 4.9.2_webpack@5.70.0 + webpack-cli: 4.9.2_webpack@5.76.3 webpack-livereload-plugin: 3.0.2_webpack@5.70.0 transitivePeerDependencies: - '@babel/core' @@ -17650,6 +18667,36 @@ packages: - webpack-dev-server dev: true + /@wordpress/server-side-render/3.17.0_mtk4wljkd5jimhszw4p7nnxuzm: + resolution: {integrity: sha512-yJBM1hLl6n9w9X17deSsUc2Fbt/eBKDw2pzwbiPalKUGjP5RSKflzVb1uOwSr+KDUPo4vHj1hwkqO+RHssHHRg==} + engines: {node: '>=12'} + peerDependencies: + react: ^17.0.0 + react-dom: ^17.0.0 + dependencies: + '@babel/runtime': 7.21.0 + '@wordpress/api-fetch': 6.25.0 + '@wordpress/blocks': 11.18.0_react@17.0.2 + '@wordpress/components': 21.2.0_mtk4wljkd5jimhszw4p7nnxuzm + '@wordpress/compose': 5.17.0_react@17.0.2 + '@wordpress/data': 7.3.0_react@17.0.2 + '@wordpress/deprecated': 3.28.0 + '@wordpress/element': 4.20.0 + '@wordpress/i18n': 4.28.0 + '@wordpress/url': 3.29.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/react' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - vite + dev: false + /@wordpress/server-side-render/3.17.0_vcke6catv4iqpjdw24uwvlzyyi: resolution: {integrity: sha512-yJBM1hLl6n9w9X17deSsUc2Fbt/eBKDw2pzwbiPalKUGjP5RSKflzVb1uOwSr+KDUPo4vHj1hwkqO+RHssHHRg==} engines: {node: '>=12'} @@ -17657,7 +18704,7 @@ packages: react: ^17.0.0 react-dom: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/api-fetch': 6.25.0 '@wordpress/blocks': 11.18.0_react@17.0.2 '@wordpress/components': 21.2.0_vcke6catv4iqpjdw24uwvlzyyi @@ -17684,28 +18731,28 @@ packages: resolution: {integrity: sha512-YbxLKyg+VfndHI2QRg359tiqvMJFo4n4DyYnqkNB/YFo7U15ceq67bULxFhHeWIeuxho/p8sobWwC2XaYrQX/w==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 memize: 1.1.0 /@wordpress/shortcode/3.28.0: resolution: {integrity: sha512-Il9NMftqN2WCMqrTxHFyKPnyQc1T80mCU34cTRvR5ZbZMrWNDDdYKMIYwmFc4ehcdWvddkMSPB8JA0ZNbw8NbA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 memize: 1.1.0 /@wordpress/style-engine/0.15.0: resolution: {integrity: sha512-F6wt4g8xnli6bOR0Syd4iz4r5jFha7DZLzi2krmgH3cSTK4DDPj2g1YOJrRIEqXX4aPmdZDurTqQZoJvt9qaqQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 /@wordpress/style-engine/0.6.0: resolution: {integrity: sha512-HIHIhlR1ZulA9j7Z5519/bRAo5v9HSJJFx8CBz+b02XhTUWSgYkUerkHL+UhCTWJpnyBNcPeNDrc0xR1xj7HMA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 dev: false @@ -17713,7 +18760,7 @@ packages: resolution: {integrity: sha512-RoyTFpxDS7uOJuNG31J/153JLKCNftU1/wMMkf0qXDpP+1k4h9em1+iIPPAGPRW5pSq/ky95fAaQAnl+FgI6Wg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 dev: false @@ -17758,19 +18805,19 @@ packages: resolution: {integrity: sha512-YZlKrI0R/MtNg1r6FJcXftpumqY7ymvycCYHCQwS3HN2ddacVvFCi46FDRaB2nLZ8y4BnqS3/6PVMLUI25DuXQ==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/token-list/2.28.0: resolution: {integrity: sha512-MLe7/Ma5BcFzz62ObRwvNFQakdBHCqNkOHLS/PBmWpDSi4Y9+qvICdEn8Od3d0RkPdjupBdtF1ZBeYoaL04K2Q==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@wordpress/url/2.22.2_react-native@0.70.0: resolution: {integrity: sha512-aqpYKQXzyzkCOm+GzZRYlLb+wh58g0cwR1PaKAl0UXaBS4mdS+X6biMriylb4P8CVC/RR7CSw5XI20JC24KDwQ==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 react-native-url-polyfill: 1.3.0_react-native@0.70.0 transitivePeerDependencies: @@ -17780,14 +18827,14 @@ packages: resolution: {integrity: sha512-oRDMedZrAk6KfXZfSlxo+hanQY1ygTgq1Jesu0+EfilaJvkE36aQAoVKjll2JZl97y6GenIcpaTUjm0RA76Bgg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 remove-accents: 0.4.2 /@wordpress/url/3.7.1: resolution: {integrity: sha512-wX/Uck/If+/b8nLhB3UazLMlG7s6jjHv7isG/+/QCaJ01cf/VXXg8x6bRWnoB84ObhwBbBiM4rDTperge7+elg==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 lodash: 4.17.21 /@wordpress/viewport/4.17.0_react@17.0.2: @@ -17796,7 +18843,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.17.0_react@17.0.2 '@wordpress/data': 7.3.0_react@17.0.2 lodash: 4.17.21 @@ -17809,7 +18856,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 lodash: 4.17.21 @@ -17822,7 +18869,7 @@ packages: peerDependencies: react: ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@wordpress/compose': 5.4.1_react@17.0.2 '@wordpress/data': 6.6.1_react@17.0.2 lodash: 4.17.21 @@ -17837,11 +18884,6 @@ packages: resolution: {integrity: sha512-ED4/KYJ6quTltbJdYADzWHyuaqVJH0MkU7nlHYU0SMsbsP+seQTA6ItKIBwF3bgOe6NgpWxLXI6Q/zDkOzSzTA==} engines: {node: '>=12'} - /@wordpress/warning/2.2.2: - resolution: {integrity: sha512-iG1Hq56RK3N6AJqAD1sRLWRIJatfYn+NrPyrfqRNZNYXHM8Vj/s7ABNMbIU0Y99vXkBE83rvCdbMkugNoI2jXA==} - engines: {node: '>=12'} - dev: false - /@wordpress/warning/2.28.0: resolution: {integrity: sha512-6EnZBKHGJsCcgbYOqD/JX3R5B48u3Zmm3Ha1vUpJE9rIHjq8ALM9zG2bYqkTw4mieEs5TvlDOkS3tYoH+S+wsQ==} engines: {node: '>=12'} @@ -17854,13 +18896,13 @@ packages: resolution: {integrity: sha512-x5M997RMrglq/XiGi55sO4fIPrGu20bob6h5goc9NKbbq68NTTDPrznfRbhQ+gTLLEV79AtUO/RPK3y9V9Pvkw==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /@wordpress/wordcount/3.28.0: resolution: {integrity: sha512-SMgmLGeazocSxNpagXav8/6sRMuldH/EgCPmdXK6SKr4tJb8JbKINW74U208c7IBpRG0GjR+1JNyq6jikT/K4g==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: false /@xtuc/ieee754/1.2.0: @@ -18164,7 +19206,6 @@ packages: /ansi-colors/4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} - dev: true /ansi-escapes/3.2.0: resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} @@ -18269,7 +19310,7 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.0 + picomatch: 2.3.1 /app-root-dir/1.0.2: resolution: {integrity: sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=} @@ -18325,7 +19366,7 @@ packages: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} engines: {node: '>=6.0'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@babel/runtime-corejs3': 7.16.3 /aria-query/5.0.0: @@ -18575,13 +19616,30 @@ packages: picocolors: 1.0.0 postcss: 8.4.12 postcss-value-parser: 4.2.0 + dev: true + + /autoprefixer/10.4.4_postcss@8.4.21: + resolution: {integrity: sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.20.2 + caniuse-lite: 1.0.30001352 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false /autoprefixer/8.6.5: resolution: {integrity: sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==} hasBin: true dependencies: browserslist: 3.2.8 - caniuse-lite: 1.0.30001418 + caniuse-lite: 1.0.30001146 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 6.0.23 @@ -18707,9 +19765,9 @@ packages: eslint: '>= 4.12.1' dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.3 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.21.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 resolve: 1.22.1 @@ -18767,18 +19825,18 @@ packages: babel-types: 6.26.0 dev: true - /babel-jest/24.9.0_@babel+core@7.17.8: + /babel-jest/24.9.0_@babel+core@7.21.3: resolution: {integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==} engines: {node: '>= 6'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/transform': 24.9.0 '@jest/types': 24.9.0 '@types/babel__core': 7.1.16 babel-plugin-istanbul: 5.2.0 - babel-preset-jest: 24.9.0_@babel+core@7.17.8 + babel-preset-jest: 24.9.0_@babel+core@7.21.3 chalk: 2.4.2 slash: 2.0.0 transitivePeerDependencies: @@ -18804,6 +19862,25 @@ packages: - supports-color dev: true + /babel-jest/25.5.1_@babel+core@7.21.3: + resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@jest/transform': 25.5.1 + '@jest/types': 25.5.0 + '@types/babel__core': 7.1.16 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 25.5.0_@babel+core@7.21.3 + chalk: 3.0.0 + graceful-fs: 4.2.9 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /babel-jest/26.6.3_@babel+core@7.12.9: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} @@ -18823,18 +19900,18 @@ packages: - supports-color dev: false - /babel-jest/26.6.3_@babel+core@7.17.8: + /babel-jest/26.6.3_@babel+core@7.21.3: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 '@types/babel__core': 7.1.16 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2_@babel+core@7.17.8 + babel-preset-jest: 26.6.2_@babel+core@7.21.3 chalk: 4.1.2 graceful-fs: 4.2.9 slash: 3.0.0 @@ -18859,22 +19936,26 @@ packages: slash: 3.0.0 transitivePeerDependencies: - supports-color - - /babel-loader/8.2.3_2p3p4wasefxeg63hu27rmsqfnq: - resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.12.9 - find-cache-dir: 3.3.2 - loader-utils: 1.4.0 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.70.0 dev: true + /babel-jest/27.5.1_@babel+core@7.21.3: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.21.3 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.1.16 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1_@babel+core@7.21.3 + chalk: 4.1.2 + graceful-fs: 4.2.9 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + /babel-loader/8.2.3_7kihywspc3gmje7ccze4zrmvoq: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} @@ -18890,21 +19971,66 @@ packages: webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /babel-loader/8.2.3_w4x3pzrj2omidyjy5w3nzug7xy: + /babel-loader/8.2.3_wxlqalhv5b6426466bgbroq3uq: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.21.3 + find-cache-dir: 3.3.2 + loader-utils: 1.4.0 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa + dev: true + + /babel-loader/8.3.0_khr5lu7a3zaopuzq65kuhj7rva: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.12.9 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.76.3 + dev: true + + /babel-loader/8.3.0_w4x3pzrj2omidyjy5w3nzug7xy: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: '@babel/core': 7.17.8 find-cache-dir: 3.3.2 - loader-utils: 1.4.0 + loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 4.46.0_webpack-cli@3.3.12 dev: true + /babel-loader/8.3.0_y3c3uzyfhmxjbwhc6k6hyxg3aa: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.21.3 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 4.46.0 + dev: true + /babel-messages/6.23.0: resolution: {integrity: sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=} dependencies: @@ -18955,7 +20081,7 @@ packages: resolution: {integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==} engines: {node: '>=6'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 find-up: 3.0.0 istanbul-lib-instrument: 3.3.0 test-exclude: 5.2.3 @@ -18967,7 +20093,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -18986,8 +20112,8 @@ packages: resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} engines: {node: '>= 8.3'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 '@types/babel__traverse': 7.14.2 dev: true @@ -18995,8 +20121,8 @@ packages: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 @@ -19004,15 +20130,15 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 + '@babel/template': 7.20.7 + '@babel/types': 7.21.3 '@types/babel__core': 7.1.16 '@types/babel__traverse': 7.14.2 /babel-plugin-macros/2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 cosmiconfig: 6.0.0 resolve: 1.22.1 dev: true @@ -19021,7 +20147,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 cosmiconfig: 7.0.1 resolve: 1.22.1 @@ -19033,12 +20159,20 @@ packages: '@babel/core': 7.17.8 dev: true + /babel-plugin-named-asset-import/0.3.8_@babel+core@7.21.3: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + dependencies: + '@babel/core': 7.21.3 + dev: true + /babel-plugin-polyfill-corejs2/0.3.0_@babel+core@7.12.9: resolution: {integrity: sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 semver: 6.3.0 @@ -19046,27 +20180,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2/0.3.0_@babel+core@7.16.12: + /babel-plugin-polyfill-corejs2/0.3.0_@babel+core@7.21.3: resolution: {integrity: sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs2/0.3.0_@babel+core@7.17.8: - resolution: {integrity: sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.3 - '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -19077,7 +20198,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.12.9 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 semver: 6.3.0 @@ -19089,12 +20210,25 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.3 + '@babel/compat-data': 7.21.0 '@babel/core': 7.17.8 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.3: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.17.8: resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} @@ -19108,6 +20242,18 @@ packages: - supports-color dev: true + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.21.3: + resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.21.3 + core-js-compat: 3.25.5 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-corejs3/0.4.0_@babel+core@7.12.9: resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} peerDependencies: @@ -19120,25 +20266,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.4.0_@babel+core@7.16.12: + /babel-plugin-polyfill-corejs3/0.4.0_@babel+core@7.21.3: resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 - core-js-compat: 3.25.5 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs3/0.4.0_@babel+core@7.17.8: - resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color @@ -19156,18 +20290,6 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.16.12: - resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 - core-js-compat: 3.25.5 - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.8: resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} peerDependencies: @@ -19180,6 +20302,18 @@ packages: - supports-color dev: true + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.21.3: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 + core-js-compat: 3.25.5 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.12.9: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: @@ -19201,6 +20335,18 @@ packages: core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.3: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 + core-js-compat: 3.25.5 + transitivePeerDependencies: + - supports-color /babel-plugin-polyfill-regenerator/0.3.0_@babel+core@7.12.9: resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} @@ -19213,17 +20359,6 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.3.0_@babel+core@7.16.12: - resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - /babel-plugin-polyfill-regenerator/0.3.0_@babel+core@7.17.8: resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} peerDependencies: @@ -19235,6 +20370,17 @@ packages: - supports-color dev: true + /babel-plugin-polyfill-regenerator/0.3.0_@babel+core@7.21.3: + resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.12.9: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: @@ -19254,6 +20400,17 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.3: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.3 + transitivePeerDependencies: + - supports-color /babel-plugin-react-docgen/4.2.1: resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} @@ -19312,6 +20469,25 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 dev: true + /babel-preset-current-node-syntax/0.1.4_@babel+core@7.21.3: + resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + dev: true + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.9: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -19350,6 +20526,26 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.8 + dev: true + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.3: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.3 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.3 /babel-preset-fbjs/3.4.0_@babel+core@7.12.9: resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} @@ -19358,25 +20554,25 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.12.9 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.9 '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.12.9 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.12.9 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.12.9 '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.12.9 '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.12.9 '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.12.9 '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.12.9 '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.9 '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.9 '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.12.9 '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.9 '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.12.9 '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.12.9 @@ -19387,50 +20583,50 @@ packages: transitivePeerDependencies: - supports-color - /babel-preset-fbjs/3.4.0_@babel+core@7.17.8: + /babel-preset-fbjs/3.4.0_@babel+core@7.21.3: resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.8 - '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color - /babel-preset-jest/24.9.0_@babel+core@7.17.8: + /babel-preset-jest/24.9.0_@babel+core@7.21.3: resolution: {integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==} engines: {node: '>= 6'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.3 babel-plugin-jest-hoist: 24.9.0 dev: false @@ -19445,6 +20641,17 @@ packages: babel-preset-current-node-syntax: 0.1.4_@babel+core@7.17.8 dev: true + /babel-preset-jest/25.5.0_@babel+core@7.21.3: + resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + babel-plugin-jest-hoist: 25.5.0 + babel-preset-current-node-syntax: 0.1.4_@babel+core@7.21.3 + dev: true + /babel-preset-jest/26.6.2_@babel+core@7.12.9: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} @@ -19456,15 +20663,15 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.9 dev: false - /babel-preset-jest/26.6.2_@babel+core@7.17.8: + /babel-preset-jest/26.6.2_@babel+core@7.21.3: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.3 dev: true /babel-preset-jest/27.5.1_@babel+core@7.17.8: @@ -19476,6 +20683,17 @@ packages: '@babel/core': 7.17.8 babel-plugin-jest-hoist: 27.5.1 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 + dev: true + + /babel-preset-jest/27.5.1_@babel+core@7.21.3: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.3 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.3 /babel-runtime/6.26.0: resolution: {integrity: sha1-llxwWGaOgrVde/4E/yM3vItWR/4=} @@ -19799,7 +21017,7 @@ packages: /broadcast-channel/3.7.0: resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 detect-node: 2.1.0 js-sha3: 0.8.0 microseconds: 0.2.0 @@ -19888,7 +21106,7 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001418 + caniuse-lite: 1.0.30001146 electron-to-chromium: 1.4.276 dev: true @@ -20036,7 +21254,7 @@ packages: bluebird: 3.7.2 chownr: 1.1.4 figgy-pudding: 3.5.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 infer-owner: 1.0.4 lru-cache: 5.1.1 @@ -20058,7 +21276,7 @@ packages: '@npmcli/move-file': 1.1.2 chownr: 2.0.0 fs-minipass: 2.1.0 - glob: 7.2.0 + glob: 7.2.3 infer-owner: 1.0.4 lru-cache: 6.0.0 minipass: 3.1.6 @@ -21100,12 +22318,13 @@ packages: supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 16.2.0 + dev: true /config/3.3.3: resolution: {integrity: sha512-T3RmZQEAji5KYqUQpziWtyGJFli6Khz7h0rpxDwYNjSkr5ynyTWwO7WpfjHzTXclNCDfSWQRcwMb+NwxJesCKw==} engines: {node: '>= 6.0.0'} dependencies: - json5: 2.2.0 + json5: 2.2.3 dev: false /config/3.3.7: @@ -21244,13 +22463,28 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@4.9.2 + dev: true + + /copy-webpack-plugin/10.2.4_webpack@5.76.3: + resolution: {integrity: sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==} + engines: {node: '>= 12.20.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.2.11 + glob-parent: 6.0.2 + globby: 12.2.0 + normalize-path: 3.0.0 + schema-utils: 4.0.0 + serialize-javascript: 6.0.0 + webpack: 5.76.3 dev: true /core-js-compat/3.19.1: resolution: {integrity: sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==} dependencies: - browserslist: 4.21.4 + browserslist: 4.19.3 semver: 7.0.0 /core-js-compat/3.21.1: @@ -21258,22 +22492,17 @@ packages: dependencies: browserslist: 4.19.3 semver: 7.0.0 + dev: true /core-js-compat/3.25.5: resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==} dependencies: browserslist: 4.21.4 - /core-js-pure/3.19.1: - resolution: {integrity: sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==} - deprecated: core-js-pure@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js-pure. + /core-js-pure/3.29.1: + resolution: {integrity: sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg==} requiresBuild: true - /core-js-pure/3.29.0: - resolution: {integrity: sha512-v94gUjN5UTe1n0yN/opTihJ8QBWD2O8i19RfTZR7foONPWArnjB96QA/wk5ozu1mm6ja3udQCzOzwQXTxi3xOQ==} - requiresBuild: true - dev: true - /core-js/1.2.7: resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. @@ -21281,16 +22510,15 @@ packages: /core-js/2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. requiresBuild: true - dev: true /core-js/3.21.1: resolution: {integrity: sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==} requiresBuild: true - /core-js/3.25.5: - resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==} + /core-js/3.29.1: + resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==} requiresBuild: true /core-util-is/1.0.2: @@ -21566,13 +22794,13 @@ packages: peerDependencies: webpack: ^4.27.0 || ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.12 - loader-utils: 2.0.2 - postcss: 8.4.12 - postcss-modules-extract-imports: 3.0.0_postcss@8.4.12 - postcss-modules-local-by-default: 4.0.0_postcss@8.4.12 - postcss-modules-scope: 3.0.0_postcss@8.4.12 - postcss-modules-values: 4.0.0_postcss@8.4.12 + icss-utils: 5.1.0_postcss@8.4.21 + loader-utils: 2.0.4 + postcss: 8.4.21 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.21 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.21 + postcss-modules-scope: 3.0.0_postcss@8.4.21 + postcss-modules-values: 4.0.0_postcss@8.4.21 postcss-value-parser: 4.2.0 schema-utils: 3.1.1 semver: 7.3.8 @@ -21593,7 +22821,24 @@ packages: postcss-modules-values: 4.0.0_postcss@8.4.12 postcss-value-parser: 4.2.0 semver: 7.3.5 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@4.9.2 + dev: true + + /css-loader/6.7.3_webpack@5.76.3: + resolution: {integrity: sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.21 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.21 + postcss-modules-scope: 3.0.0_postcss@8.4.21 + postcss-modules-values: 4.0.0_postcss@8.4.21 + postcss-value-parser: 4.2.0 + semver: 7.3.8 + webpack: 5.76.3 dev: true /css-select-base-adapter/0.1.1: @@ -21769,7 +23014,7 @@ packages: postcss: ^8.2.15 dependencies: cssnano-preset-default: 5.2.12_postcss@8.4.12 - lilconfig: 2.0.4 + lilconfig: 2.0.5 postcss: 8.4.12 yaml: 1.10.2 dev: true @@ -21989,6 +23234,18 @@ packages: dependencies: ms: 2.1.3 + /debug/3.2.7_supports-color@5.5.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 5.5.0 + dev: true + /debug/4.1.1: resolution: {integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==} deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) @@ -22036,19 +23293,6 @@ packages: dependencies: ms: 2.1.2 - /debug/4.3.3_supports-color@9.2.2: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 9.2.2 - dev: true - /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -22072,6 +23316,19 @@ packages: ms: 2.1.2 supports-color: 8.1.1 + /debug/4.3.4_supports-color@9.2.2: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 9.2.2 + dev: true + /debuglog/1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} dev: true @@ -22430,7 +23687,7 @@ packages: /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 csstype: 3.1.1 /dom-scroll-into-view/1.2.1: @@ -22547,7 +23804,7 @@ packages: peerDependencies: react: '>=16.12.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 compute-scroll-into-view: 1.0.17 prop-types: 15.8.1 react: 17.0.2 @@ -22559,7 +23816,7 @@ packages: peerDependencies: react: '>=16.12.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 compute-scroll-into-view: 1.0.17 prop-types: 15.8.1 react: 17.0.2 @@ -22671,7 +23928,7 @@ packages: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/core': 10.3.1_react@17.0.2 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 @@ -22748,6 +24005,14 @@ packages: memory-fs: 0.5.0 tapable: 1.1.3 + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.9 + tapable: 2.2.1 + dev: true + /enhanced-resolve/5.9.2: resolution: {integrity: sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==} engines: {node: '>=10.13.0'} @@ -22760,7 +24025,6 @@ packages: engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.1 - dev: true /entities/1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} @@ -23082,7 +24346,7 @@ packages: debug: 4.3.3 eslint: 8.32.0 eslint-plugin-import: 2.25.4_4xxzfshi2bemfrxyrh2o66gegy - glob: 7.2.0 + glob: 7.2.3 is-glob: 4.0.3 resolve: 1.20.0 tsconfig-paths: 3.14.0 @@ -23132,7 +24396,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -23157,7 +24421,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm debug: 3.2.7 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 2.5.0_xygrkdz7akfjaillbmnvbogh5e @@ -23185,7 +24449,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.33.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 4.33.0_et5x32uxl7z5ldub3ye5rhlyqm debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -23203,7 +24467,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 @@ -23234,7 +24498,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 4.33.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 4.33.0_et5x32uxl7z5ldub3ye5rhlyqm array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 @@ -23245,7 +24509,7 @@ packages: has: 1.0.3 is-core-module: 2.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 resolve: 1.20.0 tsconfig-paths: 3.14.0 @@ -23265,7 +24529,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/parser': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 @@ -23276,7 +24540,7 @@ packages: has: 1.0.3 is-core-module: 2.8.0 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 resolve: 1.20.0 tsconfig-paths: 3.14.0 @@ -23285,33 +24549,33 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest/23.20.0_3rubbgt5ekhqrcgx4uwls3neim: + /eslint-plugin-jest/23.20.0_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==} engines: {node: '>=8'} peerDependencies: eslint: '>=5' dependencies: - '@typescript-eslint/experimental-utils': 2.34.0_3rubbgt5ekhqrcgx4uwls3neim - eslint: 7.32.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /eslint-plugin-jest/23.20.0_yygwinqv3a2io74xmwofqb7uka: - resolution: {integrity: sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==} - engines: {node: '>=8'} - peerDependencies: - eslint: '>=5' - dependencies: - '@typescript-eslint/experimental-utils': 2.34.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/experimental-utils': 2.34.0_et5x32uxl7z5ldub3ye5rhlyqm eslint: 8.32.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jest/24.7.0_pycg7frr72nxxf2dj537ozbyqq: + /eslint-plugin-jest/23.20.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==} + engines: {node: '>=8'} + peerDependencies: + eslint: '>=5' + dependencies: + '@typescript-eslint/experimental-utils': 2.34.0_jofidmxrjzhj7l6vknpw5ecvfe + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest/24.7.0_bfrijen5mqdzfbbsgrvmb4p2hy: resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} engines: {node: '>=10'} peerDependencies: @@ -23321,15 +24585,15 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 4.33.0_k4l66av2tbo6kxzw52jzgbfzii - '@typescript-eslint/experimental-utils': 4.33.0_3rubbgt5ekhqrcgx4uwls3neim + '@typescript-eslint/eslint-plugin': 4.33.0_s2qqtxhzmb7vugvfoyripfgp7i + '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe eslint: 7.32.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jest/25.7.0_klkfojxgfcgqwugydjzhwslcdy: + /eslint-plugin-jest/25.7.0_fn5ksat3toxexlkdgvm3hm2yl4: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -23342,16 +24606,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/experimental-utils': 5.43.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/experimental-utils': 5.43.0_et5x32uxl7z5ldub3ye5rhlyqm eslint: 8.32.0 - jest: 27.3.1 + jest: 27.5.1 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jest/27.2.1_b3vzfonseicqu2u4eqopdzaqsm: + /eslint-plugin-jest/27.2.1_fn5ksat3toxexlkdgvm3hm2yl4: resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -23364,8 +24628,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.0_odmkqudqazj6zql7bilcklpxhm - '@typescript-eslint/utils': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/eslint-plugin': 5.54.0_kfyz2y6ibx5q22pdsikxez2g7q + '@typescript-eslint/utils': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm eslint: 8.32.0 jest: 27.5.1 transitivePeerDependencies: @@ -23473,7 +24737,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 aria-query: 4.2.2 array-includes: 3.1.4 ast-types-flow: 0.0.7 @@ -23494,7 +24758,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 aria-query: 4.2.2 array-includes: 3.1.4 ast-types-flow: 0.0.7 @@ -23539,7 +24803,7 @@ packages: optional: true dependencies: eslint: 8.32.0 - eslint-plugin-jest: 25.7.0_klkfojxgfcgqwugydjzhwslcdy + eslint-plugin-jest: 25.7.0_fn5ksat3toxexlkdgvm3hm2yl4 dev: true /eslint-plugin-prettier/3.4.1_7r3blfeknbmsg4nj2vdrt55nra: @@ -23691,13 +24955,13 @@ packages: semver: 6.3.0 string.prototype.matchall: 4.0.6 - /eslint-plugin-testing-library/5.10.2_yygwinqv3a2io74xmwofqb7uka: + /eslint-plugin-testing-library/5.10.2_et5x32uxl7z5ldub3ye5rhlyqm: resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.0_yygwinqv3a2io74xmwofqb7uka + '@typescript-eslint/utils': 5.54.0_et5x32uxl7z5ldub3ye5rhlyqm eslint: 8.32.0 transitivePeerDependencies: - supports-color @@ -23798,7 +25062,7 @@ packages: esutils: 2.0.3 file-entry-cache: 5.0.1 functional-red-black-tree: 1.0.1 - glob: 7.2.0 + glob: 7.2.3 globals: 11.12.0 ignore: 4.0.6 import-fresh: 3.3.0 @@ -24036,8 +25300,8 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} dependencies: - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 c8: 7.11.0 transitivePeerDependencies: - supports-color @@ -24450,7 +25714,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 /fast-glob/3.2.7: resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} @@ -24460,7 +25724,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 dev: true /fast-json-parse/1.0.3: @@ -24632,7 +25896,7 @@ packages: /fileset/2.0.3: resolution: {integrity: sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==} dependencies: - glob: 7.2.0 + glob: 7.2.3 minimatch: 3.1.2 dev: true @@ -24768,13 +26032,13 @@ packages: /find-yarn-workspace-root/2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} dependencies: - micromatch: 4.0.4 + micromatch: 4.0.5 dev: true /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: - micromatch: 4.0.4 + micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true @@ -24960,7 +26224,34 @@ packages: /forever-agent/0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - /fork-ts-checker-webpack-plugin/4.1.6_62fz4gragfs3w5a4iegi53ru5i: + /fork-ts-checker-webpack-plugin/4.1.6_evijigonbo4skk2vlqtwtdqibu: + resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 2.4.2 + micromatch: 3.1.10 + minimatch: 3.1.2 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 4.46.0 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /fork-ts-checker-webpack-plugin/4.1.6_rkend4bmswxcu6hnzdf4d5pmre: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} peerDependencies: @@ -24981,72 +26272,14 @@ packages: minimatch: 3.1.2 semver: 5.7.1 tapable: 1.1.3 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0_webpack-cli@3.3.12 worker-rpc: 0.1.1 transitivePeerDependencies: - supports-color dev: true - /fork-ts-checker-webpack-plugin/4.1.6_lasgyenclx45ngbljrbo537mpe: - resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} - engines: {node: '>=6.11.5', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.18.6 - chalk: 2.4.2 - micromatch: 3.1.10 - minimatch: 3.1.2 - semver: 5.7.1 - tapable: 1.1.3 - typescript: 4.8.4 - webpack: 4.46.0 - worker-rpc: 0.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /fork-ts-checker-webpack-plugin/6.5.0_27qmdvvfdw5s3nqwnln6yerdsa: - resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.18.6 - '@types/json-schema': 7.0.9 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.3.0 - fs-extra: 9.1.0 - glob: 7.2.0 - memfs: 3.3.0 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.3.8 - tapable: 1.1.3 - typescript: 4.8.4 - webpack: 5.70.0 - dev: true - - /fork-ts-checker-webpack-plugin/6.5.0_5spy6wmzwqixc3k64gvf5wblh4: + /fork-ts-checker-webpack-plugin/6.5.0_5ntqge7sf3ftfky7dw52icyvpy: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -25068,17 +26301,79 @@ packages: deepmerge: 4.2.2 eslint: 8.32.0 fs-extra: 9.1.0 - glob: 7.2.0 + glob: 7.2.3 memfs: 3.3.0 minimatch: 3.1.2 schema-utils: 2.7.0 semver: 7.3.5 tapable: 1.1.3 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /fork-ts-checker-webpack-plugin/6.5.0_62fz4gragfs3w5a4iegi53ru5i: + /fork-ts-checker-webpack-plugin/6.5.0_7tuhpze3ldk5r64y6dj6kgq4dy: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.3.0 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.8 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.70.0 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.0_evijigonbo4skk2vlqtwtdqibu: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.3.0 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.8 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 4.46.0 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.0_rkend4bmswxcu6hnzdf4d5pmre: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -25100,47 +26395,16 @@ packages: deepmerge: 4.3.0 eslint: 8.32.0 fs-extra: 9.1.0 - glob: 7.2.0 + glob: 7.2.3 memfs: 3.3.0 minimatch: 3.1.2 schema-utils: 2.7.0 semver: 7.3.8 tapable: 1.1.3 - typescript: 4.8.4 + typescript: 4.9.5 webpack: 4.46.0_webpack-cli@3.3.12 dev: true - /fork-ts-checker-webpack-plugin/6.5.0_lasgyenclx45ngbljrbo537mpe: - resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.18.6 - '@types/json-schema': 7.0.9 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.3.0 - fs-extra: 9.1.0 - glob: 7.2.0 - memfs: 3.3.0 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.3.8 - tapable: 1.1.3 - typescript: 4.8.4 - webpack: 4.46.0 - dev: true - /form-data/2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} @@ -25580,6 +26844,16 @@ packages: glob: 7.2.0 dev: true + /glob-promise/3.4.0_glob@7.2.3: + resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} + engines: {node: '>=4'} + peerDependencies: + glob: '*' + dependencies: + '@types/glob': 7.2.0 + glob: 7.2.3 + dev: true + /glob-to-regexp/0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} dev: true @@ -25629,6 +26903,16 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + /glob/8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} @@ -25753,7 +27037,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.11 - glob: 7.2.0 + glob: 7.2.3 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 @@ -25799,7 +27083,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: array-union: 1.0.2 - glob: 7.2.0 + glob: 7.2.3 object-assign: 4.1.1 pify: 2.3.0 pinkie-promise: 2.0.1 @@ -25813,7 +27097,7 @@ packages: array-union: 1.0.2 dir-glob: 2.2.2 fast-glob: 2.2.7 - glob: 7.2.0 + glob: 7.2.3 ignore: 4.0.6 pify: 4.0.1 slash: 2.0.0 @@ -26420,13 +27704,13 @@ packages: /history/5.0.0: resolution: {integrity: sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: true /history/5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /hjson/1.8.4: resolution: {integrity: sha1-C8j/sCGY0hjEm1iZGxH2BIUBHTY=} @@ -26684,7 +27968,7 @@ packages: http-proxy: 1.18.1_debug@4.3.3 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.4 + micromatch: 4.0.5 transitivePeerDependencies: - debug dev: true @@ -26810,7 +28094,7 @@ packages: peerDependencies: react: ^16.8 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 3.25.3_react@17.0.2 debug: 4.3.4 @@ -26832,7 +28116,7 @@ packages: react: ^17.0.2 dependencies: '@automattic/interpolate-components': 1.2.1_pxzommwrsowkd4kgag6q3sluym - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@tannin/sprintf': 1.2.0 '@wordpress/compose': 5.4.1_react@17.0.2 debug: 4.3.4 @@ -26875,6 +28159,15 @@ packages: postcss: 8.4.12 dev: true + /icss-utils/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: true + /ieee754/1.1.13: resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} dev: true @@ -26886,6 +28179,10 @@ packages: resolution: {integrity: sha1-xg7taebY/bazEEofy8ocGS3FtQE=} dev: true + /ignore-by-default/1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: true + /ignore-emit-webpack-plugin/2.0.6: resolution: {integrity: sha512-/zC18RWCC2wz4ZwnS4UoujGWzvSKy28DLjtE+jrGBOXej6YdmityhBDzE8E0NlktEqi4tgdNbydX8B6G4haHSQ==} dev: true @@ -27067,7 +28364,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.5 + rxjs: 7.8.0 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -27788,11 +29085,11 @@ packages: resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} engines: {node: '>=6'} dependencies: - '@babel/generator': 7.19.3 - '@babel/parser': 7.19.3 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/generator': 7.21.3 + '@babel/parser': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 istanbul-lib-coverage: 2.0.5 semver: 6.3.0 transitivePeerDependencies: @@ -27803,7 +29100,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -27815,8 +29112,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.17.8 - '@babel/parser': 7.19.3 + '@babel/core': 7.21.3 + '@babel/parser': 7.21.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -27991,12 +29288,12 @@ packages: resolution: {integrity: sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/traverse': 7.19.3 + '@babel/traverse': 7.21.3 '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 '@types/babel__traverse': 7.14.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -28027,7 +29324,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -28122,36 +29419,6 @@ packages: - utf-8-validate dev: true - /jest-cli/27.3.1: - resolution: {integrity: sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.9 - import-local: 3.0.3 - jest-config: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /jest-cli/27.5.1: resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -28185,12 +29452,12 @@ packages: resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==} engines: {node: '>= 6'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/test-sequencer': 24.9.0 '@jest/types': 24.9.0 - babel-jest: 24.9.0_@babel+core@7.17.8 + babel-jest: 24.9.0_@babel+core@7.21.3 chalk: 2.4.2 - glob: 7.2.0 + glob: 7.2.3 jest-environment-jsdom: 24.9.0 jest-environment-node: 24.9.0 jest-get-type: 24.9.0 @@ -28212,13 +29479,13 @@ packages: resolution: {integrity: sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==} engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/test-sequencer': 25.5.4 '@jest/types': 25.5.0 - babel-jest: 25.5.1_@babel+core@7.17.8 + babel-jest: 25.5.1_@babel+core@7.21.3 chalk: 3.0.0 deepmerge: 4.3.0 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-environment-jsdom: 25.5.0 jest-environment-node: 25.5.0 @@ -28228,7 +29495,7 @@ packages: jest-resolve: 25.5.1 jest-util: 25.5.0 jest-validate: 25.5.0 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 25.5.0 realpath-native: 2.0.0 transitivePeerDependencies: @@ -28247,13 +29514,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/test-sequencer': 26.6.3 '@jest/types': 26.6.2 - babel-jest: 26.6.3_@babel+core@7.17.8 + babel-jest: 26.6.3_@babel+core@7.21.3 chalk: 4.1.2 deepmerge: 4.3.0 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-environment-jsdom: 26.6.2 jest-environment-node: 26.6.2 @@ -28263,7 +29530,7 @@ packages: jest-resolve: 26.6.2 jest-util: 26.6.2 jest-validate: 26.6.2 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 26.6.2 transitivePeerDependencies: - bufferutil @@ -28281,14 +29548,14 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.17.8 + babel-jest: 27.5.1_@babel+core@7.21.3 chalk: 4.1.2 ci-info: 3.2.0 deepmerge: 4.3.0 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-circus: 27.5.1 jest-environment-jsdom: 27.5.1 @@ -28300,7 +29567,7 @@ packages: jest-runner: 27.5.1 jest-util: 27.5.1 jest-validate: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 parse-json: 5.2.0 pretty-format: 27.5.1 slash: 3.0.0 @@ -28488,7 +29755,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -28506,7 +29773,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -28548,7 +29815,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 26.6.2 jest-util: 26.6.2 dev: true @@ -28560,7 +29827,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -28639,7 +29906,7 @@ packages: jest-serializer: 25.5.0 jest-util: 25.5.0 jest-worker: 25.5.0 - micromatch: 4.0.4 + micromatch: 4.0.5 sane: 4.1.0 walker: 1.0.8 which: 2.0.2 @@ -28655,7 +29922,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.18 + '@types/node': 16.18.18 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.9 @@ -28663,7 +29930,7 @@ packages: jest-serializer: 26.6.2 jest-util: 26.6.2 jest-worker: 26.6.2 - micromatch: 4.0.4 + micromatch: 4.0.5 sane: 4.1.0 walker: 1.0.8 optionalDependencies: @@ -28677,7 +29944,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.18 + '@types/node': 16.18.18 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.9 @@ -28685,7 +29952,7 @@ packages: jest-serializer: 27.5.1 jest-util: 27.5.1 jest-worker: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 @@ -28694,7 +29961,7 @@ packages: resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} engines: {node: '>= 6'} dependencies: - '@babel/traverse': 7.19.3 + '@babel/traverse': 7.21.3 '@jest/environment': 24.9.0 '@jest/test-result': 24.9.0 '@jest/types': 24.9.0 @@ -28718,7 +29985,7 @@ packages: resolution: {integrity: sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==} engines: {node: '>= 8.3'} dependencies: - '@babel/traverse': 7.19.3 + '@babel/traverse': 7.21.3 '@jest/environment': 25.5.0 '@jest/source-map': 25.5.0 '@jest/test-result': 25.5.0 @@ -28746,12 +30013,12 @@ packages: resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/traverse': 7.19.3 + '@babel/traverse': 7.21.3 '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -28780,7 +30047,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -28890,7 +30157,7 @@ packages: '@types/stack-utils': 1.0.1 chalk: 3.0.0 graceful-fs: 4.2.9 - micromatch: 4.0.4 + micromatch: 4.0.5 slash: 3.0.0 stack-utils: 1.0.5 dev: true @@ -28904,7 +30171,7 @@ packages: '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.9 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 26.6.2 slash: 3.0.0 stack-utils: 2.0.5 @@ -28919,20 +30186,20 @@ packages: '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.9 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 27.5.1 slash: 3.0.0 stack-utils: 2.0.5 - /jest-mock-extended/1.0.18_l3u6ka6x73lqye3ea4q6yelf2e: + /jest-mock-extended/1.0.18_cnngzrja2umb46xxazlucyx2qu: resolution: {integrity: sha512-qf1n7lIa2dTxxPIBr+FlXrbj3hnV1sG9DPZsrr2H/8W+Jw0wt6OmeOQsPcjRuW8EXIECC9pDXsSIfEdn+HP7JQ==} peerDependencies: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 typescript: ^3.0.0 || ^4.0.0 dependencies: jest: 27.5.1 - ts-essentials: 7.0.3_typescript@4.8.4 - typescript: 4.8.4 + ts-essentials: 7.0.3_typescript@4.9.5 + typescript: 4.9.5 dev: true /jest-mock/24.9.0: @@ -28954,7 +30221,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 dev: true /jest-mock/27.5.1: @@ -28962,7 +30229,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 /jest-pnp-resolver/1.2.2_jest-resolve@24.9.0: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} @@ -29228,7 +30495,7 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -29261,7 +30528,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.9 @@ -29296,7 +30563,7 @@ packages: '@types/yargs': 13.0.12 chalk: 2.4.2 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-config: 24.9.0 jest-haste-map: 24.9.0 @@ -29333,7 +30600,7 @@ packages: chalk: 3.0.0 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-config: 25.5.4 jest-haste-map: 25.5.1 @@ -29373,7 +30640,7 @@ packages: cjs-module-lexer: 0.6.0 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-config: 26.6.3 jest-haste-map: 26.6.2 @@ -29410,7 +30677,7 @@ packages: cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 execa: 5.1.1 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-haste-map: 27.5.1 jest-message-util: 27.5.1 @@ -29440,21 +30707,21 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 graceful-fs: 4.2.9 /jest-serializer/27.5.1: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 graceful-fs: 4.2.9 /jest-snapshot/24.9.0: resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} engines: {node: '>= 6'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 '@jest/types': 24.9.0 chalk: 2.4.2 expect: 24.9.0 @@ -29475,7 +30742,7 @@ packages: resolution: {integrity: sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==} engines: {node: '>= 8.3'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 '@jest/types': 25.5.0 '@types/prettier': 1.19.1 chalk: 3.0.0 @@ -29496,7 +30763,7 @@ packages: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.21.3 '@jest/types': 26.6.2 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.4.2 @@ -29520,16 +30787,16 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.17.8 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.21.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__traverse': 7.14.2 '@types/prettier': 2.4.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.3 chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.9 @@ -29581,18 +30848,18 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 graceful-fs: 4.2.9 is-ci: 2.0.0 - micromatch: 4.0.4 + micromatch: 4.0.5 /jest-util/27.5.1: resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 chalk: 4.1.2 ci-info: 3.2.0 graceful-fs: 4.2.9 @@ -29677,7 +30944,7 @@ packages: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 16.18.18 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -29690,7 +30957,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 16.18.18 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -29716,7 +30983,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 merge-stream: 2.0.0 supports-color: 7.2.0 @@ -29724,7 +30991,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 16.18.18 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -29772,27 +31039,6 @@ packages: - utf-8-validate dev: true - /jest/27.3.1: - resolution: {integrity: sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.3.1 - import-local: 3.0.3 - jest-cli: 27.3.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /jest/27.5.1: resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29919,7 +31165,7 @@ packages: transitivePeerDependencies: - supports-color - /jscodeshift/0.13.1_@babel+preset-env@7.19.3: + /jscodeshift/0.13.1_@babel+preset-env@7.20.2: resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} hasBin: true peerDependencies: @@ -29931,7 +31177,7 @@ packages: '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 '@babel/preset-flow': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@babel/register': 7.18.9_@babel+core@7.17.8 @@ -30154,6 +31400,11 @@ packages: dependencies: minimist: 1.2.5 + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + /jsonc-parser/2.2.1: resolution: {integrity: sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==} dev: true @@ -30284,6 +31535,13 @@ packages: package-json: 4.0.1 dev: true + /launch-editor/2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.7.3 + dev: true + /lazy-cache/0.2.7: resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} engines: {node: '>=0.10.0'} @@ -30296,9 +31554,9 @@ packages: resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 app-root-dir: 1.0.2 - core-js: 3.25.5 + core-js: 3.29.1 dotenv: 8.6.0 dotenv-expand: 5.1.0 dev: true @@ -30349,8 +31607,8 @@ packages: - supports-color dev: true - /lilconfig/2.0.4: - resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + /lilconfig/2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} engines: {node: '>=10'} dev: true @@ -30375,21 +31633,21 @@ packages: uc.micro: 1.0.6 dev: true - /lint-staged/12.3.7: - resolution: {integrity: sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==} + /lint-staged/12.5.0: + resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dependencies: cli-truncate: 3.1.0 colorette: 2.0.16 - commander: 8.3.0 - debug: 4.3.3_supports-color@9.2.2 + commander: 9.4.0 + debug: 4.3.4_supports-color@9.2.2 execa: 5.1.1 - lilconfig: 2.0.4 + lilconfig: 2.0.5 listr2: 4.0.5 - micromatch: 4.0.4 + micromatch: 4.0.5 normalize-path: 3.0.0 - object-inspect: 1.12.0 + object-inspect: 1.12.2 pidtree: 0.5.0 string-argv: 0.3.1 supports-color: 9.2.2 @@ -30417,7 +31675,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.5 + rxjs: 7.8.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -30501,7 +31759,7 @@ packages: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.0 + json5: 2.2.3 dev: true /loader-utils/2.0.2: @@ -30510,7 +31768,7 @@ packages: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.0 + json5: 2.2.3 /loader-utils/2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} @@ -30518,8 +31776,7 @@ packages: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.0 - dev: true + json5: 2.2.3 /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -30772,7 +32029,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -31017,7 +32273,7 @@ packages: /match-sorter/6.3.1: resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 remove-accents: 0.4.2 dev: false @@ -31296,7 +32552,7 @@ packages: /metro-babel-transformer/0.72.1: resolution: {integrity: sha512-VK7A9gepnhrKC0DMoxtPjYYHjkkfNwzLMYJgeL6Il6IaX/K/VHTILSEqgpxfNDos2jrXazuR5+rXDLE/RCzqmw==} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 hermes-parser: 0.8.0 metro-source-map: 0.72.1 nullthrows: 1.1.1 @@ -31306,7 +32562,7 @@ packages: /metro-babel-transformer/0.72.2: resolution: {integrity: sha512-3Bxk/MoXHn/ysmsH7ov6inDHrSWz5eowYRGzilOSSXe9y3DJ/ceTHfT+DWsPr9IgTJLQfKVN/F0pZ+1Ndqh52A==} dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 hermes-parser: 0.8.0 metro-source-map: 0.72.2 nullthrows: 1.1.1 @@ -31356,7 +32612,7 @@ packages: jest-serializer: 27.5.1 jest-util: 27.5.1 jest-worker: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 @@ -31390,11 +32646,11 @@ packages: '@babel/core': '*' dependencies: '@babel/core': 7.12.9 - '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.12.9 '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.9 '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.12.9 '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.12.9 '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.9 '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 @@ -31404,17 +32660,17 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.12.9 '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.12.9 '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.12.9 '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.9 '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.12.9 '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.9 '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.9 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.12.9 '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.12.9 '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.12.9 '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.12.9 '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.12.9 @@ -31426,54 +32682,54 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.9 '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.12.9 '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.9 - '@babel/template': 7.18.10 + '@babel/template': 7.20.7 react-refresh: 0.4.3 transitivePeerDependencies: - supports-color - /metro-react-native-babel-preset/0.72.2_@babel+core@7.17.8: + /metro-react-native-babel-preset/0.72.2_@babel+core@7.21.3: resolution: {integrity: sha512-OMp77TUUZAoiuUv5uKNc08AnJNQxD28k92eQvo8tPcA8Wx6OZlEUvL7M7SFkef2mEYJ0vnrRjOamSnbBuq/+1w==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.17.8 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 - '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 - '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.17.8 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.17.8 - '@babel/template': 7.18.10 + '@babel/core': 7.21.3 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-export-default-from': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.21.3 + '@babel/plugin-transform-parameters': 7.21.3_@babel+core@7.21.3 + '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.21.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.3 + '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.21.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.3 + '@babel/template': 7.20.7 react-refresh: 0.4.3 transitivePeerDependencies: - supports-color @@ -31501,20 +32757,20 @@ packages: /metro-runtime/0.72.1: resolution: {integrity: sha512-CO+fvJKYHKuR2vo7kjsegQ2oF3FMwa4YhnUInQ+xPVxWoy8DbOpmruKBoTsQVgHwyIziXzvJa+mze/6CFvT+3A==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 react-refresh: 0.4.3 /metro-runtime/0.72.2: resolution: {integrity: sha512-jIHH6ILSWJtINHA0+KgnH1T5RO5mkf46sQahgC+GYjZjGoshs8+tBdjviYD/xy5s4olCJ1hmycV+XvauQmJdkQ==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 react-refresh: 0.4.3 /metro-source-map/0.72.1: resolution: {integrity: sha512-77TZuf10Ru+USo97HwDT8UceSzOGBZB8EYTObOsR0n1sjQHjvKsMflLA9Pco13o9NsIYAG6c6P/0vIpiHKqaKA==} dependencies: - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 invariant: 2.2.4 metro-symbolicate: 0.72.1 nullthrows: 1.1.1 @@ -31527,8 +32783,8 @@ packages: /metro-source-map/0.72.2: resolution: {integrity: sha512-dqYK8DZ4NzGkhik0IkKRBLuPplXqF6GoKrFQ/XMw0FYGy3+dFJ9nIDxsCyg3GcjCt6Mg8FEqGrXlpMG7MrtC9Q==} dependencies: - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 invariant: 2.2.4 metro-symbolicate: 0.72.2 nullthrows: 1.1.1 @@ -31569,10 +32825,10 @@ packages: /metro-transform-plugins/0.72.2: resolution: {integrity: sha512-f2Zt6ti156TWFrnCRg7vxBIHBJcERBX8nwKmRKGFCbU+rk4YOxwONY4Y0Gn9Kocfu313P1xNqWYH5rCqvEWMaQ==} dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -31580,11 +32836,11 @@ packages: /metro-transform-worker/0.72.2: resolution: {integrity: sha512-z5OOnEO3NV6PgI8ORIBvJ5m+u9THFpy+6WIg/MUjP9k1oqasWaP1Rfhv7K/a+MD6uho1rgXj6nwWDqybsqHY/w==} dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 - babel-preset-fbjs: 3.4.0_@babel+core@7.17.8 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 + babel-preset-fbjs: 3.4.0_@babel+core@7.21.3 metro: 0.72.2 metro-babel-transformer: 0.72.2 metro-cache: 0.72.2 @@ -31604,12 +32860,12 @@ packages: hasBin: true dependencies: '@babel/code-frame': 7.18.6 - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/parser': 7.19.3 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/parser': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 absolute-path: 0.0.0 accepts: 1.3.8 async: 3.2.4 @@ -31635,7 +32891,7 @@ packages: metro-hermes-compiler: 0.72.2 metro-inspector-proxy: 0.72.2 metro-minify-uglify: 0.72.2 - metro-react-native-babel-preset: 0.72.2_@babel+core@7.17.8 + metro-react-native-babel-preset: 0.72.2_@babel+core@7.21.3 metro-resolver: 0.72.2 metro-runtime: 0.72.2 metro-source-map: 0.72.2 @@ -31719,6 +32975,13 @@ packages: braces: 3.0.2 picomatch: 2.3.0 + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + /micromodal/0.4.10: resolution: {integrity: sha512-BUrEnzMPFBwK8nOE4xUDYHLrlGlLULQVjpja99tpJQPSUEWgw3kTLp1n1qv0HmKU29AiHE7Y7sMLiRziDK4ghQ==} engines: {node: '>=10'} @@ -31839,7 +33102,6 @@ packages: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -32047,7 +33309,7 @@ packages: /moment-timezone/0.5.34: resolution: {integrity: sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==} dependencies: - moment: 2.29.1 + moment: 2.29.4 /moment-timezone/0.5.41: resolution: {integrity: sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==} @@ -32142,6 +33404,12 @@ packages: resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true /nanomatch/1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} @@ -32294,7 +33562,7 @@ packages: hasBin: true dependencies: env-paths: 2.2.1 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 make-fetch-happen: 9.1.0 nopt: 5.0.0 @@ -32405,6 +33673,30 @@ packages: is: 3.3.0 dev: false + /nodemon/2.0.21: + resolution: {integrity: sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==} + engines: {node: '>=8.10.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 3.2.7_supports-color@5.5.0 + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 5.7.1 + simple-update-notifier: 1.1.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + dev: true + + /nopt/1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + /nopt/3.0.6: resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} hasBin: true @@ -32545,7 +33837,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 ignore-walk: 4.0.1 npm-bundled: 1.1.2 npm-normalize-package-bin: 1.0.1 @@ -32663,10 +33955,6 @@ packages: resolution: {integrity: sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g=} dev: true - /object-inspect/1.12.0: - resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} - dev: true - /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -33471,7 +34759,7 @@ packages: /photon/4.0.0: resolution: {integrity: sha512-RD3buB17jW9B+OOPjIqv/cE9imCyR+WJ4ALWtb1Q1mVg8OfYnHAyvdVTxa/+bZFNI2FWaQBKry3i1mItmW3H3A==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 crc32: 0.2.2 debug: 4.3.4 seed-random: 2.2.0 @@ -33492,6 +34780,10 @@ packages: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + /pidtree/0.5.0: resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} engines: {node: '>=0.10'} @@ -33562,11 +34854,11 @@ packages: /pn/1.1.0: resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - /pnp-webpack-plugin/1.6.4_typescript@4.8.4: + /pnp-webpack-plugin/1.6.4_typescript@4.9.5: resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} engines: {node: '>=6'} dependencies: - ts-pnp: 1.2.0_typescript@4.8.4 + ts-pnp: 1.2.0_typescript@4.9.5 transitivePeerDependencies: - typescript dev: true @@ -33575,7 +34867,7 @@ packages: resolution: {integrity: sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==} engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dev: true /popmotion/11.0.3: @@ -33796,7 +35088,22 @@ packages: webpack: 4.46.0 dev: true - /postcss-loader/4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4: + /postcss-loader/4.3.0_te76w36hqjt7wyjpohjlseuh2q: + resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cosmiconfig: 7.0.1 + klona: 2.0.5 + loader-utils: 2.0.4 + postcss: 8.4.21 + schema-utils: 3.1.1 + semver: 7.3.8 + webpack: 5.70.0_webpack-cli@3.3.12 + + /postcss-loader/4.3.0_twwyhqqim6liv4fz2ggv7g4m5a: resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -33806,10 +35113,27 @@ packages: cosmiconfig: 7.0.1 klona: 2.0.5 loader-utils: 2.0.2 + postcss: 8.4.21 + schema-utils: 3.1.1 + semver: 7.3.8 + webpack: 5.76.3 + dev: true + + /postcss-loader/4.3.0_wn4p5kzkgq2ohl66pfawxjf2x4: + resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cosmiconfig: 7.0.1 + klona: 2.0.5 + loader-utils: 2.0.4 postcss: 8.4.12 schema-utils: 3.1.1 semver: 7.3.8 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@3.3.12 + dev: true /postcss-loader/6.2.1_wn4p5kzkgq2ohl66pfawxjf2x4: resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} @@ -33972,6 +35296,15 @@ packages: postcss: 8.4.12 dev: true + /postcss-modules-extract-imports/3.0.0_postcss@8.4.21: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: true + /postcss-modules-local-by-default/3.0.3: resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} engines: {node: '>= 6'} @@ -33993,6 +35326,18 @@ packages: postcss-value-parser: 4.2.0 dev: true + /postcss-modules-local-by-default/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 + dev: true + /postcss-modules-scope/2.2.0: resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} engines: {node: '>= 6'} @@ -34010,6 +35355,16 @@ packages: postcss-selector-parser: 6.0.9 dev: true + /postcss-modules-scope/3.0.0_postcss@8.4.21: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.9 + dev: true + /postcss-modules-values/3.0.0: resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} dependencies: @@ -34026,6 +35381,16 @@ packages: postcss: 8.4.12 dev: true + /postcss-modules-values/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + dev: true + /postcss-normalize-charset/4.0.1: resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} engines: {node: '>=6.9.0'} @@ -34212,7 +35577,7 @@ packages: resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} engines: {node: '>=6.9.0'} dependencies: - browserslist: 4.21.4 + browserslist: 4.19.3 caniuse-api: 3.0.0 has: 1.0.3 postcss: 7.0.39 @@ -34424,6 +35789,15 @@ packages: nanoid: 3.3.1 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true + + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 /postman-collection/4.1.5: resolution: {integrity: sha512-BY3NfP7EYExZG5ER9P82r0ZRc17z88WZAzn121EpWC8FM3HYtFwWJpXOsZk+2MKFn3agCq4JPRhnWw3G6XBXgw==} @@ -34710,6 +36084,10 @@ packages: /psl/1.8.0: resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + /pstree.remy/1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: true + /public-encrypt/4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} dependencies: @@ -34791,7 +36169,7 @@ packages: - utf-8-validate dev: true - /puppeteer-core/19.7.3_typescript@4.8.4: + /puppeteer-core/19.7.3_typescript@4.9.5: resolution: {integrity: sha512-9Q5HahsstfoTnllcpNkxNu2z9J7V0Si5Mr5q90K6XSXwW1P8iqe8q3HzWViVuBuEYTSMZ2LaXXzTEYeoCzLEWg==} engines: {node: '>=14.14.0'} peerDependencies: @@ -34808,7 +36186,7 @@ packages: https-proxy-agent: 5.0.1 proxy-from-env: 1.1.0 tar-fs: 2.1.1 - typescript: 4.8.4 + typescript: 4.9.5 unbzip2-stream: 1.4.3 ws: 8.12.1 transitivePeerDependencies: @@ -34874,7 +36252,7 @@ packages: execa: 0.10.0 fs-extra: 6.0.1 get-stream: 5.2.0 - glob: 7.2.0 + glob: 7.2.3 globby: 10.0.2 http-call: 5.3.0 load-json-file: 6.2.0 @@ -35125,33 +36503,6 @@ packages: - react-with-direction dev: false - /react-dates/17.2.0_doem77jvh4k7pyuvpbnkip467u: - resolution: {integrity: sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==} - peerDependencies: - moment: ^2.18.1 - react: ^0.14 || ^15.5.4 || ^16.1.1 - react-dom: ^0.14 || ^15.5.4 || ^16.1.1 - dependencies: - airbnb-prop-types: 2.16.0_react@17.0.2 - consolidated-events: 2.0.2 - is-touch-device: 1.0.1 - lodash: 4.17.21 - moment: 2.29.1 - object.assign: 4.1.4 - object.values: 1.1.5 - prop-types: 15.8.1 - react: 17.0.2 - react-addons-shallow-compare: 15.6.3 - react-dom: 17.0.2_react@17.0.2 - react-moment-proptypes: 1.8.1_moment@2.29.1 - react-outside-click-handler: 1.3.0_sfoxds7t5ydpegc3knd667wn6m - react-portal: 4.2.1_sfoxds7t5ydpegc3knd667wn6m - react-with-styles: 3.2.3_f6ta4w4ch5ogxra4gx65xzrqki - react-with-styles-interface-css: 4.0.3_react-with-styles@3.2.3 - transitivePeerDependencies: - - react-with-direction - dev: false - /react-dates/17.2.0_mbqv3i57zshgl3mhyvv367ttdu: resolution: {integrity: sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==} peerDependencies: @@ -35209,7 +36560,7 @@ packages: react-with-styles-interface-css: 6.0.0_u5gvwsivijvqc4cln26hqg7igq dev: false - /react-dates/21.8.0_nquzpvbbca3w4vywjbffgfreli: + /react-dates/21.8.0_mvmv5ggfjdn6m4qx5h4gchay5i: resolution: {integrity: sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==} peerDependencies: '@babel/runtime': ^7.0.0 @@ -35218,14 +36569,14 @@ packages: react-dom: ^0.14 || ^15.5.4 || ^16.1.1 react-with-direction: ^1.3.1 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 airbnb-prop-types: 2.16.0_react@17.0.2 consolidated-events: 2.0.2 enzyme-shallow-equal: 1.0.4 is-touch-device: 1.0.1 lodash: 4.17.21 moment: 2.29.4 - object.assign: 4.1.2 + object.assign: 4.1.4 object.values: 1.1.5 prop-types: 15.8.1 raf: 3.4.1 @@ -35235,8 +36586,8 @@ packages: react-outside-click-handler: 1.3.0_sfoxds7t5ydpegc3knd667wn6m react-portal: 4.2.1_sfoxds7t5ydpegc3knd667wn6m react-with-direction: 1.4.0_sfoxds7t5ydpegc3knd667wn6m - react-with-styles: 4.2.0_tzgwoaxjvs23ve2qhnwxwqxt3e - react-with-styles-interface-css: 6.0.0_sjrqpgd5uboanyy2xkv2xcu6vm + react-with-styles: 4.2.0_ijumbsfrpvhmwfiiw5c3tpdyzq + react-with-styles-interface-css: 6.0.0_eivcclzbvdxqy5cnlnup5iddhy dev: false /react-devtools-core/4.24.0: @@ -35248,12 +36599,12 @@ packages: - bufferutil - utf-8-validate - /react-docgen-typescript/2.2.2_typescript@4.8.4: + /react-docgen-typescript/2.2.2_typescript@4.9.5: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 4.8.4 + typescript: 4.9.5 dev: true /react-docgen/5.4.0: @@ -35261,9 +36612,9 @@ packages: engines: {node: '>=8.10.0'} hasBin: true dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/runtime': 7.19.0 + '@babel/core': 7.21.3 + '@babel/generator': 7.21.3 + '@babel/runtime': 7.21.0 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -35359,7 +36710,7 @@ packages: peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: true @@ -35372,7 +36723,7 @@ packages: react: ^16.6.0 || ^17.0.0 react-dom: ^16.6.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 invariant: 2.2.4 prop-types: 15.8.1 react: 17.0.2 @@ -35395,7 +36746,7 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 is-dom: 1.1.0 prop-types: 15.8.1 react: 17.0.2 @@ -35444,7 +36795,7 @@ packages: /react-native-codegen/0.70.4_@babel+preset-env@7.12.7: resolution: {integrity: sha512-bPyd5jm840omfx24VRyMP+KPzAefpRDwE18w5ywMWHCWZBSqLn1qI9WgBPnavlIrjTEuzxznWQNcaA26lw8AMQ==} dependencies: - '@babel/parser': 7.19.3 + '@babel/parser': 7.21.3 flow-parser: 0.121.0 jscodeshift: 0.13.1_@babel+preset-env@7.12.7 nullthrows: 1.1.1 @@ -35497,7 +36848,7 @@ packages: react-native-gradle-plugin: 0.70.2 react-refresh: 0.4.3 react-shallow-renderer: 16.15.0_react@18.1.0 - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 scheduler: 0.22.0 stacktrace-parser: 0.1.10 use-sync-external-store: 1.2.0_react@18.1.0 @@ -35547,7 +36898,7 @@ packages: react: ^16.6.0 || ^17.0.0 react-dom: ^16.6.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@popperjs/core': 2.11.4 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -35599,7 +36950,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 broadcast-channel: 3.7.0 match-sorter: 6.3.1 react: 17.0.2 @@ -35687,7 +37038,7 @@ packages: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 '@emotion/cache': 10.0.29 '@emotion/core': 10.3.1_react@17.0.2 '@emotion/css': 10.0.27 @@ -35731,7 +37082,7 @@ packages: peerDependencies: react: '>= 0.14.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.27.0 @@ -35768,7 +37119,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 react: 17.0.2 use-composed-ref: 1.2.1_react@17.0.2 use-latest: 1.2.0_pxzommwrsowkd4kgag6q3sluym @@ -35782,7 +37133,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 react: 17.0.2 use-composed-ref: 1.2.1_react@17.0.2 use-latest: 1.2.0_react@17.0.2 @@ -35796,7 +37147,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -35842,16 +37193,16 @@ packages: react-with-styles: 3.2.3_f6ta4w4ch5ogxra4gx65xzrqki dev: false - /react-with-styles-interface-css/6.0.0_sjrqpgd5uboanyy2xkv2xcu6vm: + /react-with-styles-interface-css/6.0.0_eivcclzbvdxqy5cnlnup5iddhy: resolution: {integrity: sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==} peerDependencies: '@babel/runtime': ^7.0.0 react-with-styles: ^3.0.0 || ^4.0.0 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 array.prototype.flat: 1.2.5 global-cache: 1.2.1 - react-with-styles: 4.2.0_tzgwoaxjvs23ve2qhnwxwqxt3e + react-with-styles: 4.2.0_ijumbsfrpvhmwfiiw5c3tpdyzq dev: false /react-with-styles-interface-css/6.0.0_u5gvwsivijvqc4cln26hqg7igq: @@ -35879,14 +37230,14 @@ packages: react-with-direction: 1.4.0_sfoxds7t5ydpegc3knd667wn6m dev: false - /react-with-styles/4.2.0_tzgwoaxjvs23ve2qhnwxwqxt3e: + /react-with-styles/4.2.0_ijumbsfrpvhmwfiiw5c3tpdyzq: resolution: {integrity: sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==} peerDependencies: '@babel/runtime': ^7.0.0 react: '>=0.14' react-with-direction: ^1.3.1 dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 airbnb-prop-types: 2.16.0_react@17.0.2 hoist-non-react-statics: 3.3.2 object.assign: 4.1.4 @@ -36048,14 +37399,14 @@ packages: resolution: {integrity: sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==} engines: {node: '>= 8'} dependencies: - picomatch: 2.3.0 + picomatch: 2.3.1 dev: true /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: - picomatch: 2.3.0 + picomatch: 2.3.1 /readline-sync/1.4.10: resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} @@ -36204,12 +37555,12 @@ packages: /redux/4.1.2: resolution: {integrity: sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==} dependencies: - '@babel/runtime': 7.17.7 + '@babel/runtime': 7.21.0 /redux/4.2.0: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /reflect.ownkeys/0.2.0: resolution: {integrity: sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==} @@ -36235,18 +37586,21 @@ packages: resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} dev: true + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime/0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} /regenerator-transform/0.14.5: resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 /regex-not/1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} @@ -36707,19 +38061,19 @@ packages: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 /rimraf/2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 /ripemd160/2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -36786,8 +38140,8 @@ packages: dependencies: tslib: 1.14.1 - /rxjs/7.5.5: - resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.5.0 dev: true @@ -36854,7 +38208,7 @@ packages: sass: 1.49.9 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@4.9.2 dev: true /sass-loader/10.2.1_webpack@5.70.0: @@ -36880,6 +38234,31 @@ packages: semver: 7.3.5 webpack: 5.70.0_webpack-cli@3.3.12 + /sass-loader/10.4.1_sass@1.59.3+webpack@5.76.3: + resolution: {integrity: sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + klona: 2.0.5 + loader-utils: 2.0.4 + neo-async: 2.6.2 + sass: 1.59.3 + schema-utils: 3.1.1 + semver: 7.3.8 + webpack: 5.76.3 + dev: true + /sass-loader/12.6.0_sass@1.49.9+webpack@5.70.0: resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} engines: {node: '>= 12.13.0'} @@ -36905,7 +38284,7 @@ packages: webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa dev: true - /sass-loader/8.0.2_sass@1.49.9+webpack@4.46.0: + /sass-loader/8.0.2_sass@1.59.3+webpack@4.46.0: resolution: {integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==} engines: {node: '>= 8.9.0'} peerDependencies: @@ -36924,7 +38303,7 @@ packages: clone-deep: 4.0.1 loader-utils: 1.4.0 neo-async: 2.6.2 - sass: 1.49.9 + sass: 1.59.3 schema-utils: 2.7.1 semver: 6.3.0 webpack: 4.46.0_webpack-cli@3.3.12 @@ -36940,6 +38319,16 @@ packages: source-map-js: 1.0.2 dev: true + /sass/1.59.3: + resolution: {integrity: sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.0.0 + source-map-js: 1.0.2 + dev: true + /sax/1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} dev: true @@ -37262,7 +38651,7 @@ packages: engines: {node: '>=4'} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 dev: true @@ -37312,6 +38701,13 @@ packages: dependencies: is-arrayish: 0.3.2 + /simple-update-notifier/1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} + dependencies: + semver: 7.0.0 + dev: true + /sirv/1.0.19: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} @@ -37589,6 +38985,7 @@ packages: /spawn-command/0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} + dev: true /spawnd/4.4.0: resolution: {integrity: sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg==} @@ -38054,7 +39451,7 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 dependencies: - loader-utils: 2.0.2 + loader-utils: 2.0.4 schema-utils: 3.1.1 webpack: 5.70.0 dev: true @@ -38844,6 +40241,59 @@ packages: transitivePeerDependencies: - acorn + /terser-webpack-plugin/5.2.5_acorn@8.8.1+webpack@5.76.3: + resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + source-map: 0.6.1 + terser: 5.10.0_acorn@8.8.1 + webpack: 5.76.3 + transitivePeerDependencies: + - acorn + dev: true + + /terser-webpack-plugin/5.2.5_ajwt7ja7apf4cf35mcw5h7vv5y: + resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + source-map: 0.6.1 + terser: 5.10.0_acorn@8.8.1 + uglify-js: 3.14.5 + webpack: 5.76.3_bgqcrdgdviybk52kjcpjat65sa + transitivePeerDependencies: + - acorn + dev: true + /terser/4.8.0: resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} engines: {node: '>=6.0.0'} @@ -38890,7 +40340,7 @@ packages: resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} engines: {node: '>=6'} dependencies: - glob: 7.2.0 + glob: 7.2.3 minimatch: 3.1.2 read-pkg-up: 4.0.0 require-main-filename: 2.0.0 @@ -38901,7 +40351,7 @@ packages: engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.0 + glob: 7.2.3 minimatch: 3.1.2 /text-table/0.2.0: @@ -39074,6 +40524,13 @@ packages: engines: {node: '>=6'} dev: true + /touch/3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + dependencies: + nopt: 1.0.10 + dev: true + /tough-cookie/2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -39161,15 +40618,15 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-essentials/7.0.3_typescript@4.8.4: + /ts-essentials/7.0.3_typescript@4.9.5: resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} peerDependencies: typescript: '>=3.7.0' dependencies: - typescript: 4.8.4 + typescript: 4.9.5 dev: true - /ts-jest/27.1.3_77oryishcckaigojnzbhxsiona: + /ts-jest/27.1.3_4y4px6we76w7ab6r3dbcniovya: resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -39199,11 +40656,11 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.7 - typescript: 4.8.4 + typescript: 4.9.5 yargs-parser: 20.2.9 dev: true - /ts-jest/27.1.3_wfmhell6c5i72vvtgtvpmkkb6i: + /ts-jest/27.1.3_kf3ytuxcuctivbjasfbyoij3w4: resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -39224,7 +40681,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.17.8 + '@babel/core': 7.21.3 '@types/jest': 27.4.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 @@ -39234,11 +40691,80 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.7 - typescript: 4.8.4 + typescript: 4.9.5 yargs-parser: 20.2.9 dev: true - /ts-jest/27.1.3_yz745mftfbms5l53ptse4szmhe: + /ts-jest/27.1.3_maf5odyzjfujvun24pqrldsxpy: + resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.17.8 + babel-jest: 27.5.1_@babel+core@7.17.8 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1 + jest-util: 27.5.1 + json5: 2.2.0 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.7 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/27.1.3_ov7a56uwol5kdfttgshloa6ls4: + resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.21.3 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1 + jest-util: 27.5.1 + json5: 2.2.0 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.7 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/27.1.3_uoaxlxjq2ciqwfcb253eiln2ly: resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -39270,11 +40796,46 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.7 - typescript: 4.8.4 + typescript: 4.9.5 yargs-parser: 20.2.9 dev: true - /ts-loader/9.4.1_27qmdvvfdw5s3nqwnln6yerdsa: + /ts-jest/27.1.3_z76afj7v5k462eeambgjfpsr3e: + resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.17.8 + '@types/jest': 27.4.1 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1 + jest-util: 27.5.1 + json5: 2.2.0 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.7 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-loader/9.4.1_t37drsge5fnqkss6ynqsf64hyi: resolution: {integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -39285,11 +40846,11 @@ packages: enhanced-resolve: 5.9.2 micromatch: 4.0.4 semver: 7.3.8 - typescript: 4.8.4 - webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa + typescript: 4.9.5 + webpack: 5.76.3_bgqcrdgdviybk52kjcpjat65sa dev: true - /ts-node/10.9.1_66qcjwcvmucahiv4aiph345ggy: + /ts-node/10.9.1_z2kt25o33of7k4uzjztqjquebu: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -39308,50 +40869,18 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 16.10.3 + '@types/node': 16.18.18 acorn: 8.7.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.8.4 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /ts-node/10.9.1_vqcafhj4xvr2nzknlrdklk55zm: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.18 - acorn: 8.7.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.8.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: false - - /ts-pnp/1.2.0_typescript@4.8.4: + /ts-pnp/1.2.0_typescript@4.9.5: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} peerDependencies: @@ -39360,7 +40889,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.8.4 + typescript: 4.9.5 dev: true /tsconfig-paths/3.14.0: @@ -39383,14 +40912,14 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tsutils/3.21.0_typescript@4.8.4: + /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} 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' dependencies: tslib: 1.14.1 - typescript: 4.8.4 + typescript: 4.9.5 /tty-browserify/0.0.0: resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} @@ -39409,65 +40938,65 @@ packages: /turbo-combine-reducers/1.0.2: resolution: {integrity: sha512-gHbdMZlA6Ym6Ur5pSH/UWrNQMIM9IqTH6SoL1DbHpqEdQ8i+cFunSmSlFykPt0eGQwZ4d/XTHOl74H0/kFBVWw==} - /turbo-darwin-64/1.8.3: - resolution: {integrity: sha512-bLM084Wr17VAAY/EvCWj7+OwYHvI9s/NdsvlqGp8iT5HEYVimcornCHespgJS/yvZDfC+mX9EQkn3V2JmYgGGw==} + /turbo-darwin-64/1.8.5: + resolution: {integrity: sha512-CAYh56bzeHfnh7jTm03r29bh8p5a/EjQo1Id5yLUH7hS7msTau/+YpxJWPodLbN0UQsUYivUqHQkglJ+eMJ7xA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64/1.8.3: - resolution: {integrity: sha512-4oZjXtzakopMK110kue3z/hqu3WLv+eDLZOX1NGdo49gqca9BeD8GbH+sXpAp6tqyeuzpss+PIliVYuyt7LgbA==} + /turbo-darwin-arm64/1.8.5: + resolution: {integrity: sha512-R3jCPOv+lu3dcvMhj8b/Defv6dyUwX6W+tbX7d6YUCA46Plf/bGCQ8+MSbxmr/4E1GyGOVFsn1wRfiYk0us/Dg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64/1.8.3: - resolution: {integrity: sha512-uvX2VKotf5PU14FCxJA5iHItPQno2JWzerMd+g3/h/Asay6dvxvtVjc39MQeGT0H5njSvzVKFkT+3/5q8lgOEg==} + /turbo-linux-64/1.8.5: + resolution: {integrity: sha512-YRc/KNRZeUVvth11UO4SDQZR2IqGgl9MSsbzqoHuFz4B4Q5QXH7onHogv9aXWE/BZBBbcrSBTlwBSG0Gg+J8hg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64/1.8.3: - resolution: {integrity: sha512-E1p+oH3XKMaPS4rqWhYsL4j2Pzc0d/9P5KU7Kn1kqVLo2T3iRA7n2KVULEieUNE0nTH+aIJPXYXOpqCI5wFJaA==} + /turbo-linux-arm64/1.8.5: + resolution: {integrity: sha512-8exVZb7XBl/V3gHSweuUyG2D9IzfWqwLvlXoeLWlVYSj61Ajgdv+WU7lvUmx+H2s+sSKqmIFmewA5Lw6YY37sg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64/1.8.3: - resolution: {integrity: sha512-cnzAytHtoLXd0J7aNzRpZFpL/GTjcBmkvAPlbOdf/Pl1iwS4qzGrudZQ+OM1lmLgLIfBPIavsGHBknTwTNib4A==} + /turbo-windows-64/1.8.5: + resolution: {integrity: sha512-fA8PU5ZNoFnQkapG06WiEqfsVQ5wbIPkIqTwUsd/M2Lp+KgxE79SQbuEI+2vQ9SmwM5qoMi515IPjgvXAJXgCw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64/1.8.3: - resolution: {integrity: sha512-ulIiItNm2w/zYJdD5/oAzjzNns1IjbpweRzpsE8tLXaWwo6+fnXXkyloUug0IUhcd2k6fJXfoiDZfygqpOVuXg==} + /turbo-windows-arm64/1.8.5: + resolution: {integrity: sha512-SW/NvIdhckLsAWjU/iqBbCB0S8kXupKscUK3kEW1DZIr3MYcP/yIuaE/IdPuqcoF3VP0I3TLD4VTYCCKAo3tKA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo/1.8.3: - resolution: {integrity: sha512-zGrkU1EuNFmkq6iky6LcMqD4h0OLE8XysVFxQWRIZbcTNnf0XAycbsbeEyiJpiWeqb7qtg2bVuY9EYcNoNhVuQ==} + /turbo/1.8.5: + resolution: {integrity: sha512-UBnH2wIFb5g6OQCk8f34Ud15ZXV4xEMmugeDJTU5Ur2LpVRsNEny0isSCYdb3Iu3howoNyyXmtpaxWsAwNYkkg==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.8.3 - turbo-darwin-arm64: 1.8.3 - turbo-linux-64: 1.8.3 - turbo-linux-arm64: 1.8.3 - turbo-windows-64: 1.8.3 - turbo-windows-arm64: 1.8.3 + turbo-darwin-64: 1.8.5 + turbo-darwin-arm64: 1.8.5 + turbo-linux-64: 1.8.5 + turbo-linux-arm64: 1.8.5 + turbo-windows-64: 1.8.5 + turbo-windows-arm64: 1.8.5 dev: true /tweetnacl/0.14.5: @@ -39545,8 +41074,8 @@ packages: /typedarray/0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typescript/4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true @@ -39615,6 +41144,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /undefsafe/2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: true + /underscore.string/3.3.6: resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} dependencies: @@ -39831,7 +41364,7 @@ packages: /unload/2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 detect-node: 2.1.0 dev: false @@ -39940,7 +41473,19 @@ packages: loader-utils: 1.4.0 mime: 2.5.2 schema-utils: 1.0.0 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@4.9.2 + dev: true + + /url-loader/1.1.2_webpack@5.76.3: + resolution: {integrity: sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + mime: 2.5.2 + schema-utils: 1.0.0 + webpack: 5.76.3 dev: true /url-loader/3.0.0_webpack@4.46.0: @@ -39986,7 +41531,7 @@ packages: file-loader: optional: true dependencies: - loader-utils: 2.0.2 + loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.1.1 webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa @@ -40474,6 +42019,14 @@ packages: glob-to-regexp: 0.4.1 graceful-fs: 4.2.9 + /watchpack/2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.9 + dev: true + /wbuf/1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: @@ -40587,7 +42140,7 @@ packages: webpack: 5.70.0_webpack-cli@3.3.12 yargs: 13.3.2 - /webpack-cli/4.9.2_p2twkydmemoqwqiml4djllh5wi: + /webpack-cli/4.9.2_ciq5cijsysjq5sik752b4nyq2m: resolution: {integrity: sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -40610,7 +42163,7 @@ packages: '@discoveryjs/json-ext': 0.5.7 '@webpack-cli/configtest': 1.1.1_spmstbzrmxjdafr7ccogoqrx6e '@webpack-cli/info': 1.4.1_webpack-cli@4.9.2 - '@webpack-cli/serve': 1.6.1_oqvzz5d42buklxsrf2oiyc3dxq + '@webpack-cli/serve': 1.6.1_ht4xi23ezbiqlmpjtiwigrodwi colorette: 2.0.16 commander: 7.2.0 execa: 5.1.1 @@ -40620,11 +42173,11 @@ packages: rechoir: 0.7.1 webpack: 5.70.0_webpack-cli@4.9.2 webpack-bundle-analyzer: 3.9.0 - webpack-dev-server: 4.11.1_jaxrlecucqtr54lmhmx67obzmy + webpack-dev-server: 4.12.0_jaxrlecucqtr54lmhmx67obzmy webpack-merge: 5.8.0 dev: true - /webpack-cli/4.9.2_webpack@5.70.0: + /webpack-cli/4.9.2_webpack@5.76.3: resolution: {integrity: sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -40645,7 +42198,7 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.1.1_spmstbzrmxjdafr7ccogoqrx6e + '@webpack-cli/configtest': 1.1.1_hr47hglah7gcsaciyucioac67e '@webpack-cli/info': 1.4.1_webpack-cli@4.9.2 '@webpack-cli/serve': 1.6.1_webpack-cli@4.9.2 colorette: 2.0.16 @@ -40655,7 +42208,7 @@ packages: import-local: 3.0.3 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.70.0_bgqcrdgdviybk52kjcpjat65sa + webpack: 5.76.3_bgqcrdgdviybk52kjcpjat65sa webpack-merge: 5.8.0 dev: true @@ -40681,7 +42234,7 @@ packages: dependencies: colorette: 1.4.0 mem: 8.1.1 - memfs: 3.3.0 + memfs: 3.4.13 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 3.1.1 @@ -40702,8 +42255,8 @@ packages: webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /webpack-dev-server/4.11.1_jaxrlecucqtr54lmhmx67obzmy: - resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} + /webpack-dev-server/4.12.0_jaxrlecucqtr54lmhmx67obzmy: + resolution: {integrity: sha512-XRN9YRnvOj3TQQ5w/0pR1y1xDcVnbWtNkTri46kuEbaWUPTHsWUvOyAAI7PZHLY+hsFki2kRltJjKMw7e+IiqA==} engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: @@ -40732,6 +42285,7 @@ packages: html-entities: 2.3.2 http-proxy-middleware: 2.0.6_fs2s5z67bp6aaux2wfl66yxz5e ipaddr.js: 2.0.1 + launch-editor: 2.6.0 open: 8.4.0 p-retry: 4.6.1 rimraf: 3.0.2 @@ -40741,9 +42295,9 @@ packages: sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.70.0_webpack-cli@4.9.2 - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m webpack-dev-middleware: 5.3.3_webpack@5.70.0 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - debug @@ -41015,7 +42569,7 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.2.5_2afcvd4rlhgtdg42ipbhcxtcri watchpack: 2.3.1 - webpack-cli: 4.9.2_webpack@5.70.0 + webpack-cli: 4.9.2_webpack@5.76.3 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -41096,7 +42650,88 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.2.5_acorn@8.8.1+webpack@5.70.0 watchpack: 2.3.1 - webpack-cli: 4.9.2_p2twkydmemoqwqiml4djllh5wi + webpack-cli: 4.9.2_ciq5cijsysjq5sik752b4nyq2m + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /webpack/5.76.3: + resolution: {integrity: sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + 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.8.1 + acorn-import-assertions: 1.8.0_acorn@8.8.1 + browserslist: 4.19.3 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.12.0 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.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.35 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.2.5_acorn@8.8.1+webpack@5.76.3 + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /webpack/5.76.3_bgqcrdgdviybk52kjcpjat65sa: + resolution: {integrity: sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + 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.8.1 + acorn-import-assertions: 1.8.0_acorn@8.8.1 + browserslist: 4.19.3 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.12.0 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.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.35 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.2.5_ajwt7ja7apf4cf35mcw5h7vv5y + watchpack: 2.4.0 + webpack-cli: 4.9.2_webpack@5.76.3 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -41312,7 +42947,7 @@ packages: /wpcom-proxy-request/6.0.0: resolution: {integrity: sha512-NMp0YsBM40CuI5vWtHpjWOuf96rPfbpGkamlJpVwYvgenIh1ynRzqVnGfsnjofgz13T2qcKkdwJY0Y2X7z+W+w==} dependencies: - '@babel/runtime': 7.19.0 + '@babel/runtime': 7.21.0 debug: 4.3.4 progress-event: 1.0.0 uuid: 7.0.3 @@ -41474,6 +43109,20 @@ packages: optional: true utf-8-validate: optional: true + dev: false + + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true /x-is-string/0.1.0: resolution: {integrity: sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=} @@ -41536,7 +43185,6 @@ packages: /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -41811,9 +43459,9 @@ packages: version: 0.0.1 requiresBuild: true dependencies: - '@babel/cli': 7.17.6_@babel+core@7.17.8 - '@babel/core': 7.17.8 - '@babel/preset-env': 7.19.3_@babel+core@7.17.8 + '@babel/cli': 7.17.6_@babel+core@7.21.3 + '@babel/core': 7.21.3 + '@babel/preset-env': 7.20.2_@babel+core@7.21.3 '@slack/web-api': 5.15.0 '@wordpress/e2e-test-utils': 3.0.0_ddjhsfu4aotkh3cuzmpsln6ywq config: 3.3.7 diff --git a/tools/cli-core/package.json b/tools/cli-core/package.json index ffb54624cb5..f36df320dd7 100644 --- a/tools/cli-core/package.json +++ b/tools/cli-core/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@tsconfig/node16": "^1.0.3", "@types/uuid": "^9.0.0", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "dependencies": { "chalk": "^4.1.2", diff --git a/tools/code-analyzer/README.md b/tools/code-analyzer/README.md index cb07a057b0a..6d81997288e 100644 --- a/tools/code-analyzer/README.md +++ b/tools/code-analyzer/README.md @@ -6,7 +6,7 @@ ## Commands -Currently there are just 2 commands: +Currently there are 3 commands: 1. `lint`. Analyzer is used as a linter for PRs to check if hook/template/db changes were introduced. It produces output either directly on CI or via setting output variables in GH actions. @@ -29,3 +29,11 @@ writing the main file in this particular branch reports `6.8.1` so the output of This command is particularly useful combined with the analyzer, allowing you to determine the last major/minor.0 version of a branch or ref before passing that as the version argument to `analyzer`. + +3. `scan`. Scan is like `lint` but lets you scan for a specific change type. e.g. you can scan just for hook changes if you wish. + +Here is an example of the `scan` command run to look for hook changes: + +`pnpm analyzer scan hooks "release/6.8" "release/6.7" --since "6.8.0"` +\ +In this command we compare the `release/6.7` and `release/6.8` branches to find hook changes, and we're looking for changes introduced since `6.8.0` (using the `@since` tag). diff --git a/tools/code-analyzer/package.json b/tools/code-analyzer/package.json index e90127351f5..aac5c04543e 100644 --- a/tools/code-analyzer/package.json +++ b/tools/code-analyzer/package.json @@ -19,12 +19,12 @@ "uuid": "^8.3.2" }, "devDependencies": { - "@types/node": "^16.9.4", + "@types/node": "^16.18.18", "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.32.0", "ts-node": "^10.2.1", "tslib": "^2.3.1", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "scripts": { "lint": "eslint . --ext .ts", diff --git a/tools/code-analyzer/src/commands/analyzer/analyzer-scan.ts b/tools/code-analyzer/src/commands/analyzer/analyzer-scan.ts new file mode 100644 index 00000000000..2bca09a3844 --- /dev/null +++ b/tools/code-analyzer/src/commands/analyzer/analyzer-scan.ts @@ -0,0 +1,155 @@ +/** + * External dependencies + */ +import { Command } from '@commander-js/extra-typings'; +import { Logger } from 'cli-core/src/logger'; +import { join } from 'path'; + +/** + * Internal dependencies + */ +import { + scanChangesForDB, + scanChangesForHooks, + scanChangesForSchema, + scanChangesForTemplates, + ScanType, +} from '../../lib/scan-changes'; +import { + printDatabaseUpdates, + printHookResults, + printSchemaChange, + printTemplateResults, +} from '../../print'; + +const printEmptyNotice = ( scanType: ScanType ) => { + Logger.notice( `\n\n## ${ scanType.toUpperCase() } CHANGES` ); + Logger.notice( '---------------------------------------------------' ); + Logger.notice( `No ${ scanType } changes found.` ); + Logger.notice( '---------------------------------------------------' ); +}; + +const program = new Command() + .command( 'scan' ) + .argument( + '', + 'Type of change to scan for. Options: templates, hooks, database, schema.' + ) + .argument( + '', + 'GitHub branch/tag/commit hash to compare against the base branch/tag/commit hash.' + ) + .argument( + '[base]', + 'Base branch to compare against. Defaults to trunk.', + 'trunk' + ) + .option( + '-s, --since ', + 'Specify the version used to determine which changes are included (version listed in @since code doc). Only needed for hook, template, schema changes.' + ) + .option( + '-src, --source ', + 'Git repo url or local path to a git repo.', + join( process.cwd(), '../../' ) + ) + .option( + '-o, --outputStyle ', + 'Output style for the results. Options: github, cli. Github output will set the results as an output variable for Github actions.', + 'cli' + ) + .action( async ( scanType, compare, base, options ) => { + const { since: sinceVersion, source, outputStyle } = options; + + if ( + ( scanType === 'hooks' || + scanType === 'templates' || + scanType === 'schema' ) && + ! sinceVersion + ) { + throw new Error( + `To scan for ${ scanType } changes you must provide the since argument.` + ); + } + + switch ( scanType ) { + case 'hooks': + // We know sinceVersion will exist but TS can't infer that here. + if ( sinceVersion ) { + const hookChanges = await scanChangesForHooks( + compare, + sinceVersion, + base, + source + ); + + if ( hookChanges.length ) { + printHookResults( + hookChanges, + outputStyle, + 'HOOKS', + Logger.notice + ); + } else { + printEmptyNotice( 'hooks' ); + } + } + break; + case 'templates': + // We know sinceVersion will exist but TS can't infer that here. + if ( sinceVersion ) { + const templateChanges = await scanChangesForTemplates( + compare, + sinceVersion, + base, + source + ); + if ( templateChanges && templateChanges.length ) { + printTemplateResults( + templateChanges, + outputStyle, + 'TEMPLATES', + Logger.notice + ); + } else { + printEmptyNotice( 'templates' ); + } + } + break; + case 'database': + const dbChanges = await scanChangesForDB( + compare, + base, + source + ); + if ( dbChanges ) { + printDatabaseUpdates( dbChanges, 'cli', Logger.notice ); + } else { + printEmptyNotice( 'database' ); + } + break; + case 'schema': + const schemaChanges = await scanChangesForSchema( + compare, + base, + source + ); + if ( schemaChanges && schemaChanges.length && sinceVersion ) { + printSchemaChange( + schemaChanges, + sinceVersion, + 'cli', + Logger.notice + ); + } else { + printEmptyNotice( 'schema' ); + } + break; + default: + throw new Error( + 'Invalid scan type. Options: templates, hooks, database, schema.' + ); + } + } ); + +program.parse( process.argv ); diff --git a/tools/code-analyzer/src/commands/analyzer/index.ts b/tools/code-analyzer/src/commands/analyzer/index.ts index ed81360a9ea..87ff2a6ce95 100644 --- a/tools/code-analyzer/src/commands/analyzer/index.ts +++ b/tools/code-analyzer/src/commands/analyzer/index.ts @@ -10,6 +10,7 @@ program .name( 'analyzer' ) .version( '0.0.1' ) .command( 'lint', 'Lint changes', { isDefault: true } ) - .command( 'major-minor', 'Determine major/minor version of a plugin' ); + .command( 'major-minor', 'Determine major/minor version of a plugin' ) + .command( 'scan', 'Detect changes between plugin versions' ); program.parse( process.argv ); diff --git a/tools/code-analyzer/src/lib/scan-changes.ts b/tools/code-analyzer/src/lib/scan-changes.ts index a21804c002d..e03ea723903 100644 --- a/tools/code-analyzer/src/lib/scan-changes.ts +++ b/tools/code-analyzer/src/lib/scan-changes.ts @@ -15,6 +15,121 @@ import { scanForDBChanges } from './db-changes'; import { scanForHookChanges } from './hook-changes'; import { scanForTemplateChanges } from './template-changes'; import { SchemaDiff, generateSchemaDiff } from '../git'; +import { scanForSchemaChanges } from './schema-changes'; + +export type ScanType = 'schema' | 'db' | 'hooks' | 'templates' | string; + +const generateVersionDiff = async ( + compareVersion: string, + base: string, + source: string, + clonedPath?: string +) => { + Logger.startTask( `Making temporary clone of ${ source }...` ); + + const tmpRepoPath = + typeof clonedPath !== 'undefined' + ? clonedPath + : await cloneRepo( source ); + + Logger.endTask(); + + Logger.notice( + `Temporary clone of ${ source } created at ${ tmpRepoPath }` + ); + + Logger.notice( + `Temporary clone of ${ source } created at ${ tmpRepoPath }` + ); + + const diff = await generateDiff( + tmpRepoPath, + base, + compareVersion, + Logger.error, + [ 'tools' ] + ); + + return { diff, tmpRepoPath }; +}; + +export const scanChangesForDB = async ( + compareVersion: string, + base: string, + source: string, + clonedPath?: string +) => { + const { diff } = await generateVersionDiff( + compareVersion, + base, + source, + clonedPath + ); + + return scanForDBChanges( diff ); +}; + +export const scanChangesForHooks = async ( + compareVersion: string, + sinceVersion: string, + base: string, + source: string, + clonedPath?: string +) => { + const { diff, tmpRepoPath } = await generateVersionDiff( + compareVersion, + base, + source, + clonedPath + ); + + const hookChanges = await scanForHookChanges( + diff, + sinceVersion, + tmpRepoPath + ); + + return Array.from( hookChanges.values() ); +}; + +export const scanChangesForTemplates = async ( + compareVersion: string, + sinceVersion: string, + base: string, + source: string, + clonedPath?: string +) => { + const { diff, tmpRepoPath } = await generateVersionDiff( + compareVersion, + base, + source, + clonedPath + ); + + const templateChanges = await scanForTemplateChanges( + diff, + sinceVersion, + tmpRepoPath + ); + + return Array.from( templateChanges.values() ); +}; + +export const scanChangesForSchema = async ( + compareVersion: string, + base: string, + source: string, + clonedPath?: string +) => { + const { tmpRepoPath } = await generateVersionDiff( + compareVersion, + base, + source, + clonedPath + ); + + return scanForSchemaChanges( compareVersion, base, tmpRepoPath ); +}; export const scanForChanges = async ( compareVersion: string, diff --git a/tools/code-analyzer/src/lib/schema-changes.ts b/tools/code-analyzer/src/lib/schema-changes.ts new file mode 100644 index 00000000000..43f56458d44 --- /dev/null +++ b/tools/code-analyzer/src/lib/schema-changes.ts @@ -0,0 +1,60 @@ +/** + * External dependencies + */ +import { Logger } from 'cli-core/src/logger'; +import { readFile } from 'fs/promises'; +import { join } from 'path'; + +/** + * Internal dependencies + */ +import { generateSchemaDiff } from '../git'; +import { execAsync } from '../utils'; + +export const scanForSchemaChanges = async ( + compareVersion: string, + base: string, + tmpRepoPath: string +) => { + const pluginPath = join( tmpRepoPath, 'plugins/woocommerce' ); + + const build = async () => { + const fileStr = await readFile( + join( pluginPath, 'package.json' ), + 'utf-8' + ); + const packageJSON = JSON.parse( fileStr ); + + // Temporarily save the current PNPM version. + await execAsync( `tmpgPNPM="$(pnpm --version)"` ); + + if ( packageJSON.engines && packageJSON.engines.pnpm ) { + await execAsync( `npm i -g pnpm@${ packageJSON.engines.pnpm }`, { + cwd: pluginPath, + } ); + } + + // Note doing the minimal work to get a DB scan to work, avoiding full build for speed. + await execAsync( 'composer install', { cwd: pluginPath } ); + await execAsync( 'pnpm run --filter=woocommerce build:feature-config', { + cwd: pluginPath, + } ); + }; + + Logger.startTask( 'Generating schema diff...' ); + + const schemaDiff = await generateSchemaDiff( + tmpRepoPath, + compareVersion, + base, + build, + Logger.error + ); + + // Restore the previously saved PNPM version + await execAsync( `npm i -g pnpm@"$tmpgPNPM"` ); + + Logger.endTask(); + + return schemaDiff; +}; diff --git a/tools/monorepo-merge/package.json b/tools/monorepo-merge/package.json index 525d639ddbf..cfb0217ec45 100644 --- a/tools/monorepo-merge/package.json +++ b/tools/monorepo-merge/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@octokit/request-error": "^3.0.1", "@woocommerce/eslint-plugin": "workspace:*", - "@types/node": "^16.9.4", + "@types/node": "^16.18.18", "eslint": "^8.32.0", "globby": "^11", "jscodeshift": "^0.13.1", @@ -33,7 +33,7 @@ "shx": "^0.3.3", "ts-node": "^10.2.1", "tslib": "^2.3.1", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "oclif": { "bin": "monorepo-merge", @@ -54,7 +54,7 @@ } }, "scripts": { - "turbo:build": "shx rm -rf dist && tsc -b", + "turbo:build": "shx rm -rf dist && tsc --project tsconfig.json", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint . --ext .ts", "postpack": "shx rm -f oclif.manifest.json", diff --git a/tools/package-release/package.json b/tools/package-release/package.json index bb58dc8967c..59b8ad584fa 100644 --- a/tools/package-release/package.json +++ b/tools/package-release/package.json @@ -24,14 +24,14 @@ "semver": "^7.3.2" }, "devDependencies": { - "@types/node": "^16.9.4", + "@types/node": "^16.18.18", "@woocommerce/eslint-plugin": "workspace:*", "globby": "^11", "oclif": "^2", "shx": "^0.3.3", "ts-node": "^10.2.1", "tslib": "^2.3.1", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "oclif": { "bin": "package-release", @@ -49,7 +49,7 @@ } }, "scripts": { - "turbo:build": "shx rm -rf dist && tsc -b", + "turbo:build": "shx rm -rf dist && tsc --project tsconfig.json", "build": "pnpm -w exec turbo run turbo:build --filter=$npm_package_name", "lint": "eslint . --ext .ts --config .eslintrc", "postpack": "shx rm -f oclif.manifest.json", diff --git a/tools/release-posts/commands/release-post/index.ts b/tools/release-posts/commands/release-post/index.ts index 33f28b612ef..7c7b3ab3ef2 100644 --- a/tools/release-posts/commands/release-post/index.ts +++ b/tools/release-posts/commands/release-post/index.ts @@ -10,6 +10,7 @@ program .name( 'release-post' ) .version( '0.0.1' ) .command( 'release', 'Generate release post', { isDefault: true } ) + .command( 'beta', 'Generate draft beta release post' ) .command( 'contributors', 'Generate a list of contributors for a release post' diff --git a/tools/release-posts/commands/release-post/release-post-beta.ts b/tools/release-posts/commands/release-post/release-post-beta.ts new file mode 100755 index 00000000000..b5bb915537b --- /dev/null +++ b/tools/release-posts/commands/release-post/release-post-beta.ts @@ -0,0 +1,225 @@ +/** + * External dependencies + */ +import semver from 'semver'; +import { writeFile } from 'fs/promises'; +import { tmpdir } from 'os'; +import { join } from 'path'; +import { Logger } from 'cli-core/src/logger'; +import { Command } from '@commander-js/extra-typings'; +import dotenv from 'dotenv'; +// @ts-expect-error - The enquirer types are incorrect. +// eslint-disable-next-line @woocommerce/dependency-group +import { Select } from 'enquirer'; + +/** + * Internal dependencies + */ +import { renderTemplate } from '../../lib/render-template'; +import { getWordpressComAuthToken } from '../../lib/oauth-helper'; +import { getEnvVar } from '../../lib/environment'; +import { getMostRecentFinal } from '../../lib/github-api'; +import { + getFirstTuesdayOfTheMonth, + getSecondTuesdayOfTheMonth, +} from '../../lib/dates'; +import { + createWpComDraftPost, + searchForPostsByCategory, +} from '../../lib/draft-post'; + +const DEVELOPER_WOOCOMMERCE_SITE_ID = '96396764'; + +dotenv.config(); + +// Define the release post command +const program = new Command() + .command( 'beta' ) + .description( 'CLI to automate generation of a draft beta release post.' ) + .argument( + '', + 'The version for this post in x.y.z-beta.n format. Ex: 7.1.0-beta.1' + ) + .option( + '--releaseDate ', + 'The date for the final release as mm-dd-yyyy, year inferred as current year, defaults to second tuesday of next month.', + getSecondTuesdayOfTheMonth( + new Date().getMonth() + 1 + ).toLocaleDateString( 'en-US', { + month: '2-digit', + day: '2-digit', + year: 'numeric', + } ) + ) + .option( '--outputOnly', 'Only output the post, do not publish it' ) + .option( + '--tags ', + 'Comma separated list of tags to add to the post.', + 'Releases,WooCommerce Core' + ) + .option( + '--siteId ', + 'For posting to a non-default site (for testing)' + ) + .action( async ( releaseVersion, options ) => { + const { + outputOnly, + siteId = DEVELOPER_WOOCOMMERCE_SITE_ID, + tags, + releaseDate, + } = options; + + const postTags = ( tags && + tags.split( ',' ).map( ( tag ) => tag.trim() ) ) || [ + 'WooCommerce Core', + 'Releases', + ]; + + const finalReleaseDate = new Date( releaseDate ); + const isOutputOnly = !! outputOnly; + const semverVersion = semver.parse( releaseVersion ); + + // This is supposed to be a beta post so throw if the version provided is not a beta version. + // Things we don't accept: + // * missing beta.x + // * any other kind of prerelease, e.g. rc + // * .x must be a number, so not: beta.1b or beta.1.1 but beta.1 is ok. + if ( + ! semverVersion || + ! semverVersion.prerelease.length || + typeof semverVersion.prerelease[ 1 ] === 'string' + ) { + throw new Error( + `Invalid current version: ${ releaseVersion }. Provide current version in x.y.z-beta.n format.` + ); + } else { + const [ , prereleaseVersion ] = semverVersion.prerelease; + + // Now infer the previous version, if the one you provide is beta.1 we'll need to find the last major release from + // Github releases. If what you provided is beta.2 we'll assume previous was beta.1 + const previousVersion = + prereleaseVersion === 1 + ? ( await getMostRecentFinal() ).tag_name + : `${ semverVersion.major }.${ semverVersion.minor }.${ + semverVersion.patch + }-beta.${ prereleaseVersion - 1 }`; + + const semverPreviousVersion = semver.parse( previousVersion ); + + if ( ! semverPreviousVersion ) { + throw new Error( + `Could not parse previous version from: ${ previousVersion }` + ); + } + + const clientId = getEnvVar( 'WPCOM_OAUTH_CLIENT_ID', true ); + const clientSecret = getEnvVar( 'WPCOM_OAUTH_CLIENT_SECRET', true ); + const redirectUri = + getEnvVar( 'WPCOM_OAUTH_REDIRECT_URI' ) || + 'http://localhost:3000/oauth'; + + Logger.startTask( + 'Getting auth token for WordPress.com (needed to find last beta post).' + ); + const authToken = await getWordpressComAuthToken( + clientId, + clientSecret, + siteId, + redirectUri, + 'posts' + ); + Logger.endTask(); + + const versionSearch = + prereleaseVersion === 1 + ? `WooCommerce ${ semverPreviousVersion.major }.${ semverPreviousVersion.minor }.${ semverPreviousVersion.patch }` + : `WooCommerce ${ semverPreviousVersion.major }.${ semverPreviousVersion.minor } Beta ${ semverPreviousVersion.prerelease[ 1 ] }`; + + Logger.startTask( + `Finding recent release posts with title: ${ versionSearch }` + ); + + const posts = + ( await searchForPostsByCategory( + siteId, + versionSearch, + 'WooCommerce Core', + authToken + ) ) || []; + + Logger.endTask(); + + const prompt = new Select( { + name: 'Previous post', + message: 'Choose the previous post to link to:', + choices: posts.length + ? posts.map( ( p ) => p.title ) + : [ 'No posts found - generate default link' ], + } ); + + const lastReleasePostTitle: string = await prompt.run(); + const lastReleasePost = posts.find( + ( p ) => p.title === lastReleasePostTitle + ); + + if ( ! lastReleasePost ) { + Logger.warn( + 'Could not find previous release post, make sure to update the link in the post before publishing.' + ); + } + + if ( ! authToken && ! isOutputOnly ) { + throw new Error( + 'Error getting auth token, check your env settings are correct.' + ); + } else { + const html = await renderTemplate( 'beta-release.ejs', { + releaseDate, + betaNumber: prereleaseVersion, + version: semverVersion, + previousVersion: semverPreviousVersion, + prettyVersion: `${ semverVersion.major }.${ semverVersion.minor }.${ semverVersion.patch } Beta ${ prereleaseVersion }`, + prettyPreviousVersion: `${ semverPreviousVersion.major }.${ + semverPreviousVersion.minor + }.${ semverPreviousVersion.patch }${ + semverPreviousVersion.prerelease.length + ? ' ' + + semverPreviousVersion.prerelease[ 0 ] + + ' ' + + semverPreviousVersion.prerelease[ 1 ] + : '' + }`, + rcReleaseDate: getFirstTuesdayOfTheMonth( + finalReleaseDate.getMonth() + ), + finalReleaseDate, + lastReleasePostUrl: + lastReleasePost?.URL || + 'https://developer.woocommerce.com/category/woocommerce-core-release-notes/', + } ); + + if ( isOutputOnly ) { + const tmpFile = join( + tmpdir(), + `beta-release-${ releaseVersion }.html` + ); + + await writeFile( tmpFile, html ); + + Logger.notice( `Output written to ${ tmpFile }` ); + } else { + Logger.startTask( 'Publishing draft release post' ); + await createWpComDraftPost( + siteId, + `WooCommerce ${ semverVersion.major }.${ semverVersion.minor } Beta ${ prereleaseVersion } Released`, + html, + postTags, + authToken + ); + Logger.endTask(); + } + } + } + } ); + +program.parse( process.argv ); diff --git a/tools/release-posts/commands/release-post/release-post-release.ts b/tools/release-posts/commands/release-post/release-post-release.ts index d03b637d5b5..bffd5b95405 100644 --- a/tools/release-posts/commands/release-post/release-post-release.ts +++ b/tools/release-posts/commands/release-post/release-post-release.ts @@ -150,7 +150,7 @@ const program = new Command() let postContent; - if ( 'undefined' !== typeof options.editPostId ) { + if ( typeof options.editPostId !== 'undefined' ) { try { const prevPost = await fetchWpComPost( siteId, @@ -197,7 +197,7 @@ const program = new Command() }; const html = - 'undefined' !== typeof options.editPostId + typeof options.editPostId !== 'undefined' ? editPostHTML( postContent, { hooks: await renderTemplate( 'hooks.ejs', @@ -234,7 +234,7 @@ const program = new Command() try { const { URL } = - 'undefined' !== typeof options.editPostId + typeof options.editPostId !== 'undefined' ? await editWpComPostContent( siteId, options.editPostId, diff --git a/tools/release-posts/lib/dates.ts b/tools/release-posts/lib/dates.ts new file mode 100644 index 00000000000..80d55766e09 --- /dev/null +++ b/tools/release-posts/lib/dates.ts @@ -0,0 +1,22 @@ +export const getFirstTuesdayOfTheMonth = ( month: number ): Date => { + // create a new Date object for the first day of the month + const firstDayOfMonth = new Date( new Date().getFullYear(), month, 1 ); + + // create a new Date object for the first Tuesday of the month + const firstTuesday = new Date( firstDayOfMonth ); + + firstTuesday.setDate( 1 + ( ( 2 - firstDayOfMonth.getDay() + 7 ) % 7 ) ); + + return firstTuesday; +}; + +export const getSecondTuesdayOfTheMonth = ( month: number ): Date => { + // create a new Date object for the first Tuesday of the month + const firstTuesday = getFirstTuesdayOfTheMonth( month ); + + // create a new Date object for the second Tuesday of the current month + const secondTuesday = new Date( firstTuesday ); + secondTuesday.setDate( secondTuesday.getDate() + 7 ); + + return secondTuesday; +}; diff --git a/tools/release-posts/lib/draft-post.ts b/tools/release-posts/lib/draft-post.ts index ee298841264..cc481a15e8a 100644 --- a/tools/release-posts/lib/draft-post.ts +++ b/tools/release-posts/lib/draft-post.ts @@ -4,6 +4,14 @@ import fetch from 'node-fetch'; import { Logger } from 'cli-core/src/logger'; +// Typing just the things we need from the WP.com Post object. +// (which is not the same as WP Post object or API Post object). +// See example response here: https://developer.wordpress.com/docs/api/1.1/get/sites/%24site/posts/ to add more props. +type WordpressComPost = { + title: string; + URL: string; +}; + /** * Fetch a post from WordPress.com * @@ -41,6 +49,39 @@ export const fetchWpComPost = async ( } }; +export const searchForPostsByCategory = async ( + siteId: string, + search: string, + category: string, + authToken: string +) => { + try { + const post = await fetch( + `https://public-api.wordpress.com/rest/v1.1/sites/${ siteId }/posts?${ new URLSearchParams( + { search, category } + ) }`, + { + headers: { + Authorization: `Bearer ${ authToken }`, + 'Content-Type': 'application/json', + }, + method: 'GET', + } + ); + + if ( post.status !== 200 ) { + const text = await post.text(); + throw new Error( `Error creating draft post: ${ text }` ); + } + + return ( await post.json() ).posts as WordpressComPost[]; + } catch ( e: unknown ) { + if ( e instanceof Error ) { + Logger.error( e.message ); + } + } +}; + /** * Edit a post on wordpress.com * diff --git a/tools/release-posts/lib/github-api.ts b/tools/release-posts/lib/github-api.ts index ebd3504f2f7..bbd33a2525a 100644 --- a/tools/release-posts/lib/github-api.ts +++ b/tools/release-posts/lib/github-api.ts @@ -102,3 +102,16 @@ export const getContributorData = async ( headRef, } as ContributorData; }; + +export const getMostRecentFinal = async () => { + const octokit = new Octokit( { + auth: getEnvVar( 'GITHUB_ACCESS_TOKEN', true ), + } ); + + const release = await octokit.repos.getLatestRelease( { + owner: 'woocommerce', + repo: 'woocommerce', + } ); + + return release.data; +}; diff --git a/tools/release-posts/package.json b/tools/release-posts/package.json index 5aa9f43503a..ef93f9523e8 100644 --- a/tools/release-posts/package.json +++ b/tools/release-posts/package.json @@ -18,10 +18,10 @@ "@types/ejs": "^3.1.1", "@types/express": "^4.17.13", "@types/lodash.shuffle": "^4.2.7", - "@types/node": "^18.11.18", + "@types/node": "^16.18.18", "@types/node-fetch": "^2.6.2", "@types/semver": "^7.3.10", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "dependencies": { "@commander-js/extra-typings": "^0.1.0", @@ -31,6 +31,7 @@ "commander": "9.4.0", "dotenv": "^10.0.0", "ejs": "^3.1.8", + "enquirer": "^2.3.6", "express": "^4.18.1", "form-data": "^4.0.0", "lodash.shuffle": "^4.2.0", diff --git a/tools/release-posts/templates/beta-release.ejs b/tools/release-posts/templates/beta-release.ejs new file mode 100644 index 00000000000..0494302e451 --- /dev/null +++ b/tools/release-posts/templates/beta-release.ejs @@ -0,0 +1,164 @@ + +

+ Beta <%= betaNumber %> for the <%= + finalReleaseDate.toLocaleDateString('en-US', {month: 'long', day: + 'numeric'}) %> release of WooCommerce is now available for testing! You can + either + download it directly from WordPress.org + or install our + WooCommerce Beta Tester Plugin. +

+ + + +

Highlights

+ + + +

+ Since the release of + <%= prettyPreviousVersion %>, the + following changes have been made: +

+ + + +
    + +
  • List your changes here.
  • + +
+ + + +

+ For the complete list, view the changelog in the readme for this release. +

+ + + +

Actions and Filters

+ + + +

No changes introduced.

+ + + +

Database Changes

+ + + +

No changes introduced.

+ + + +

Template Changes

+ + + +

No changes introduced.

+ + + +

Release Schedule

+ + + +

+ We're still on track for our planned <%= + finalReleaseDate.toLocaleDateString('en-US', {month: 'long', day: + 'numeric'}) %> release. +

+ + + +
+ + + + + + + + + + + + + + + +
VersionRelease
Release Candidate + <%= rcReleaseDate.toLocaleDateString('en-US', { month: + 'long', day: 'numeric', year: 'numeric' }) %> +
Final Release + <%= finalReleaseDate.toLocaleDateString('en-US', { month: + 'long', day: 'numeric', year: 'numeric' }) %> +
+
+ + + +

Testing

+ + + +

+ If you'd like to dive in and help test this new release, our handy WooCommerce Beta Tester plugin allows you to switch between beta versions and release candidates. + You can also download the release from WordPress.org. +

+ + + +

+ A set of testing instructions has been published on our Wiki page in GitHub. We've also posted a helpful writeup on beta testing to help get you started. +

+ + + +

+ If you discover any bugs during the testing process, please let us know + by logging a report in GitHub. +

+ + + +

+ diff --git a/tools/release-posts/tsconfig.json b/tools/release-posts/tsconfig.json index b49d71cfb0a..0b425cd5c54 100644 --- a/tools/release-posts/tsconfig.json +++ b/tools/release-posts/tsconfig.json @@ -1,7 +1,10 @@ { - "extends": "@tsconfig/node16/tsconfig.json", - "ts-node": { - "transpileOnly": true, - "files": true, - } + "extends": "@tsconfig/node16/tsconfig.json", + "compilerOptions": { + "module": "Node16" + }, + "ts-node": { + "transpileOnly": true, + "files": true + } } diff --git a/tools/storybook/package.json b/tools/storybook/package.json index f92289b97a8..830681a37c8 100644 --- a/tools/storybook/package.json +++ b/tools/storybook/package.json @@ -47,7 +47,7 @@ "@woocommerce/eslint-plugin": "workspace:*", "react": "^17.0.2", "react-dom": "^17.0.2", - "typescript": "^4.8.3", + "typescript": "^4.9.5", "webpack": "^5.70.0" }, "dependencies": { diff --git a/tools/version-bump/package.json b/tools/version-bump/package.json index dc206a89ec0..ad62c99f6fe 100644 --- a/tools/version-bump/package.json +++ b/tools/version-bump/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@tsconfig/node16": "^1.0.3", "@types/express": "^4.17.13", - "typescript": "^4.8.3" + "typescript": "^4.9.5" }, "dependencies": { "@commander-js/extra-typings": "^0.1.0", diff --git a/tsconfig.base.json b/tsconfig.base.json index 1968d0bd40d..45e751f95b3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -6,10 +6,8 @@ "jsx": "preserve", "target": "es6", "module": "commonjs", - "incremental": true, "declaration": true, "declarationMap": true, - "composite": true, "emitDeclarationOnly": false, "isolatedModules": true, diff --git a/turbo.json b/turbo.json index a43c31b740a..e27648a438b 100644 --- a/turbo.json +++ b/turbo.json @@ -5,7 +5,13 @@ "cache": false }, "turbo:build": { - "dependsOn": [ "build:feature-config", "^turbo:build", "$WC_ADMIN_PHASE" ], + "dependsOn": [ + "build:feature-config", + "^turbo:build" + ], + "env": [ + "WC_ADMIN_PHASE" + ], "inputs": [ "src/**/*.js", "src/**/*.jsx", @@ -40,7 +46,9 @@ }, "woocommerce/client/legacy#turbo:build": { - "dependsOn": [ "^turbo:build" ], + "dependsOn": [ + "^turbo:build" + ], "outputs": [ "../../assets/js/**", "../../assets/css/**" @@ -56,8 +64,10 @@ "woocommerce/client/admin#turbo:build": { "dependsOn": [ "build:feature-config", - "^turbo:build", - "$WC_ADMIN_PHASE" + "^turbo:build" + ], + "env": [ + "WC_ADMIN_PHASE" ], "outputs": [ "../woocommerce/assets/client/admin/**" @@ -74,7 +84,9 @@ "turbo:test": { "cache": false, - "dependsOn": [ "turbo:build" ], + "dependsOn": [ + "turbo:build" + ], "outputs": [] } }