diff --git a/.eslintrc.js b/.eslintrc.js index b84ca0f93ff..1be390543e6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,4 @@ module.exports = { + root: true, extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], }; diff --git a/.github/ISSUE_TEMPLATE/1-Security-issue.md b/.github/ISSUE_TEMPLATE/1-Security-issue.md deleted file mode 100644 index 7c78be16976..00000000000 --- a/.github/ISSUE_TEMPLATE/1-Security-issue.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: "\U0001F512 Security issue" -about: Please report security issues *only* via https://www.hackerone.com -title: '' -labels: '' -assignees: '' - ---- - -For security reasons, please report all security issues via https://hackerone.com/automattic/. Also, if the issue is valid, a bug bounty will be paid out to you. - -Please disclose responsibly and not via GitHub (which allows for exploiting issues in the wild before the patch is released). diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml new file mode 100644 index 00000000000..69cb4e1c960 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -0,0 +1,95 @@ +name: 🐞 Bug Report +description: Report a bug if something isn't working as expected in WooCommerce Core. +body: + - type: markdown + attributes: + value: | + ### Thanks for contributing! + + Please provide us with the information requested in this bug report. + Without these details, we won't be able to fully evaluate this issue. + Bug reports lacking detail, or for any other reason than to report a bug, may be closed without action. + + While our goal is to address all the issues reported in this repository, GitHub should be treated as a place to report confirmed bugs only. + - If you have a support request or custom code related question please follow one of the steps below: + - Review [WooCommerce Self-Service Guide](https://woocommerce.com/document/woocommerce-self-service-guide/) to see if the solutions listed there apply to your case; + - If you are a paying customer of WooCommerce, contact WooCommerce support by [opening a ticket or starting a live chat](https://woocommerce.com/contact-us/); + - Make a post on [WooCommerce community forum](https://wordpress.org/support/plugin/woocommerce/) + - To get help on custom code questions go to the [WooCommerce Community Slack](https://woocommerce.com/community-slack/) and visit the `#developers` channel. + + Make sure to look through the [existing `type: bug` issues](https://github.com/woocommerce/woocommerce/issues?q=is%3Aopen+is%3Aissue+label%3A%22type%3A+bug%22) to see whether your bug has already been submitted. + Feel free to contribute to any existing issues. + Search tip: You can filter our issues using [our labels](https://github.com/woocommerce/woocommerce/labels). + Search tip: Make use of [GitHub's search syntax to refine your search](https://help.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests). + - type: checkboxes + id: prerequisites + attributes: + label: Prerequisites + description: Please confirm these before submitting the issue. + options: + - label: I have carried out troubleshooting steps and I believe I have found a bug. + - label: I have searched for similar bugs in both open and closed issues and cannot find a duplicate. + validations: + required: true + - type: textarea + id: summary + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + placeholder: | + A clear and concise description of what you expected to happen. + validations: + required: true + - type: textarea + id: actual + attributes: + label: Actual behavior + placeholder: | + A clear and concise description of what actually happens. Please be as descriptive as possible; + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: Attach screenshot(s) or recording(s) directly by dragging & dropping. + placeholder: | + 1. Go to + 2. Click on + 3. Scroll down to + 4. See error + validations: + required: true + - type: textarea + id: environment + attributes: + label: WordPress Environment + description: | + We use the [WooCommerce System Status Report](https://woocommerce.com/document/understanding-the-woocommerce-system-status-report/) to help us evaluate the issue. + Without this report we won't be able to fully evaluate this issue. + placeholder: | + The System Status Report is found in your WordPress admin under **WooCommerce > Status**. + Please select “Get system report”, then “Copy for support”, and then paste it here. + validations: + required: true + - type: checkboxes + id: isolating + attributes: + label: Isolating the problem + description: | + Please try testing your site for theme and plugins conflict. + To do that deactivate all plugins except for WooCommerce and switch to a default WordPress theme or [Storefront](https://en-gb.wordpress.org/themes/storefront/). Then test again. + If the issue is resolved with the default theme and all plugins deactivated, it means that one of your plugins or a theme is causing the issue. + You will then need to enable it one by one and test every time you do that in order to figure out which plugin is causing the issue. + options: + - label: I have deactivated other plugins and confirmed this bug occurs when only WooCommerce plugin is active. + - label: This bug happens with a default WordPress theme active, or [Storefront](https://woocommerce.com/storefront/). + - label: I can reproduce this bug consistently using the steps above. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/2-External-issues.md b/.github/ISSUE_TEMPLATE/2-External-issues.md deleted file mode 100644 index 1a0543b7e98..00000000000 --- a/.github/ISSUE_TEMPLATE/2-External-issues.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "\U0001F47D External issues" -about: Please report WooCommerce Admin, WooCommerce Gutenberg Products Blocks or Action Scheduler issues directly to their respective repositories. -title: '' -labels: '' -assignees: '' - ---- - -Please report issues for the following features directly to their respective repositories. - -WooCommerce Admin: https://github.com/woocommerce/woocommerce-admin - -WooCommerce Gutenberg Products Blocks: https://github.com/woocommerce/woocommerce-gutenberg-products-block - -Action Scheduler: https://github.com/woocommerce/action-scheduler - -WooCommerce REST API Docs: https://github.com/woocommerce/woocommerce-rest-api-docs - -WooCommerce Code Reference: https://github.com/woocommerce/code-reference diff --git a/.github/ISSUE_TEMPLATE/2-enhancement.yml b/.github/ISSUE_TEMPLATE/2-enhancement.yml new file mode 100644 index 00000000000..e3fc4f7c854 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-enhancement.yml @@ -0,0 +1,33 @@ +name: ✨ Enhancement Request +description: If you have an idea to improve an existing feature in core or need something for development (such as a new hook) please let us know or submit a Pull Request! +title: "[Enhancement]: " +labels: ["type: enhancement"] +body: + - type: markdown + attributes: + value: | + ### Thanks for contributing! + + Please provide us with the information requested in this form. + + Make sure to look through [existing `type: enhancement` issues](https://github.com/woocommerce/woocommerce/issues?q=is%3Aopen+is%3Aissue+label%3A%22type%3A+enhancement%22) and [existing `votes needed` issues](https://github.com/woocommerce/woocommerce/issues?q=is%3Aissue+sort%3Areactions-%2B1-desc+label%3A%22votes+needed%22) to see whether your idea is already being discussed. + Feel free to contribute to any existing issues. + Search tip: You can filter our issues using [our enhancement label](https://github.com/woocommerce/woocommerce/issues?q=is%3Aissue+label%3A%22type%3A+enhancement%22+). + Search tip: Make use of [GitHub's search syntax to refine your search](https://help.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests). + - type: textarea + id: summary + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: true + - type: textarea + id: alternative + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + - type: textarea + id: context + attributes: + label: Additional context + description: Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/3-Support.md b/.github/ISSUE_TEMPLATE/3-Support.md deleted file mode 100644 index 3ae796e2030..00000000000 --- a/.github/ISSUE_TEMPLATE/3-Support.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: "❓ Support Question" -about: "If you have a question \U0001F4AC please see our docs or use our forums, helpdesk, - or Slack Community!" -title: '' -labels: '' -assignees: '' - ---- - -We don't offer technical support on GitHub so we recommend using the following: - -**Reading our documentation** -Usage docs can be found here: https://docs.woocommerce.com/ - -If you have a problem, you may want to start with the self help guide here: https://docs.woocommerce.com/document/woocommerce-self-service-guide/ - -**Technical support for premium extensions or if you're a WooCommerce.com customer** -Contact WooCommerce support by opening a ticket. -https://woocommerce.com/contact-us/ - -**For help with custom code** -WooCommerce Slack Community: https://woocommerce.com/community-slack/ in the `#developers` channel. - -**General usage and development questions** -- WooCommerce Slack Community: https://woocommerce.com/community-slack/ -- WordPress.org Forums: https://wordpress.org/support/plugin/woocommerce -- The Official WooCommerce Facebook Group https://www.facebook.com/groups/advanced.woocommerce/ diff --git a/.github/ISSUE_TEMPLATE/4-Bug-report.md b/.github/ISSUE_TEMPLATE/4-Bug-report.md deleted file mode 100644 index 2dfa466e5ad..00000000000 --- a/.github/ISSUE_TEMPLATE/4-Bug-report.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -name: "\U0001F41E Bug report" -about: Report a bug if something isn't working as expected in the core WooCommerce - plugin. -title: '' -labels: '' -assignees: '' - ---- - -Please provide us with the information requested in this bug report. Without these details, we won't be able to fully evaluate this issue. -Bug reports lacking detail, or for any other reason than to report a bug, may be closed without action. - - - - - - - -**Prerequisites (mark completed items with an [x]):** -- [ ] I have carried out troubleshooting steps and I believe I have found a bug. -- [ ] I have searched for similar bugs in both open and closed issues and cannot find a duplicate. - -**Describe the bug** -A clear and concise description of what the bug is. - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Actual behavior** -A clear and concise description of what actually happens. Please be as descriptive as possible; - -**Steps to reproduce the bug (We need to be able to reproduce the bug in order to fix it.)** -Steps to reproduce the bug: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Screenshots** -If applicable, add screenshots to help explain your problem. - - - -**Isolating the problem (mark completed items with an [x]):** -- [ ] I have deactivated other plugins and confirmed this bug occurs when only WooCommerce plugin is active. -- [ ] This bug happens with a default WordPress theme active, or [Storefront](https://woocommerce.com/storefront/). -- [ ] I can reproduce this bug consistently using the steps above. - -**WordPress Environment** -We use the [WooCommerce System Status Report](https://docs.woocommerce.com/document/understanding-the-woocommerce-system-status-report/) to help us evaluate the issue. -Without this report we won't be able to fully evaluate this issue. -
-``` -The System Status Report is found in your WordPress admin under **WooCommerce > Status**. -Please select “Get system report”, then “Copy for support”, and then paste it here. -``` -
diff --git a/.github/ISSUE_TEMPLATE/5-Enhancement.md b/.github/ISSUE_TEMPLATE/5-Enhancement.md deleted file mode 100644 index b616509eedd..00000000000 --- a/.github/ISSUE_TEMPLATE/5-Enhancement.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: "✨ New Enhancement" -about: If you have an idea to improve an existing feature in core or need something - for development (such as a new hook) please let us know or submit a Pull Request! -title: '' -labels: '' -assignees: '' - ---- - - - - - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/6-Feature-request.md b/.github/ISSUE_TEMPLATE/6-Feature-request.md deleted file mode 100644 index e20ce518c65..00000000000 --- a/.github/ISSUE_TEMPLATE/6-Feature-request.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: "\U0001F680 Feature request" -about: "Suggest a new feature \U0001F389 We'll consider building it if it receives - sufficient interest! \U0001F44D" -title: '' -labels: '' -assignees: '' - ---- - - - - - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000000..22aae818eee --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: true +contact_links: + - name: 🔒 Security issue + url: https://hackerone.com/automattic/ + about: For security reasons, please report all security issues via HackerOne. If the issue is valid, a bug bounty will be paid out to you. Please disclose responsibly and not via GitHub (which allows for exploiting issues in the wild before the patch is released). + - name: ❓ Support Question + url: https://woocommerce.com/document/woocommerce-self-service-guide/ + about: If you have a question please see our docs or use our forums, helpdesk, or Slack community! + - name: WooCommerce Admin + url: https://github.com/woocommerce/woocommerce-admin + about: Please report issues for WooCommerce Admin (such as Analytics and Onboarding) directly to it's repository. + - name: WooCommerce Blocks + url: https://github.com/woocommerce/woocommerce-gutenberg-products-block + about: Please report issues for WooCommerce Blocks directly to it's repository. diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 68fb656a777..2145213e988 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -52,3 +52,103 @@ jobs: pnpx wc-e2e test:e2e plugins/woocommerce/tests/e2e/specs/smoke-tests/update-woocommerce.js pnpx wc-e2e test:e2e pnpx wc-api-tests test api + + build: + name: Build zip for PR + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build + id: build + uses: woocommerce/action-build@trunk + env: + BUILD_ENV: e2e + + - name: Upload PR zip + uses: actions/upload-artifact@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + name: woocommerce + path: ${{ steps.build.outputs.zip_path }} + retention-days: 7 + + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + needs: [build] + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'woocommerce/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules + + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install + + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + run: pnpx wc-e2e docker:up + + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + + - name: Download WooCommerce ZIP. + uses: actions/download-artifact@v2 + with: + name: woocommerce + path: tmp + + - name: Extract and replace WooCommerce zip. + working-directory: tmp + run: | + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + + - name: Install dependencies again + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install + + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + GITHUB_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpx wc-e2e test:e2e plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm nx test-e2e woocommerce diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 5090b57c36b..9475a07ebda 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -105,3 +105,74 @@ jobs: E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} run: pnpm nx test-e2e woocommerce + + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'woocommerce/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules + + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install + + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + env: + LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} + run: pnpm nx docker-up woocommerce + + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + + - name: Download WooCommerce release zip + working-directory: tmp + run: | + ASSET_ID=$(jq ".release.assets[0].id" $GITHUB_EVENT_PATH) + + curl https://api.github.com/repos/woocommerce/woocommerce/releases/assets/${ASSET_ID} -LJOH 'Accept: application/octet-stream' + + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + GITHUB_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpx wc-e2e test:e2e plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm nx test-e2e woocommerce diff --git a/.gitignore b/.gitignore index b2d86e53e2a..f6fa98bdbca 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,15 @@ project.properties *.sublime-workspace .sublimelinterrc +# Grunt +none + +# Sass +.sass-cache/ + +# Logs +logs/ + # Eslint Cache .eslintcache @@ -40,13 +49,27 @@ vendor/ # TypeScript files tsconfig.tsbuildinfo +# Node Package Dependencies +package-lock.json + # wp-env config .wp-env.override.json # Unit tests -/tmp -packages/js/e2e-environment/config/default.json -packages/js/e2e-environment/docker/wp-cli/initialize.sh +tmp/ + +# Composer +vendor/ +bin/composer/**/vendor/ +lib/vendor/ +contributors.md +contributors.html + +# Yarn +yarn.lock + +# Editors +nbproject/private/ # Test Results test-results.json diff --git a/.nvmrc b/.nvmrc index dae199aecb1..6f7f377bf51 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v12 +v16 diff --git a/.stylelintrc b/.stylelintrc index 59af9ca1e9b..b727699279b 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,3 +1,3 @@ { - "extends": "stylelint-config-wordpress", + "extends": "@wordpress/stylelint-config", } diff --git a/changelog.txt b/changelog.txt index d12ab13e484..61143083cc1 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,110 @@ == Changelog == += 6.0.0 2021-12-14 = + +**WooCommerce** + +* Localization - Improve internationalization and add regions for Chile. ([#30875](https://github.com/woocommerce/woocommerce/pull/30875)) +* Localization - Add 'GB' back to countries that are recommended to use automated taxes. ([#31100](https://github.com/woocommerce/woocommerce/pull/31100)) +* Enhancement - Improve the performance of the filtering by attributes using the new lookup table. ([#31212](https://github.com/woocommerce/woocommerce/pull/31212)) +* Enhancement - Stop using options table to store rate limits. ([#30960](https://github.com/woocommerce/woocommerce/pull/30960)) +* Enhancement - Support for dynamic price period in in-app marketplace product cards. ([#31026](https://github.com/woocommerce/woocommerce/pull/31026)) +* Enhancement - warning to developers to avoid gotcha with shipping rates. ([#30958](https://github.com/woocommerce/woocommerce/pull/30958)) +* Enhancement - Add woocommerce_product_options_shipping_product_data hook to product data metabox. ([#30876](https://github.com/woocommerce/woocommerce/pull/30876)) +* Enhancement - Ensure empty arrays can be cached. ([#31077](https://github.com/woocommerce/woocommerce/pull/31077)) +* Tweak - Remove the need to invoke LookupDataStore->show_feature() to use the product attributes lookup table. ([#31228](https://github.com/woocommerce/woocommerce/pull/31228)) +* Tweak - Add new action hook woocommerce_after_variations_table after the product variations table (within the add-to-cart form). ([#29642](https://github.com/woocommerce/woocommerce/pull/29642)) +* Tweak - Email password reset link instead of password for new customers. ([#31257](https://github.com/woocommerce/woocommerce/pull/31257)) +* Tweak - Disable autocomplete on quantity input field to prevent stale values in Firefox. ([#31196](https://github.com/woocommerce/woocommerce/pull/31196)) +* Tweak - Correct the Iraqi Dinar (IQD) symbol. ([#31070](https://github.com/woocommerce/woocommerce/pull/31070)) +* Tweak - Add Product Reviews filter for review comment type to the WordPress comment page. ([#31004](https://github.com/woocommerce/woocommerce/pull/31004)) +* Tweak - has_block_template method: Add apply_filters to the function which will enable third-party plugins to override the return value. ([#30997](https://github.com/woocommerce/woocommerce/pull/30997)) +* Tweak - Clarify tooltip for when the on-hold email is sent. ([#30970](https://github.com/woocommerce/woocommerce/pull/30970)) +* Tweak - Perform check for has product archive if current theme is an FSE theme, and not just if it has current_theme_supports( 'woocommerce' ); ([#31094](https://github.com/woocommerce/woocommerce/pull/31094)) +* Tweak - Remove the absolute path to the currency-info.php from within locale-info.php. ([#30935](https://github.com/woocommerce/woocommerce/pull/30935)) +* Tweak - Update track properties to follow correct format. ([#30899](https://github.com/woocommerce/woocommerce/pull/30899)) +* Tweak - Merge Marketplace and My Subscriptions pages back into one Extensions page. ([#31085](https://github.com/woocommerce/woocommerce/pull/31085)) +* Fix - Fixes an issue that prevented database update notices from being dismissed. ([#31075](https://github.com/woocommerce/woocommerce/pull/31075)) +* Fix - Duplicate coupon usage count when order is created via admin/API and status is changed. ([#31147](https://github.com/woocommerce/woocommerce/pull/31147)) +* Fix - Corrects the display of negative refund values within the order editor screen. ([#30957](https://github.com/woocommerce/woocommerce/pull/30957)) +* Fix - Fix bug when creating REST API keys with very long descriptions. ([#30901](https://github.com/woocommerce/woocommerce/pull/30901)) +* Fix - Fix products API orderby slug and include. ([#30873](https://github.com/woocommerce/woocommerce/pull/30873)) +* Dev - Remove defunct AJAX events. ([#30931](https://github.com/woocommerce/woocommerce/pull/30931)) + +**WooCommerce Admin - 2.9.0 & 2.9.1 & 2.9.2 ** + +* Dev - Remove task status endpoint ( [#7841](https://github.com/woocommerce/woocommerce-admin/issues/7841) ) +* Fix - Fix ordering and styling issue with WooCommerce Payments payment method promotion. ( [#7943](https://github.com/woocommerce/woocommerce-admin/issues/7943) ) +* Fix - Fix ExPlat PHP client ( [#7926](https://github.com/woocommerce/woocommerce-admin/issues/7926) ) +* Fix - Fix marketing extensions tracks ( [#7908](https://github.com/woocommerce/woocommerce-admin/issues/7908) ) +* Fix - Fix shipping task completion status ( [#8031](https://github.com/woocommerce/woocommerce-admin/issues/8031) ) +* Update - Increased number of possible items in Recommended Extensions list from 6 to 9 ( [#7887](https://github.com/woocommerce/woocommerce-admin/issues/7887) ) +* Update - Reverts addition of Marketplace and My Subscriptions pages to the Marketplace menu. ( [#7902](https://github.com/woocommerce/woocommerce-admin/issues/7902) ) +* Update - Add marketing extensions back to onboarding wizard ( [#7831](https://github.com/woocommerce/woocommerce-admin/issues/7831) ) +* Update - Add profile notes. ( [#7861](https://github.com/woocommerce/woocommerce-admin/issues/7861) ) +* Update - Change CTA text for personalize store task after completion ( [#7852](https://github.com/woocommerce/woocommerce-admin/issues/7852) ) +* Update - Refactor data source poller for re-usability. ( [#7671](https://github.com/woocommerce/woocommerce-admin/issues/7671) ) +* Update - Update WC Pay card to include in-person information ( [#7830](https://github.com/woocommerce/woocommerce-admin/issues/7830) ) +* Update - Updating navigation link colors ( [#7833](https://github.com/woocommerce/woocommerce-admin/issues/7833) ) +* Tweak - Use page title Extensions for Marketplace and My Subscriptions pages. ( [#7901](https://github.com/woocommerce/woocommerce-admin/issues/7901) ) +* Tweak - Remove the Spinner component to prevent undesired page flickering. ( [#7886](https://github.com/woocommerce/woocommerce-admin/issues/7886) ) +* Tweak - Add route and layout for unmatched path ( [#7503](https://github.com/woocommerce/woocommerce-admin/issues/7503) ) +* Tweak - Avoid caching extended info ( [#7819](https://github.com/woocommerce/woocommerce-admin/issues/7819) ) +* Tweak - Minor design update for Marketing task. ( [#7732](https://github.com/woocommerce/woocommerce-admin/issues/7732) ) +* Fix - Do not clear `current` class from the entire page when updating wp-admin's menu. ( [#7773](https://github.com/woocommerce/woocommerce-admin/issues/7773) ) +* Fix - Fix calendar not being dismissed when clicking outside. ( [#7714](https://github.com/woocommerce/woocommerce-admin/issues/7714) ) +* Fix - fixed warnings when using AdvancedFilters component. ( [#7704](https://github.com/woocommerce/woocommerce-admin/issues/7704) ) +* Fix - Fix Tasklist UI illustrations styling ( [#7858](https://github.com/woocommerce/woocommerce-admin/issues/7858) ) +* Fix - Revert experiment task titles back to original ( [#7853](https://github.com/woocommerce/woocommerce-admin/issues/7853) ) +* Fix - Ensure homescreen defaults to single column layout. ( [#7969](https://github.com/woocommerce/woocommerce-admin/issues/7969) ) +* Fix: Fix shipping task not offering step 3. ( [#7985](https://github.com/woocommerce/woocommerce-admin/issues/7985) ) +* Add - Add Avalara to tax task ( [#7874](https://github.com/woocommerce/woocommerce-admin/issues/7874) ) +* Add - Add 2col expirement. ( [#7872](https://github.com/woocommerce/woocommerce-admin/issues/7872) ) +* Add - Added two column experimental task list ( [#7669](https://github.com/woocommerce/woocommerce-admin/issues/7669) ) +* Add - Add header cards for all tasks in Tasklist UI experiment ( [#7838](https://github.com/woocommerce/woocommerce-admin/issues/7838) ) +* Add - Add onboarding task docs ( [#7762](https://github.com/woocommerce/woocommerce-admin/issues/7762) ) +* Dev - Add method to check for install status ( [#7808](https://github.com/woocommerce/woocommerce-admin/issues/7808) ) +* Dev - Refactor tax task into separate components +* Dev - Update the task list to use the new task list REST API ( [#7736](https://github.com/woocommerce/woocommerce-admin/issues/7736) ) +* Performance - Only load default tasks during REST requests ( [#7904](https://github.com/woocommerce/woocommerce-admin/issues/7904) ) + +**WooCommerce Blocks - 6.2.0 & 6.3.0 & 6.3.1 & 6.3.2** + +* Enhancement - Legacy Template Block: allow users to delete the block. ( [#5176](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5176) ) +* Enhancement - Add placeholder text when modifying product search input in the editor. ( [#5122](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5122) ) +* Enhancement - FSE: Add basic product archive block template. ( [#5049](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5049) ) +* Enhancement - FSE: Add basic taxonomy block templates. ( [#5063](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5063) ) +* Enhancement - FSE: Add single product block template. ( [#5054](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5054) ) +* Enhancement - FSE: Remove the do_action( ‘woocommerce_sidebar’ ); action from the LegacyTemplate.php block. ( [#5097](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5097) ) +* Enhancement - Fix duplicate queries in product grids. ( [#5002](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5002) ) +* Enhancement - FSE: Add abstract block legacy template for core PHP templates. ( [#4991](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4991) ) +* Enhancement - FSE: Add render logic to BlockTemplateController. ( [#4984](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4984) ) +* Enhancement - Improve accessibility by using self-explaining edit button titles. ( [#5113](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5113) ) +* Enhancement - Improve readability of terms and condition text by not displaying the text justified. ( [#5120](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5120) ) +* Enhancement - Improve rendering performance for Single Product block. ( [#5107](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5107) ) +* Enhancement - Improve the product images placeholder display by adding a light gray border to it. ( [#4950](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4950) ) +* Enhancement - Deprecate the __experimental_woocommerce_blocks_checkout_update_order_from_request action in favour of woocommerce_blocks_checkout_update_order_from_request. ( [#5015](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5015) ) +* Enhancement - Deprecate the __experimental_woocommerce_blocks_checkout_update_order_meta action in favour of woocommerce_blocks_checkout_update_order_meta. ( [#5017](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5017) ) +* Enhancement - Deprecate the __experimental_woocommerce_blocks_checkout_order_processed action in favour of woocommerce_blocks_checkout_order_processed. ( [#5014](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5014) ) +* Enhancement - Cart v2: The cart block, like checkout block, now supports inner blocks that allow for greater customizability. ( [#4973](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4973) ) +* Enhancement - BlockTemplateController: Adds the ability to load and manage block template files. ( [#4981](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4981) ) +* Enhancement - Improve accessibility for the editor view of the Product search block. ( [#4905](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4905) ) +* Fix - Removed WooCommerce block templates from appearing in the template dropdown for a page or post. ( [#5167](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5167) ) +* Fix - Fix ‘Country is required’ error on the Cart block when updating shipping address ( [#5129](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5129) ) +* Fix - Fix state validation to compare state codes, and only validate if a country is given ( [#5132](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5132) ) +* Fix - Make order note block removable ( [#5139](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5139) ) +* Fix - Fix label alignment of the product search in the editor. ( [#5072](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5072) ) +* Fix - Fix sale badge alignment on smaller screen. ( [#5061](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5061) ) +* Fix - FSE: Fix missing is_custom property for WooCommerce block template objects. ( [#5067](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5067) ) +* Fix - Replace incorrect with correct text domain. ( [#5020](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5020) ) +* Fix - Scripts using wc-settings or script that depend on it would be enqueued in the footer if they’re enqueued in the header. ( [#5059](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5059) ) +* Fix - Fix custom classname support for inner checkout blocks. ( [#4978](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4978) ) +* Fix - Fix a bug in free orders and trial subscription products. ( [#4955](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4955) ) +* Fix - Remove duplicate attributes in saved block HTML. ( [#4941](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4941) ) +* Fix - Fix render error of Filter by Attribute block when no attribute is selected. ( [#4847](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4847) ) +* Fix - Store API – Ensure returned customer address state is valid. ( [#4844](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4844) ) +* Fix - fatal error in certain WP 5.9 pre-release versions. ( [#5183](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5183) ) + = 5.9.0 2021-11-09 = **WooCommerce** diff --git a/package.json b/package.json index 8591d1464ec..654f1c1891a 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,12 @@ }, "devDependencies": { "@automattic/nx-composer": "^0.1.0", - "@nrwl/cli": "latest", - "@nrwl/linter": "^13.1.4", - "@nrwl/tao": "latest", - "@nrwl/web": "^13.1.4", - "@nrwl/workspace": "latest", + "@nrwl/cli": "^13.3.4", + "@nrwl/linter": "^13.3.4", + "@nrwl/devkit": "^13.1.4", + "@nrwl/tao": "13.3.4", + "@nrwl/web": "^13.3.4", + "@nrwl/workspace": "^13.3.4", "@types/node": "14.14.33", "@woocommerce/eslint-plugin": "^1.3.0", "@wordpress/prettier-config": "^1.1.1", diff --git a/packages/js/api-core-tests/CHANGELOG.md b/packages/js/api-core-tests/CHANGELOG.md index b5b48f0121b..482fc7ceaec 100644 --- a/packages/js/api-core-tests/CHANGELOG.md +++ b/packages/js/api-core-tests/CHANGELOG.md @@ -3,6 +3,7 @@ ## Added - Shipping Zones API Tests - Shipping Methods API Tests +- Complex Order API Tests # 0.1.0 diff --git a/packages/js/api-core-tests/data/index.js b/packages/js/api-core-tests/data/index.js index c639ee9e217..cd4486f553e 100644 --- a/packages/js/api-core-tests/data/index.js +++ b/packages/js/api-core-tests/data/index.js @@ -1,6 +1,16 @@ const { order, getOrderExample } = require( './order' ); const { coupon } = require( './coupon' ); const { refund } = require( './refund' ); +const { getTaxRateExamples } = require( './tax-rate' ); +const { getVariationExample } = require( './variation' ); +const { + simpleProduct, + variableProduct, + variation, + virtualProduct, + groupedProduct, + externalProduct, +} = require( './products-crud' ); const { getShippingZoneExample } = require( './shipping-zone' ); const { getShippingMethodExample } = require( './shipping-method' ); const shared = require( './shared' ); @@ -11,6 +21,14 @@ module.exports = { coupon, shared, refund, + getTaxRateExamples, + getVariationExample, + simpleProduct, + variableProduct, + variation, + virtualProduct, + groupedProduct, + externalProduct, getShippingZoneExample, getShippingMethodExample, }; diff --git a/packages/js/api-core-tests/data/products-crud.js b/packages/js/api-core-tests/data/products-crud.js index b42b4deb2a6..18cb8e076cf 100644 --- a/packages/js/api-core-tests/data/products-crud.js +++ b/packages/js/api-core-tests/data/products-crud.js @@ -54,8 +54,27 @@ const variableProduct = { ], }; +/** + * External product example + */ +const externalProduct = { + name: 'An External Product', + regular_price: '1.00', + type: 'external', +}; + +/** + * Grouped product example + */ +const groupedProduct = { + name: 'A Grouped Product', + type: 'grouped', +}; + module.exports = { simpleProduct, virtualProduct, variableProduct, + externalProduct, + groupedProduct, }; diff --git a/packages/js/api-core-tests/data/tax-rate.js b/packages/js/api-core-tests/data/tax-rate.js new file mode 100644 index 00000000000..670f6ca76b4 --- /dev/null +++ b/packages/js/api-core-tests/data/tax-rate.js @@ -0,0 +1,33 @@ +/** + * A standard tax rate. + * + * For more details on the tax rate properties, see: + * + * https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rate-properties + * + */ +const standardTaxRate = { + name: 'Standard Rate', + rate: '10.0000', + class: 'standard', +}; + +const reducedTaxRate = { + name: 'Reduced Rate', + rate: '1.0000', + class: 'reduced-rate', +}; + +const zeroTaxRate = { + name: 'Zero Rate', + rate: '0.0000', + class: 'zero-rate', +}; + +const getTaxRateExamples = () => { + return { standardTaxRate, reducedTaxRate, zeroTaxRate }; +}; + +module.exports = { + getTaxRateExamples, +}; diff --git a/packages/js/api-core-tests/data/variation.js b/packages/js/api-core-tests/data/variation.js new file mode 100644 index 00000000000..465a71248b0 --- /dev/null +++ b/packages/js/api-core-tests/data/variation.js @@ -0,0 +1,29 @@ +/** + * A basic product variation. + * + * For more details on the product variation properties, see: + * + * https://woocommerce.github.io/woocommerce-rest-api-docs/#product-variations + * + */ +const variation = { + regular_price: '1.00', + attributes: [ + { + name: 'Size', + option: 'Large', + }, + { + name: 'Colour', + option: 'Red', + }, + ], +}; + +const getVariationExample = () => { + return variation; +}; + +module.exports = { + getVariationExample, +}; diff --git a/packages/js/api-core-tests/endpoints/index.js b/packages/js/api-core-tests/endpoints/index.js index 0d3de1af7f1..639125b0fe2 100644 --- a/packages/js/api-core-tests/endpoints/index.js +++ b/packages/js/api-core-tests/endpoints/index.js @@ -2,6 +2,8 @@ const { ordersApi } = require( './orders' ); const { couponsApi } = require( './coupons' ); const { productsApi } = require( './products' ); const { refundsApi } = require( './refunds' ); +const { taxRatesApi } = require( './tax-rates' ); +const { variationsApi } = require( './variations' ); const { shippingZonesApi } = require( './shipping-zones' ); const { shippingMethodsApi } = require( './shipping-methods' ); @@ -10,6 +12,8 @@ module.exports = { couponsApi, productsApi, refundsApi, + taxRatesApi, + variationsApi, shippingZonesApi, shippingMethodsApi, }; diff --git a/packages/js/api-core-tests/endpoints/tax-rates.js b/packages/js/api-core-tests/endpoints/tax-rates.js new file mode 100644 index 00000000000..cfe86f8e7ea --- /dev/null +++ b/packages/js/api-core-tests/endpoints/tax-rates.js @@ -0,0 +1,73 @@ +/** + * Internal dependencies + */ +const { + getRequest, + postRequest, + putRequest, + deleteRequest, +} = require( '../utils/request' ); +const { getTaxRateExamples, shared } = require( '../data' ); + +/** + * WooCommerce Tax Rates endpoints. + * + * https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rates + */ +const taxRatesApi = { + name: 'Tax Rates', + create: { + name: 'Create a tax rate', + method: 'POST', + path: 'taxes', + responseCode: 201, + payload: getTaxRateExamples(), + taxRate: async ( taxRate ) => postRequest( 'taxes', taxRate ), + }, + retrieve: { + name: 'Retrieve a tax rate', + method: 'GET', + path: 'taxes/', + responseCode: 200, + taxRate: async ( taxRateId ) => taxes( `coupons/${ taxRateId }` ), + }, + listAll: { + name: 'List all tax rates', + method: 'GET', + path: 'taxes', + responseCode: 200, + taxRates: async ( queryString = {} ) => + getRequest( 'taxes', queryString ), + }, + update: { + name: 'Update a tax rate', + method: 'PUT', + path: 'taxes/', + responseCode: 200, + payload: getTaxRateExamples(), + taxRate: async ( taxRateId, taxRateDetails ) => + putRequest( `taxes/${ taxRateId }`, taxRateDetails ), + }, + delete: { + name: 'Delete a tax rate', + method: 'DELETE', + path: 'taxes/', + responseCode: 200, + payload: { + force: false, + }, + taxRate: async ( taxRateId, deletePermanently ) => + deleteRequest( `taxes/${ taxRateId }`, deletePermanently ), + }, + batch: { + name: 'Batch update tax rates', + method: 'POST', + path: 'taxes/batch', + responseCode: 200, + payload: shared.getBatchPayloadExample( getTaxRateExamples() ), + taxRates: async ( batchUpdatePayload ) => + postRequest( `taxes/batch`, batchUpdatePayload ), + }, +}; + +module.exports = { taxRatesApi }; diff --git a/packages/js/api-core-tests/endpoints/variations.js b/packages/js/api-core-tests/endpoints/variations.js new file mode 100644 index 00000000000..816910a4872 --- /dev/null +++ b/packages/js/api-core-tests/endpoints/variations.js @@ -0,0 +1,84 @@ +/** + * Internal dependencies + */ +const { + getRequest, + postRequest, + putRequest, + deleteRequest, +} = require( '../utils/request' ); +const { getVariationExample, shared } = require( '../data' ); + +/** + * WooCommerce Product Variation endpoints. + * + * https://woocommerce.github.io/woocommerce-rest-api-docs/#product-variations + */ +const variationsApi = { + name: 'Product variations', + create: { + name: 'Create a product variation', + method: 'POST', + path: 'products//variations', + responseCode: 201, + payload: getVariationExample(), + variation: async ( productId, variation ) => + postRequest( `products/${ productId }/variations`, variation ), + }, + retrieve: { + name: 'Retrieve a product variation', + method: 'GET', + path: 'products//variations/', + responseCode: 200, + variation: async ( productId, variationId ) => + `products/${ productId }/variations/${ variationId }`, + }, + listAll: { + name: 'List all product variations', + method: 'GET', + path: 'products//variations', + responseCode: 200, + variations: async ( productId, queryString = {} ) => + getRequest( `products/${ productId }/variations`, queryString ), + }, + update: { + name: 'Update a product variation', + method: 'PUT', + path: 'products//variations/', + responseCode: 200, + payload: getVariationExample(), + variation: async ( productId, variationId, variationDetails ) => + putRequest( + `products/${ productId }/variations/${ variationId }`, + taxRateDetails + ), + }, + delete: { + name: 'Delete a product variation', + method: 'DELETE', + path: 'products//variations/', + responseCode: 200, + payload: { + force: false, + }, + variation: async ( productId, variationId, deletePermanently ) => + deleteRequest( + `products/${ productId }/variations/${ variationId }`, + deletePermanently + ), + }, + batch: { + name: 'Batch update product variations', + method: 'POST', + path: 'products//variations/batch', + responseCode: 200, + payload: shared.getBatchPayloadExample( getVariationExample() ), + variations: async ( batchUpdatePayload ) => + postRequest( + `products/${ productId }/variations/${ variationId }`, + batchUpdatePayload + ), + }, +}; + +module.exports = { variationsApi }; diff --git a/packages/js/api-core-tests/package.json b/packages/js/api-core-tests/package.json index 64406839e25..a7ae4d39bce 100644 --- a/packages/js/api-core-tests/package.json +++ b/packages/js/api-core-tests/package.json @@ -4,6 +4,7 @@ "description": "API tests for WooCommerce", "main": "index.js", "scripts": { + "preinstall": "npx only-allow pnpm", "test": "jest", "test:api": "jest --group=api", "test:hello": "jest --group=hello", diff --git a/packages/js/api-core-tests/project.json b/packages/js/api-core-tests/project.json index 1b27a1e913d..5b24a0c67b7 100644 --- a/packages/js/api-core-tests/project.json +++ b/packages/js/api-core-tests/project.json @@ -1,31 +1,38 @@ { - "root": "packages/js/api-core-tests/", - "sourceRoot": "packages/js/api-core-tests", - "projectType": "library", - "targets": { - "test": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test" - } - }, - "test-hello": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:hello" - } - }, - "make-collection": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "make:collection" - } - }, - "test-api": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:api" - } - } - } + "root": "packages/js/api-core-tests/", + "sourceRoot": "packages/js/api-core-tests", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/api-core-tests" + } + }, + "test": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test" + } + }, + "test-hello": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:hello" + } + }, + "make-collection": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "make:collection" + } + }, + "test-api": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:api" + } + } + } } diff --git a/packages/js/api-core-tests/tests/orders/order-complex.test.js b/packages/js/api-core-tests/tests/orders/order-complex.test.js new file mode 100644 index 00000000000..ccc6d50678b --- /dev/null +++ b/packages/js/api-core-tests/tests/orders/order-complex.test.js @@ -0,0 +1,208 @@ +const { + taxRatesApi, + productsApi, + ordersApi, + variationsApi, +} = require( '../../endpoints' ); +const { + getOrderExample, + getTaxRateExamples, + getVariationExample, + simpleProduct: defaultSimpleProduct, + variableProduct: defaultVariableProduct, + groupedProduct: defaultGroupedProduct, + externalProduct: defaultExternalProduct, +} = require( '../../data' ); + +/** + * Simple product with Standard tax rate + */ +const simpleProduct = { + ...defaultSimpleProduct, + regular_price: '10.00', + tax_class: 'standard', +}; + +/** + * Variable product with 1 variation with Reduced tax rate + */ +const variableProduct = { + ...defaultVariableProduct, + tax_class: 'reduced-rate', +}; + +const variation = { + ...getVariationExample(), + regular_price: '20.00', + tax_class: 'reduced-rate', +}; + +/** + * External product with Zero rate tax + */ +const externalProduct = { + ...defaultExternalProduct, + regular_price: '400.00', + tax_class: 'zero-rate', +}; + +/** + * Grouped product + */ +const groupedProduct = defaultGroupedProduct; + +/** + * Tax rates for each tax class + */ +const { standardTaxRate, reducedTaxRate, zeroTaxRate } = getTaxRateExamples(); + +/** + * Delete all pre-existing tax rates. + */ +const deletePreExistingTaxRates = async () => { + const { body } = await taxRatesApi.listAll.taxRates( { + _fields: 'id', + } ); + + if ( Array.isArray( body ) && body.length > 0 ) { + const ids = body.map( ( { id } ) => id ); + await taxRatesApi.batch.taxRates( { delete: ids } ); + } +}; + +/** + * Create a tax rate for each tax class, and save their ID's. + */ +const createTaxRates = async () => { + const taxRates = [ standardTaxRate, reducedTaxRate, zeroTaxRate ]; + + for ( const taxRate of taxRates ) { + const { body } = await taxRatesApi.create.taxRate( taxRate ); + taxRate.id = body.id; + } +}; + +/** + * Create simple, variable, grouped, and external products. + */ +const createProducts = async () => { + // Create a simple product + const { body: createdSimpleProduct } = await productsApi.create.product( + simpleProduct + ); + simpleProduct.id = createdSimpleProduct.id; + + // Create a variable product with 1 variation + const { body: createdVariableProduct } = await productsApi.create.product( + variableProduct + ); + variableProduct.id = createdVariableProduct.id; + await variationsApi.create.variation( variableProduct.id, variation ); + + // Create a grouped product using the simple product created earlier. + groupedProduct.grouped_products = [ simpleProduct.id ]; + const { body: createdGroupedProduct } = await productsApi.create.product( + groupedProduct + ); + groupedProduct.id = createdGroupedProduct.id; + + // Create an external product + const { body: createdExternalProduct } = await productsApi.create.product( + externalProduct + ); + externalProduct.id = createdExternalProduct.id; +}; + +/** + * The complex order to be created. + */ +const order = { + ...getOrderExample(), + shipping_lines: [], + fee_lines: [], + coupon_lines: [], + line_items: [], +}; + +/** + * Expected totals + */ +const expectedOrderTotal = '442.20'; +const expectedTaxTotal = '2.20'; +const expectedSimpleProductTaxTotal = '1.00'; +const expectedVariableProductTaxTotal = '0.20'; +const expectedExternalProductTaxTotal = '0.00'; + +/** + * + * Test for adding a complex order with different product types and tax classes. + * + * @group api + * @group orders + * + */ +describe( 'Orders API test', () => { + beforeAll( async () => { + await deletePreExistingTaxRates(); + await createTaxRates(); + await createProducts(); + + // Add line items to the order + order.line_items = [ + { product_id: simpleProduct.id }, + { product_id: variableProduct.id }, + { product_id: externalProduct.id }, + { product_id: groupedProduct.id }, + ]; + } ); + + afterAll( async () => { + // Delete order + await ordersApi.delete.order( order.id, true ); + + // Delete products + await productsApi.batch.products( { + delete: [ + simpleProduct.id, + variableProduct.id, + externalProduct.id, + groupedProduct.id, + ], + } ); + + // Delete tax rates + await taxRatesApi.batch.taxRates( { + delete: [ standardTaxRate.id, zeroTaxRate.id, reducedTaxRate.id ], + } ); + } ); + + it( 'can add complex order', async () => { + // Create the complex order and save its ID. + const { status, body } = await ordersApi.create.order( order ); + order.id = body.id; + + expect( status ).toEqual( ordersApi.create.responseCode ); + + // Verify order and tax totals + expect( body.total ).toEqual( expectedOrderTotal ); + expect( body.total_tax ).toEqual( expectedTaxTotal ); + + // Verify total tax of each product line item + const expectedTaxTotalsPerLineItem = [ + [ simpleProduct, expectedSimpleProductTaxTotal ], + [ variableProduct, expectedVariableProductTaxTotal ], + [ groupedProduct, expectedSimpleProductTaxTotal ], + [ externalProduct, expectedExternalProductTaxTotal ], + ]; + for ( const [ + product, + expectedLineTaxTotal, + ] of expectedTaxTotalsPerLineItem ) { + const { total_tax: actualLineTaxTotal } = body.line_items.find( + ( { product_id } ) => product_id === product.id + ); + + expect( actualLineTaxTotal ).toEqual( expectedLineTaxTotal ); + } + } ); +} ); diff --git a/packages/js/api/.gitignore b/packages/js/api/.gitignore deleted file mode 100644 index e22a3150198..00000000000 --- a/packages/js/api/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Editors -/nbproject/private/ diff --git a/packages/js/api/package.json b/packages/js/api/package.json index 56388920230..eded9fafdd6 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -26,6 +26,7 @@ ], "sideEffects": false, "scripts": { + "preinstall": "npx only-allow pnpm", "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", "compile": "tsc -b", "build": "pnpm run clean && npm run compile", diff --git a/packages/js/api/project.json b/packages/js/api/project.json index 68d0a0cdbad..e4022469b78 100644 --- a/packages/js/api/project.json +++ b/packages/js/api/project.json @@ -1,43 +1,50 @@ { - "root": "packages/js/api/", - "sourceRoot": "packages/js/api/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build" - } - }, - "clean": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "clean" - } - }, - "compile": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "compile" - } - }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, - "lint": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "lint" - } - }, - "test": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test" - } - } - } + "root": "packages/js/api/", + "sourceRoot": "packages/js/api/src", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/api" + } + }, + "build": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build" + } + }, + "clean": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "clean" + } + }, + "compile": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "compile" + } + }, + "prepare": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "prepare" + } + }, + "lint": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "lint" + } + }, + "test": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test" + } + } + } } diff --git a/packages/js/e2e-core-tests/CHANGELOG.md b/packages/js/e2e-core-tests/CHANGELOG.md index d0a15fbe6e0..03eebaf6d20 100644 --- a/packages/js/e2e-core-tests/CHANGELOG.md +++ b/packages/js/e2e-core-tests/CHANGELOG.md @@ -4,6 +4,7 @@ - A `specs/data` folder to store page element data. - Tests to verify that different top-level menu and their associated sub-menus load successfully. +- Test scaffolding via `npx wc-e2e install @woocommerce/e2e-core-tests` ## Changed diff --git a/packages/js/e2e-core-tests/README.md b/packages/js/e2e-core-tests/README.md index 1c48455197b..1252c3b9274 100644 --- a/packages/js/e2e-core-tests/README.md +++ b/packages/js/e2e-core-tests/README.md @@ -20,6 +20,18 @@ Follow [E2E setup instructions](https://github.com/woocommerce/woocommerce/blob/ ### Setting up core tests +#### Version 0.2.0 or newer + +Version 0.2.0 added a test installer that will populate the `tests/e2e/specs` folder with test scripts for all the current core test suite. It also creates sample configuration files including all the configuration data needed to run the core tests. + +- Install the e2e-environment `npm install @woocommerce/e2e-environment --save-dev` +- Run the installer `npx wc-e2e install @woocommerce/e2e-core-tests` +- Merge the sample configuration files: + - `tests/e2e/docker/woocommerce.e2e-core-tests.sh` => `initialize.sh` + - `tests/e2e/config/default-woocommerce.e2e-core-tests.json` => `default.json` + +#### Version 0.1.X or other test runner + - Create the folder `tests/e2e/specs` in your repository if it does not exist. - To add a core test to your test suite, create a new `.test.js` file within `tests/e2e/specs` . Example code to run all the shopper tests: ```js @@ -104,7 +116,7 @@ The functions to access the core tests are: ## Contributing a new test -- In your branch create a new `example-test-name.test.js` under the `tests/e2e/core-tests/specs` folder. +- In your branch create a new `example-test-name.test.js` under the appropriate folder in the [`specs`](specs) directory. - Jest does not allow its global functions to be accessed outside the jest environment. To allow the test code to be published in a package import any jest global functions used in your test ```js const { @@ -130,7 +142,7 @@ const runExampleTestName = () => { module.exports = runExampleTestName; ``` -- Add your test to `tests/e2e/core-tests/specs/index.js` +- Add your test to [`specs/index.js`](specs/index.js) ```js const runExampleTestName = require( './grouping/example-test-name.test' ); // ... diff --git a/packages/js/e2e-core-tests/installFiles/default-test-config.json b/packages/js/e2e-core-tests/installFiles/default-test-config.json new file mode 100644 index 00000000000..c67465ed4ba --- /dev/null +++ b/packages/js/e2e-core-tests/installFiles/default-test-config.json @@ -0,0 +1,195 @@ +{ + "url": "http://localhost:8084/", + "users": { + "admin": { + "username": "admin", + "password": "password" + }, + "customer": { + "username": "customer", + "password": "password" + } + }, + "products": { + "simple": { + "name": "Simple product" + }, + "variable": { + "name": "Variable Product with Three Attributes", + "defaultAttributes": [ + { + "id": 0, + "name": "Size", + "option": "Medium" + }, + { + "id": 0, + "name": "Colour", + "option": "Blue" + } + ], + "attributes": [ + { + "id": 0, + "name": "Colour", + "isVisibleOnProductPage": true, + "isForVariations": true, + "options": [ + "Red", + "Green", + "Blue" + ], + "sortOrder": 0 + }, + { + "id": 0, + "name": "Size", + "isVisibleOnProductPage": true, + "isForVariations": true, + "options": [ + "Small", + "Medium", + "Large" + ], + "sortOrder": 0 + }, + { + "id": 0, + "name": "Logo", + "isVisibleOnProductPage": true, + "isForVariations": true, + "options": [ + "Woo", + "WordPress" + ], + "sortOrder": 0 + } + ] + }, + "variations": [ + { + "regularPrice": "19.99", + "attributes": [ + { + "name": "Size", + "option": "Large" + }, + { + "name": "Colour", + "option": "Red" + } + ] + }, + { + "regularPrice": "18.99", + "attributes": [ + { + "name": "Size", + "option": "Medium" + }, + { + "name": "Colour", + "option": "Green" + } + ] + }, + { + "regularPrice": "17.99", + "attributes": [ + { + "name": "Size", + "option": "Small" + }, + { + "name": "Colour", + "option": "Blue" + } + ] + } + ], + "grouped": { + "name": "Grouped Product with Three Children", + "groupedProducts": [ + { + "name": "Base Unit", + "regularPrice": "29.99" + }, + { + "name": "Add-on A", + "regularPrice": "11.95" + }, + { + "name": "Add-on B", + "regularPrice": "18.97" + } + ] + }, + "external": { + "name": "External product", + "regularPrice": "24.99", + "buttonText": "Buy now", + "externalUrl": "https://wordpress.org/plugins/woocommerce" + } + }, + "coupons": { + "percentage": { + "code": "20percent", + "discountType": "percent", + "amount": "20.00" + } + }, + "addresses": { + "admin": { + "store": { + "email": "admin@woocommercecoree2etestsuite.com", + "firstname": "John", + "lastname": "Doe", + "company": "Automattic", + "country": "United States (US)", + "addressfirstline": "addr 1", + "addresssecondline": "addr 2", + "countryandstate": "United States (US) — California", + "city": "San Francisco", + "state": "CA", + "postcode": "94107" + } + }, + "customer": { + "billing": { + "firstname": "John", + "lastname": "Doe", + "company": "Automattic", + "country": "United States (US)", + "addressfirstline": "addr 1", + "addresssecondline": "addr 2", + "city": "San Francisco", + "state": "CA", + "postcode": "94107", + "phone": "123456789", + "email": "john.doe@example.com" + }, + "shipping": { + "firstname": "John", + "lastname": "Doe", + "company": "Automattic", + "country": "United States (US)", + "addressfirstline": "addr 1", + "addresssecondline": "addr 2", + "city": "San Francisco", + "state": "CA", + "postcode": "94107" + } + } + }, + "orders": { + "basicPaidOrder": { + "paymentMethod": "cod", + "status": "processing", + "billing": { + "firstName": "John", + "lastName": "Doe", + "email": "john.doe@example.com" + } + } + } +} diff --git a/packages/js/e2e-core-tests/installFiles/index.js b/packages/js/e2e-core-tests/installFiles/index.js new file mode 100644 index 00000000000..6601661582c --- /dev/null +++ b/packages/js/e2e-core-tests/installFiles/index.js @@ -0,0 +1,5 @@ +module.exports = { + testSpecs: 'installFiles/scaffold-tests.json', + defaultJson: 'installFiles/default-test-config.json', + initializeSh: 'installFiles/initialize.sh.default', +}; diff --git a/packages/js/e2e-core-tests/installFiles/initialize.sh.default b/packages/js/e2e-core-tests/installFiles/initialize.sh.default new file mode 100755 index 00000000000..7c0ab8f9991 --- /dev/null +++ b/packages/js/e2e-core-tests/installFiles/initialize.sh.default @@ -0,0 +1,25 @@ +#!/bin/bash + +echo "Initializing WooCommerce E2E" + +# This is a workaround to accommodate different directory names. +wp plugin activate --all +wp plugin deactivate akismet +wp plugin deactivate hello + +wp theme install twentynineteen --activate +wp user create customer customer@woocommercecoree2etestsuite.com \ + --user_pass=password \ + --role=subscriber \ + --first_name='Jane' \ + --last_name='Smith' \ + --path=/var/www/html + +# we cannot create API keys for the API, so we using basic auth, this plugin allows that. +wp plugin install https://github.com/WP-API/Basic-Auth/archive/master.zip --activate + +# install the WP Mail Logging plugin to test emails +wp plugin install wp-mail-logging --activate + +# initialize pretty permalinks +wp rewrite structure /%postname%/ diff --git a/packages/js/e2e-core-tests/installFiles/scaffold-tests.json b/packages/js/e2e-core-tests/installFiles/scaffold-tests.json new file mode 100644 index 00000000000..7d95b03587d --- /dev/null +++ b/packages/js/e2e-core-tests/installFiles/scaffold-tests.json @@ -0,0 +1,138 @@ +{ + "active": [ + { + "name": "front-end", + "description": "Shopper tests", + "testFiles": [ + { + "name": "cart-begin", + "functions": [ "runCartPageTest" ] + }, { + "name": "cart-calculate-shipping", + "functions": [ "runCartCalculateShippingTest" ] + }, { + "name": "cart-coupons", + "functions": [ "runCartApplyCouponsTest" ] + }, { + "name": "checkout-begin", + "functions": [ "runCheckoutPageTest" ] + }, { + "name": "checkout-coupons", + "functions": [ "runCheckoutApplyCouponsTest" ] + }, { + "name": "checkout-create-account", + "functions": [ "runCheckoutCreateAccountTest" ] + }, { + "name": "checkout-login-account", + "functions": [ "runCheckoutLoginAccountTest" ] + }, { + "name": "my-account-create-account", + "functions": [ "runMyAccountCreateAccountTest" ] + }, { + "name": "my-account-pay-order", + "functions": [ "runMyAccountPayOrderTest" ] + }, { + "name": "my-account", + "functions": [ "runMyAccountPageTest" ] + }, { + "name": "order-email-receiving", + "functions": [ "runOrderEmailReceivingTest" ] + }, { + "name": "product-browse-search-sort", + "functions": [ "runProductBrowseSearchSortTest" ] + }, { + "name": "single-product-page", + "functions": [ "runSingleProductPageTest" ] + }, { + "name": "variable-product-updates", + "functions": [ "runVariableProductUpdateTest" ] + } + ] + }, { + "name": "rest-api", + "description": "REST API tests", + "testFiles": [ + { + "name": "api", + "functions": [ "runApiTests" ] + } + ] + }, { + "name": "wp-admin", + "description": "Merchant tests", + "testFiles": [ + { + "name": "create-coupon", + "functions": [ "runCreateCouponTest" ] + }, { + "name": "create-order", + "functions": [ "runCreateOrderTest" ] + }, { + "name": "create-shipping-classes", + "functions": [ "runAddShippingClassesTest" ] + }, { + "name": "create-shipping-zones", + "functions": [ "runAddNewShippingZoneTest" ] + }, { + "name": "create-simple-product", + "functions": [ "runAddSimpleProductTest" ] + }, { + "name": "create-variable-product", + "functions": [ "runAddVariableProductTest" ] + }, { + "name": "order-coupon", + "functions": [ "runOrderApplyCouponTest" ] + }, { + "name": "order-customer-payment-page", + "functions": [ "runMerchantOrdersCustomerPaymentPage" ] + }, { + "name": "order-edit", + "functions": [ "runEditOrderTest" ] + }, { + "name": "order-emails", + "functions": [ "runMerchantOrderEmailsTest" ] + }, { + "name": "order-refund", + "functions": [ "runOrderRefundTest" ] + }, { + "name": "order-searching", + "functions": [ "runOrderSearchingTest" ] + }, { + "name": "order-status-filters", + "functions": [ "runOrderStatusFiltersTest" ] + }, { + "name": "product-edit", + "functions": [ "runProductEditDetailsTest" ] + }, { + "name": "product-import-csv", + "functions": [ "runImportProductsTest" ] + }, { + "name": "product-search", + "functions": [ "runProductSearchTest" ] + }, { + "name": "update-general-settings", + "functions": [ "runUpdateGeneralSettingsTest" ] + }, { + "name": "update-product-settings", + "functions": [ "runProductSettingsTest" ] + }, { + "name": "update-tax-settings", + "functions": [ "runTaxSettingsTest" ] + }, { + "name": "wccom-connect", + "functions": [ "runInitiateWccomConnectionTest" ] + } + ] + } + ], + "deprecated": [ + { + "name": "example-folder", + "testFiles": [ + { "name": "any-filename-to-deprecate" } + ] + } + ] +} + + diff --git a/packages/js/e2e-core-tests/package.json b/packages/js/e2e-core-tests/package.json index 6081cfb045b..9ba215ddc21 100644 --- a/packages/js/e2e-core-tests/package.json +++ b/packages/js/e2e-core-tests/package.json @@ -23,6 +23,7 @@ "access": "public" }, "scripts": { + "preinstall": "npx only-allow pnpm", "build": "./bin/build.sh", "prepare": "pnpm run build" } diff --git a/packages/js/e2e-core-tests/project.json b/packages/js/e2e-core-tests/project.json index 8e7d28cd936..9beb7a7bd5a 100644 --- a/packages/js/e2e-core-tests/project.json +++ b/packages/js/e2e-core-tests/project.json @@ -1,5 +1,14 @@ { - "root": "packages/js/e2e-core-tests/", - "sourceRoot": "packages/js/e2e-core-tests", - "projectType": "library" + "root": "packages/js/e2e-core-tests/", + "sourceRoot": "packages/js/e2e-core-tests", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/e2e-core-tests" + } + } + } } diff --git a/packages/js/e2e-environment/.gitignore b/packages/js/e2e-environment/.gitignore new file mode 100644 index 00000000000..f6c640e8915 --- /dev/null +++ b/packages/js/e2e-environment/.gitignore @@ -0,0 +1,2 @@ +config/default.json +docker/wp-cli/initialize.sh diff --git a/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 63f199804f0..f3aabfc7a84 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -8,10 +8,14 @@ ## Added - Added `await` for every call to `shopper.logout` +- Updated `getLatestReleaseZipUrl()` to allow passing in an authorization token and simplified arguments to just the repository name +- Added `upload.ini` which increases the limits for uploading files (such as for plugins) in the Docker environment +- Test setup, scaffolding, and removal via `wc-e2e install` and `wc-e2e uninstall` ## Fixed - Updated the browserViewport in `jest.setup.js` to match the `defaultViewport` dimensions defined in `jest-puppeteer.config.js` + ## Added - Added quotes around `WORDPRESS_TITLE` value in .env file to address issue with docker compose 2 "key cannot contain a space" error. diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index 26752959fba..e18973d5f3a 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -9,6 +9,19 @@ npm install @woocommerce/e2e-environment --save npm install jest --global ``` +### Version 0.3.0 and newer + +Version 0.3.0 added a test installer that will populate the `tests/e2e/*` folder with test scripts and configuration files. The installer will create test scripts for E2E test packages that include support for the installer. + +- [Adding test scaffolding to E2E test packages](https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-environment/test-packages.md) + +#### Using the installer + +- Install a default test environment: `npx wc-e2e install` +- Install test specs from an E2E tests package: `npx wc-e2e install @woocommerce-e2e-tests [--format cjs] [--ext spec.js]` +- The default test spec format and extension are `ES6` and `test.js` +- Remove test specs for an E2E tests package: `npx wc-e2e uninstall @woocommerce-e2e-tests` + ## Configuration The `@woocommerce/e2e-environment` package exports configuration objects that can be consumed in JavaScript config files in your project. Additionally, it includes a basic hosting container for running tests and includes instructions for creating your Travis CI setup. @@ -60,10 +73,10 @@ The E2E environment uses Jest as a test runner. Extending the base config is nec ```js const path = require( 'path' ); -const { useE2EJestConfig } = require( '@woocommerce/e2e-environment' ); +const { useE2EJestConfig, resolveLocalE2ePath } = require( '@woocommerce/e2e-environment' ); const jestConfig = useE2EJestConfig( { - roots: [ path.resolve( __dirname, '../specs' ) ], + roots: [ resolveLocalE2ePath( 'specs' ) ], } ); module.exports = jestConfig; @@ -71,6 +84,20 @@ module.exports = jestConfig; **NOTE:** Your project's Jest config file is: `tests/e2e/config/jest.config.js`. +### The Jest Object + +The E2E environment has the following methods to let us control Jest's overall behavior. + +| Function | Parameters | Description | +|-----------|-------------|--------------| +| `setupJestRetries` | `retries` | Sets the amount of retries on failed tests + +**NOTE:** The amount of times failed tests are retried can also be set using the `E2E_RETRY_TIMES` environment variable when executing tests. This can be done using the command below: + +``` +E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +``` + #### Test Screenshots The test sequencer provides a screenshot function for test failures. To enable screenshots on test failure use @@ -142,7 +169,7 @@ The test sequencer uses the following default Puppeteer configuration: }; ``` -You can customize the configuration in `tests/e2e/config/jest-puppeteer.config.js` +You can customize the configuration in [`config/jest-puppeteer.config.js`](config/jest-puppeteer.config.js) ```js const { useE2EJestPuppeteerConfig } = require( '@woocommerce/e2e-environment' ); @@ -158,7 +185,7 @@ module.exports = puppeteerConfig; ### Jest Setup -Jest provides [setup and teardown functions](https://jestjs.io/docs/setup-teardown) similar to PHPUnit. The default setup and teardown is in [`tests/e2e/env/src/setup/jest.setup.js`](src/setup/jest.setup.js). Additional setup and teardown functions can be added to [`tests/e2e/config/jest.setup.js`](../config/jest.setup.js) +Jest provides [setup and teardown functions](https://jestjs.io/docs/setup-teardown) similar to PHPUnit. The default setup and teardown is in [`src/setup/jest.setup.js`](src/setup/jest.setup.js). Additional setup and teardown functions can be added to [`tests/e2e/config/jest.setup.js`](../../../plugins/woocommerce/tests/e2e/config/jest.setup.js) #### Console filtering @@ -227,9 +254,9 @@ The above method also makes use of the following utility methods which can also If you would like to get the latest release zip URL, which can be used in the methods mentioned above, you can use the following helper function to do so: -`getLatestReleaseZipUrl( owner, repository, getPrerelease, perPage )` +`getLatestReleaseZipUrl( repository, authorizationToken, getPrerelease, perPage )` -This will return a string with the latest release URL. Optionally, you can use the `getPrerelease` boolean flag, which defaults to false, on whether or not to get a prerelease instead. The `perPage` flag can be used to return more results when getting the list of releases. The default value is 3. +This will return a string with the latest release URL. Optionally, you can use the `getPrerelease` boolean flag, which defaults to false, on whether or not to get a prerelease instead. The `perPage` flag can be used to return more results when getting the list of releases. The default value is 3. If the repository requires authorization to access, the authorization token can be passed in to the `authorizationToken` argument. ## Additional information diff --git a/packages/js/e2e-environment/bin/docker-compose.js b/packages/js/e2e-environment/bin/docker-compose.js index b6046773bae..9bfd509ba76 100755 --- a/packages/js/e2e-environment/bin/docker-compose.js +++ b/packages/js/e2e-environment/bin/docker-compose.js @@ -11,6 +11,7 @@ const { getAppName, getTestConfig, resolveLocalE2ePath, + resolvePackagePath, } = require( '../utils' ); const dockerArgs = []; @@ -63,7 +64,7 @@ if ( appPath ) { if ( fs.existsSync( appInitFile ) ) { fs.copyFileSync( appInitFile, - path.resolve( __dirname, '../docker/wp-cli/initialize.sh' ) + resolvePackagePath( 'docker/wp-cli/initialize.sh' ) ); console.log( 'Initializing ' + appInitFile ); } @@ -90,7 +91,7 @@ if ( ! process.env.WORDPRESS_URL ) { } // Ensure that the first Docker compose file loaded is from our local env. -dockerArgs.unshift( '-f', path.resolve( __dirname, '../docker-compose.yaml' ) ); +dockerArgs.unshift( '-f', resolvePackagePath( 'docker-compose.yaml' ) ); const dockerProcess = spawnSync( 'docker-compose', dockerArgs, { stdio: 'inherit', diff --git a/packages/js/e2e-environment/bin/e2e-test-integration.js b/packages/js/e2e-environment/bin/e2e-test-integration.js index e5bd25cfdb9..caf1c85671b 100755 --- a/packages/js/e2e-environment/bin/e2e-test-integration.js +++ b/packages/js/e2e-environment/bin/e2e-test-integration.js @@ -4,7 +4,11 @@ const { spawnSync } = require( 'child_process' ); const program = require( 'commander' ); const path = require( 'path' ); const fs = require( 'fs' ); -const { getAppRoot, resolveLocalE2ePath } = require( '../utils' ); +const { + getAppRoot, + resolveLocalE2ePath, + resolvePackagePath, +} = require( '../utils' ); const { WC_E2E_SCREENSHOTS, JEST_PUPPETEER_CONFIG, @@ -30,7 +34,7 @@ if ( WC_E2E_SCREENSHOTS ) { } } -const nodeConfigDirs = [ path.resolve( __dirname, '../config' ) ]; +const nodeConfigDirs = [ resolvePackagePath( 'config' ) ]; if ( appPath ) { nodeConfigDirs.unshift( resolveLocalE2ePath( 'config' ) ); @@ -51,10 +55,7 @@ if ( ! JEST_PUPPETEER_CONFIG ) { // Use local Puppeteer config if there is one. // Load test configuration file into an object. const localJestConfigFile = resolveLocalE2ePath( 'config/jest-puppeteer.config.js' ); - const jestConfigFile = path.resolve( - __dirname, - '../config/jest-puppeteer.config.js' - ); + const jestConfigFile = resolvePackagePath( 'config/jest-puppeteer.config.js' ); testEnvVars.JEST_PUPPETEER_CONFIG = fs.existsSync( localJestConfigFile ) ? localJestConfigFile @@ -90,7 +91,7 @@ if ( program.debug ) { const envVars = Object.assign( {}, process.env, testEnvVars ); -let configPath = path.resolve( __dirname, '../config/jest.config.js' ); +let configPath = resolvePackagePath( 'config/jest.config.js' ); // Look for a Jest config in the dependent app's path. if ( appPath ) { diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js new file mode 100755 index 00000000000..ba7a9257d8b --- /dev/null +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -0,0 +1,233 @@ +#!/usr/bin/env node + +/** + * External dependencies. + */ +const fs = require( 'fs' ); +const path = require( 'path' ); +const sprintf = require( 'sprintf-js' ).sprintf; + +/** + * Internal dependencies. + */ +const { + resolvePackage, + resolvePackagePath, +} = require( '../utils' ); +const { + createLocalE2ePath, + confirm, + confirmLocalCopy, + confirmLocalDelete, + getPackageData, + installDefaults +} = require( '../utils/scaffold' ); + +const args = process.argv.slice( 2 ); +const [ command, packageName ] = args; + +// Allow multiple spec file extensions and formats. +let testExtension = 'test.js'; +let testFormat = ''; +for ( let a = 2; a < args.length; a++ ) { + const nextArg = a + 1; + if ( nextArg >= args.length ) { + break; + } + switch ( args[ a ] ) { + case '--format': + testFormat = args[ nextArg ]; + break; + case '--ext': + testExtension = args[ nextArg ]; + break; + } +} + +/** + * Install the test scripts and sample default.json configuration + */ +if ( command == 'install' ) { + // Install some environment defaults if no package is requested. + if ( ! packageName ) { + installDefaults(); + return; + } + + // `package` is a reserved word + const pkg = resolvePackage( packageName ).name; + if ( ! pkg.length ) { + //@todo add error message + return; + } + const { packageSlug, testSpecs, defaultJson, initializeSh } = getPackageData( pkg ); + + // Write sample default.json + if ( defaultJson ) { + const defaultJsonName = `config${path.sep}default-${packageSlug}.json`; + createLocalE2ePath( 'config' ); + if ( confirmLocalCopy( defaultJsonName, defaultJson, pkg ) ) { + console.log( `Created sample test configuration to 'tests/e2e/${defaultJsonName}'.` ); + } + } + + // Write sample initialize.sh + if ( initializeSh ) { + const defaultInitName = `docker${path.sep}${packageSlug}.sh`; + createLocalE2ePath( 'docker' ); + if ( confirmLocalCopy( defaultInitName, initializeSh, pkg ) ) { + console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); + } + } + + if ( ! testSpecs ) { + return; + } + + // Write test files + const testsSpecFile = resolvePackagePath( testSpecs, pkg ); + const specs = fs.readFileSync( testsSpecFile ); + const tests = JSON.parse( specs ); + const { active, deprecated } = tests; + + if ( active && active.length ) { + const blankLine = ''; + const eol = "\n"; + const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s`. */', packageName ); + let importLineFormat; + let overwriteFiles; + let confirmPrompt; + if ( testFormat.toLowerCase() == 'cjs' ) { + importLineFormat = sprintf( "const {%%s} = require( '%s' );", pkg ); + } else { + importLineFormat = sprintf( "import {%%s} from '%s';", pkg ); + } + + // Create the specs folder if not present + let specFolderPath = createLocalE2ePath( 'specs' ); + + // Loop through folders and files to write test scripts. + for ( let f = 0; f < active.length; f++ ) { + if ( overwriteFiles == 'q' ) { + overwriteFiles = ''; + break; + } + + const testFolder = active[ f ]; + const { testFiles } = testFolder; + + if ( ! testFiles || ! testFiles.length ) { + continue; + } + + let specFolder; + if ( testFolder.name.length ) { + specFolder = createLocalE2ePath( `specs${path.sep}${testFolder.name}` ); + } else { + specFolder = specFolderPath; + } + + // Create the test files. + for ( let t = 0; t < testFiles.length; t++ ) { + const testFile = testFiles[ t ]; + if ( ! testFile.functions.length ) { + continue; + } + + const testFileName = `${testFolder.name}${path.sep}${testFile.name}.${testExtension}`; + const testFilePath = `${specFolder}${path.sep}${testFile.name}.${testExtension}`; + + // Check to see if file exists. + if ( fs.existsSync( testFilePath ) ) { + if ( overwriteFiles != 'a' ) { + confirmPrompt = `${testFileName} already exists. Overwrite? [y]es/[n]o/[a]ll/[q]uit: `; + overwriteFiles = confirm( confirmPrompt, 'anqy' ); + overwriteFiles = overwriteFiles.toLowerCase(); + } + + if ( overwriteFiles == 'q' ) { + break; + } + if ( overwriteFiles != 'a' && overwriteFiles != 'y' ) { + continue; + } + } + + console.log( 'Writing tests/e2e/specs/' + testFileName ); + let buffer = [ autoGenerate ]; + let testSeparator, testTerminator, importPrefix; + + // Add the import line. + if ( testFile.functions.length > 3 ) { + testSeparator = ',' + eol; + testTerminator = eol; + importPrefix = eol; + } else { + testSeparator = ', '; + testTerminator = ' '; + importPrefix = ' '; + } + const testImport = testFile.functions.join( testSeparator ) + testTerminator; + buffer.push( sprintf( importLineFormat, importPrefix + testImport ), blankLine ); + + // Add test function calls and write the file + let functionCalls = testFile.functions.map( functionName => functionName + '();' ); + buffer.push( ...functionCalls, blankLine ); + fs.writeFileSync( testFilePath, buffer.join( eol ) ); + } + } + } + // @todo: deprecated files. +} else if ( command == 'uninstall' ) { + if ( ! packageName ) { + // @todo: write error message + return; + } + + const pkg = resolvePackage( packageName ).name; + const { packageSlug, testSpecs, defaultJson, initializeSh } = getPackageData( pkg ); + + // Delete sample default.json + if ( defaultJson ) { + const defaultJsonName = `config${path.sep}default-${packageSlug}.json`; + confirmLocalDelete( defaultJsonName ); + } + + // Delete sample initialize.sh + if ( initializeSh ) { + const defaultInitName = `docker${path.sep}${packageSlug}.sh`; + confirmLocalDelete( defaultInitName ); + } + + if ( ! testSpecs ) { + return; + } + + const testsSpecFile = resolvePackagePath( testSpecs, pkg ); + const specs = fs.readFileSync( testsSpecFile ); + const tests = JSON.parse( specs ); + const { active } = tests; + + if ( ! active || ! active.length ) { + return; + } + + // Loop through folders and files to delete test scripts. + for ( let f = 0; f < active.length; f++ ) { + const testFolder = active[ f ]; + const { testFiles } = testFolder; + + if ( ! testFiles || ! testFiles.length ) { + continue; + } + + const specFolder = testFolder.name.length ? `specs${path.sep}${testFolder.name}` : 'specs'; + for ( let t = 0; t < testFiles.length; t++ ) { + const testFile = testFiles[ t ]; + const testFilePath = `${specFolder}${path.sep}${testFile.name}.${testExtension}`; + + confirmLocalDelete( testFilePath ); + } + } + +} diff --git a/packages/js/e2e-environment/bin/wc-e2e.sh b/packages/js/e2e-environment/bin/wc-e2e.sh index 11be2f572bb..9f7fa6d72d1 100755 --- a/packages/js/e2e-environment/bin/wc-e2e.sh +++ b/packages/js/e2e-environment/bin/wc-e2e.sh @@ -71,6 +71,10 @@ case $1 in ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug $2 TESTRESULT=$? ;; + 'install' | \ + 'uninstall') + ./bin/scaffold.js $@ + ;; *) usage ;; diff --git a/packages/js/e2e-environment/config/index.js b/packages/js/e2e-environment/config/index.js index b53bdd83640..ba96035504a 100644 --- a/packages/js/e2e-environment/config/index.js +++ b/packages/js/e2e-environment/config/index.js @@ -3,15 +3,17 @@ */ const jestConfig = require( './jest.config' ); const jestPuppeteerConfig = require( './jest-puppeteer.config' ); +const jestobjectConfig = require('./jest-object.config'); const { useE2EBabelConfig, useE2EEsLintConfig, useE2EJestConfig, - useE2EJestPuppeteerConfig + useE2EJestPuppeteerConfig, } = require( './use-config' ); module.exports = { jestConfig, + ...jestobjectConfig, jestPuppeteerConfig, useE2EBabelConfig, useE2EEsLintConfig, diff --git a/packages/js/e2e-environment/config/jest-object.config.js b/packages/js/e2e-environment/config/jest-object.config.js new file mode 100644 index 00000000000..e485fc18e2b --- /dev/null +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -0,0 +1,22 @@ +/** + * External Dependencies + */ +const { E2E_RETRY_TIMES } = process.env; + +const setupJestRetries = ( retries = 0 ) => { + const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : retries; + + if ( retryTimes > 0 ) { + jest.retryTimes( retryTimes ); + } +}; + +// If more methods are added to setupJestObject, it should be include in the readme +const setupJestObject = () => { + setupJestRetries(); +}; + +module.exports = { + setupJestObject, + setupJestRetries, +}; diff --git a/packages/js/e2e-environment/config/jest.config.js b/packages/js/e2e-environment/config/jest.config.js index c0505439b60..05fda6e707d 100644 --- a/packages/js/e2e-environment/config/jest.config.js +++ b/packages/js/e2e-environment/config/jest.config.js @@ -55,6 +55,9 @@ const combinedConfig = { transformIgnorePatterns: [ 'node_modules/(?!(woocommerce)/)', ], + + testRunner: 'jest-circus/runner', + roots: [ testSpecs ], }; diff --git a/packages/js/e2e-environment/docker-compose.yaml b/packages/js/e2e-environment/docker-compose.yaml index db7f1c91049..d9327d9adad 100644 --- a/packages/js/e2e-environment/docker-compose.yaml +++ b/packages/js/e2e-environment/docker-compose.yaml @@ -35,6 +35,7 @@ services: WORDPRESS_DEBUG: 1 volumes: - wordpress:/var/www/html + - ./upload.ini:/usr/local/etc/php/conf.d/uploads.ini - "../../../${WC_E2E_FOLDER}:${WC_E2E_FOLDER_MAPPING}" wordpress-cli: diff --git a/packages/js/e2e-environment/installFiles/initialize.sh b/packages/js/e2e-environment/installFiles/initialize.sh new file mode 100755 index 00000000000..7c0ab8f9991 --- /dev/null +++ b/packages/js/e2e-environment/installFiles/initialize.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +echo "Initializing WooCommerce E2E" + +# This is a workaround to accommodate different directory names. +wp plugin activate --all +wp plugin deactivate akismet +wp plugin deactivate hello + +wp theme install twentynineteen --activate +wp user create customer customer@woocommercecoree2etestsuite.com \ + --user_pass=password \ + --role=subscriber \ + --first_name='Jane' \ + --last_name='Smith' \ + --path=/var/www/html + +# we cannot create API keys for the API, so we using basic auth, this plugin allows that. +wp plugin install https://github.com/WP-API/Basic-Auth/archive/master.zip --activate + +# install the WP Mail Logging plugin to test emails +wp plugin install wp-mail-logging --activate + +# initialize pretty permalinks +wp rewrite structure /%postname%/ diff --git a/packages/js/e2e-environment/installFiles/jest.config.js b/packages/js/e2e-environment/installFiles/jest.config.js new file mode 100644 index 00000000000..4e3b87bcce7 --- /dev/null +++ b/packages/js/e2e-environment/installFiles/jest.config.js @@ -0,0 +1,8 @@ +const path = require( 'path' ); +const { useE2EJestConfig, getAppRoot } = require( '@woocommerce/e2e-environment' ); + +const jestConfig = useE2EJestConfig( { + roots: [ path.resolve( __dirname, '../specs' ) ], +} ); + +module.exports = jestConfig; diff --git a/packages/js/e2e-environment/installFiles/jest.setup.js b/packages/js/e2e-environment/installFiles/jest.setup.js new file mode 100644 index 00000000000..5fd474f804f --- /dev/null +++ b/packages/js/e2e-environment/installFiles/jest.setup.js @@ -0,0 +1,80 @@ +import { + clearLocalStorage, + setBrowserViewport, + withRestApi, + WP_ADMIN_LOGIN +} from '@woocommerce/e2e-utils'; + +const config = require( 'config' ); +const { HTTPClientFactory } = require( '@woocommerce/api' ); +const { addConsoleSuppression, updateReadyPageStatus } = require( '@woocommerce/e2e-environment' ); +const { DEFAULT_TIMEOUT_OVERRIDE } = process.env; + +// @todo: remove this once https://github.com/woocommerce/woocommerce-admin/issues/6992 has been addressed +addConsoleSuppression( 'woocommerce_shared_settings', false ); + +/** + * Uses the WordPress API to delete all existing posts + */ +async function trashExistingPosts() { + const apiUrl = config.get('url'); + const wpPostsEndpoint = '/wp/v2/posts'; + const adminUsername = config.get('users.admin.username'); + const adminPassword = config.get('users.admin.password'); + const client = HTTPClientFactory.build(apiUrl) + .withBasicAuth(adminUsername, adminPassword) + .create(); + + // List all existing posts + const response = await client.get(wpPostsEndpoint); + const posts = response.data; + + // Delete each post + for (const post of posts) { + await client.delete(`${wpPostsEndpoint}/${post.id}`); + } +} + +// Before every test suite run, delete all content created by the test. This ensures +// other posts/comments/etc. aren't dirtying tests and tests don't depend on +// each other's side-effects. +beforeAll(async () => { + + if ( DEFAULT_TIMEOUT_OVERRIDE ) { + page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); + page.setDefaultTimeout( DEFAULT_TIMEOUT_OVERRIDE ); + } + + try { + // Update the ready page to prevent concurrent test runs + await updateReadyPageStatus('draft'); + await trashExistingPosts(); + await withRestApi.deleteAllProducts(); + await withRestApi.deleteAllCoupons(); + await withRestApi.deleteAllOrders(); + } catch ( error ) { + // Prevent an error here causing tests to fail. + } + + await page.goto(WP_ADMIN_LOGIN); + await clearLocalStorage(); + await setBrowserViewport( { + width: 1280, + height: 800, + }); +}); + +// Clear browser cookies and cache using DevTools. +// This is to ensure that each test ends with no user logged in. +afterAll(async () => { + // Reset the ready page to published to allow future test runs + try { + await updateReadyPageStatus('publish'); + } catch ( error ) { + // Prevent an error here causing tests to fail. + } + + const client = await page.target().createCDPSession(); + await client.send('Network.clearBrowserCookies'); + await client.send('Network.clearBrowserCache'); +}); diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 33e576f5420..9d1e1cfe409 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -26,14 +26,16 @@ "@slack/web-api": "^6.1.0", "@woocommerce/api": "^0.2.0", "@wordpress/e2e-test-utils": "^4.16.1", - "@wordpress/jest-preset-default": "^6.4.0", + "@wordpress/jest-preset-default": "^7.1.3", "app-root-path": "^3.0.0", "commander": "4.1.1", "jest": "^25.1.0", "jest-each": "25.5.0", "jest-puppeteer": "^4.4.0", + "node-stream-zip": "^1.13.6", + "readline-sync": "^1.4.10", "request": "^2.88.2", - "node-stream-zip": "^1.13.6" + "sprintf-js": "^1.1.2" }, "devDependencies": { "@babel/cli": "7.12.8", @@ -42,6 +44,7 @@ "@babel/preset-env": "7.12.7", "@wordpress/eslint-plugin": "7.3.0", "eslint": "^8.1.0", + "jest-circus": "25.1.0", "ndb": "^1.1.5", "semver": "^7.3.2" }, @@ -49,6 +52,7 @@ "access": "public" }, "scripts": { + "preinstall": "npx only-allow pnpm", "clean": "rm -rf ./build ./build-module", "compile": "node ./../bin/build.js", "build": "pnpm run clean && pnpm run compile", diff --git a/packages/js/e2e-environment/project.json b/packages/js/e2e-environment/project.json index 46f5e0ca784..f7c92c4ef90 100644 --- a/packages/js/e2e-environment/project.json +++ b/packages/js/e2e-environment/project.json @@ -1,79 +1,86 @@ { - "root": "packages/js/e2e-environment/", - "sourceRoot": "packages/js/e2e-environment/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build" - } - }, - "lint": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "lint" - } - }, - "clean": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "clean" - } - }, - "compile": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "compile" - } - }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, - "docker-up": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:up" - } - }, - "docker-down": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:down" - } - }, - "docker-clear-all": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:clear-all" - } - }, - "docker-ssh": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:ssh" - } - }, - "test-e2e": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e" - } - }, - "test-e2e-debug": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e-debug" - } - }, - "test-e2e-dev": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e-dev" - } - } - } + "root": "packages/js/e2e-environment/", + "sourceRoot": "packages/js/e2e-environment/src", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/e2e-environment" + } + }, + "build": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build" + } + }, + "lint": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "lint" + } + }, + "clean": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "clean" + } + }, + "compile": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "compile" + } + }, + "prepare": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "prepare" + } + }, + "docker-up": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:up" + } + }, + "docker-down": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:down" + } + }, + "docker-clear-all": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:clear-all" + } + }, + "docker-ssh": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:ssh" + } + }, + "test-e2e": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e" + } + }, + "test-e2e-debug": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e-debug" + } + }, + "test-e2e-dev": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e-dev" + } + } + } } diff --git a/packages/js/e2e-environment/src/setup/jest.setup.js b/packages/js/e2e-environment/src/setup/jest.setup.js index 2481a9b5771..f7ed5466984 100644 --- a/packages/js/e2e-environment/src/setup/jest.setup.js +++ b/packages/js/e2e-environment/src/setup/jest.setup.js @@ -9,6 +9,7 @@ import { setBrowserViewport, } from '@wordpress/e2e-test-utils'; import { consoleShouldSuppress, addConsoleSuppression } from '../../utils'; +import { setupJestRetries } from '../../config/jest-object.config'; /** * Array of page event tuples of [ eventName, handler ]. @@ -175,6 +176,7 @@ beforeAll( async () => { capturePageEventsForTearDown(); enablePageDialogAccept(); observeConsoleLogging(); + setupJestRetries(); } ); afterEach( async () => { diff --git a/packages/js/e2e-environment/test-packages.md b/packages/js/e2e-environment/test-packages.md new file mode 100644 index 00000000000..12370393d44 --- /dev/null +++ b/packages/js/e2e-environment/test-packages.md @@ -0,0 +1,104 @@ +# WooCommerce End-to-End Test Packages + +There are two limitations which significantly impact the architecture of E2E test packages: + +- Referencing the `jest` functions `describe`, `it`, `beforeAll`, etc. throws a fatal error outside the `jest` environment. +- `jest` will not scan for tests in any path containing `node_mdules`. + +## Creating a tests package + +The way to create a tests package with the above limitations is + +- **In the tests package**, wrap each test in a function + +```js +/** + * Require the necessary jest functions to prevent the package build from referencing them + * `import` references imported functions during package build + */ + +const { describe, it, beforeAll } = require( '@jest/globals' ); + +const testMyCriticalFlow = () => { + describe( 'My Critical Flow', () => { + beforeAll( async () => { + // Test setup + } ); + it( 'can complete first step', async () => { + // Do stuff + expect( someValue ).toBeTruthy(); + } ); + } ); +}; + +modules.exports = testMyFlow; +``` + +- **In the `tests/e2e/specs` folder**, create a test spec that calls the test function + +```js +import { testMyCriticalFlow } from 'MyTestsPackage'; + +testMyCriticalFlow(); +``` + +## Adding the scaffolds for the test installer + +To work with the limitations outlined above, the test installer needs to access the test scaffolding information without accessing the package index. As a result, the `installFiles` is a required path in the steps below + +- Create an `installFiles` folder in the root of the package +- Add an `index.js` to the folder which exports an object with some or all of three properties +```js +module.exports = { + defaultJson: 'installFiles/default-test-config.json', + initializeSh: 'installFiles/initialize.sh.default', + testSpecs: 'installFiles/scaffold-tests.json', +}; +``` +- The value of each of the properties should be a relative path from the package `index.js`. The test installer will remove `dist`, `build`, and `build-modules` from the end of the package index path. +- `defaultJson`: Path to a JSON file containing all `default.json` entries needed for the tests in the package. +- `initializeSh`: Path to a bash script containing the WP CLI commands needed to initialize the `e2e-environment` test container. +- `testSpecs`: Path to a JSON file containing a nested object +```json +{ + "active": [ + { + "name": "first-folder-name", + "description": "First tests", + "testFiles": [ + { + "name": "test-name-a", + "functions": [ + "testMyCriticalFlow" + ] + }, + { + "name": "test-name-b", + "functions": [ + "testSecondCriticalFlow", + "testThirdCriticalFlow" + ] + } + ] + }, + { + "name": "second-folder-name", + "description": "Second tests", + "testFiles": [ + .... + ] + } + ] +} +``` + +The test installer uses the `testSpecs` nested object to create test specs. Using the example above, create `tests/e2e/specs/first-folder-name/test-name-b.test.js`: + +```js +/* This file was auto-generated by the command `npx wc-e2e install your-package-name`. */ +import { testSecondCriticalFlow, testThirdCriticalFlow } from 'your-package-name'; + +testSecondCriticalFlow(); +testThirdCriticalFlow(); +``` + diff --git a/packages/js/e2e-environment/upload.ini b/packages/js/e2e-environment/upload.ini new file mode 100644 index 00000000000..755332dd75a --- /dev/null +++ b/packages/js/e2e-environment/upload.ini @@ -0,0 +1,5 @@ +file_uploads = On +memory_limit = 500M +upload_max_filesize = 500M +post_max_size = 500M +max_execution_time = 600 diff --git a/packages/js/e2e-environment/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index a537813e408..e1077bae98c 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -1,30 +1,27 @@ const path = require( 'path' ); -const getAppRoot = require( './app-root' ); const fs = require( 'fs' ); const mkdirp = require( 'mkdirp' ); const request = require( 'request' ); const StreamZip = require( 'node-stream-zip' ); +const { resolveLocalE2ePath } = require( './test-config' ); /** * Upload a plugin zip from a remote location, such as a GitHub URL or other hosted location. * * @param {string} fileUrl The URL where the zip file is located. + * @param {string} authorizationToken Authorization token used to authenticate with the GitHub API if required. * @return {string} The path where the zip file is located. */ -const getRemotePluginZip = async ( fileUrl ) => { - const appPath = getAppRoot(); - const savePath = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/plugins' - ); +const getRemotePluginZip = async ( fileUrl, authorizationToken = '' ) => { + const savePath = resolveLocalE2ePath( 'plugins' ); mkdirp.sync( savePath ); - // Pull the filename from the end of the URL + // Pull the version from the end of the URL const fileName = fileUrl.split( '/' ).pop(); let filePath = path.join( savePath, fileName ); // First, download the zip file - await downloadZip( fileUrl, filePath ); + await downloadZip( fileUrl, filePath, authorizationToken ); // Check for a nested zip and update the filepath filePath = await checkNestedZip( filePath, savePath ); @@ -35,24 +32,24 @@ const getRemotePluginZip = async ( fileUrl ) => { /** * Get the latest release zip for a plugin from a GiHub repository. * - * @param {string} owner The owner of the plugin repository. - * @param {string} repository The repository name. + * @param {string} repository The repository owner and name. For example: `woocommerce/woocommerce`. + * @param {string} authorizationToken Authorization token used to authenticate with the GitHub API if required. * @param {boolean} getPrerelease Flag on whether to get a prelease or not. * @param {number} perPage Limit of entries returned from the latest releases list, defaults to 3. * @return {Promise}} Returns the URL for the release zip file. */ const getLatestReleaseZipUrl = async ( - owner, repository, + authorizationToken = '', getPrerelease = false, perPage = 3 ) => { let requesturl; if ( getPrerelease ) { - requesturl = `https://api.github.com/repos/${ owner }/${ repository }/releases?per_page=${ perPage }`; + requesturl = `https://api.github.com/repos/${ repository }/releases?per_page=${ perPage }`; } else { - requesturl = `https://api.github.com/repos/${ owner }/${ repository }/releases/latest`; + requesturl = `https://api.github.com/repos/${ repository }/releases/latest`; } const options = { @@ -62,6 +59,11 @@ const getLatestReleaseZipUrl = async ( headers: { 'user-agent': 'node.js' }, }; + // If provided with a token, use it for authorization + if ( authorizationToken ) { + options.headers.Authorization = `token ${ authorizationToken }`; + } + // Wrap in a promise to make the request async return new Promise( function ( resolve, reject ) { request.get( options, function ( err, resp, body ) { @@ -74,6 +76,12 @@ const getLatestReleaseZipUrl = async ( resolve( release.assets[ 0 ].browser_download_url ); } } ); + } else if ( authorizationToken ) { + // If it's a private repo, we need to download the archive this way + const tagName = body.tag_name; + resolve( + `https://github.com/${ repository }/archive/${ tagName }.zip` + ); } else { resolve( body.assets[ 0 ].browser_download_url ); } @@ -93,7 +101,7 @@ const checkNestedZip = async ( zipFilePath, savePath ) => { const entries = await zip.entries(); for ( const entry of Object.values( entries ) ) { - if ( entry.name.match( /.zip/ ) ) { + if ( entry.name.match( /\.zip/ ) ) { await zip.extract( null, savePath ); await zip.close(); return path.join( savePath, entry.name ); @@ -108,15 +116,22 @@ const checkNestedZip = async ( zipFilePath, savePath ) => { * * @param {string} fileUrl The URL where the zip file is located. * @param {string} downloadPath The location where to download the zip to. + * @param {string} authorizationToken Authorization token used to authenticate with the GitHub API if required. * @return {Promise} */ -const downloadZip = async ( fileUrl, downloadPath ) => { +const downloadZip = async ( fileUrl, downloadPath, authorizationToken ) => { const options = { url: fileUrl, method: 'GET', encoding: null, + headers: { 'user-agent': 'node.js' }, }; + // If provided with a token, use it for authorization + if ( authorizationToken ) { + options.headers.Authorization = `token ${ authorizationToken }`; + } + // Wrap in a promise to make the request async return new Promise( function ( resolve, reject ) { request @@ -131,9 +146,27 @@ const downloadZip = async ( fileUrl, downloadPath ) => { } ); }; +/** + * Delete the downloaded plugin files. + */ +const deleteDownloadedPluginFiles = async () => { + const pluginSavePath = resolveLocalE2ePath( 'plugins' ); + + fs.readdir( pluginSavePath, ( err, files ) => { + if ( err ) throw err; + + for ( const file of files ) { + fs.unlink( path.join( pluginSavePath, file ), ( error ) => { + if ( error ) throw error; + } ); + } + } ); +}; + module.exports = { getRemotePluginZip, getLatestReleaseZipUrl, checkNestedZip, downloadZip, + deleteDownloadedPluginFiles, }; diff --git a/packages/js/e2e-environment/utils/index.js b/packages/js/e2e-environment/utils/index.js index baf54dc1b82..f50c8a012e8 100644 --- a/packages/js/e2e-environment/utils/index.js +++ b/packages/js/e2e-environment/utils/index.js @@ -1,21 +1,24 @@ const getAppRoot = require( './app-root' ); const { getAppName, getAppBase } = require( './app-name' ); -const { getTestConfig, getAdminConfig, resolveLocalE2ePath } = require( './test-config' ); -const { getRemotePluginZip, getLatestReleaseZipUrl } = require('./get-plugin-zip'); +const testConfig = require( './test-config' ); +const { + getRemotePluginZip, + getLatestReleaseZipUrl, + deleteDownloadedPluginFiles, +} = require( './get-plugin-zip' ); const takeScreenshotFor = require( './take-screenshot' ); -const updateReadyPageStatus = require('./update-ready-page'); +const updateReadyPageStatus = require( './update-ready-page' ); const consoleUtils = require( './filter-console' ); module.exports = { getAppBase, getAppRoot, getAppName, - getTestConfig, - getAdminConfig, - resolveLocalE2ePath, getRemotePluginZip, getLatestReleaseZipUrl, + deleteDownloadedPluginFiles, takeScreenshotFor, updateReadyPageStatus, + ...testConfig, ...consoleUtils, }; diff --git a/packages/js/e2e-environment/utils/scaffold.js b/packages/js/e2e-environment/utils/scaffold.js new file mode 100644 index 00000000000..7662a35ad50 --- /dev/null +++ b/packages/js/e2e-environment/utils/scaffold.js @@ -0,0 +1,124 @@ +/** + * External dependencies. + */ +const fs = require( 'fs' ); +const path = require( 'path' ); +const readlineSync = require( 'readline-sync' ); + +/** + * Internal dependencies. + */ +const { resolveLocalE2ePath, resolvePackagePath } = require( './test-config' ); + +/** + * Create a path relative to the local `tests/e2e` folder. + * @param relativePath + * @return {string} + */ +const createLocalE2ePath = ( relativePath ) => { + let specFolderPath = ''; + const folders = [ `..${path.sep}..${path.sep}tests`, `..${path.sep}e2e`, relativePath ]; + folders.forEach( ( folder ) => { + specFolderPath = resolveLocalE2ePath( folder ); + if ( ! fs.existsSync( specFolderPath ) ) { + console.log( `Creating folder ${specFolderPath}` ); + fs.mkdirSync( specFolderPath ); + } + } ); + + return specFolderPath; +}; + +/** + * Prompt the console for confirmation. + * + * @param {string} prompt Prompt for the user. + * @param {string} choices valid responses. + * @return {string} + */ +const confirm = ( prompt, choices ) => { + const answer = readlineSync.keyIn( prompt, choices ); + return answer; +}; + +/** + * + * @param {string} localE2ePath Destination path + * @param {string} packageE2ePath Source path + * @param {string} packageName Source package. Default @woocommerce/e2e-environment package. + * @return {boolean} + */ +const confirmLocalCopy = ( localE2ePath, packageE2ePath, packageName = '' ) => { + const localPath = resolveLocalE2ePath( localE2ePath ); + const packagePath = resolvePackagePath( packageE2ePath, packageName ); + const confirmPrompt = `${localE2ePath} already exists. Overwrite? [Y]es/[n]o: `; + + let overwriteFiles; + if ( fs.existsSync( localPath ) ) { + overwriteFiles = confirm( confirmPrompt, 'ny' ); + overwriteFiles = overwriteFiles.toLowerCase(); + } else { + overwriteFiles = 'y'; + } + if ( overwriteFiles == 'y' ) { + fs.copyFileSync( packagePath, localPath ); + return true; + } + + return false; +}; + +/** + * Prompt for confirmation before deleting a local E2E file. + * + * @param {string} localE2ePath Relative path to local E2E file. + */ +const confirmLocalDelete = ( localE2ePath ) => { + const localPath = resolveLocalE2ePath( localE2ePath ); + if ( ! fs.existsSync( localPath ) ) { + return; + } + + const confirmPrompt = `${localE2ePath} exists. Delete? [y]es/[n]o: `; + const deleteFile = confirm( confirmPrompt, 'ny' ); + if ( deleteFile == 'y' ) { + fs.unlinkSync( localPath ); + } +}; + +/** + * Get the install data for a tests package. + * + * @param {string} packageName npm package name + * @return {string} + */ +const getPackageData = ( packageName ) => { + const packageSlug = packageName.replace( '@', '' ).replace( /\//g, '.' ); + const installFiles = require( `${packageName}${path.sep}installFiles` ); + + return { packageSlug, ...installFiles }; +}; + +/** + * Install test runner and test container defaults + */ +const installDefaults = () => { + createLocalE2ePath( 'docker' ); + console.log( 'Writing tests/e2e/docker/initialize.sh' ); + confirmLocalCopy( `docker${path.sep}initialize.sh`, `installFiles${path.sep}initialize.sh` ); + + createLocalE2ePath( 'config' ); + console.log( 'Writing tests/e2e/config/jest.config.js' ); + confirmLocalCopy( `config${path.sep}jest.config.js`, `installFiles${path.sep}jest.config.js` ); + console.log( 'Writing tests/e2e/config/jest.setup.js' ); + confirmLocalCopy( `config${path.sep}jest.setup.js`, `installFiles${path.sep}jest.setup.js` ); +}; + +module.exports = { + createLocalE2ePath, + confirm, + confirmLocalCopy, + confirmLocalDelete, + getPackageData, + installDefaults, +}; diff --git a/packages/js/e2e-environment/utils/test-config.js b/packages/js/e2e-environment/utils/test-config.js index 2f4f187e5c3..35d369cf182 100644 --- a/packages/js/e2e-environment/utils/test-config.js +++ b/packages/js/e2e-environment/utils/test-config.js @@ -19,15 +19,84 @@ const resolveLocalE2ePath = ( filename = '' ) => { ); return resolvedPath; -} +}; + +/** + * Resolve a package name installable by npm install. + * + * @param {string} packageName Name of the installed package. + * @param {boolean} allowRecurse Allow a recursive call. Default true. + * @return {object} + */ +const resolvePackage = ( packageName, allowRecurse = true ) => { + const resolvedPackage = {}; + + try { + const resolvedPath = path.dirname( require.resolve( packageName ) ); + const buildPaths = [ 'dist', 'build', 'build-modules' ]; + + // Remove build paths from the resolved path. + let resolvedParts = resolvedPath.split( path.sep ); + for ( let rp = resolvedParts.length - 1; rp >= 0; rp-- ) { + if ( buildPaths.includes( resolvedParts[ rp ] ) ) { + resolvedParts = resolvedParts.slice( 0, -1 ); + } else { + break; + } + } + resolvedPackage.path = resolvedParts.join( path.sep ); + resolvedPackage.name = packageName; + } catch ( e ) { + // Package name installed is not the package name. + resolvedPackage.path = ''; + resolvedPackage.name = ''; + } + + // Attempt to find the package through the project package lock file. + if ( ! resolvedPackage.path.length && allowRecurse ) { + const packageLockPath = path.resolve( appPath, 'package-lock.json' ); + const packageLockContent = fs.readFileSync( packageLockPath ); + const { dependencies } = JSON.parse( packageLockContent ); + + for ( const [ key, value ] of Object.entries( dependencies ) ) { + if ( value.version.indexOf( packageName ) == 0 ) { + resolvedPackage = resolvePackage( key, false ); + break; + } + } + } + + return resolvedPackage; +}; + +/** + * Resolve a file in a package. + * + * @param {string} filename Filename to append to the path. + * @param {string} packageName Name of the installed package. Default @woocommerce/e2e-environment. + * @return {string} + */ +const resolvePackagePath = ( filename, packageName = '' ) => { + let packagePath; + if ( ! packageName.length ) { + packagePath = path.resolve( __dirname, '../' ); + } else { + const pkg = resolvePackage( packageName ); + packagePath = pkg.path; + } + + const resolvedPath = path.resolve( + packagePath, + filename.indexOf( '/' ) == 0 ? filename.slice( 1 ) : filename + ); + + return resolvedPath; +}; // Copy local test configuration file if it exists. const localTestConfigFile = resolveLocalE2ePath( 'config/default.json' ); -const defaultConfigFile = path.resolve( - __dirname, - '../config/default/default.json' -); -const testConfigFile = path.resolve( __dirname, '../config/default.json' ); +const defaultConfigFile = resolvePackagePath( 'config/default/default.json' ); +const testConfigFile = resolvePackagePath( 'config/default.json' ); if ( fs.existsSync( localTestConfigFile ) ) { fs.copyFileSync( localTestConfigFile, testConfigFile ); @@ -94,4 +163,6 @@ module.exports = { getTestConfig, getAdminConfig, resolveLocalE2ePath, + resolvePackage, + resolvePackagePath, }; diff --git a/packages/js/e2e-utils/CHANGELOG.md b/packages/js/e2e-utils/CHANGELOG.md index c40bb45e486..00d16887d64 100644 --- a/packages/js/e2e-utils/CHANGELOG.md +++ b/packages/js/e2e-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +## Fixed + +- Identified the default product category using `slug == 'uncategorized'` in `deleteAllProductCategories` + ## Changes - Removed `page.waitForNavigation()` from `shopper.logout()` diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index 43b2d77d749..149bbcdb93f 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -30,6 +30,7 @@ "access": "public" }, "scripts": { + "preinstall": "npx only-allow pnpm", "clean": "rm -rf ./build ./build-module", "compile": "node ./../bin/build.js", "build": "pnpm run clean && pnpm run compile", diff --git a/packages/js/e2e-utils/project.json b/packages/js/e2e-utils/project.json index 7c55a20ade4..cd77a6997cb 100644 --- a/packages/js/e2e-utils/project.json +++ b/packages/js/e2e-utils/project.json @@ -1,37 +1,44 @@ { - "root": "packages/js/e2e-utils/", - "sourceRoot": "packages/js/e2e-utils/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build" - } - }, - "clean": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "clean" - } - }, - "compile": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "compile" - } - }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, - "lint": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "lint" - } - } - } + "root": "packages/js/e2e-utils/", + "sourceRoot": "packages/js/e2e-utils/src", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/e2e-utils" + } + }, + "build": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build" + } + }, + "clean": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "clean" + } + }, + "compile": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "compile" + } + }, + "prepare": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "prepare" + } + }, + "lint": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "lint" + } + } + } } diff --git a/packages/js/e2e-utils/src/flows/with-rest-api.js b/packages/js/e2e-utils/src/flows/with-rest-api.js index 5fc127ee0e5..6e52d58d07f 100644 --- a/packages/js/e2e-utils/src/flows/with-rest-api.js +++ b/packages/js/e2e-utils/src/flows/with-rest-api.js @@ -78,7 +78,7 @@ export const withRestApi = { }; const response = await client.put( onboardingProfileEndpoint, onboardingReset ); - expect( response.status ).toEqual( 200 ); + expect( response.statusCode ).toEqual( 200 ); }, /** * Use api package to delete coupons. @@ -138,7 +138,7 @@ export const withRestApi = { if ( productCategories.data && productCategories.data.length ) { for ( let c = 0; c < productCategories.data.length; c++ ) { // The default `uncategorized` category can't be deleted - if ( productCategories.data[c].id == 0 ) { + if ( productCategories.data[c].slug == 'uncategorized' ) { continue; } const response = await client.delete( productCategoriesPath + `/${productCategories.data[c].id}?force=true` ); diff --git a/plugins/woocommerce/.eslintrc.js b/plugins/woocommerce/.eslintrc.js index 8425ef80087..03f9124652e 100644 --- a/plugins/woocommerce/.eslintrc.js +++ b/plugins/woocommerce/.eslintrc.js @@ -1,7 +1,6 @@ /** @format */ module.exports = { - root: true, env: { browser: true, es6: true, diff --git a/plugins/woocommerce/.gitignore b/plugins/woocommerce/.gitignore index 65ccaf64123..ef80f06d17a 100644 --- a/plugins/woocommerce/.gitignore +++ b/plugins/woocommerce/.gitignore @@ -1,12 +1,3 @@ -# Editors -/nbproject/private/ - -# Grunt -none - -# Sass -.sass-cache/ - # All CSS /assets/css/** /assets/css/*.css @@ -23,7 +14,6 @@ tests/cli/composer.json tests/cli/vendor # Unit tests -/tmp /tests/bin/tmp /tests/e2e/config/local-*.json /tests/e2e/config/local.json @@ -32,22 +22,6 @@ tests/cli/vendor /tests/e2e/screenshots /tests/e2e/plugins -# Logs -/logs - -# TypeScript files -tsconfig.tsbuildinfo - -# Composer -/vendor/ -/bin/composer/**/vendor/ -/lib/vendor/ -contributors.md -contributors.html - -# Yarn -yarn.lock - # Packages /packages/* !/packages/README.md diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 10e55a64cef..6939d0ee1b0 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,8 +21,8 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-admin": "2.9.1", - "woocommerce/woocommerce-blocks": "6.3.3" + "woocommerce/woocommerce-admin": "3.0.0-rc.1", + "woocommerce/woocommerce-blocks": "6.5.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index e4b4a93be1a..6a2b2f8b7d0 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": "20885acd22c0a58cff8852e7cf4ebf20", + "content-hash": "97d29d724f0342a99e7bf3f9d1d3c262", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -543,16 +543,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.9.1", + "version": "3.0.0-rc.1", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "fdffbfef084c65a3e2141f0aff41cef3bad27553" + "reference": "7c0cdd01ae98be058d684dd19023b0f40094cb63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/fdffbfef084c65a3e2141f0aff41cef3bad27553", - "reference": "fdffbfef084c65a3e2141f0aff41cef3bad27553", + "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/7c0cdd01ae98be058d684dd19023b0f40094cb63", + "reference": "7c0cdd01ae98be058d684dd19023b0f40094cb63", "shasum": "" }, "require": { @@ -608,22 +608,22 @@ "homepage": "https://github.com/woocommerce/woocommerce-admin", "support": { "issues": "https://github.com/woocommerce/woocommerce-admin/issues", - "source": "https://github.com/woocommerce/woocommerce-admin/tree/v2.9.1" + "source": "https://github.com/woocommerce/woocommerce-admin/tree/v3.0.0-rc.1" }, - "time": "2021-12-08T02:59:25+00:00" + "time": "2021-12-14T23:55:42+00:00" }, { "name": "woocommerce/woocommerce-blocks", - "version": "v6.3.3", + "version": "v6.5.0", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-gutenberg-products-block.git", - "reference": "38975ad6de9c6a556059c4de6e9ffc586ab82245" + "reference": "655a9c1de46262304cc8ac187ca8fcc0abf23b6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-gutenberg-products-block/zipball/38975ad6de9c6a556059c4de6e9ffc586ab82245", - "reference": "38975ad6de9c6a556059c4de6e9ffc586ab82245", + "url": "https://api.github.com/repos/woocommerce/woocommerce-gutenberg-products-block/zipball/655a9c1de46262304cc8ac187ca8fcc0abf23b6d", + "reference": "655a9c1de46262304cc8ac187ca8fcc0abf23b6d", "shasum": "" }, "require": { @@ -662,9 +662,9 @@ ], "support": { "issues": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues", - "source": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/v6.3.3" + "source": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/v6.5.0" }, - "time": "2021-11-25T09:47:27+00:00" + "time": "2021-12-07T11:28:05+00:00" } ], "packages-dev": [ @@ -2926,5 +2926,5 @@ "platform-overrides": { "php": "7.0.33" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/plugins/woocommerce/includes/admin/views/html-admin-page-status-report.php b/plugins/woocommerce/includes/admin/views/html-admin-page-status-report.php index 1743566555d..063bd7d0867 100644 --- a/plugins/woocommerce/includes/admin/views/html-admin-page-status-report.php +++ b/plugins/woocommerce/includes/admin/views/html-admin-page-status-report.php @@ -514,7 +514,7 @@ $untested_plugins = $plugin_updates->get_untested_plugins( WC()->version, Cons : - + diff --git a/plugins/woocommerce/includes/class-wc-geolocation.php b/plugins/woocommerce/includes/class-wc-geolocation.php index 09c76e9b435..d47ac659386 100644 --- a/plugins/woocommerce/includes/class-wc-geolocation.php +++ b/plugins/woocommerce/includes/class-wc-geolocation.php @@ -149,11 +149,10 @@ class WC_Geolocation { } if ( empty( $ip_address ) ) { - $ip_address = self::get_ip_address(); + $ip_address = self::get_ip_address(); + $country_code = self::get_country_code_from_headers(); } - $country_code = self::get_country_code_from_headers(); - /** * Get geolocation filter. * diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index 181d0222503..13feec3fe74 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -180,6 +180,7 @@ class WC_Install { add_action( 'admin_init', array( __CLASS__, 'wc_admin_db_update_notice' ) ); add_action( 'admin_init', array( __CLASS__, 'add_admin_note_after_page_created' ) ); add_action( 'woocommerce_run_update_callback', array( __CLASS__, 'run_update_callback' ) ); + add_action( 'woocommerce_update_db_to_current_version', array( __CLASS__, 'update_db_version' ) ); add_action( 'admin_init', array( __CLASS__, 'install_actions' ) ); add_action( 'woocommerce_page_created', array( __CLASS__, 'page_created' ), 10, 2 ); add_filter( 'plugin_action_links_' . WC_PLUGIN_BASENAME, array( __CLASS__, 'plugin_action_links' ) ); @@ -487,6 +488,20 @@ class WC_Install { } } } + + // After the callbacks finish, update the db version to the current WC version. + $current_wc_version = WC()->version; + if ( version_compare( $current_db_version, $current_wc_version, '<' ) && + ! WC()->queue()->get_next( 'woocommerce_update_db_to_current_version' ) ) { + WC()->queue()->schedule_single( + time() + $loop, + 'woocommerce_update_db_to_current_version', + array( + 'version' => $current_wc_version, + ), + 'woocommerce-db-updates' + ); + } } /** diff --git a/plugins/woocommerce/includes/emails/class-wc-email.php b/plugins/woocommerce/includes/emails/class-wc-email.php index babe3cf8e0a..1b4d9a61eee 100644 --- a/plugins/woocommerce/includes/emails/class-wc-email.php +++ b/plugins/woocommerce/includes/emails/class-wc-email.php @@ -782,7 +782,7 @@ class WC_Email extends WC_Settings_API { protected function save_template( $template_code, $template_path ) { if ( current_user_can( 'edit_themes' ) && ! empty( $template_code ) && ! empty( $template_path ) ) { $saved = false; - $file = get_stylesheet_directory() . '/' . WC()->template_path() . $template_path; + $file = $this->get_theme_template_file( $template_path ); $code = wp_unslash( $template_code ); if ( is_writeable( $file ) ) { // phpcs:ignore WordPress.VIP.FileSystemWritesDisallow.file_ops_is_writeable diff --git a/plugins/woocommerce/legacy/.stylelintrc b/plugins/woocommerce/legacy/.stylelintrc index 59af9ca1e9b..b727699279b 100644 --- a/plugins/woocommerce/legacy/.stylelintrc +++ b/plugins/woocommerce/legacy/.stylelintrc @@ -1,3 +1,3 @@ { - "extends": "stylelint-config-wordpress", + "extends": "@wordpress/stylelint-config", } diff --git a/plugins/woocommerce/legacy/Gruntfile.js b/plugins/woocommerce/legacy/Gruntfile.js index 8a252ef610a..e67ea826ec6 100644 --- a/plugins/woocommerce/legacy/Gruntfile.js +++ b/plugins/woocommerce/legacy/Gruntfile.js @@ -1,6 +1,6 @@ module.exports = function ( grunt ) { 'use strict'; - var sass = require( 'node-sass' ); + var sass = require( 'sass' ); grunt.initConfig( { // Setting folder templates. diff --git a/plugins/woocommerce/legacy/css/woocommerce.scss b/plugins/woocommerce/legacy/css/woocommerce.scss index c0c9409d7c6..da71b3321ed 100644 --- a/plugins/woocommerce/legacy/css/woocommerce.scss +++ b/plugins/woocommerce/legacy/css/woocommerce.scss @@ -453,12 +453,13 @@ p.demo_store, td, th { border: 0; - vertical-align: top; line-height: 2em; + vertical-align: top; } label { font-weight: 700; + text-align: left; } select { diff --git a/plugins/woocommerce/legacy/js/admin/meta-boxes-product-variation.js b/plugins/woocommerce/legacy/js/admin/meta-boxes-product-variation.js index 15f32f01350..f21f41a3066 100644 --- a/plugins/woocommerce/legacy/js/admin/meta-boxes-product-variation.js +++ b/plugins/woocommerce/legacy/js/admin/meta-boxes-product-variation.js @@ -807,6 +807,10 @@ jQuery( function( $ ) { default : $( 'select.variation_actions' ).trigger( do_variation_action ); data = $( 'select.variation_actions' ).triggerHandler( do_variation_action + '_ajax_data', data ); + + if ( null === data ) { + return; + } break; } diff --git a/plugins/woocommerce/legacy/js/flexslider/jquery.flexslider.js b/plugins/woocommerce/legacy/js/flexslider/jquery.flexslider.js index dbf32efb237..19e12d6b75e 100755 --- a/plugins/woocommerce/legacy/js/flexslider/jquery.flexslider.js +++ b/plugins/woocommerce/legacy/js/flexslider/jquery.flexslider.js @@ -242,8 +242,15 @@ } item = $( '' ).attr( 'href', '#' ).text( j ); - if ( slider.vars.controlNav === "thumbnails" ) { - item = $( '' ).attr( 'src', slide.attr( 'data-thumb' ) ); + if (slider.vars.controlNav === "thumbnails") { + item = $('', { + load: function (el) { + el.currentTarget.width = el.currentTarget.naturalWidth; + el.currentTarget.height = el.currentTarget.naturalHeight; + }, + src: slide.attr('data-thumb'), + alt: slide.attr('alt') + }) } if ( '' !== slide.attr( 'data-thumb-alt' ) ) { diff --git a/plugins/woocommerce/legacy/package.json b/plugins/woocommerce/legacy/package.json index 378e4721758..6afa9181d36 100644 --- a/plugins/woocommerce/legacy/package.json +++ b/plugins/woocommerce/legacy/package.json @@ -6,6 +6,7 @@ "private": true, "main": "Gruntfile.js", "devDependencies": { + "@wordpress/stylelint-config": "19.1.0", "autoprefixer": "9.8.6", "browserslist": "4.14.5", "caniuse-lite": "1.0.30001146", @@ -24,8 +25,7 @@ "grunt-sass": "3.1.0", "grunt-stylelint": "0.16.0", "gruntify-eslint": "5.0.0", - "node-sass": "6.0.1", - "stylelint": "13.8.0", - "stylelint-config-wordpress": "17.0.0" + "sass": "^1.45.0", + "stylelint": "13.8.0" } } diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 60b302e6cc6..6ec8be94d33 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -33,7 +33,7 @@ "devDependencies": { "@babel/cli": "7.12.8", "@babel/core": "7.12.9", - "@babel/polyfill": "7.12.1", + "babel-eslint": "10.1.0", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", "@typescript-eslint/eslint-plugin": "3.10.1", @@ -48,8 +48,8 @@ "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/eslint-plugin": "7.3.0", + "@wordpress/stylelint-config": "19.1.0", "autoprefixer": "9.8.6", - "babel-eslint": "10.1.0", "chai": "4.2.0", "chai-as-promised": "7.1.1", "config": "3.3.3", @@ -64,18 +64,16 @@ "jest": "^25.1.0", "lint-staged": "9.5.0", "mocha": "7.2.0", - "node-sass": "6.0.1", "prettier": "npm:wp-prettier@2.0.5", "stylelint": "^13.8.0", - "stylelint-config-wordpress": "17.0.0", "typescript": "3.9.7", "webpack": "4.44.2", "webpack-cli": "3.3.12", "wp-textdomain": "1.0.1" }, "engines": { - "node": "^12.20.1", - "npm": "^6.14.6" + "node": "^16.13.1", + "npm": "^8.1.2" }, "husky": { "hooks": { diff --git a/plugins/woocommerce/project.json b/plugins/woocommerce/project.json index 03cf6e733cd..b59b43e9d79 100644 --- a/plugins/woocommerce/project.json +++ b/plugins/woocommerce/project.json @@ -1,153 +1,160 @@ { - "root": "plugins/woocommerce/", - "sourceRoot": "plugins/woocommerce", - "projectType": "application", - "implicitDependencies": [ "woocommerce-legacy-assets" ], - "targets": { - "composer-install": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "composer install", - "cwd": "plugins/woocommerce" - } - }, - "composer-install-no-dev": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "composer install --no-dev", - "cwd": "plugins/woocommerce" - } - }, - "composer-dump-autoload": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "composer dump-autoload", - "cwd": "plugins/woocommerce" - } - }, - "build": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build" - } - }, - "build-core": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build:core" - } - }, - "build-zip": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build:zip" - } - }, - "build-watch": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "grunt watch", - "cwd": "plugins/woocommerce/legacy" - } - }, - "build-assets": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "pnpm nx build woocommerce-legacy-assets", - "cwd": "plugins/woocommerce" - } - }, - "lint-js": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "lint:js" - } - }, - "docker-up": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:up" - } - }, - "docker-down": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:down" - } - }, - "docker-ssh": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "docker:ssh" - } - }, - "test-api": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:api" - } - }, - "test-e2e": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e" - } - }, - "test-e2e-debug": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e-debug" - } - }, - "test-e2e-dev": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:e2e-dev" - } - }, - "test-unit": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "test:unit" - } - }, - "makepot": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "makepot" - } - }, - "packages-fix-text-domain": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "packages:fix:textdomain" - } - }, - "git-update-hooks": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "git:update-hooks" - } - }, - "make-collection": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "make:collection" - } - }, - "install-unit-test-db": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "bash tests/bin/install.sh woo_test root root 127.0.0.1 latest", - "cwd": "plugins/woocommerce" - } - }, - "test-code-coverage": { - "executor": "@nrwl/workspace:run-commands", - "options": { - "command": "RUN_CODE_COVERAGE=1 bash tests/bin/phpunit.sh", - "cwd": "plugins/woocommerce" - } - } - } + "root": "plugins/woocommerce/", + "sourceRoot": "plugins/woocommerce", + "projectType": "application", + "implicitDependencies": [ "woocommerce-legacy-assets" ], + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "plugins/woocommerce" + } + }, + "composer-install": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "composer install", + "cwd": "plugins/woocommerce" + } + }, + "composer-install-no-dev": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "composer install --no-dev", + "cwd": "plugins/woocommerce" + } + }, + "composer-dump-autoload": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "composer dump-autoload", + "cwd": "plugins/woocommerce" + } + }, + "build": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build" + } + }, + "build-core": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build:core" + } + }, + "build-zip": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build:zip" + } + }, + "build-watch": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "grunt watch", + "cwd": "plugins/woocommerce/legacy" + } + }, + "build-assets": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "pnpm nx build woocommerce-legacy-assets", + "cwd": "plugins/woocommerce" + } + }, + "lint-js": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "lint:js" + } + }, + "docker-up": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:up" + } + }, + "docker-down": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:down" + } + }, + "docker-ssh": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "docker:ssh" + } + }, + "test-api": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:api" + } + }, + "test-e2e": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e" + } + }, + "test-e2e-debug": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e-debug" + } + }, + "test-e2e-dev": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:e2e-dev" + } + }, + "test-unit": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "test:unit" + } + }, + "makepot": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "makepot" + } + }, + "packages-fix-text-domain": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "packages:fix:textdomain" + } + }, + "git-update-hooks": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "git:update-hooks" + } + }, + "make-collection": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "make:collection" + } + }, + "install-unit-test-db": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "bash tests/bin/install.sh woo_test root root 127.0.0.1 latest", + "cwd": "plugins/woocommerce" + } + }, + "test-code-coverage": { + "executor": "@nrwl/workspace:run-commands", + "options": { + "command": "RUN_CODE_COVERAGE=1 bash tests/bin/phpunit.sh", + "cwd": "plugins/woocommerce" + } + } + } } diff --git a/plugins/woocommerce/readme.txt b/plugins/woocommerce/readme.txt index c05af5c075b..d94a25c4a69 100644 --- a/plugins/woocommerce/readme.txt +++ b/plugins/woocommerce/readme.txt @@ -4,7 +4,7 @@ Tags: e-commerce, store, sales, sell, woo, shop, cart, checkout, downloadable, d Requires at least: 5.6 Tested up to: 5.8 Requires PHP: 7.0 -Stable tag: 5.9.0 +Stable tag: 6.0.0 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html @@ -160,61 +160,6 @@ WooCommerce comes with some sample data you can use to see how products look; im == Changelog == -= 5.9.0 2021-11-09 = - -**WooCommerce** - -* Fix - Bug in the handling of remote file names for downloadable files. -* Fix - Remove the absolute path to the currency-info.php from within locale-info.php. #31036 -* Fix - wc_get_price_excluding_tax when an order with no customer is passed. #31015 -* Fix - Rename transient used to cache data for Featured page of In-App Marketplace. #31002 -* Fix - Variable product price caching bug with VAT exemption. #30889 -* Fix - Allow to pass null as the email for billing addresses in REST API. #30850 -* Fix - Ensure woocommerce_cancel_unpaid_orders event is always re-scheduled. #30830 -* Fix - Use a more standard way to check if the product attributes lookup table exists. #30745 -* Fix - Undefined variable notice when trying to add product in orders without specifying a product. #30739 -* Fix - Use proper location for taxes when adding products via admin. #30692 -* Dev - Add mobile data to WCTracker. #30415 -* Tweak - Remove hardcode category banners in Settings > Marketplace and use the WooCommerce.com API instead. #30938 -* Tweak - Show a search again message when marketplace results are empty. #30642 -* Tweak - Add promoted cards styling to marketplace section. #30861 -* Enhancement - Add ratings, reviews and icons into Marketplace's Product Cards. #30840 -* Enhancement - Update Storefront banner width and track links in the marketplace page. #30882 -* Enhancement - Revamp the WooCommerce Marketplace page. #30900 - -**WooCommerce Admin - 2.8.0 ** - -* Fix - Issue where stock activity panel was not rendering correctly. #7817 -* Fix - Increase CSS specificity to avoid conflicts and broken panel styling. #7813 -* Fix - Updated link to WooCommerce Developers Blog in readme.txt. #7824 -* Fix - Fixed navigation menu text color after Gutenberg 11.6.0. #7771 -* Fix - Add status param to notes/delete/all REST endpoint, to correctly delete all notes. #7743 -* Fix - Allow already installed marketing extensions to be activated. #7740 -* Fix - Add missing title text for marketing task. #7640 -* Fix - Assign parent order status as children order status if refund order. #7253 -* Fix - Fix category lookup logic to update children correctly. #7709 -* Fix - Fixing an unwanted page refresh when using Woo Navigation. #7615 -* Fix - Fix naming of event names and properties. #7677 -* Fix - Fix white screen for variation analytic data without a name. #7686 -* Add - Store Profiler and Product task - include Subscriptions. #7734 -* Update - Update WC pay supported country list for the default free extensions. #7873 -* Update - Update back up copy of free extension for Google Listing & Ads plugin. #7798 -* Update - Update Eway payment gateway capitalization (was eWAY). #7678 -* Update - Enable Square in France. #7679 -* Enhancement - Only load tasks during rest api requests. #7856 -* Enhancement - Add experiment for promoting WooCommerce Payments in payment methods table. #7666 - -**WooCommerce Blocks - 6.0.0 & 6.0.1 & 6.0.2 & 6.1.0** - -* Fix - Infinite recursion when removing an attribute filter from the Active filters block. #4816 -* Fix - Update All Reviews block so it honors 'ratings enabled' and 'show avatars' preferences. #4764 -* Fix - Products by Category: Moved renderEmptyResponsePlaceholder to separate method to prevent unnecessary rerender. #4751 -* Fix - Calculation of number of reviews in the Reviews by Category block. #4729 -* Fix - Dropdown list in Product Category List Block for nested categories #4920 -* Fix - String translations within the All Products Block. #4897 -* Fix - Filter By Price: Update aria values to be more representative of the actual values presented. #4839 -* Fix - Filter button from Filter Products by Attribute block is not aligned with the input field. #4814 -* Fix - Remove IntersectionObserver shim in favor of dropping IE11 support. #4808 -* Enhancement - Added global styles to All Reviews, Reviews by Category and Reviews by Product blocks. Now it's possible to change the text color and font size of those blocks. #4323 += 6.1.0 2021-XX-XX = [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/woocommerce/trunk/changelog.txt). diff --git a/plugins/woocommerce/templates/single-product/add-to-cart/variable.php b/plugins/woocommerce/templates/single-product/add-to-cart/variable.php index 64a79dbeebc..53dfbfaa867 100644 --- a/plugins/woocommerce/templates/single-product/add-to-cart/variable.php +++ b/plugins/woocommerce/templates/single-product/add-to-cart/variable.php @@ -12,7 +12,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 3.5.5 + * @version 6.1.0 */ defined( 'ABSPATH' ) || exit; @@ -35,7 +35,7 @@ do_action( 'woocommerce_before_add_to_cart_form' ); ?> $options ) : ?> - + { + setupJestRetries( 2 ); + if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); page.setDefaultTimeout( DEFAULT_TIMEOUT_OVERRIDE ); diff --git a/plugins/woocommerce/tests/e2e/specs/smoke-tests/update-woocommerce.js b/plugins/woocommerce/tests/e2e/specs/smoke-tests/update-woocommerce.js index 2e0a4a4c94f..446a80cea38 100644 --- a/plugins/woocommerce/tests/e2e/specs/smoke-tests/update-woocommerce.js +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/update-woocommerce.js @@ -3,7 +3,7 @@ */ const { merchant, utils } = require( '@woocommerce/e2e-utils' ); -const { getRemotePluginZip, getLatestReleaseZipUrl } = require( '@woocommerce/e2e-environment' ); +const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' ); /** * External dependencies @@ -24,7 +24,7 @@ utils.describeIf( UPDATE_WC )( 'WooCommerce plugin can be uploaded and activated beforeAll( async () => { if ( TEST_RELEASE ) { - zipUrl = await getLatestReleaseZipUrl( 'woocommerce', 'woocommerce' ); + zipUrl = await getLatestReleaseZipUrl( 'woocommerce/woocommerce' ); } else { zipUrl = 'https://github.com/woocommerce/woocommerce/releases/download/nightly/woocommerce-trunk-nightly.zip'; } @@ -35,6 +35,7 @@ utils.describeIf( UPDATE_WC )( 'WooCommerce plugin can be uploaded and activated afterAll( async () => { await merchant.logout(); + await deleteDownloadedPluginFiles(); }); it( 'can upload and activate the WooCommerce plugin', async () => { @@ -46,4 +47,8 @@ utils.describeIf( UPDATE_WC )( 'WooCommerce plugin can be uploaded and activated await merchant.runDatabaseUpdate(); }); + it( 'can remove downloaded plugin zip', async () => { + await deleteDownloadedPluginFiles(); + } ); + }); diff --git a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js new file mode 100644 index 00000000000..1bdb3a950a4 --- /dev/null +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js @@ -0,0 +1,42 @@ +/** + * Internal dependencies + */ +const { merchant, utils } = require( '@woocommerce/e2e-utils' ); + +const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' ); + +/** + * External dependencies + */ +const { + it, + beforeAll, +} = require( '@jest/globals' ); + +const { GITHUB_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN } = process.env; + +let zipUrl; +let pluginPath; + +utils.describeIf( GITHUB_REPOSITORY )( 'Upload and activate plugin', () => { + beforeAll( async () => { + zipUrl = await getLatestReleaseZipUrl( GITHUB_REPOSITORY, GITHUB_TOKEN ); + + pluginPath = await getRemotePluginZip( zipUrl, GITHUB_TOKEN ); + + await merchant.login(); + }); + + afterAll( async () => { + await merchant.logout(); + }); + + it( 'can upload and activate the provided plugin', async () => { + await merchant.uploadAndActivatePlugin( pluginPath, PLUGIN_NAME ); + }); + + it( 'can remove downloaded plugin zip', async () => { + await deleteDownloadedPluginFiles(); + } ); + +}); diff --git a/plugins/woocommerce/tests/performance/README.md b/plugins/woocommerce/tests/performance/README.md index e6968d59a9b..f69e7b53f9b 100644 --- a/plugins/woocommerce/tests/performance/README.md +++ b/plugins/woocommerce/tests/performance/README.md @@ -82,6 +82,7 @@ product_sku | SKU of product to be used in cart and checkout flow | yes `__ENV.P product_url | the `product-name` portion of product permalink of the product to be used in cart and checkout flow | yes `__ENV.P_URL` product_id | the product ID of of product to be used in cart and checkout flow | yes `__ENV.P_ID` product_search_term | search term to return product to be used in cart and checkout flow | yes `__ENV.P_TERM` +product_category | category of product to be used for browsing category products | yes `__ENV.P_CAT` coupon_code | coupon code to be used in applying coupon flow | yes `__ENV.P_COUPON` add_product_title | title of product to be added in merchant add product flow | no add_product_regular_price | regular price of product to be added in merchant add product flow | no @@ -102,7 +103,7 @@ To execute an individual test file (for example `requests/shopper/shop-page.js`) CLI `k6 run requests/shopper/shop-page.js` -Docker `docker run --network="host" -v /[YOUR LOCAL WC DIRECTORY FULL PATH]/requests:/requests -it loadimpact/k6 run /requests/shopper/shop-page.js` +Docker `docker run --network="host" -v /[YOUR LOCAL WC DIRECTORY FULL PATH]/tests:/tests -it loadimpact/k6 run /tests/performance/requests/shopper/shop-page.js` This will run the individual test for 1 iteration. diff --git a/plugins/woocommerce/tests/performance/config.js b/plugins/woocommerce/tests/performance/config.js index 3a549193fae..4fd834cd9e9 100644 --- a/plugins/woocommerce/tests/performance/config.js +++ b/plugins/woocommerce/tests/performance/config.js @@ -37,6 +37,7 @@ export const product_sku = __ENV.P_SKU || 'woo-beanie'; export const product_url = __ENV.P_URL || 'beanie'; export const product_id = __ENV.P_ID || '13'; export const product_search_term = __ENV.P_TERM || 'beanie'; +export const product_category = __ENV.P_CAT || 'Accessories'; export const coupon_code = __ENV.P_COUPON || 'testing'; diff --git a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js new file mode 100644 index 00000000000..918cc3d7b64 --- /dev/null +++ b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js @@ -0,0 +1,45 @@ +import { sleep, check, group } from "k6"; +import http from "k6/http"; +import { Trend } from "k6/metrics"; +import { randomIntBetween } from "https://jslib.k6.io/k6-utils/1.1.0/index.js"; +import { base_url, think_time_min, think_time_max, product_category } from "../../config.js"; +import { + htmlRequestHeader, + commonRequestHeaders, + commonGetRequestHeaders, + commonNonStandardHeaders, +} from "../../headers.js"; + +// Custom metric to add to standard results output. +let categoryPageTrend = new Trend("wc_get_product_category_name"); + +export function categoryPage() { + let response; + + group("Category Page", function () { + var requestHeaders = Object.assign({}, + htmlRequestHeader, + commonRequestHeaders, + commonGetRequestHeaders, + commonNonStandardHeaders + ); + + response = http.get(`${base_url}/product-category/${product_category}/`, { + headers: requestHeaders, + }); + categoryPageTrend.add(response.timings.duration); + check(response, { + "is status 200": (r) => r.status === 200, + "body contains: Category's title": (response) => + response.body.includes( + `

${product_category}

` + ), + }); + }); + + sleep(randomIntBetween(`${think_time_min}`, `${think_time_max}`)); +} + +export default function () { + categoryPage(); +} diff --git a/plugins/woocommerce/tests/performance/tests/example-all-requests-arrival-rate.js b/plugins/woocommerce/tests/performance/tests/example-all-requests-arrival-rate.js index 1fd9716c9bc..a39bee87810 100644 --- a/plugins/woocommerce/tests/performance/tests/example-all-requests-arrival-rate.js +++ b/plugins/woocommerce/tests/performance/tests/example-all-requests-arrival-rate.js @@ -15,6 +15,7 @@ import { orders } from '../requests/merchant/orders.js'; import { ordersHeartbeat } from '../requests/merchant/orders-heartbeat.js'; import { homeWCAdmin } from '../requests/merchant/home-wc-admin.js'; import { myAccountMerchantLogin } from '../requests/merchant/my-account-merchant.js'; +import { categoryPage } from '../requests/shopper/category-page.js'; export let options = { scenarios: { @@ -124,6 +125,7 @@ export function shopperBrowsingFlows() { cartRemoveItem(); cartApplyCoupon(); myAccount(); + categoryPage(); } export function checkoutGuestFlow() { cart(); diff --git a/plugins/woocommerce/tests/performance/tests/example-all-requests-ramping-vus.js b/plugins/woocommerce/tests/performance/tests/example-all-requests-ramping-vus.js index 470458b809e..704025821c7 100644 --- a/plugins/woocommerce/tests/performance/tests/example-all-requests-ramping-vus.js +++ b/plugins/woocommerce/tests/performance/tests/example-all-requests-ramping-vus.js @@ -15,6 +15,7 @@ import { orders } from '../requests/merchant/orders.js'; import { ordersHeartbeat } from '../requests/merchant/orders-heartbeat.js'; import { homeWCAdmin } from '../requests/merchant/home-wc-admin.js'; import { myAccountMerchantLogin } from '../requests/merchant/my-account-merchant.js'; +import { categoryPage } from '../requests/shopper/category-page.js'; export let options = { scenarios: { @@ -114,6 +115,7 @@ export function shopperBrowsingFlows() { cartRemoveItem(); cartApplyCoupon(); myAccount(); + categoryPage(); } export function checkoutGuestFlow() { cart(); diff --git a/plugins/woocommerce/tests/performance/tests/simple-all-shopper-requests.js b/plugins/woocommerce/tests/performance/tests/simple-all-shopper-requests.js index 85e38418852..c98c2db22f7 100644 --- a/plugins/woocommerce/tests/performance/tests/simple-all-shopper-requests.js +++ b/plugins/woocommerce/tests/performance/tests/simple-all-shopper-requests.js @@ -8,6 +8,7 @@ import { cartApplyCoupon } from '../requests/shopper/cart-apply-coupon.js'; import { checkoutGuest } from '../requests/shopper/checkout-guest.js'; import { checkoutCustomerLogin } from '../requests/shopper/checkout-customer-login.js'; import { myAccount } from '../requests/shopper/my-account.js'; +import { categoryPage } from '../requests/shopper/category-page.js'; export let options = { scenarios: { @@ -88,6 +89,7 @@ export function searchProductFlow() { } export function singleProductFlow() { singleProduct(); + categoryPage(); } export function checkoutGuestFlow() { cart(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc6a9fd1b00..08de37f5c08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,12 @@ importers: specifiers: '@automattic/nx-composer': ^0.1.0 '@babel/core': 7.12.9 - '@nrwl/cli': latest - '@nrwl/linter': ^13.1.4 - '@nrwl/tao': latest - '@nrwl/web': ^13.1.4 - '@nrwl/workspace': latest + '@nrwl/cli': ^13.3.4 + '@nrwl/devkit': ^13.1.4 + '@nrwl/linter': ^13.3.4 + '@nrwl/tao': 13.3.4 + '@nrwl/web': ^13.3.4 + '@nrwl/workspace': ^13.3.4 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': ^1.3.0 '@wordpress/babel-plugin-import-jsx-pragma': ^3.1.0 @@ -34,11 +35,12 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.2.3 - '@nrwl/linter': 13.1.4 - '@nrwl/tao': 13.2.3 - '@nrwl/web': 13.1.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.2.3_wp-prettier@2.2.1-beta-1 + '@nrwl/cli': 13.3.5 + '@nrwl/devkit': 13.3.5 + '@nrwl/linter': 13.3.5_typescript@4.2.4 + '@nrwl/tao': 13.3.4 + '@nrwl/web': 13.3.5_42cab1dece2b2240094de84cfd414406 + '@nrwl/workspace': 13.3.5_42cab1dece2b2240094de84cfd414406 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -120,38 +122,44 @@ importers: '@woocommerce/api': ^0.2.0 '@wordpress/e2e-test-utils': ^4.16.1 '@wordpress/eslint-plugin': 7.3.0 - '@wordpress/jest-preset-default': ^6.4.0 + '@wordpress/jest-preset-default': ^7.1.3 app-root-path: ^3.0.0 commander: 4.1.1 eslint: ^8.1.0 jest: ^25.1.0 + jest-circus: 25.1.0 jest-each: 25.5.0 jest-puppeteer: ^4.4.0 ndb: ^1.1.5 node-stream-zip: ^1.13.6 + readline-sync: ^1.4.10 request: ^2.88.2 semver: ^7.3.2 + sprintf-js: ^1.1.2 dependencies: '@automattic/puppeteer-utils': github.com/Automattic/puppeteer-utils/0f3ec50 '@jest/test-sequencer': 25.5.4 - '@slack/web-api': 6.4.0 + '@slack/web-api': 6.5.1 '@woocommerce/api': link:../api '@wordpress/e2e-test-utils': 4.16.1_jest@25.5.4 - '@wordpress/jest-preset-default': 6.6.0_@babel+core@7.12.9+jest@25.5.4 + '@wordpress/jest-preset-default': 7.1.3_@babel+core@7.12.9+jest@25.5.4 app-root-path: 3.0.0 commander: 4.1.1 jest: 25.5.4 jest-each: 25.5.0 jest-puppeteer: 4.4.0 node-stream-zip: 1.15.0 + readline-sync: 1.4.10 request: 2.88.2 + sprintf-js: 1.1.2 devDependencies: '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 - '@wordpress/eslint-plugin': 7.3.0_eslint@8.1.0+typescript@4.2.4 - eslint: 8.1.0 + '@wordpress/eslint-plugin': 7.3.0_eslint@8.2.0+typescript@4.2.4 + eslint: 8.2.0 + jest-circus: 25.1.0 ndb: 1.1.5 semver: 7.3.5 @@ -182,7 +190,6 @@ importers: specifiers: '@babel/cli': 7.12.8 '@babel/core': 7.12.9 - '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 '@typescript-eslint/eslint-plugin': 3.10.1 @@ -197,6 +204,7 @@ importers: '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/eslint-plugin': 7.3.0 + '@wordpress/stylelint-config': 19.1.0 autoprefixer: 9.8.6 babel-eslint: 10.1.0 chai: 4.2.0 @@ -213,10 +221,8 @@ importers: jest: ^25.1.0 lint-staged: 9.5.0 mocha: 7.2.0 - node-sass: 6.0.1 prettier: npm:wp-prettier@2.0.5 stylelint: ^13.8.0 - stylelint-config-wordpress: 17.0.0 typescript: 3.9.7 webpack: 4.44.2 webpack-cli: 3.3.12 @@ -224,7 +230,6 @@ importers: devDependencies: '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 - '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@babel/register': 7.12.1_@babel+core@7.12.9 '@typescript-eslint/eslint-plugin': 3.10.1_aab05197bc2ab2306ca58e96baf5381b @@ -239,6 +244,7 @@ importers: '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/eslint-plugin': 7.3.0_eslint@6.8.0+typescript@3.9.7 + '@wordpress/stylelint-config': 19.1.0_stylelint@13.13.1 autoprefixer: 9.8.6 babel-eslint: 10.1.0_eslint@6.8.0 chai: 4.2.0 @@ -255,10 +261,8 @@ importers: jest: 25.5.4 lint-staged: 9.5.0 mocha: 7.2.0 - node-sass: 6.0.1 prettier: /wp-prettier/2.0.5 stylelint: 13.13.1 - stylelint-config-wordpress: 17.0.0_stylelint@13.13.1 typescript: 3.9.7 webpack: 4.44.2_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@4.44.2 @@ -266,6 +270,7 @@ importers: plugins/woocommerce/legacy: specifiers: + '@wordpress/stylelint-config': 19.1.0 autoprefixer: 9.8.6 browserslist: 4.14.5 caniuse-lite: 1.0.30001146 @@ -284,10 +289,10 @@ importers: grunt-sass: 3.1.0 grunt-stylelint: 0.16.0 gruntify-eslint: 5.0.0 - node-sass: 6.0.1 + sass: ^1.45.0 stylelint: 13.8.0 - stylelint-config-wordpress: 17.0.0 devDependencies: + '@wordpress/stylelint-config': 19.1.0_stylelint@13.8.0 autoprefixer: 9.8.6 browserslist: 4.14.5 caniuse-lite: 1.0.30001146 @@ -306,9 +311,8 @@ 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 - node-sass: 6.0.1 + sass: 1.45.0 stylelint: 13.8.0 - stylelint-config-wordpress: 17.0.0_stylelint@13.8.0 packages: @@ -364,12 +368,6 @@ packages: '@babel/highlight': 7.16.0 dev: true - /@babel/code-frame/7.15.8: - resolution: {integrity: sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.16.0 - /@babel/code-frame/7.16.0: resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} engines: {node: '>=6.9.0'} @@ -379,7 +377,6 @@ packages: /@babel/compat-data/7.15.0: resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} engines: {node: '>=6.9.0'} - dev: true /@babel/compat-data/7.16.4: resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} @@ -417,9 +414,9 @@ packages: '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 '@babel/helper-module-transforms': 7.15.8 '@babel/helpers': 7.15.4 - '@babel/parser': 7.16.2 + '@babel/parser': 7.16.4 '@babel/template': 7.16.0 - '@babel/traverse': 7.16.0 + '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 convert-source-map: 1.8.0 debug: 4.3.2 @@ -429,7 +426,6 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: true /@babel/core/7.16.0: resolution: {integrity: sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==} @@ -461,27 +457,12 @@ packages: jsesc: 2.5.2 source-map: 0.5.7 - /@babel/helper-annotate-as-pure/7.15.4: - resolution: {integrity: sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.0 - dev: true - /@babel/helper-annotate-as-pure/7.16.0: resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - /@babel/helper-builder-binary-assignment-operator-visitor/7.15.4: - resolution: {integrity: sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.15.4 - '@babel/types': 7.16.0 - dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.16.0: resolution: {integrity: sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==} engines: {node: '>=6.9.0'} @@ -489,19 +470,6 @@ packages: '@babel/helper-explode-assignable-expression': 7.16.0 '@babel/types': 7.16.0 - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.6 - semver: 6.3.0 - dev: true - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.8: resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} engines: {node: '>=6.9.0'} @@ -513,6 +481,18 @@ packages: '@babel/helper-validator-option': 7.14.5 browserslist: 4.17.6 semver: 6.3.0 + + /@babel/helper-compilation-targets/7.16.3_@babel+core@7.12.9: + resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.16.4 + '@babel/core': 7.12.9 + '@babel/helper-validator-option': 7.14.5 + browserslist: 4.18.1 + semver: 6.3.0 dev: true /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.0: @@ -527,40 +507,6 @@ packages: browserslist: 4.18.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-class-features-plugin/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.12.9: resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} engines: {node: '>=6.9.0'} @@ -578,23 +524,6 @@ packages: - supports-color dev: true - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.15.8: - resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-member-expression-to-functions': 7.16.0 - '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/helper-replace-supers': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} engines: {node: '>=6.9.0'} @@ -611,25 +540,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==} + /@babel/helper-create-regexp-features-plugin/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.15.4 - regexpu-core: 4.8.0 - dev: true - - /@babel/helper-create-regexp-features-plugin/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 + '@babel/helper-annotate-as-pure': 7.16.0 regexpu-core: 4.8.0 dev: true @@ -643,24 +561,6 @@ packages: '@babel/helper-annotate-as-pure': 7.16.0 regexpu-core: 4.8.0 - /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.15.8: - resolution: {integrity: sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/traverse': 7.16.0 - debug: 4.3.2 - lodash.debounce: 4.0.8 - resolve: 1.20.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-define-polyfill-provider/0.3.0_@babel+core@7.16.0: resolution: {integrity: sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==} peerDependencies: @@ -678,28 +578,12 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-explode-assignable-expression/7.15.4: - resolution: {integrity: sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.0 - dev: true - /@babel/helper-explode-assignable-expression/7.16.0: resolution: {integrity: sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - /@babel/helper-function-name/7.15.4: - resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.0 - '@babel/template': 7.16.0 - '@babel/types': 7.16.0 - dev: true - /@babel/helper-function-name/7.16.0: resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} engines: {node: '>=6.9.0'} @@ -714,26 +598,12 @@ packages: dependencies: '@babel/types': 7.16.0 - /@babel/helper-hoist-variables/7.15.4: - resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.0 - dev: true - /@babel/helper-hoist-variables/7.16.0: resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - /@babel/helper-member-expression-to-functions/7.15.4: - resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.15.6 - dev: true - /@babel/helper-member-expression-to-functions/7.16.0: resolution: {integrity: sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==} engines: {node: '>=6.9.0'} @@ -745,7 +615,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - dev: true /@babel/helper-module-imports/7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} @@ -763,11 +632,10 @@ packages: '@babel/helper-split-export-declaration': 7.16.0 '@babel/helper-validator-identifier': 7.15.7 '@babel/template': 7.16.0 - '@babel/traverse': 7.16.0 + '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-module-transforms/7.16.0: resolution: {integrity: sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==} @@ -784,13 +652,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.15.4: - resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.15.6 - dev: true - /@babel/helper-optimise-call-expression/7.16.0: resolution: {integrity: sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==} engines: {node: '>=6.9.0'} @@ -801,17 +662,6 @@ packages: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.15.4: - resolution: {integrity: sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-wrap-function': 7.15.4 - '@babel/types': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-remap-async-to-generator/7.16.4: resolution: {integrity: sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==} engines: {node: '>=6.9.0'} @@ -822,18 +672,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers/7.15.4: - resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-member-expression-to-functions': 7.16.0 - '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/traverse': 7.16.0 - '@babel/types': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-replace-supers/7.16.0: resolution: {integrity: sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==} engines: {node: '>=6.9.0'} @@ -850,7 +688,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - dev: true /@babel/helper-simple-access/7.16.0: resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} @@ -858,26 +695,12 @@ packages: dependencies: '@babel/types': 7.16.0 - /@babel/helper-skip-transparent-expression-wrappers/7.15.4: - resolution: {integrity: sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.0 - dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.16.0: resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - /@babel/helper-split-export-declaration/7.15.4: - resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.0 - dev: true - /@babel/helper-split-export-declaration/7.16.0: resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} engines: {node: '>=6.9.0'} @@ -892,18 +715,6 @@ packages: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function/7.15.4: - resolution: {integrity: sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.16.0 - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.0 - '@babel/types': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-wrap-function/7.16.0: resolution: {integrity: sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==} engines: {node: '>=6.9.0'} @@ -920,11 +731,10 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.0 - '@babel/traverse': 7.16.0 + '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helpers/7.16.3: resolution: {integrity: sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==} @@ -944,17 +754,10 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.15.8: - resolution: {integrity: sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true - /@babel/parser/7.16.2: resolution: {integrity: sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==} engines: {node: '>=6.0.0'} hasBin: true - dev: true /@babel/parser/7.16.4: resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==} @@ -970,18 +773,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.15.4 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.15.8 - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==} engines: {node: '>=6.9.0'} @@ -993,34 +784,20 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.0 - /@babel/plugin-proposal-async-generator-functions/7.15.8_@babel+core@7.12.9: - resolution: {integrity: sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==} + /@babel/plugin-proposal-async-generator-functions/7.16.4_@babel+core@7.12.9: + resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.15.4 + '@babel/helper-remap-async-to-generator': 7.16.4 '@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.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.15.4 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-async-generator-functions/7.16.4_@babel+core@7.16.0: resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} engines: {node: '>=6.9.0'} @@ -1034,8 +811,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==} + /@babel/plugin-proposal-class-properties/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1047,19 +824,6 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-properties/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==} engines: {node: '>=6.9.0'} @@ -1072,20 +836,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.15.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-class-static-block/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==} engines: {node: '>=6.9.0'} @@ -1113,8 +863,8 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==} + /@babel/plugin-proposal-dynamic-import/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1124,17 +874,6 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-dynamic-import/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-dynamic-import/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==} engines: {node: '>=6.9.0'} @@ -1145,8 +884,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-export-namespace-from/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==} + /@babel/plugin-proposal-export-namespace-from/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1156,17 +895,6 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-export-namespace-from/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-export-namespace-from/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==} engines: {node: '>=6.9.0'} @@ -1177,8 +905,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-json-strings/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==} + /@babel/plugin-proposal-json-strings/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1188,17 +916,6 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-json-strings/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-json-strings/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==} engines: {node: '>=6.9.0'} @@ -1209,8 +926,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-logical-assignment-operators/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==} + /@babel/plugin-proposal-logical-assignment-operators/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1220,17 +937,6 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==} engines: {node: '>=6.9.0'} @@ -1241,8 +947,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 - /@babel/plugin-proposal-nullish-coalescing-operator/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==} + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1252,17 +958,6 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==} engines: {node: '>=6.9.0'} @@ -1273,8 +968,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-numeric-separator/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==} + /@babel/plugin-proposal-numeric-separator/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1284,17 +979,6 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-numeric-separator/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-numeric-separator/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==} engines: {node: '>=6.9.0'} @@ -1305,32 +989,18 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 - /@babel/plugin-proposal-object-rest-spread/7.15.6_@babel+core@7.12.9: - resolution: {integrity: sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==} + /@babel/plugin-proposal-object-rest-spread/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.15.0 + '@babel/compat-data': 7.16.4 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.12.9 + '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.15.4_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.15.6_@babel+core@7.15.8: - resolution: {integrity: sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.8 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-transform-parameters': 7.15.4_@babel+core@7.15.8 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.12.9 dev: true /@babel/plugin-proposal-object-rest-spread/7.16.0_@babel+core@7.16.0: @@ -1346,8 +1016,8 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.0 '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.0 - /@babel/plugin-proposal-optional-catch-binding/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==} + /@babel/plugin-proposal-optional-catch-binding/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1357,17 +1027,6 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-optional-catch-binding/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==} engines: {node: '>=6.9.0'} @@ -1378,30 +1037,18 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-optional-chaining/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==} + /@babel/plugin-proposal-optional-chaining/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.15.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-optional-chaining/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.15.4 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.8 - dev: true - /@babel/plugin-proposal-optional-chaining/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==} engines: {node: '>=6.9.0'} @@ -1413,27 +1060,14 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 - /@babel/plugin-proposal-private-methods/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==} + /@babel/plugin-proposal-private-methods/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==} 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.15.4_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.14.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-methods/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-class-features-plugin': 7.15.4_@babel+core@7.15.8 + '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.14.5 transitivePeerDependencies: - supports-color @@ -1451,21 +1085,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-property-in-object/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.15.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-proposal-private-property-in-object/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==} engines: {node: '>=6.9.0'} @@ -1480,25 +1099,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-unicode-property-regex/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==} + /@babel/plugin-proposal-unicode-property-regex/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.15.8 + '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -1527,7 +1135,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -1546,6 +1153,14 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: false + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.8: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.15.8 + '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -1553,6 +1168,7 @@ packages: dependencies: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 + dev: true /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.12.9: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -1569,7 +1185,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -1579,16 +1194,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -1617,15 +1222,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.15.8: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -1643,15 +1239,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.15.8: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -1669,6 +1256,14 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: false + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.8: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.15.8 + '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1676,6 +1271,7 @@ packages: dependencies: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 + dev: true /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1692,7 +1288,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1702,16 +1297,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==} engines: {node: '>=6.9.0'} @@ -1720,7 +1305,6 @@ packages: dependencies: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - dev: false /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.9: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1737,7 +1321,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1762,7 +1345,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1787,7 +1369,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1812,7 +1393,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1837,7 +1417,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1862,7 +1441,6 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1872,16 +1450,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -1899,17 +1467,6 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1929,8 +1486,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-arrow-functions/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==} + /@babel/plugin-transform-arrow-functions/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1939,16 +1496,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-arrow-functions/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-arrow-functions/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==} engines: {node: '>=6.9.0'} @@ -1958,30 +1505,16 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-async-to-generator/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==} + /@babel/plugin-transform-async-to-generator/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.15.4 + '@babel/helper-module-imports': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.15.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-async-to-generator/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.15.4 + '@babel/helper-remap-async-to-generator': 7.16.4 transitivePeerDependencies: - supports-color dev: true @@ -1999,8 +1532,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-block-scoped-functions/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==} + /@babel/plugin-transform-block-scoped-functions/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2009,16 +1542,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-block-scoped-functions/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-block-scoped-functions/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==} engines: {node: '>=6.9.0'} @@ -2028,8 +1551,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-block-scoping/7.15.3_@babel+core@7.12.9: - resolution: {integrity: sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==} + /@babel/plugin-transform-block-scoping/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2038,16 +1561,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-block-scoping/7.15.3_@babel+core@7.15.8: - resolution: {integrity: sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-block-scoping/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==} engines: {node: '>=6.9.0'} @@ -2057,37 +1570,19 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-classes/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==} + /@babel/plugin-transform-classes/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 + '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-function-name': 7.16.0 + '@babel/helper-optimise-call-expression': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-classes/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 + '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-split-export-declaration': 7.16.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2110,8 +1605,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==} + /@babel/plugin-transform-computed-properties/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2120,16 +1615,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-computed-properties/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==} engines: {node: '>=6.9.0'} @@ -2139,8 +1624,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-destructuring/7.14.7_@babel+core@7.12.9: - resolution: {integrity: sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==} + /@babel/plugin-transform-destructuring/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2149,16 +1634,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-destructuring/7.14.7_@babel+core@7.15.8: - resolution: {integrity: sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-destructuring/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==} engines: {node: '>=6.9.0'} @@ -2168,25 +1643,14 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-dotall-regex/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==} + /@babel/plugin-transform-dotall-regex/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==} 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.14.5_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-transform-dotall-regex/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.15.8 + '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -2200,8 +1664,8 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-duplicate-keys/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==} + /@babel/plugin-transform-duplicate-keys/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2210,16 +1674,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-duplicate-keys/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-duplicate-keys/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==} engines: {node: '>=6.9.0'} @@ -2229,25 +1683,14 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-exponentiation-operator/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==} + /@babel/plugin-transform-exponentiation-operator/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.15.4 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -2261,8 +1704,8 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-for-of/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==} + /@babel/plugin-transform-for-of/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2271,16 +1714,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-for-of/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-for-of/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==} engines: {node: '>=6.9.0'} @@ -2290,25 +1723,14 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==} + /@babel/plugin-transform-function-name/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -2322,8 +1744,8 @@ packages: '@babel/helper-function-name': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-literals/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==} + /@babel/plugin-transform-literals/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2332,16 +1754,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-literals/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-literals/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==} engines: {node: '>=6.9.0'} @@ -2351,8 +1763,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==} + /@babel/plugin-transform-member-expression-literals/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2361,16 +1773,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-member-expression-literals/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==} engines: {node: '>=6.9.0'} @@ -2380,28 +1782,14 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-modules-amd/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==} + /@babel/plugin-transform-modules-amd/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-amd/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-module-transforms': 7.15.8 + '@babel/helper-module-transforms': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -2421,31 +1809,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==} + /@babel/plugin-transform-modules-commonjs/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.15.8 + '@babel/helper-module-transforms': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-simple-access': 7.15.4 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-module-transforms': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-simple-access': 7.15.4 + '@babel/helper-simple-access': 7.16.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -2465,31 +1838,15 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==} + /@babel/plugin-transform-modules-systemjs/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-hoist-variables': 7.15.4 - '@babel/helper-module-transforms': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-validator-identifier': 7.15.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-hoist-variables': 7.15.4 - '@babel/helper-module-transforms': 7.15.8 + '@babel/helper-hoist-variables': 7.16.0 + '@babel/helper-module-transforms': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-identifier': 7.15.7 babel-plugin-dynamic-import-node: 2.3.3 @@ -2512,27 +1869,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==} + /@babel/plugin-transform-modules-umd/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-module-transforms': 7.15.8 + '@babel/helper-module-transforms': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 transitivePeerDependencies: - supports-color @@ -2550,24 +1894,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-named-capturing-groups-regex/7.14.9_@babel+core@7.12.9: - resolution: {integrity: sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==} + /@babel/plugin-transform-named-capturing-groups-regex/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.12.9 - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.14.9_@babel+core@7.15.8: - resolution: {integrity: sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.15.8 + '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 dev: true /@babel/plugin-transform-named-capturing-groups-regex/7.16.0_@babel+core@7.16.0: @@ -2579,8 +1913,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.0 - /@babel/plugin-transform-new-target/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==} + /@babel/plugin-transform-new-target/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2589,16 +1923,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-new-target/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-new-target/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==} engines: {node: '>=6.9.0'} @@ -2608,28 +1932,15 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-object-super/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==} + /@babel/plugin-transform-object-super/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.15.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-object-super/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.15.4 + '@babel/helper-replace-supers': 7.16.0 transitivePeerDependencies: - supports-color dev: true @@ -2646,8 +1957,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters/7.15.4_@babel+core@7.12.9: - resolution: {integrity: sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==} + /@babel/plugin-transform-parameters/7.16.3_@babel+core@7.12.9: + resolution: {integrity: sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2656,16 +1967,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-parameters/7.15.4_@babel+core@7.15.8: - resolution: {integrity: sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-parameters/7.16.3_@babel+core@7.16.0: resolution: {integrity: sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==} engines: {node: '>=6.9.0'} @@ -2675,8 +1976,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==} + /@babel/plugin-transform-property-literals/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2685,16 +1986,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-property-literals/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==} engines: {node: '>=6.9.0'} @@ -2704,20 +1995,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-react-jsx/7.14.9_@babel+core@7.15.8: - resolution: {integrity: sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.15.8 - '@babel/types': 7.16.0 - dev: true - /@babel/plugin-transform-react-jsx/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==} engines: {node: '>=6.9.0'} @@ -2730,10 +2007,9 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.0 '@babel/types': 7.16.0 - dev: false - /@babel/plugin-transform-regenerator/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==} + /@babel/plugin-transform-regenerator/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2742,16 +2018,6 @@ packages: regenerator-transform: 0.14.5 dev: true - /@babel/plugin-transform-regenerator/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - regenerator-transform: 0.14.5 - dev: true - /@babel/plugin-transform-regenerator/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==} engines: {node: '>=6.9.0'} @@ -2761,8 +2027,8 @@ packages: '@babel/core': 7.16.0 regenerator-transform: 0.14.5 - /@babel/plugin-transform-reserved-words/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==} + /@babel/plugin-transform-reserved-words/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2771,16 +2037,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-reserved-words/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-reserved-words/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==} engines: {node: '>=6.9.0'} @@ -2790,23 +2046,6 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-runtime/7.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.15.8 - babel-plugin-polyfill-corejs3: 0.2.5_@babel+core@7.15.8 - babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.15.8 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-runtime/7.16.4_@babel+core@7.16.0: resolution: {integrity: sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==} engines: {node: '>=6.9.0'} @@ -2823,8 +2062,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==} + /@babel/plugin-transform-shorthand-properties/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2833,16 +2072,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-shorthand-properties/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-shorthand-properties/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==} engines: {node: '>=6.9.0'} @@ -2852,26 +2081,15 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-spread/7.15.8_@babel+core@7.12.9: - resolution: {integrity: sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==} + /@babel/plugin-transform-spread/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.15.4 - dev: true - - /@babel/plugin-transform-spread/7.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.15.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 dev: true /@babel/plugin-transform-spread/7.16.0_@babel+core@7.16.0: @@ -2884,8 +2102,8 @@ packages: '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - /@babel/plugin-transform-sticky-regex/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==} + /@babel/plugin-transform-sticky-regex/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2894,16 +2112,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-sticky-regex/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-sticky-regex/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==} engines: {node: '>=6.9.0'} @@ -2913,8 +2121,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-template-literals/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==} + /@babel/plugin-transform-template-literals/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2923,16 +2131,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-template-literals/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-template-literals/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==} engines: {node: '>=6.9.0'} @@ -2942,8 +2140,8 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-typeof-symbol/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==} + /@babel/plugin-transform-typeof-symbol/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2952,16 +2150,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-typeof-symbol/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-typeof-symbol/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==} engines: {node: '>=6.9.0'} @@ -2984,8 +2172,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==} + /@babel/plugin-transform-unicode-escapes/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2994,16 +2182,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-unicode-escapes/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-unicode-escapes/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==} engines: {node: '>=6.9.0'} @@ -3013,25 +2191,14 @@ packages: '@babel/core': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/plugin-transform-unicode-regex/7.14.5_@babel+core@7.12.9: - resolution: {integrity: sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==} + /@babel/plugin-transform-unicode-regex/7.16.0_@babel+core@7.12.9: + resolution: {integrity: sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==} 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.14.5_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - - /@babel/plugin-transform-unicode-regex/7.14.5_@babel+core@7.15.8: - resolution: {integrity: sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.15.8 + '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -3058,25 +2225,25 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.15.0 + '@babel/compat-data': 7.16.4 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.12.9 - '@babel/helper-module-imports': 7.15.4 + '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.12.9 + '@babel/helper-module-imports': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-proposal-async-generator-functions': 7.15.8_@babel+core@7.12.9 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-dynamic-import': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-export-namespace-from': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-json-strings': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-logical-assignment-operators': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-numeric-separator': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-object-rest-spread': 7.15.6_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-catch-binding': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.16.4_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.16.0_@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-dynamic-import': 7.8.3_@babel+core@7.12.9 @@ -3089,126 +2256,42 @@ packages: '@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-top-level-await': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-async-to-generator': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoping': 7.15.3_@babel+core@7.12.9 - '@babel/plugin-transform-classes': 7.15.4_@babel+core@7.12.9 - '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-destructuring': 7.14.7_@babel+core@7.12.9 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-duplicate-keys': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-exponentiation-operator': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-for-of': 7.15.4_@babel+core@7.12.9 - '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-modules-amd': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-modules-commonjs': 7.15.4_@babel+core@7.12.9 - '@babel/plugin-transform-modules-systemjs': 7.15.4_@babel+core@7.12.9 - '@babel/plugin-transform-modules-umd': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-named-capturing-groups-regex': 7.14.9_@babel+core@7.12.9 - '@babel/plugin-transform-new-target': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.15.4_@babel+core@7.12.9 - '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-regenerator': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-reserved-words': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-spread': 7.15.8_@babel+core@7.12.9 - '@babel/plugin-transform-sticky-regex': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-typeof-symbol': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-escapes': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-regex': 7.14.5_@babel+core@7.12.9 - '@babel/preset-modules': 0.1.4_@babel+core@7.12.9 - '@babel/types': 7.15.6 - core-js-compat: 3.18.3 - semver: 5.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-env/7.15.8_@babel+core@7.15.8: - resolution: {integrity: sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.8 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-proposal-async-generator-functions': 7.15.8_@babel+core@7.15.8 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-class-static-block': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-proposal-dynamic-import': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-export-namespace-from': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-json-strings': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-logical-assignment-operators': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-numeric-separator': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-object-rest-spread': 7.15.6_@babel+core@7.15.8 - '@babel/plugin-proposal-optional-catch-binding': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-proposal-private-property-in-object': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.8 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.8 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-async-to-generator': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-block-scoping': 7.15.3_@babel+core@7.15.8 - '@babel/plugin-transform-classes': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-destructuring': 7.14.7_@babel+core@7.15.8 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-duplicate-keys': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-exponentiation-operator': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-for-of': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-modules-amd': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-modules-commonjs': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-transform-modules-systemjs': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-transform-modules-umd': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-named-capturing-groups-regex': 7.14.9_@babel+core@7.15.8 - '@babel/plugin-transform-new-target': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-parameters': 7.15.4_@babel+core@7.15.8 - '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-regenerator': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-reserved-words': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-spread': 7.15.8_@babel+core@7.15.8 - '@babel/plugin-transform-sticky-regex': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-typeof-symbol': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-unicode-escapes': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-unicode-regex': 7.14.5_@babel+core@7.15.8 - '@babel/preset-modules': 0.1.4_@babel+core@7.15.8 + '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.16.0_@babel+core@7.12.9 + '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 '@babel/types': 7.16.0 - babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.15.8 - babel-plugin-polyfill-corejs3: 0.2.5_@babel+core@7.15.8 - babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.15.8 - core-js-compat: 3.18.3 - semver: 6.3.0 + core-js-compat: 3.19.1 + semver: 5.7.1 transitivePeerDependencies: - supports-color dev: true @@ -3297,29 +2380,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/preset-modules/0.1.4_@babel+core@7.12.9: - resolution: {integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==} + /@babel/preset-modules/0.1.5_@babel+core@7.12.9: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.12.9 - '@babel/types': 7.15.6 - esutils: 2.0.3 - dev: true - - /@babel/preset-modules/0.1.4_@babel+core@7.15.8: - resolution: {integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.15.8 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.15.8 - '@babel/types': 7.15.6 + '@babel/plugin-proposal-unicode-property-regex': 7.16.0_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.16.0_@babel+core@7.12.9 + '@babel/types': 7.16.0 esutils: 2.0.3 dev: true @@ -3374,6 +2444,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 + dev: false /@babel/runtime/7.16.3: resolution: {integrity: sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==} @@ -3389,23 +2460,6 @@ packages: '@babel/parser': 7.16.4 '@babel/types': 7.16.0 - /@babel/traverse/7.15.4: - resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-hoist-variables': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - '@babel/parser': 7.16.2 - '@babel/types': 7.16.0 - debug: 4.3.2 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/traverse/7.16.0: resolution: {integrity: sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==} engines: {node: '>=6.9.0'} @@ -3421,7 +2475,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/traverse/7.16.3: resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==} @@ -3439,14 +2492,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types/7.15.6: - resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.15.7 - to-fast-properties: 2.0.0 - dev: true - /@babel/types/7.16.0: resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} engines: {node: '>=6.9.0'} @@ -3913,11 +2958,11 @@ packages: exit: 0.1.2 glob: 7.2.0 graceful-fs: 4.2.8 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.0.1 istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.0.5 + istanbul-lib-source-maps: 4.0.0 + istanbul-reports: 3.0.3 jest-haste-map: 25.5.1 jest-resolve: 25.5.1 jest-util: 25.5.0 @@ -4138,9 +3183,9 @@ packages: resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.15.8 '@jest/types': 25.5.0 - babel-plugin-istanbul: 6.1.1 + babel-plugin-istanbul: 6.0.0 chalk: 3.0.0 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 @@ -4157,6 +3202,29 @@ packages: transitivePeerDependencies: - supports-color + /@jest/transform/26.6.2: + resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/core': 7.16.0 + '@jest/types': 26.6.2 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.8.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.8 + jest-haste-map: 26.6.2 + jest-regex-util: 26.0.0 + jest-util: 26.6.2 + micromatch: 4.0.4 + pirates: 4.0.1 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: false + /@jest/transform/27.3.1: resolution: {integrity: sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -4257,11 +3325,11 @@ packages: fastq: 1.13.0 dev: true - /@nrwl/cli/13.1.4: - resolution: {integrity: sha512-X2mJwjXitBbY/zRkcVJCUI4Kwk7bPJ/ZJwZHQH5Sn9IAX3p13ELQ1eAanxpOpUakVLvkjlAJ1g5vzt1znzs8wA==} + /@nrwl/cli/13.3.4: + resolution: {integrity: sha512-x3IM9X/q5Yv54ZSr+GsIxa07GJt+hG7dOdjvAFBnixMWb3o4utOVrd6GusDrn2t0HhnCuzqLosFnk+gcOrL34w==} hasBin: true dependencies: - '@nrwl/tao': 13.1.4 + '@nrwl/tao': 13.3.4 chalk: 4.1.0 enquirer: 2.3.6 v8-compile-cache: 2.3.0 @@ -4269,11 +3337,11 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cli/13.2.3: - resolution: {integrity: sha512-4hrOYQ9MqhWOdjQTwuQqHTfPu8lYgdFCE39PVWAcePtoi67mUeba54HkyT6nkTHI1TbO7q8Kf+R73dRhhxDlpA==} + /@nrwl/cli/13.3.5: + resolution: {integrity: sha512-Cpa/DnsgcE7mLNOPXQbbN4wXBalvEi1TF+sPvTpGaRpy5FxEg6kTQ0C4oKiOGX97YkR1uy0OGVPpw2IKGzG2Ig==} hasBin: true dependencies: - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.5 chalk: 4.1.0 enquirer: 2.3.6 v8-compile-cache: 2.3.0 @@ -4281,18 +3349,18 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cypress/13.1.4_45e5b05f8550ddf8ad44a90a38658752: - resolution: {integrity: sha512-t3HewJdWl7wWAoFm6ZCtMbe8AODvV7Gtck4RP/cB0lFn6Di0q8tUNutVXSfNSdAvSURvegurZsyb30ehIM1FcQ==} + /@nrwl/cypress/13.3.5_45e5b05f8550ddf8ad44a90a38658752: + resolution: {integrity: sha512-m4n+NxNvmqj9nUdKXETI3pAFJCd1DJVHm7Jwf1L8sYFlxOAv8MaFEmrPjmx2qY8F5TUqWqG2BgRYwIx1ImIPkg==} peerDependencies: - cypress: '>= 3 < 9' + cypress: '>= 3 < 10' peerDependenciesMeta: cypress: optional: true dependencies: '@cypress/webpack-preprocessor': 5.10.0_8664c4230b51db280b15ba36bf8e5650 - '@nrwl/devkit': 13.1.4 - '@nrwl/linter': 13.1.4_ts-node@9.1.1 - '@nrwl/workspace': 13.1.4_e369ab82b1fb00f8171cda4ee1f045dc + '@nrwl/devkit': 13.3.5 + '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 + '@nrwl/workspace': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 chalk: 4.1.0 enhanced-resolve: 5.8.3 fork-ts-checker-webpack-plugin: 6.2.10 @@ -4306,6 +3374,7 @@ packages: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - '@types/react' - babel-loader - bufferutil - canvas @@ -4329,10 +3398,10 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.1.4: - resolution: {integrity: sha512-2jzb7A94O8k3lQfIvCgVb/LPoym2P6EoKAEYYX6OgPY0hwjaqik1LgkWxSnN0yTPL5gCCxb6pYLHS8A0tDye2w==} + /@nrwl/devkit/13.3.5: + resolution: {integrity: sha512-QqCP81T1PmAQdVyX5roQwNMMkyp+Pqe79WU4r/Uln0DAEzb9BcTQE61TDgNIcdvMq7Ng6uxGWRnhK8XbdLNVtw==} dependencies: - '@nrwl/tao': 13.1.4 + '@nrwl/tao': 13.3.5 ejs: 3.1.6 ignore: 5.1.9 rxjs: 6.6.7 @@ -4340,67 +3409,12 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.2.3: - resolution: {integrity: sha512-/cp8hFclOXSAjj9pwb6bOU8yw593HfelcCBi8o8Jhb0Luhn1RzLCOpmHNsOf2hWzSUPEr0BuI0R55ubCEB+k6A==} - dependencies: - '@nrwl/tao': 13.2.3 - ejs: 3.1.6 - ignore: 5.1.9 - rxjs: 6.6.7 - semver: 7.3.4 - tslib: 2.3.1 - dev: true - - /@nrwl/jest/13.1.4: - resolution: {integrity: sha512-Lb+jVgHhamnO/kkJpRbgr7lvLGh4pqgp+WXzcDJo8in0TgWcdZzldCfV7lXiFoRVv1FgUjVYb5BgfNcVsrDJLg==} + /@nrwl/jest/13.3.5: + resolution: {integrity: sha512-psSpkw+ZzasVnHlJuoTuEDKvQ1O+ad7ND2a6ZSSJVPqxcB/sapikXJZjwKIYdGvl4LLQdfNAV1ioXSVP3Jl4sg==} dependencies: '@jest/reporters': 27.2.2 '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.1.4 - chalk: 4.1.0 - identity-obj-proxy: 3.0.0 - jest-config: 27.2.2 - jest-resolve: 27.2.2 - jest-util: 27.2.0 - rxjs: 6.6.7 - tslib: 2.3.1 - transitivePeerDependencies: - - bufferutil - - canvas - - node-notifier - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@nrwl/jest/13.1.4_ts-node@9.1.1: - resolution: {integrity: sha512-Lb+jVgHhamnO/kkJpRbgr7lvLGh4pqgp+WXzcDJo8in0TgWcdZzldCfV7lXiFoRVv1FgUjVYb5BgfNcVsrDJLg==} - dependencies: - '@jest/reporters': 27.2.2 - '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.1.4 - chalk: 4.1.0 - identity-obj-proxy: 3.0.0 - jest-config: 27.2.2_ts-node@9.1.1 - jest-resolve: 27.2.2 - jest-util: 27.2.0 - rxjs: 6.6.7 - tslib: 2.3.1 - transitivePeerDependencies: - - bufferutil - - canvas - - node-notifier - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@nrwl/jest/13.2.3: - resolution: {integrity: sha512-M9/x0uZNSVKkcyNHcA2+Muj23KRo9SDiCsTb7HnkHhtSbhIWMd1knKP45bOr8CjeeiKNPeervx7uiN5516z8JA==} - dependencies: - '@jest/reporters': 27.2.2 - '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.2.3 + '@nrwl/devkit': 13.3.5 chalk: 4.1.0 identity-obj-proxy: 3.0.0 jest-config: 27.2.2 @@ -4418,15 +3432,19 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.1.4: - resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} + /@nrwl/jest/13.3.5_ts-node@9.1.1: + resolution: {integrity: sha512-psSpkw+ZzasVnHlJuoTuEDKvQ1O+ad7ND2a6ZSSJVPqxcB/sapikXJZjwKIYdGvl4LLQdfNAV1ioXSVP3Jl4sg==} dependencies: - '@nrwl/devkit': 13.1.4 - '@nrwl/jest': 13.1.4 - eslint: 7.32.0 - glob: 7.1.4 - minimatch: 3.0.4 - tmp: 0.2.1 + '@jest/reporters': 27.2.2 + '@jest/test-result': 27.2.2 + '@nrwl/devkit': 13.3.5 + chalk: 4.1.0 + identity-obj-proxy: 3.0.0 + jest-config: 27.2.2_ts-node@9.1.1 + jest-resolve: 27.2.2 + jest-util: 27.2.0 + resolve.exports: 1.1.0 + rxjs: 6.6.7 tslib: 2.3.1 transitivePeerDependencies: - bufferutil @@ -4437,31 +3455,34 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.1.4_ts-node@9.1.1: - resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} + /@nrwl/js/13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669: + resolution: {integrity: sha512-XqRvZbyBC4BAlG4V2QNjXb7t8PNgfuWs8km+/S82AYJebRdf17lR+ARm+qghVIc61fZThYSTu2Be2zDdzn8YZA==} dependencies: - '@nrwl/devkit': 13.1.4 - '@nrwl/jest': 13.1.4_ts-node@9.1.1 - eslint: 7.32.0 - glob: 7.1.4 - minimatch: 3.0.4 - tmp: 0.2.1 - tslib: 2.3.1 + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5_ts-node@9.1.1 + '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 + '@nrwl/workspace': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 + chalk: 4.1.0 + js-tokens: 4.0.0 transitivePeerDependencies: + - '@types/react' - bufferutil - canvas - node-notifier + - prettier - supports-color - ts-node + - typescript - utf-8-validate dev: true - /@nrwl/linter/13.2.3: - resolution: {integrity: sha512-kdzPWYzR96XYghJ5yIaYSybDrtcAcSxgcscwP1UWvME19O2W8DHbhIj3AzBgjSG0X6hBEh6k9kpyQ49jNkUMCw==} + /@nrwl/linter/13.3.5_ts-node@9.1.1+typescript@4.2.4: + resolution: {integrity: sha512-bNhwTFmxVWVtitirc+YGRc7XJvOx8m/rbvfKSVxv6l+q/udRxHcOH0jLlGraMYBohCw6T7NxgMR+BOEFr+u+5g==} dependencies: - '@nrwl/devkit': 13.2.3 - '@nrwl/jest': 13.2.3 - eslint: 7.32.0 + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5_ts-node@9.1.1 + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.2.4 + eslint: 8.2.0 glob: 7.1.4 minimatch: 3.0.4 tmp: 0.2.1 @@ -4472,6 +3493,28 @@ packages: - node-notifier - supports-color - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/linter/13.3.5_typescript@4.2.4: + resolution: {integrity: sha512-bNhwTFmxVWVtitirc+YGRc7XJvOx8m/rbvfKSVxv6l+q/udRxHcOH0jLlGraMYBohCw6T7NxgMR+BOEFr+u+5g==} + dependencies: + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5 + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.2.4 + eslint: 8.2.0 + glob: 7.1.4 + minimatch: 3.0.4 + tmp: 0.2.1 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - typescript - utf-8-validate dev: true @@ -4492,15 +3535,17 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/tao/13.1.4: - resolution: {integrity: sha512-XslTN56x5Y1sEuVkGoAMCibEU0V5CunOORSewMWsNaEWtefhkLD00R0L02Uj4q1d28H+6TiucjR/mGFjyEzWUQ==} + /@nrwl/tao/13.3.4: + resolution: {integrity: sha512-ujwxGZcR3De8FSj8IjVSGmfZ2CQZfFzeV9QXU8DeiZ9J1ylWPwWpMIS3XVxZIpe7gR++XP4jbvFodKFQP7PzVQ==} hasBin: true dependencies: chalk: 4.1.0 enquirer: 2.3.6 + fast-glob: 3.2.7 fs-extra: 9.1.0 + ignore: 5.1.9 jsonc-parser: 3.0.0 - nx: 13.1.4 + nx: 13.3.4 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 semver: 7.3.4 @@ -4509,15 +3554,17 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/tao/13.2.3: - resolution: {integrity: sha512-vn+GqvFVinqAXzvbHznPBtCg9OCfirh3hF68sZgY2C6jZ3m47XwST3mLTRSDTtSDy9QfUrSZ6p4uAk2Iht0yBQ==} + /@nrwl/tao/13.3.5: + resolution: {integrity: sha512-OOoNrH9ELt7GwNnu34L4gGTWpX8N2F7v0H23I6tSM5Qj6KhIJ/DPxaedF9a6frUhewX1+iuvZ0rOD5/TWRUd2w==} hasBin: true dependencies: chalk: 4.1.0 enquirer: 2.3.6 + fast-glob: 3.2.7 fs-extra: 9.1.0 + ignore: 5.1.9 jsonc-parser: 3.0.0 - nx: 13.2.3 + nx: 13.3.5 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 semver: 7.3.4 @@ -4526,8 +3573,8 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/web/13.1.4_42cab1dece2b2240094de84cfd414406: - resolution: {integrity: sha512-ana2YrMHYltowOHG3f3+EzA5jQVL4+QsVniN8qXFJrwecpFEoRlCZYGvhomhe3TyC4QlQkmmSm575foV8dzAyQ==} + /@nrwl/web/13.3.5_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-3nrcxp6o/vR2ISwJfX3FhP2tMG24ZdYfvgo5OCbYRBhWCZ+40UqQ53J7i3XzYAR/JrN2f8nDjTci5i9QljDWtw==} dependencies: '@babel/core': 7.16.0 '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.0 @@ -4537,11 +3584,12 @@ packages: '@babel/preset-env': 7.16.4_@babel+core@7.16.0 '@babel/preset-typescript': 7.16.0_@babel+core@7.16.0 '@babel/runtime': 7.16.3 - '@nrwl/cypress': 13.1.4_45e5b05f8550ddf8ad44a90a38658752 - '@nrwl/devkit': 13.1.4 - '@nrwl/jest': 13.1.4_ts-node@9.1.1 - '@nrwl/linter': 13.1.4_ts-node@9.1.1 - '@nrwl/workspace': 13.1.4_e369ab82b1fb00f8171cda4ee1f045dc + '@nrwl/cypress': 13.3.5_45e5b05f8550ddf8ad44a90a38658752 + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5_ts-node@9.1.1 + '@nrwl/js': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 + '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 + '@nrwl/workspace': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_92cb4b81c6b9f71cf92f0bdb85e4210c '@rollup/plugin-babel': 5.3.0_@babel+core@7.16.0+rollup@2.60.0 '@rollup/plugin-commonjs': 20.0.0_rollup@2.60.0 @@ -4591,8 +3639,8 @@ packages: rollup-plugin-typescript2: 0.30.0_rollup@2.60.0+typescript@4.2.4 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 - sass: 1.43.4 - sass-loader: 12.3.0_sass@1.43.4+webpack@5.64.1 + sass: 1.45.0 + sass-loader: 12.3.0_sass@1.45.0+webpack@5.64.1 semver: 7.3.4 source-map: 0.7.3 source-map-loader: 3.0.0_webpack@5.64.1 @@ -4615,6 +3663,7 @@ packages: transitivePeerDependencies: - '@swc/core' - '@types/babel__core' + - '@types/react' - '@types/webpack' - acorn - bufferutil @@ -4640,33 +3689,37 @@ packages: - webpack-plugin-serve dev: true - /@nrwl/workspace/13.1.4_e369ab82b1fb00f8171cda4ee1f045dc: - resolution: {integrity: sha512-dQlxswf2XlMyEJBK4+fZHQTpxtevcWzDCVO9iLjuvL1XZDbDQG95+N7DsASq67qOxFAlpYWVxAVZAXIHsnX9tQ==} + /@nrwl/workspace/13.3.5_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-2SU0uiplM0A7oxejDCsXftJkELyi00FYTIPq19oD+uVLUblWo2THIks9Zst7mjw1FMYu4PsCTLQAO2qpDnRmUA==} peerDependencies: prettier: ^2.3.0 peerDependenciesMeta: prettier: optional: true dependencies: - '@nrwl/cli': 13.1.4 - '@nrwl/devkit': 13.1.4 - '@nrwl/jest': 13.1.4_ts-node@9.1.1 - '@nrwl/linter': 13.1.4_ts-node@9.1.1 - '@parcel/watcher': 2.0.0-alpha.11 + '@nrwl/cli': 13.3.5 + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5 + '@nrwl/linter': 13.3.5_typescript@4.2.4 + '@parcel/watcher': 2.0.4 chalk: 4.1.0 chokidar: 3.5.2 cosmiconfig: 4.0.0 dotenv: 10.0.0 enquirer: 2.3.6 + figures: 3.2.0 flat: 5.0.2 fs-extra: 9.1.0 glob: 7.1.4 ignore: 5.1.9 + ink: 3.2.0_react@17.0.2 + ink-spinner: 4.0.3_ink@3.2.0+react@17.0.2 minimatch: 3.0.4 npm-run-all: 4.1.5 npm-run-path: 4.0.1 open: 7.4.2 prettier: /wp-prettier/2.2.1-beta-1 + react: 17.0.2 rxjs: 6.6.7 semver: 7.3.4 strip-ansi: 6.0.0 @@ -4675,41 +3728,47 @@ packages: yargs: 15.4.1 yargs-parser: 20.0.0 transitivePeerDependencies: + - '@types/react' - bufferutil - canvas - node-notifier - supports-color - ts-node + - typescript - utf-8-validate dev: true - /@nrwl/workspace/13.2.3_wp-prettier@2.2.1-beta-1: - resolution: {integrity: sha512-dFB6XXDLP4Nmh/Sw8Euwdt7f0tg1O6JxJNvXV2BfWG1rK3dmhTz4Q+8fgxl7AxsrToVrXDAh16mPyfAzpqH4pw==} + /@nrwl/workspace/13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669: + resolution: {integrity: sha512-2SU0uiplM0A7oxejDCsXftJkELyi00FYTIPq19oD+uVLUblWo2THIks9Zst7mjw1FMYu4PsCTLQAO2qpDnRmUA==} peerDependencies: prettier: ^2.3.0 peerDependenciesMeta: prettier: optional: true dependencies: - '@nrwl/cli': 13.2.3 - '@nrwl/devkit': 13.2.3 - '@nrwl/jest': 13.2.3 - '@nrwl/linter': 13.2.3 - '@parcel/watcher': 2.0.0-alpha.11 + '@nrwl/cli': 13.3.5 + '@nrwl/devkit': 13.3.5 + '@nrwl/jest': 13.3.5_ts-node@9.1.1 + '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 + '@parcel/watcher': 2.0.4 chalk: 4.1.0 chokidar: 3.5.2 cosmiconfig: 4.0.0 dotenv: 10.0.0 enquirer: 2.3.6 + figures: 3.2.0 flat: 5.0.2 fs-extra: 9.1.0 glob: 7.1.4 ignore: 5.1.9 + ink: 3.2.0_react@17.0.2 + ink-spinner: 4.0.3_ink@3.2.0+react@17.0.2 minimatch: 3.0.4 npm-run-all: 4.1.5 npm-run-path: 4.0.1 open: 7.4.2 prettier: /wp-prettier/2.2.1-beta-1 + react: 17.0.2 rxjs: 6.6.7 semver: 7.3.4 strip-ansi: 6.0.0 @@ -4718,16 +3777,18 @@ packages: yargs: 15.4.1 yargs-parser: 20.0.0 transitivePeerDependencies: + - '@types/react' - bufferutil - canvas - node-notifier - supports-color - ts-node + - typescript - utf-8-validate dev: true - /@parcel/watcher/2.0.0-alpha.11: - resolution: {integrity: sha512-zMIAsFLcnB82kkk0kSOZ/zgyihb8sty0zVrsz+3ruoYXkchymWsCDsxiX4v+X2s8Jppk3JE8vlnD4DKs3QTOEQ==} + /@parcel/watcher/2.0.4: + resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: @@ -4735,6 +3796,15 @@ packages: node-gyp-build: 4.3.0 dev: true + /@phenomnomnominal/tsquery/4.1.1_typescript@4.2.4: + resolution: {integrity: sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==} + peerDependencies: + typescript: ^3 || ^4 + dependencies: + esquery: 1.4.0 + typescript: 4.2.4 + dev: true + /@pmmmwh/react-refresh-webpack-plugin/0.5.1_92cb4b81c6b9f71cf92f0bdb85e4210c: resolution: {integrity: sha512-ccap6o7+y5L8cnvkZ9h8UXCGyy2DqtwCD+/N3Yru6lxMvcdkPKtdx13qd7sAC9s5qZktOmWf9lfUjsGOvSdYhg==} engines: {node: '>= 10.13'} @@ -4914,8 +3984,8 @@ packages: engines: {node: '>= 8.9.0', npm: '>= 5.5.1'} dev: false - /@slack/types/2.2.0: - resolution: {integrity: sha512-/yHEFvgp0UY/lfFvQqbq9BocW/pM4xnGycqGAx+plRgYp96dZp1y50Whz7yzOgasEUsy5TyQfBK07cj0RwUyIg==} + /@slack/types/2.4.0: + resolution: {integrity: sha512-0k8UlVEH9gUVwTbwcanS1JT2vCROkr1WESgdXW7d2maWYTuwbVEx87YvXPjsemAJfdu+RYqxGhO2oGTigprepA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} dev: false @@ -4937,15 +4007,15 @@ packages: - debug dev: false - /@slack/web-api/6.4.0: - resolution: {integrity: sha512-Hi0pq60d/zCqn1UQvuSyrMcoLGNbKUBL/Tmk1b1RPTZdVYiRK8zp337glvhxTBwiaGOu+58uO5yflpK1AAuoRw==} + /@slack/web-api/6.5.1: + resolution: {integrity: sha512-W1PDIdHz/GtDpC8afpPUsXMfAQ+sZGwmfxx+Ug83uhRD8zECrypGTmIyCqrCSWzf2qVKT9XvMftZX3m0AmPY8A==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} dependencies: '@slack/logger': 3.0.0 - '@slack/types': 2.2.0 + '@slack/types': 2.4.0 '@types/is-stream': 1.1.0 '@types/node': 16.10.3 - axios: 0.21.4 + axios: 0.24.0 eventemitter3: 3.1.2 form-data: 2.5.1 is-electron: 2.2.0 @@ -5084,13 +4154,6 @@ packages: '@types/node': 16.10.3 dev: true - /@types/glob/7.1.4: - resolution: {integrity: sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==} - dependencies: - '@types/minimatch': 3.0.5 - '@types/node': 16.10.3 - dev: true - /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: @@ -5272,6 +4335,10 @@ packages: '@types/yargs-parser': 20.2.1 dev: true + /@types/yoga-layout/1.9.2: + resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} + dev: true + /@typescript-eslint/eslint-plugin/3.10.1_aab05197bc2ab2306ca58e96baf5381b: resolution: {integrity: sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5364,7 +4431,7 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/2.34.0_eslint@8.1.0+typescript@4.2.4: + /@typescript-eslint/experimental-utils/2.34.0_eslint@8.2.0+typescript@4.2.4: resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} peerDependencies: @@ -5372,7 +4439,7 @@ packages: dependencies: '@types/json-schema': 7.0.9 '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.2.4 - eslint: 8.1.0 + eslint: 8.2.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 transitivePeerDependencies: @@ -6006,6 +5073,33 @@ packages: '@xtuc/long': 4.2.2 dev: true + /@wojtekmaj/enzyme-adapter-react-17/0.6.6_enzyme@3.11.0: + resolution: {integrity: sha512-gSfhg8CiL0Vwc2UgUblGVZIy7M0KyXaZsd8+QwzV8TSVRLkGyzdLtYEcs9wRWyQTsdmOd+oRGqbVgUX7AVJxug==} + peerDependencies: + enzyme: ^3.0.0 + react: ^17.0.0-0 + react-dom: ^17.0.0-0 + dependencies: + '@wojtekmaj/enzyme-adapter-utils': 0.1.2 + enzyme: 3.11.0 + enzyme-shallow-equal: 1.0.4 + has: 1.0.3 + prop-types: 15.7.2 + react-is: 17.0.2 + react-test-renderer: 17.0.2 + dev: false + + /@wojtekmaj/enzyme-adapter-utils/0.1.2: + resolution: {integrity: sha512-MM/DqDqvxNVlWLqSVQiUbRN9MuDLJfefmPbJ8ZKdmdf5ID8G+i42XhFpoQh5bAZUCdwzRae3+WSZl2lXcFOrhw==} + peerDependencies: + react: ^17.0.0-0 + dependencies: + function.prototype.name: 1.1.5 + has: 1.0.3 + object.fromentries: 2.0.5 + prop-types: 15.7.2 + dev: false + /@woocommerce/admin-e2e-tests/0.1.1: resolution: {integrity: sha512-4exEPINL1yqLvTsVW1ECQfpM79TKQAuA1+y7dyIuCmwDIbvkFxK13CX8gJyZcHroNbiM9fbpyJ6LqDmRVttxwQ==} peerDependencies: @@ -6039,7 +5133,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.3 dev: true /@wordpress/babel-plugin-import-jsx-pragma/3.1.0_@babel+core@7.12.9: @@ -6064,15 +5158,15 @@ packages: resolution: {integrity: sha512-bsa4piS4GU02isj2XJNUgSEC7MpzdYNy9wOFySrp8G6IHAvwrlwcPEXJf5EuwE8ZqTMmFAzPyKOHFEAx/j+J1A==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.8 - '@babel/plugin-proposal-async-generator-functions': 7.15.8_@babel+core@7.15.8 - '@babel/plugin-proposal-object-rest-spread': 7.15.6_@babel+core@7.15.8 - '@babel/plugin-transform-react-jsx': 7.14.9_@babel+core@7.15.8 - '@babel/plugin-transform-runtime': 7.15.8_@babel+core@7.15.8 - '@babel/preset-env': 7.15.8_@babel+core@7.15.8 - '@babel/runtime': 7.15.4 + '@babel/core': 7.16.0 + '@babel/plugin-proposal-async-generator-functions': 7.16.4_@babel+core@7.16.0 + '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.0 + '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.0 + '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.16.0 + '@babel/preset-env': 7.16.4_@babel+core@7.16.0 + '@babel/runtime': 7.16.3 '@wordpress/browserslist-config': 2.7.0 - babel-core: 7.0.0-bridge.0_@babel+core@7.15.8 + babel-core: 7.0.0-bridge.0_@babel+core@7.16.0 transitivePeerDependencies: - supports-color dev: true @@ -6199,10 +5293,10 @@ packages: eslint-config-prettier: 6.15.0_eslint@6.8.0 eslint-plugin-jest: 23.20.0_eslint@6.8.0+typescript@3.9.7 eslint-plugin-jsdoc: 30.7.13_eslint@6.8.0 - eslint-plugin-jsx-a11y: 6.4.1_eslint@6.8.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@6.8.0 eslint-plugin-prettier: 3.4.1_a3d1a124e53dbc217d8b5198036499fa - eslint-plugin-react: 7.26.1_eslint@6.8.0 - eslint-plugin-react-hooks: 4.2.0_eslint@6.8.0 + eslint-plugin-react: 7.27.0_eslint@6.8.0 + eslint-plugin-react-hooks: 4.3.0_eslint@6.8.0 globals: 12.4.0 prettier: /wp-prettier/2.0.5 requireindex: 1.2.0 @@ -6211,22 +5305,22 @@ packages: - typescript dev: true - /@wordpress/eslint-plugin/7.3.0_eslint@8.1.0+typescript@4.2.4: + /@wordpress/eslint-plugin/7.3.0_eslint@8.2.0+typescript@4.2.4: resolution: {integrity: sha512-7wIFzzc14E1XuuT9haBuhoA9FRUGWlbD4Oek+XkiZlzNVqZI3slgbtIFJ6/Mfij1V18rv6Ns9a1cPJLtCU8JHQ==} peerDependencies: eslint: ^6 || ^7 dependencies: '@wordpress/prettier-config': 0.4.0 - babel-eslint: 10.1.0_eslint@8.1.0 + babel-eslint: 10.1.0_eslint@8.2.0 cosmiconfig: 7.0.1 - eslint: 8.1.0 - eslint-config-prettier: 6.15.0_eslint@8.1.0 - eslint-plugin-jest: 23.20.0_eslint@8.1.0+typescript@4.2.4 - eslint-plugin-jsdoc: 30.7.13_eslint@8.1.0 - eslint-plugin-jsx-a11y: 6.4.1_eslint@8.1.0 - eslint-plugin-prettier: 3.4.1_0ee224e0723ebb336792c58a54fe2b48 - eslint-plugin-react: 7.26.1_eslint@8.1.0 - eslint-plugin-react-hooks: 4.2.0_eslint@8.1.0 + eslint: 8.2.0 + eslint-config-prettier: 6.15.0_eslint@8.2.0 + eslint-plugin-jest: 23.20.0_eslint@8.2.0+typescript@4.2.4 + eslint-plugin-jsdoc: 30.7.13_eslint@8.2.0 + eslint-plugin-jsx-a11y: 6.5.1_eslint@8.2.0 + eslint-plugin-prettier: 3.4.1_1786dfa66f4aafe2692523a4f07ad974 + eslint-plugin-react: 7.27.0_eslint@8.2.0 + eslint-plugin-react-hooks: 4.3.0_eslint@8.2.0 globals: 12.4.0 prettier: /wp-prettier/2.0.5 requireindex: 1.2.0 @@ -6288,29 +5382,28 @@ packages: tannin: 1.2.0 dev: false - /@wordpress/jest-console/3.10.0_jest@25.5.4: - resolution: {integrity: sha512-iS1GSO+o7+p2PhvScOquD+IK7WqmVxa2s9uTUQyNEo06f9EUv6KNw0B1iZ00DpbgLqDCiczfdCNapC816UXIIA==} - engines: {node: '>=8'} + /@wordpress/jest-console/4.1.1_jest@25.5.4: + resolution: {integrity: sha512-f/DwduxU6k53tULurpCox4TKzp877+IWTHRUxE91+FOXS+2OsnhUPKfMiMEex4nu81a54EArwekPVKxaq4swbA==} + engines: {node: '>=12'} peerDependencies: - jest: '>=24' + jest: '>=26' dependencies: '@babel/runtime': 7.16.3 jest: 25.5.4 - jest-matcher-utils: 25.5.0 + jest-matcher-utils: 26.6.2 lodash: 4.17.21 dev: false - /@wordpress/jest-preset-default/6.6.0_@babel+core@7.12.9+jest@25.5.4: - resolution: {integrity: sha512-9HbKUNRMUCooXAKt+6jj5SZjDMtWoR9yMb9bJ5eCd9wUfrfQ/x2nUJK/RXiv1aI85HHmzl5KfQquZF76lYEkcw==} - engines: {node: '>=10'} + /@wordpress/jest-preset-default/7.1.3_@babel+core@7.12.9+jest@25.5.4: + resolution: {integrity: sha512-rz9V/YRr3TjLdZJQu7DAZHo848PpZ4N5ThtP4Lujy1O/UtcvtKF0r34SZTNDlFQO/G1USZQX/WL6HRhgl57iHA==} + engines: {node: '>=12'} peerDependencies: - jest: '>=25' + jest: '>=26' dependencies: - '@jest/reporters': 25.5.1 - '@wordpress/jest-console': 3.10.0_jest@25.5.4 - babel-jest: 25.5.1_@babel+core@7.12.9 + '@wojtekmaj/enzyme-adapter-react-17': 0.6.6_enzyme@3.11.0 + '@wordpress/jest-console': 4.1.1_jest@25.5.4 + babel-jest: 26.6.3_@babel+core@7.12.9 enzyme: 3.11.0 - enzyme-adapter-react-16: 1.15.6_enzyme@3.11.0 enzyme-to-json: 3.6.2_enzyme@3.11.0 jest: 25.5.4 transitivePeerDependencies: @@ -6338,6 +5431,30 @@ packages: engines: {node: '>=12'} dev: true + /@wordpress/stylelint-config/19.1.0_stylelint@13.13.1: + resolution: {integrity: sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==} + engines: {node: '>=12'} + peerDependencies: + stylelint: ^13.7.0 + dependencies: + stylelint: 13.13.1 + stylelint-config-recommended: 3.0.0_stylelint@13.13.1 + stylelint-config-recommended-scss: 4.3.0_d55469ff7b1b68c43b61270d19a60ab6 + stylelint-scss: 3.21.0_stylelint@13.13.1 + dev: true + + /@wordpress/stylelint-config/19.1.0_stylelint@13.8.0: + resolution: {integrity: sha512-K/wB9rhB+pH5WvDh3fV3DN5C3Bud+jPGXmnPY8fOXKMYI3twCFozK/j6sVuaJHqGp/0kKEF0hkkGh+HhD30KGQ==} + engines: {node: '>=12'} + peerDependencies: + stylelint: ^13.7.0 + dependencies: + stylelint: 13.8.0 + stylelint-config-recommended: 3.0.0_stylelint@13.8.0 + stylelint-config-recommended-scss: 4.3.0_748c5b2cfae76328890a14c0b5cd0d73 + stylelint-scss: 3.21.0_stylelint@13.8.0 + dev: true + /@wordpress/url/2.22.2: resolution: {integrity: sha512-aqpYKQXzyzkCOm+GzZRYlLb+wh58g0cwR1PaKAl0UXaBS4mdS+X6biMriylb4P8CVC/RR7CSw5XI20JC24KDwQ==} dependencies: @@ -6484,22 +5601,6 @@ packages: indent-string: 4.0.0 dev: true - /airbnb-prop-types/2.16.0: - resolution: {integrity: sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==} - peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0-alpha - dependencies: - array.prototype.find: 2.1.2 - function.prototype.name: 1.1.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object.assign: 4.1.2 - object.entries: 1.1.5 - prop-types: 15.7.2 - prop-types-exact: 1.2.0 - react-is: 16.13.1 - dev: false - /ajv-errors/1.0.1_ajv@6.12.6: resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} peerDependencies: @@ -6524,15 +5625,6 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv/8.6.3: - resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - /ajv/8.8.1: resolution: {integrity: sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg==} dependencies: @@ -6546,11 +5638,6 @@ packages: resolution: {integrity: sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=} dev: true - /amdefine/1.0.1: - resolution: {integrity: sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=} - engines: {node: '>=0.4.2'} - dev: true - /ansi-align/2.0.0: resolution: {integrity: sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=} dependencies: @@ -6661,13 +5748,6 @@ packages: resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} dev: true - /are-we-there-yet/1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.7 - dev: true - /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -6753,14 +5833,6 @@ packages: is-string: 1.0.7 dev: false - /array.prototype.find/2.1.2: - resolution: {integrity: sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: false - /array.prototype.flat/1.2.5: resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} engines: {node: '>= 0.4'} @@ -6833,10 +5905,6 @@ packages: resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} optional: true - /async-foreach/0.1.3: - resolution: {integrity: sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=} - dev: true - /async-limiter/1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} @@ -6858,8 +5926,8 @@ packages: resolution: {integrity: sha512-X5Dj8hK1pJNC2Wzo2Rcp9FBVdJMGRR/S7V+lH46s8GVFhtbo5O4Le5GECCF/8PISVdkUA6mMPvgz7qTTD1rf1g==} dev: true - /async/3.2.1: - resolution: {integrity: sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==} + /async/3.2.2: + resolution: {integrity: sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==} dev: true /asynckit/0.4.0: @@ -6875,6 +5943,11 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true + /auto-bind/4.0.0: + resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + engines: {node: '>=8'} + dev: true + /autoprefixer/10.4.0_postcss@8.3.0: resolution: {integrity: sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==} engines: {node: ^10 || ^12 || >=14} @@ -6910,11 +5983,6 @@ packages: /aws4/1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} - /axe-core/4.3.3: - resolution: {integrity: sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==} - engines: {node: '>=4'} - dev: true - /axe-core/4.3.5: resolution: {integrity: sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==} engines: {node: '>=4'} @@ -6959,12 +6027,12 @@ packages: js-tokens: 3.0.2 dev: true - /babel-core/7.0.0-bridge.0_@babel+core@7.15.8: + /babel-core/7.0.0-bridge.0_@babel+core@7.16.0: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.8 + '@babel/core': 7.16.0 dev: true /babel-eslint/10.1.0_eslint@6.8.0: @@ -6974,10 +6042,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.0 + '@babel/parser': 7.16.4 + '@babel/traverse': 7.16.3 + '@babel/types': 7.16.0 eslint: 6.8.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -6992,10 +6060,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.0 + '@babel/parser': 7.16.4 + '@babel/traverse': 7.16.3 + '@babel/types': 7.16.0 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -7003,18 +6071,18 @@ packages: - supports-color dev: true - /babel-eslint/10.1.0_eslint@8.1.0: + /babel-eslint/10.1.0_eslint@8.2.0: resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} engines: {node: '>=6'} deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - eslint: 8.1.0 + '@babel/code-frame': 7.16.0 + '@babel/parser': 7.16.4 + '@babel/traverse': 7.16.3 + '@babel/types': 7.16.0 + eslint: 8.2.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 transitivePeerDependencies: @@ -7052,43 +6120,43 @@ packages: - supports-color dev: false - /babel-jest/25.5.1_@babel+core@7.12.9: + /babel-jest/25.5.1_@babel+core@7.15.8: resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} engines: {node: '>= 8.3'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.15.8 '@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.12.9 + babel-preset-jest: 25.5.0_@babel+core@7.15.8 chalk: 3.0.0 graceful-fs: 4.2.8 slash: 3.0.0 transitivePeerDependencies: - supports-color + + /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'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@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.12.9 + chalk: 4.1.2 + graceful-fs: 4.2.8 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color dev: false - /babel-jest/25.5.1_@babel+core@7.16.0: - resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.0 - '@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.16.0 - chalk: 3.0.0 - graceful-fs: 4.2.8 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - /babel-jest/27.3.1_@babel+core@7.16.0: resolution: {integrity: sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7159,6 +6227,18 @@ packages: - supports-color dev: false + /babel-plugin-istanbul/6.0.0: + resolution: {integrity: sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.14.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 4.0.3 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + /babel-plugin-istanbul/6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -7186,6 +6266,16 @@ packages: '@babel/types': 7.16.0 '@types/babel__traverse': 7.14.2 + /babel-plugin-jest-hoist/26.6.2: + resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/template': 7.16.0 + '@babel/types': 7.16.0 + '@types/babel__core': 7.1.16 + '@types/babel__traverse': 7.14.2 + dev: false + /babel-plugin-jest-hoist/27.2.0: resolution: {integrity: sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7204,19 +6294,6 @@ packages: resolve: 1.20.0 dev: true - /babel-plugin-polyfill-corejs2/0.2.2_@babel+core@7.15.8: - resolution: {integrity: sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.8 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.15.8 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-corejs2/0.3.0_@babel+core@7.16.0: resolution: {integrity: sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==} peerDependencies: @@ -7229,18 +6306,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.2.5_@babel+core@7.15.8: - resolution: {integrity: sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.15.8 - core-js-compat: 3.18.3 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-corejs3/0.4.0_@babel+core@7.16.0: resolution: {integrity: sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==} peerDependencies: @@ -7252,17 +6317,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator/0.2.2_@babel+core@7.15.8: - resolution: {integrity: sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.15.8 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.15.8 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-regenerator/0.3.0_@babel+core@7.16.0: resolution: {integrity: sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==} peerDependencies: @@ -7283,8 +6337,26 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /babel-preset-current-node-syntax/0.1.4_@babel+core@7.12.9: + /babel-preset-current-node-syntax/0.1.4_@babel+core@7.15.8: resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.15.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.8 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.8 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.8 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.8 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.8 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.8 + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.9: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -7300,26 +6372,9 @@ packages: '@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-top-level-await': 7.14.5_@babel+core@7.12.9 dev: false - /babel-preset-current-node-syntax/0.1.4_@babel+core@7.16.0: - resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.0 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.16.0 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.0 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.0: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -7351,27 +6406,27 @@ packages: babel-plugin-jest-hoist: 24.9.0 dev: false - /babel-preset-jest/25.5.0_@babel+core@7.12.9: + /babel-preset-jest/25.5.0_@babel+core@7.15.8: resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.15.8 + babel-plugin-jest-hoist: 25.5.0 + babel-preset-current-node-syntax: 0.1.4_@babel+core@7.15.8 + + /babel-preset-jest/26.6.2_@babel+core@7.12.9: + resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} + engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - babel-plugin-jest-hoist: 25.5.0 - babel-preset-current-node-syntax: 0.1.4_@babel+core@7.12.9 + babel-plugin-jest-hoist: 26.6.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.9 dev: false - /babel-preset-jest/25.5.0_@babel+core@7.16.0: - resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.0 - babel-plugin-jest-hoist: 25.5.0 - babel-preset-current-node-syntax: 0.1.4_@babel+core@7.16.0 - /babel-preset-jest/27.2.0_@babel+core@7.16.0: resolution: {integrity: sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7669,7 +6724,6 @@ packages: escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 - dev: true /browserslist/4.18.1: resolution: {integrity: sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==} @@ -7867,7 +6921,6 @@ packages: /caniuse-lite/1.0.30001278: resolution: {integrity: sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==} - dev: true /caniuse-lite/1.0.30001280: resolution: {integrity: sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==} @@ -8063,11 +7116,6 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - /chrome-trace-event/1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -8103,8 +7151,8 @@ packages: isobject: 3.0.1 static-extend: 0.1.2 - /clean-css/4.2.3: - resolution: {integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==} + /clean-css/4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} dependencies: source-map: 0.6.1 @@ -8120,6 +7168,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /cli-boxes/2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true + /cli-cursor/2.1.0: resolution: {integrity: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=} engines: {node: '>=4'} @@ -8133,6 +7186,11 @@ packages: dependencies: restore-cursor: 3.1.0 + /cli-spinners/2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + dev: true + /cli-truncate/0.2.1: resolution: {integrity: sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=} engines: {node: '>=0.10.0'} @@ -8141,6 +7199,14 @@ packages: string-width: 1.0.2 dev: true + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + /cli-width/2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} dev: true @@ -8202,6 +7268,13 @@ packages: resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + /code-excerpt/3.0.0: + resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==} + engines: {node: '>=10'} + dependencies: + convert-to-spaces: 1.0.2 + dev: true + /code-point-at/1.1.0: resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} engines: {node: '>=0.10.0'} @@ -8361,7 +7434,7 @@ packages: graceful-fs: 4.2.8 make-dir: 1.3.0 unique-string: 1.0.0 - write-file-atomic: 2.4.3 + write-file-atomic: 2.4.1 xdg-basedir: 3.0.0 dev: true @@ -8374,10 +7447,6 @@ packages: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} dev: true - /console-control-strings/1.1.0: - resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} - dev: true - /constants-browserify/1.0.0: resolution: {integrity: sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=} dev: true @@ -8403,6 +7472,11 @@ packages: dependencies: safe-buffer: 5.1.2 + /convert-to-spaces/1.0.2: + resolution: {integrity: sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=} + engines: {node: '>= 4'} + dev: true + /cookie-signature/1.0.6: resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} dev: true @@ -8446,13 +7520,6 @@ packages: webpack: 5.64.1 dev: true - /core-js-compat/3.18.3: - resolution: {integrity: sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==} - dependencies: - browserslist: 4.17.6 - semver: 7.0.0 - dev: true - /core-js-compat/3.19.1: resolution: {integrity: sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==} dependencies: @@ -8644,12 +7711,12 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.3.0 - postcss: 8.3.0 - postcss-modules-extract-imports: 3.0.0_postcss@8.3.0 - postcss-modules-local-by-default: 4.0.0_postcss@8.3.0 - postcss-modules-scope: 3.0.0_postcss@8.3.0 - postcss-modules-values: 4.0.0_postcss@8.3.0 + icss-utils: 5.1.0_postcss@8.3.11 + postcss: 8.3.11 + postcss-modules-extract-imports: 3.0.0_postcss@8.3.11 + postcss-modules-local-by-default: 4.0.0_postcss@8.3.11 + postcss-modules-scope: 3.0.0_postcss@8.3.11 + postcss-modules-values: 4.0.0_postcss@8.3.11 postcss-value-parser: 4.1.0 semver: 7.3.5 webpack: 5.64.1 @@ -9056,7 +8123,7 @@ packages: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} dependencies: - globby: 10.0.2 + globby: 10.0.1 graceful-fs: 4.2.8 is-glob: 4.0.3 is-path-cwd: 2.2.0 @@ -9084,10 +8151,6 @@ packages: resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} engines: {node: '>=0.4.0'} - /delegates/1.0.0: - resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} - dev: true - /depd/1.1.2: resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} engines: {node: '>= 0.6'} @@ -9329,7 +8392,6 @@ packages: /electron-to-chromium/1.3.889: resolution: {integrity: sha512-suEUoPTD1mExjL9TdmH7cvEiWJVM2oEiAi+Y1p0QKxI2HcRlT44qDTP2c1aZmVwRemIPYOpxmV7CxQCOWcm4XQ==} - dev: true /electron-to-chromium/1.3.899: resolution: {integrity: sha512-w16Dtd2zl7VZ4N4Db+FIa7n36sgPGCKjrKvUUmp5ialsikvcQLjcJR9RWnlYNxIyEHLdHaoIZEqKsPxU9MdyBg==} @@ -9423,44 +8485,6 @@ packages: /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - /env-paths/2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: true - - /enzyme-adapter-react-16/1.15.6_enzyme@3.11.0: - resolution: {integrity: sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==} - peerDependencies: - enzyme: ^3.0.0 - react: ^16.0.0-0 - react-dom: ^16.0.0-0 - dependencies: - enzyme: 3.11.0 - enzyme-adapter-utils: 1.14.0 - enzyme-shallow-equal: 1.0.4 - has: 1.0.3 - object.assign: 4.1.2 - object.values: 1.1.5 - prop-types: 15.7.2 - react-is: 16.13.1 - react-test-renderer: 16.14.0 - semver: 5.7.1 - dev: false - - /enzyme-adapter-utils/1.14.0: - resolution: {integrity: sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==} - peerDependencies: - react: 0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0 - dependencies: - airbnb-prop-types: 2.16.0 - function.prototype.name: 1.1.5 - has: 1.0.3 - object.assign: 4.1.2 - object.fromentries: 2.0.5 - prop-types: 15.7.2 - semver: 5.7.1 - dev: false - /enzyme-shallow-equal/1.0.4: resolution: {integrity: sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==} dependencies: @@ -9639,13 +8663,13 @@ packages: get-stdin: 6.0.0 dev: true - /eslint-config-prettier/6.15.0_eslint@8.1.0: + /eslint-config-prettier/6.15.0_eslint@8.2.0: resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} hasBin: true peerDependencies: eslint: '>=3.14.1' dependencies: - eslint: 8.1.0 + eslint: 8.2.0 get-stdin: 6.0.0 dev: true @@ -9720,14 +8744,14 @@ packages: - typescript dev: true - /eslint-plugin-jest/23.20.0_eslint@8.1.0+typescript@4.2.4: + /eslint-plugin-jest/23.20.0_eslint@8.2.0+typescript@4.2.4: resolution: {integrity: sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==} engines: {node: '>=8'} peerDependencies: eslint: '>=5' dependencies: - '@typescript-eslint/experimental-utils': 2.34.0_eslint@8.1.0+typescript@4.2.4 - eslint: 8.1.0 + '@typescript-eslint/experimental-utils': 2.34.0_eslint@8.2.0+typescript@4.2.4 + eslint: 8.2.0 transitivePeerDependencies: - supports-color - typescript @@ -9786,7 +8810,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc/30.7.13_eslint@8.1.0: + /eslint-plugin-jsdoc/30.7.13_eslint@8.2.0: resolution: {integrity: sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==} engines: {node: '>=10'} peerDependencies: @@ -9794,7 +8818,7 @@ packages: dependencies: comment-parser: 0.7.6 debug: 4.3.2 - eslint: 8.1.0 + eslint: 8.2.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 regextras: 0.7.1 @@ -9804,17 +8828,17 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y/6.4.1_eslint@6.8.0: - resolution: {integrity: sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==} + /eslint-plugin-jsx-a11y/6.5.1_eslint@6.8.0: + resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.15.4 + '@babel/runtime': 7.16.3 aria-query: 4.2.2 array-includes: 3.1.4 ast-types-flow: 0.0.7 - axe-core: 4.3.3 + axe-core: 4.3.5 axobject-query: 2.2.0 damerau-levenshtein: 1.0.7 emoji-regex: 9.2.2 @@ -9822,26 +8846,7 @@ packages: has: 1.0.3 jsx-ast-utils: 3.2.1 language-tags: 1.0.5 - dev: true - - /eslint-plugin-jsx-a11y/6.4.1_eslint@8.1.0: - resolution: {integrity: sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 - dependencies: - '@babel/runtime': 7.15.4 - aria-query: 4.2.2 - array-includes: 3.1.4 - ast-types-flow: 0.0.7 - axe-core: 4.3.3 - axobject-query: 2.2.0 - damerau-levenshtein: 1.0.7 - emoji-regex: 9.2.2 - eslint: 8.1.0 - has: 1.0.3 - jsx-ast-utils: 3.2.1 - language-tags: 1.0.5 + minimatch: 3.0.4 dev: true /eslint-plugin-jsx-a11y/6.5.1_eslint@7.32.0: @@ -9865,7 +8870,28 @@ packages: minimatch: 3.0.4 dev: true - /eslint-plugin-prettier/3.4.1_0ee224e0723ebb336792c58a54fe2b48: + /eslint-plugin-jsx-a11y/6.5.1_eslint@8.2.0: + resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.16.3 + aria-query: 4.2.2 + array-includes: 3.1.4 + ast-types-flow: 0.0.7 + axe-core: 4.3.5 + axobject-query: 2.2.0 + damerau-levenshtein: 1.0.7 + emoji-regex: 9.2.2 + eslint: 8.2.0 + has: 1.0.3 + jsx-ast-utils: 3.2.1 + language-tags: 1.0.5 + minimatch: 3.0.4 + dev: true + + /eslint-plugin-prettier/3.4.1_1786dfa66f4aafe2692523a4f07ad974: resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} engines: {node: '>=6.0.0'} peerDependencies: @@ -9876,8 +8902,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.1.0 - eslint-config-prettier: 6.15.0_eslint@8.1.0 + eslint: 8.2.0 + eslint-config-prettier: 6.15.0_eslint@8.2.0 prettier: /wp-prettier/2.0.5 prettier-linter-helpers: 1.0.0 dev: true @@ -9925,24 +8951,15 @@ packages: eslint: 6.8.0 dev: true - /eslint-plugin-react-hooks/4.2.0_eslint@6.8.0: - resolution: {integrity: sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==} + /eslint-plugin-react-hooks/4.3.0_eslint@6.8.0: + resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} engines: {node: '>=10'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 6.8.0 dev: true - /eslint-plugin-react-hooks/4.2.0_eslint@8.1.0: - resolution: {integrity: sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - dependencies: - eslint: 8.1.0 - dev: true - /eslint-plugin-react-hooks/4.3.0_eslint@7.32.0: resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} engines: {node: '>=10'} @@ -9952,40 +8969,26 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-react/7.26.1_eslint@6.8.0: - resolution: {integrity: sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==} + /eslint-plugin-react-hooks/4.3.0_eslint@8.2.0: + resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.2.0 + dev: true + + /eslint-plugin-react/7.27.0_eslint@6.8.0: + resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.4 array.prototype.flatmap: 1.2.5 doctrine: 2.1.0 eslint: 6.8.0 - estraverse: 5.2.0 - jsx-ast-utils: 3.2.1 - minimatch: 3.0.4 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.0 - object.values: 1.1.5 - prop-types: 15.7.2 - resolve: 2.0.0-next.3 - semver: 6.3.0 - string.prototype.matchall: 4.0.6 - dev: true - - /eslint-plugin-react/7.26.1_eslint@8.1.0: - resolution: {integrity: sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 - dependencies: - array-includes: 3.1.4 - array.prototype.flatmap: 1.2.5 - doctrine: 2.1.0 - eslint: 8.1.0 - estraverse: 5.2.0 + estraverse: 5.3.0 jsx-ast-utils: 3.2.1 minimatch: 3.0.4 object.entries: 1.1.5 @@ -10021,6 +9024,29 @@ packages: string.prototype.matchall: 4.0.6 dev: true + /eslint-plugin-react/7.27.0_eslint@8.2.0: + resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flatmap: 1.2.5 + doctrine: 2.1.0 + eslint: 8.2.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.2.1 + minimatch: 3.0.4 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.0 + object.values: 1.1.5 + prop-types: 15.7.2 + resolve: 2.0.0-next.3 + semver: 6.3.0 + string.prototype.matchall: 4.0.6 + dev: true + /eslint-plugin-testing-library/3.10.2_eslint@7.32.0+typescript@4.2.4: resolution: {integrity: sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==} engines: {node: ^10.12.0 || >=12.0.0, npm: '>=6'} @@ -10210,7 +9236,7 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} hasBin: true dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 @@ -10450,11 +9476,6 @@ packages: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - /estraverse/5.2.0: - resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} - engines: {node: '>=4.0'} - dev: true - /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -10950,8 +9971,8 @@ packages: find-file-up: 0.1.3 dev: false - /find-process/1.4.5: - resolution: {integrity: sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==} + /find-process/1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} hasBin: true dependencies: chalk: 4.1.2 @@ -11227,13 +10248,6 @@ packages: universalify: 2.0.0 dev: true - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.5 - dev: true - /fs-monkey/1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} dev: true @@ -11300,19 +10314,6 @@ packages: resolution: {integrity: sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==} dev: false - /gauge/2.7.4: - resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=} - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.5 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - dev: true - /gaze/1.1.3: resolution: {integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==} engines: {node: '>= 4.0.0'} @@ -11353,11 +10354,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - /get-stdin/4.0.1: - resolution: {integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=} - engines: {node: '>=0.10.0'} - dev: true - /get-stdin/6.0.0: resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} engines: {node: '>=4'} @@ -11599,20 +10595,6 @@ packages: slash: 3.0.0 dev: true - /globby/10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - dependencies: - '@types/glob': 7.1.4 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.7 - glob: 7.2.0 - ignore: 5.1.8 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - /globby/11.0.4: resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} engines: {node: '>=10'} @@ -11721,7 +10703,7 @@ packages: engines: {node: '>=6.0'} dependencies: chalk: 2.4.2 - clean-css: 4.2.3 + clean-css: 4.2.4 maxmin: 2.1.0 dev: true @@ -11731,7 +10713,7 @@ packages: dependencies: chalk: 2.4.2 maxmin: 2.1.0 - uglify-js: 3.14.2 + uglify-js: 3.14.5 uri-path: 1.0.0 dev: true @@ -11772,7 +10754,7 @@ packages: resolution: {integrity: sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==} engines: {node: '>=10'} dependencies: - async: 3.2.1 + async: 3.2.2 exit: 0.1.2 getobject: 1.0.2 hooker: 0.2.3 @@ -11899,7 +10881,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.14.2 + uglify-js: 3.14.5 dev: true /har-schema/2.0.0: @@ -11956,10 +10938,6 @@ packages: dependencies: has-symbols: 1.0.2 - /has-unicode/2.0.1: - resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} - dev: true - /has-value/0.3.1: resolution: {integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=} engines: {node: '>=0.10.0'} @@ -12291,6 +11269,15 @@ packages: postcss: 8.3.0 dev: true + /icss-utils/5.1.0_postcss@8.3.11: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.3.11 + dev: true + /identity-obj-proxy/3.0.0: resolution: {integrity: sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=} engines: {node: '>=4'} @@ -12327,6 +11314,10 @@ packages: dev: true optional: true + /immutable/4.0.0: + resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} + dev: true + /import-cwd/3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} @@ -12420,6 +11411,57 @@ packages: /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + /ink-spinner/4.0.3_ink@3.2.0+react@17.0.2: + resolution: {integrity: sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==} + engines: {node: '>=10'} + peerDependencies: + ink: '>=3.0.5' + react: '>=16.8.2' + dependencies: + cli-spinners: 2.6.1 + ink: 3.2.0_react@17.0.2 + react: 17.0.2 + dev: true + + /ink/3.2.0_react@17.0.2: + resolution: {integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '>=16.8.0' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + ansi-escapes: 4.3.2 + auto-bind: 4.0.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + cli-cursor: 3.1.0 + cli-truncate: 2.1.0 + code-excerpt: 3.0.0 + indent-string: 4.0.0 + is-ci: 2.0.0 + lodash: 4.17.21 + patch-console: 1.0.0 + react: 17.0.2 + react-devtools-core: 4.22.0 + react-reconciler: 0.26.2_react@17.0.2 + scheduler: 0.20.2 + signal-exit: 3.0.5 + slice-ansi: 3.0.0 + stack-utils: 2.0.5 + string-width: 4.2.3 + type-fest: 0.12.0 + widest-line: 3.1.0 + wrap-ansi: 6.2.0 + ws: 7.5.5 + yoga-layout-prebuilt: 1.10.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /inquirer/6.5.2: resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} engines: {node: '>=6.0.0'} @@ -13004,6 +12046,10 @@ packages: engines: {node: '>=6'} dev: false + /istanbul-lib-coverage/3.0.1: + resolution: {integrity: sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==} + engines: {node: '>=8'} + /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -13113,6 +12159,16 @@ packages: - supports-color dev: false + /istanbul-lib-source-maps/4.0.0: + resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} + engines: {node: '>=8'} + dependencies: + debug: 4.3.2 + istanbul-lib-coverage: 3.0.1 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + /istanbul-lib-source-maps/4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -13122,6 +12178,7 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true /istanbul-reports/1.5.1: resolution: {integrity: sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==} @@ -13136,12 +12193,20 @@ packages: html-escaper: 2.0.2 dev: false + /istanbul-reports/3.0.3: + resolution: {integrity: sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + /istanbul-reports/3.0.5: resolution: {integrity: sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 + dev: true /istanbul/1.0.0-alpha.2: resolution: {integrity: sha1-BglrwI6Yuq10Sq5Gli2N+frGPQg=} @@ -13193,6 +12258,30 @@ packages: throat: 6.0.1 dev: true + /jest-circus/25.1.0: + resolution: {integrity: sha512-Axlcr2YMxVarMW4SiZhCFCjNKhdF4xF9AIdltyutQOKyyDT795Kl/fzI95O0l8idE51Npj2wDj5GhrV7uEoEJA==} + engines: {node: '>= 8.3'} + dependencies: + '@babel/traverse': 7.16.3 + '@jest/environment': 25.5.0 + '@jest/test-result': 25.5.0 + '@jest/types': 25.5.0 + chalk: 3.0.0 + co: 4.6.0 + expect: 25.5.0 + is-generator-fn: 2.1.0 + jest-each: 25.5.0 + jest-matcher-utils: 25.5.0 + jest-message-util: 25.5.0 + jest-snapshot: 25.5.1 + jest-util: 25.5.0 + pretty-format: 25.5.0 + stack-utils: 1.0.5 + throat: 5.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-circus/27.3.1: resolution: {integrity: sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -13326,10 +12415,10 @@ packages: resolution: {integrity: sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==} engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.16.0 + '@babel/core': 7.15.8 '@jest/test-sequencer': 25.5.4 '@jest/types': 25.5.0 - babel-jest: 25.5.1_@babel+core@7.16.0 + babel-jest: 25.5.1_@babel+core@7.15.8 chalk: 3.0.0 deepmerge: 4.2.2 glob: 7.2.0 @@ -13468,7 +12557,7 @@ packages: dependencies: chalk: 3.0.0 cwd: 0.10.0 - find-process: 1.4.5 + find-process: 1.4.7 prompts: 2.4.2 spawnd: 4.4.0 tree-kill: 1.2.2 @@ -13712,11 +12801,32 @@ packages: jest-worker: 25.5.0 micromatch: 4.0.4 sane: 4.1.0 - walker: 1.0.8 + walker: 1.0.7 which: 2.0.2 optionalDependencies: fsevents: 2.3.2 + /jest-haste-map/26.6.2: + resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/graceful-fs': 4.1.5 + '@types/node': 16.10.3 + anymatch: 3.1.2 + fb-watchman: 2.0.1 + graceful-fs: 4.2.8 + jest-regex-util: 26.0.0 + jest-serializer: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + micromatch: 4.0.4 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: false + /jest-haste-map/27.3.1: resolution: {integrity: sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -13765,7 +12875,7 @@ packages: resolution: {integrity: sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==} engines: {node: '>= 8.3'} dependencies: - '@babel/traverse': 7.16.3 + '@babel/traverse': 7.16.0 '@jest/environment': 25.5.0 '@jest/source-map': 25.5.0 '@jest/test-result': 25.5.0 @@ -13906,7 +13016,7 @@ packages: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 '@jest/types': 26.6.2 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -14331,6 +13441,14 @@ packages: dependencies: graceful-fs: 4.2.8 + /jest-serializer/26.6.2: + resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/node': 16.10.3 + graceful-fs: 4.2.8 + dev: false + /jest-serializer/27.0.6: resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -14560,6 +13678,15 @@ packages: merge-stream: 2.0.0 supports-color: 7.2.0 + /jest-worker/26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.10.3 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: false + /jest-worker/27.3.1: resolution: {integrity: sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==} engines: {node: '>= 10.13.0'} @@ -14615,10 +13742,6 @@ packages: - utf-8-validate dev: true - /js-base64/2.6.4: - resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - dev: true - /js-tokens/3.0.2: resolution: {integrity: sha1-mGbfOVECEw449/mWvOtlRDIJwls=} dev: true @@ -15165,10 +14288,6 @@ packages: resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} dev: true - /lodash.clonedeep/4.5.0: - resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} - dev: true - /lodash.debounce/4.0.8: resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} @@ -15318,6 +14437,11 @@ packages: kind-of: 6.0.3 dev: true + /makeerror/1.0.11: + resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} + dependencies: + tmpl: 1.0.5 + /makeerror/1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -15640,21 +14764,6 @@ packages: /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} - /minipass/3.1.5: - resolution: {integrity: sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.5 - yallist: 4.0.0 - dev: true - /mississippi/3.0.0: resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} engines: {node: '>=4.0.0'} @@ -15782,6 +14891,7 @@ packages: /nan/2.15.0: resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} + optional: true /nanoid/3.1.30: resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} @@ -15896,23 +15006,6 @@ packages: hasBin: true dev: true - /node-gyp/7.1.2: - resolution: {integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==} - engines: {node: '>= 10.12.0'} - hasBin: true - dependencies: - env-paths: 2.2.1 - glob: 7.2.0 - graceful-fs: 4.2.8 - nopt: 5.0.0 - npmlog: 4.1.2 - request: 2.88.2 - rimraf: 3.0.2 - semver: 7.3.5 - tar: 6.1.11 - which: 2.0.2 - dev: true - /node-int64/0.4.0: resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} @@ -15931,7 +15024,7 @@ packages: os-browserify: 0.3.0 path-browserify: 0.0.1 process: 0.11.10 - punycode: 1.4.1 + punycode: 1.3.2 querystring-es3: 0.2.1 readable-stream: 2.3.7 stream-browserify: 2.0.2 @@ -15984,29 +15077,6 @@ packages: /node-releases/2.0.1: resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - /node-sass/6.0.1: - resolution: {integrity: sha512-f+Rbqt92Ful9gX0cGtdYwjTrWAaGURgaK5rZCWOgCNyGWusFYHhbqCCBoFBeat+HKETOU02AyTxNhJV0YZf2jQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - dependencies: - async-foreach: 0.1.3 - chalk: 1.1.3 - cross-spawn: 7.0.3 - gaze: 1.1.3 - get-stdin: 4.0.1 - glob: 7.2.0 - lodash: 4.17.21 - meow: 9.0.0 - nan: 2.15.0 - node-gyp: 7.1.2 - npmlog: 4.1.2 - request: 2.88.2 - sass-graph: 2.2.5 - stdout-stream: 1.4.1 - true-case-path: 1.0.3 - dev: true - /node-stream-zip/1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} @@ -16026,14 +15096,6 @@ packages: osenv: 0.1.5 dev: true - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -16111,15 +15173,6 @@ packages: dependencies: path-key: 3.1.1 - /npmlog/4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: true - /nth-check/2.0.1: resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==} dependencies: @@ -16141,21 +15194,21 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.5 dev: true - /nx/13.1.4: - resolution: {integrity: sha512-m2j3wymaFlEl/7EoGxlgRzdmgQV1Rsh42df1cM8xFzAzV8ZGtR3Zq19qK7r9SUabpq8jMzp1e6rLQTHewCJWig==} + /nx/13.3.4: + resolution: {integrity: sha512-prWCa/8jKBWUiCWhAbRD3UftTvaD8MgUo98g557/EpPaC9LHPPWNOhXDyij21sedouyDVdQGhr8TW4pEHt2zeQ==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.4 dev: true - /nx/13.2.3: - resolution: {integrity: sha512-aNRbPjArROZazOKAiUhG5uZAZmL1uXdsGoA3p5mDt5fCLSj/CX1V/myuRx+Js0qsAV78W6dSf2z6TiQeIgieXg==} + /nx/13.3.5: + resolution: {integrity: sha512-wxdvfOgza6KJ6hRDNBfFNatcp45VfCMQpDfbmL2Jdc3KiSN7K/bvtOVZvXaPrcKtbYghfL6SRsXtStIeITxlng==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.5 dev: true /oauth-1.0a/2.2.6: @@ -16629,6 +15682,11 @@ packages: resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=} engines: {node: '>=0.10.0'} + /patch-console/1.0.0: + resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==} + engines: {node: '>=10'} + dev: true + /path-browserify/0.0.1: resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} dev: true @@ -17147,6 +16205,15 @@ packages: postcss: 8.3.0 dev: true + /postcss-modules-extract-imports/3.0.0_postcss@8.3.11: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.3.11 + dev: true + /postcss-modules-local-by-default/4.0.0_postcss@8.3.0: resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} @@ -17159,6 +16226,18 @@ packages: postcss-value-parser: 4.1.0 dev: true + /postcss-modules-local-by-default/4.0.0_postcss@8.3.11: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.3.11 + postcss: 8.3.11 + postcss-selector-parser: 6.0.6 + postcss-value-parser: 4.1.0 + dev: true + /postcss-modules-scope/3.0.0_postcss@8.3.0: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} @@ -17169,6 +16248,16 @@ packages: postcss-selector-parser: 6.0.6 dev: true + /postcss-modules-scope/3.0.0_postcss@8.3.11: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.3.11 + postcss-selector-parser: 6.0.6 + dev: true + /postcss-modules-values/4.0.0_postcss@8.3.0: resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} @@ -17179,6 +16268,16 @@ packages: postcss: 8.3.0 dev: true + /postcss-modules-values/4.0.0_postcss@8.3.11: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.3.11 + postcss: 8.3.11 + dev: true + /postcss-modules/4.2.2_postcss@8.3.0: resolution: {integrity: sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==} peerDependencies: @@ -17700,14 +16799,6 @@ packages: kleur: 3.0.3 sisteransi: 1.0.5 - /prop-types-exact/1.2.0: - resolution: {integrity: sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==} - dependencies: - has: 1.0.3 - object.assign: 4.1.2 - reflect.ownkeys: 0.2.0 - dev: false - /prop-types/15.7.2: resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} dependencies: @@ -17773,10 +16864,6 @@ packages: resolution: {integrity: sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=} dev: true - /punycode/1.4.1: - resolution: {integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4=} - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -17932,6 +17019,16 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-devtools-core/4.22.0: + resolution: {integrity: sha512-OYY2FO+z+w/N7kVZr2x0rVOD2QCGZoRThbs1diJ2Az0rqtMxyk0JJvsr7FS9+b5CJkWQ2Ro810BCnySygOt2pA==} + dependencies: + shell-quote: 1.7.3 + ws: 7.5.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /react-dom/17.0.2_react@17.0.2: resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: @@ -17957,20 +17054,41 @@ packages: whatwg-url-without-unicode: 8.0.0-3 dev: false + /react-reconciler/0.26.2_react@17.0.2: + resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + dev: true + /react-refresh/0.10.0: resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} dev: true - /react-test-renderer/16.14.0: - resolution: {integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==} + /react-shallow-renderer/16.14.1: + resolution: {integrity: sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==} peerDependencies: - react: ^16.14.0 + react: ^16.0.0 || ^17.0.0 dependencies: object-assign: 4.1.1 - prop-types: 15.7.2 - react-is: 16.13.1 - scheduler: 0.19.1 + react-is: 17.0.2 + dev: false + + /react-test-renderer/17.0.2: + resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} + peerDependencies: + react: 17.0.2 + dependencies: + object-assign: 4.1.1 + react-is: 17.0.2 + react-shallow-renderer: 16.14.1 + scheduler: 0.20.2 dev: false /react/17.0.2: @@ -17979,7 +17097,6 @@ packages: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - dev: false /read-cache/1.0.0: resolution: {integrity: sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=} @@ -18061,6 +17178,11 @@ packages: dependencies: picomatch: 2.3.0 + /readline-sync/1.4.10: + resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} + engines: {node: '>= 0.8.0'} + dev: false + /realpath-native/1.1.0: resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==} engines: {node: '>=4'} @@ -18087,10 +17209,6 @@ packages: strip-indent: 3.0.0 dev: true - /reflect.ownkeys/0.2.0: - resolution: {integrity: sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=} - dev: false - /regenerate-unicode-properties/9.0.0: resolution: {integrity: sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==} engines: {node: '>=4'} @@ -18568,17 +17686,7 @@ packages: minimist: 1.2.5 walker: 1.0.8 - /sass-graph/2.2.5: - resolution: {integrity: sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==} - hasBin: true - dependencies: - glob: 7.2.0 - lodash: 4.17.21 - scss-tokenizer: 0.2.3 - yargs: 13.3.2 - dev: true - - /sass-loader/12.3.0_sass@1.43.4+webpack@5.64.1: + /sass-loader/12.3.0_sass@1.45.0+webpack@5.64.1: resolution: {integrity: sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -18596,16 +17704,18 @@ packages: dependencies: klona: 2.0.5 neo-async: 2.6.2 - sass: 1.43.4 + sass: 1.45.0 webpack: 5.64.1 dev: true - /sass/1.43.4: - resolution: {integrity: sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==} + /sass/1.45.0: + resolution: {integrity: sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==} engines: {node: '>=8.9.0'} hasBin: true dependencies: chokidar: 3.5.2 + immutable: 4.0.0 + source-map-js: 0.6.2 dev: true /sax/1.2.4: @@ -18624,19 +17734,11 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler/0.19.1: - resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false - /scheduler/0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - dev: false /schema-utils/1.0.0: resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} @@ -18674,13 +17776,6 @@ packages: ajv-keywords: 3.5.2_ajv@6.12.6 dev: true - /scss-tokenizer/0.2.3: - resolution: {integrity: sha1-jrBtualyMzOCTT9VMGQRSYR85dE=} - dependencies: - js-base64: 2.6.4 - source-map: 0.4.4 - dev: true - /secure-compare/3.0.1: resolution: {integrity: sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=} dev: true @@ -18901,6 +17996,15 @@ packages: astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -18991,13 +18095,6 @@ packages: /source-map-url/0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - /source-map/0.4.4: - resolution: {integrity: sha1-66T12pwNyZneaAMti092FzZSA2s=} - engines: {node: '>=0.8.0'} - dependencies: - amdefine: 1.0.1 - dev: true - /source-map/0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} @@ -19139,12 +18236,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /stdout-stream/1.4.1: - resolution: {integrity: sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==} - dependencies: - readable-stream: 2.3.7 - dev: true - /stealthy-require/1.1.1: resolution: {integrity: sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=} engines: {node: '>=0.10.0'} @@ -19483,32 +18574,6 @@ packages: stylelint: 13.8.0 dev: true - /stylelint-config-wordpress/17.0.0_stylelint@13.13.1: - resolution: {integrity: sha512-qUU2kVMd2ezIV9AzRdgietIfnavRRENt4180A1OMoVXIowRjjhohZgBiyVPV5EtNKo3GTO63l8g/QGNG27/h9g==} - engines: {node: '>=10'} - deprecated: This package has been deprecated, please use @wordpress/stylelint-config or @wordpress/scripts - peerDependencies: - stylelint: ^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 - dependencies: - stylelint: 13.13.1 - stylelint-config-recommended: 3.0.0_stylelint@13.13.1 - stylelint-config-recommended-scss: 4.3.0_d55469ff7b1b68c43b61270d19a60ab6 - stylelint-scss: 3.21.0_stylelint@13.13.1 - dev: true - - /stylelint-config-wordpress/17.0.0_stylelint@13.8.0: - resolution: {integrity: sha512-qUU2kVMd2ezIV9AzRdgietIfnavRRENt4180A1OMoVXIowRjjhohZgBiyVPV5EtNKo3GTO63l8g/QGNG27/h9g==} - engines: {node: '>=10'} - deprecated: This package has been deprecated, please use @wordpress/stylelint-config or @wordpress/scripts - peerDependencies: - stylelint: ^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 - dependencies: - stylelint: 13.8.0 - stylelint-config-recommended: 3.0.0_stylelint@13.8.0 - stylelint-config-recommended-scss: 4.3.0_748c5b2cfae76328890a14c0b5cd0d73 - stylelint-scss: 3.21.0_stylelint@13.8.0 - dev: true - /stylelint-scss/3.21.0_stylelint@13.13.1: resolution: {integrity: sha512-CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==} engines: {node: '>=8'} @@ -19558,7 +18623,7 @@ packages: globby: 11.0.4 globjoin: 0.1.4 html-tags: 3.1.0 - ignore: 5.1.8 + ignore: 5.1.9 import-lazy: 4.0.0 imurmurhash: 0.1.4 known-css-properties: 0.21.0 @@ -19587,7 +18652,7 @@ packages: style-search: 0.1.0 sugarss: 2.0.0 svg-tags: 1.0.0 - table: 6.7.2 + table: 6.7.3 v8-compile-cache: 2.3.0 write-file-atomic: 3.0.3 transitivePeerDependencies: @@ -19800,18 +18865,6 @@ packages: slice-ansi: 2.1.0 string-width: 3.1.0 - /table/6.7.2: - resolution: {integrity: sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.6.3 - lodash.clonedeep: 4.5.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /table/6.7.3: resolution: {integrity: sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==} engines: {node: '>=10.0.0'} @@ -19839,18 +18892,6 @@ packages: engines: {node: '>=6'} dev: true - /tar/6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.1.5 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - /term-size/1.2.0: resolution: {integrity: sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=} engines: {node: '>=4'} @@ -19877,7 +18918,7 @@ packages: schema-utils: 1.0.0 serialize-javascript: 4.0.0 source-map: 0.6.1 - terser: 4.8.0 + terser: 4.3.8 webpack: 4.44.2_webpack-cli@3.3.12 webpack-sources: 1.4.3 worker-farm: 1.7.0 @@ -19945,16 +18986,6 @@ packages: source-map-support: 0.5.20 dev: true - /terser/4.8.0: - resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.20 - dev: true - /terser/5.10.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} @@ -20180,12 +19211,6 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: true - /true-case-path/1.0.3: - resolution: {integrity: sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==} - dependencies: - glob: 7.2.0 - dev: true - /ts-jest/25.5.0_jest@27.3.1+typescript@4.4.4: resolution: {integrity: sha512-govrjbOk1UEzcJ5cX5k8X8IUtFuP3lp3mrF3ZuKtCdAOQzdeCM7qualhb/U8s8SWFwEDutOqfF5PLkJ+oaYD4w==} engines: {node: '>= 8'} @@ -20325,6 +19350,11 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + /type-fest/0.12.0: + resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} + engines: {node: '>=10'} + dev: true + /type-fest/0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -20381,8 +19411,8 @@ packages: hasBin: true dev: true - /uglify-js/3.14.2: - resolution: {integrity: sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==} + /uglify-js/3.14.5: + resolution: {integrity: sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==} engines: {node: '>=0.8.0'} hasBin: true dev: true @@ -20721,6 +19751,11 @@ packages: - supports-color dev: false + /walker/1.0.7: + resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} + dependencies: + makeerror: 1.0.11 + /walker/1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -21068,12 +20103,6 @@ packages: string-width: 2.1.1 dev: true - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - /widest-line/2.0.1: resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} engines: {node: '>=4'} @@ -21081,6 +20110,13 @@ packages: string-width: 2.1.1 dev: true + /widest-line/3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: true + /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true @@ -21177,15 +20213,6 @@ packages: graceful-fs: 4.2.8 imurmurhash: 0.1.4 signal-exit: 3.0.5 - dev: false - - /write-file-atomic/2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - dependencies: - graceful-fs: 4.2.8 - imurmurhash: 0.1.4 - signal-exit: 3.0.5 - dev: true /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -21372,6 +20399,13 @@ packages: engines: {node: '>=10'} dev: true + /yoga-layout-prebuilt/1.10.0: + resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==} + engines: {node: '>=8'} + dependencies: + '@types/yoga-layout': 1.9.2 + dev: true + /zwitch/1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true diff --git a/tools/executors/changelogger/executor.json b/tools/executors/changelogger/executor.json new file mode 100644 index 00000000000..76e6792e4ef --- /dev/null +++ b/tools/executors/changelogger/executor.json @@ -0,0 +1,9 @@ +{ + "executors": { + "changelog": { + "implementation": "./impl", + "schema": "./schema.json", + "description": "Executes Jetpack Changelogger scripts." + } + } +} diff --git a/tools/executors/changelogger/impl.js b/tools/executors/changelogger/impl.js new file mode 100644 index 00000000000..007299b208c --- /dev/null +++ b/tools/executors/changelogger/impl.js @@ -0,0 +1,115 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +}; +exports.__esModule = true; +var child_process_1 = require("child_process"); +var path_1 = require("path"); +var fs_1 = require("fs"); +var chalk = require("chalk"); +var changeloggerScriptPath = 'vendor/bin/changelogger'; +function runChangelogger(_a) { + var action = _a.action, cwd = _a.cwd, extraArgs = __rest(_a, ["action", "cwd"]); + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_b) { + return [2 /*return*/, new Promise(function (resolve, reject) { + var args = [action].concat( + // Add any extra arguments supplied. NX camel cases and converts values to Numbers. + // Undo all that so arguments can be passed to Jetpack Changelogger unmodified. + Object.keys(extraArgs).map(function (key) { + return "--" + key.replace(/[A-Z]/g, function (m) { return '-' + m.toLowerCase(); }) + "=" + (Number(extraArgs[key]) && action === 'write' + ? extraArgs[key].toFixed(1) + : extraArgs[key]); + })); + var changeloggerScript = (0, child_process_1.spawn)("./" + changeloggerScriptPath, args, { + stdio: 'inherit' + }); + changeloggerScript.on('close', function (code) { + resolve({ code: code, error: undefined }); + }); + changeloggerScript.on('error', function (error) { + reject({ code: 1, error: error }); + }); + })]; + }); + }); +} +function changelogExecutor(options, context) { + return __awaiter(this, void 0, void 0, function () { + var cwd, projectPath, _a, code, error; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + cwd = options.cwd; + projectPath = (0, path_1.join)(__dirname, '../../../', cwd); + console.info(chalk.cyan("\nExecuting Changelogger...\n")); + try { + process.chdir(projectPath); + console.log(chalk.yellow('Executing from directory: ' + process.cwd() + '\n')); + } + catch (error) { + console.error(chalk.bgRed('Unable to find project working directory')); + console.error(error); + return [2 /*return*/, { success: false }]; + } + if (!(0, fs_1.existsSync)(changeloggerScriptPath)) { + console.error(chalk.bgRed('Changelogger scripts not found. Did you remember to `composer install` from project directory?')); + return [2 /*return*/, { success: false }]; + } + return [4 /*yield*/, runChangelogger(options)]; + case 1: + _a = _b.sent(), code = _a.code, error = _a.error; + if (error) { + console.error(chalk.bgRed(error)); + return [2 /*return*/, { success: false }]; + } + return [2 /*return*/, { success: code === 0 }]; + } + }); + }); +} +exports["default"] = changelogExecutor; diff --git a/tools/executors/changelogger/impl.ts b/tools/executors/changelogger/impl.ts new file mode 100644 index 00000000000..a7f63e0e437 --- /dev/null +++ b/tools/executors/changelogger/impl.ts @@ -0,0 +1,96 @@ +/** + * External dependencies + */ +import { ExecutorContext } from '@nrwl/devkit'; +import { spawn } from 'child_process'; +import { join } from 'path'; +import { existsSync } from 'fs'; +import * as chalk from 'chalk'; + +export interface ChangelogExecutorOptions { + action: string; + cwd: string; +} + +const changeloggerScriptPath = 'vendor/bin/changelogger'; + +async function runChangelogger( { + action, + cwd, + ...extraArgs +}: ChangelogExecutorOptions ): Promise< { code: number; error: string } > { + return new Promise( ( resolve, reject ) => { + const args = [ action ].concat( + // Add any extra arguments supplied. NX camel cases and converts values to Numbers. + // Undo all that so arguments can be passed to Jetpack Changelogger unmodified. + Object.keys( extraArgs ).map( + ( key ) => + `--${ key.replace( + /[A-Z]/g, + ( m ) => '-' + m.toLowerCase() + ) }=${ + Number( extraArgs[ key ] ) && action === 'write' + ? extraArgs[ key ].toFixed( 1 ) + : extraArgs[ key ] + }` + ) + ); + + const changeloggerScript = spawn( + `./${ changeloggerScriptPath }`, + args, + { + stdio: 'inherit', + } + ); + + changeloggerScript.on( 'close', ( code ) => { + resolve( { code, error: undefined } ); + } ); + + changeloggerScript.on( 'error', ( error ) => { + reject( { code: 1, error } ); + } ); + } ); +} + +export default async function changelogExecutor( + options: ChangelogExecutorOptions, + context: ExecutorContext +) { + const { cwd } = options; + const projectPath = join( __dirname, '../../../', cwd ); + + console.info( chalk.cyan( `\nExecuting Changelogger...\n` ) ); + + try { + process.chdir( projectPath ); + console.log( + chalk.yellow( 'Executing from directory: ' + process.cwd() + '\n' ) + ); + } catch ( error ) { + console.error( + chalk.bgRed( 'Unable to find project working directory' ) + ); + console.error( error ); + return { success: false }; + } + + if ( ! existsSync( changeloggerScriptPath ) ) { + console.error( + chalk.bgRed( + 'Changelogger scripts not found. Did you remember to `composer install` from project directory?' + ) + ); + return { success: false }; + } + + const { code, error } = await runChangelogger( options ); + + if ( error ) { + console.error( chalk.bgRed( error ) ); + return { success: false }; + } + + return { success: code === 0 }; +} diff --git a/tools/executors/changelogger/package.json b/tools/executors/changelogger/package.json new file mode 100644 index 00000000000..52c15505e80 --- /dev/null +++ b/tools/executors/changelogger/package.json @@ -0,0 +1,3 @@ +{ + "executors": "./executor.json" +} diff --git a/tools/executors/changelogger/schema.json b/tools/executors/changelogger/schema.json new file mode 100644 index 00000000000..18118b1d48e --- /dev/null +++ b/tools/executors/changelogger/schema.json @@ -0,0 +1,13 @@ +{ + "cli": "nx", + "id": "Changelogger", + "description": "Executes Jetpack Changelogger scripts.", + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "Action to take" + } + }, + "required": [ "action" ] +}