From a71b5ebe71f064988d9bcfbb12d21f8c838823d5 Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Wed, 13 Oct 2021 21:56:16 +0100 Subject: [PATCH 01/97] Adding initial issue templates for use with GitHub Issue Forms --- .github/ISSUE_TEMPLATE/1-Security-issue.md | 12 --- .github/ISSUE_TEMPLATE/1-bug-report.yml | 95 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/2-External-issues.md | 20 ----- .github/ISSUE_TEMPLATE/2-enhancement.yml | 33 +++++++ .github/ISSUE_TEMPLATE/3-Support.md | 28 ------ .github/ISSUE_TEMPLATE/4-Bug-report.md | 58 ------------- .github/ISSUE_TEMPLATE/5-Enhancement.md | 25 ------ .github/ISSUE_TEMPLATE/6-Feature-request.md | 25 ------ .github/ISSUE_TEMPLATE/config.yml | 14 +++ 9 files changed, 142 insertions(+), 168 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/1-Security-issue.md create mode 100644 .github/ISSUE_TEMPLATE/1-bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/2-External-issues.md create mode 100644 .github/ISSUE_TEMPLATE/2-enhancement.yml delete mode 100644 .github/ISSUE_TEMPLATE/3-Support.md delete mode 100644 .github/ISSUE_TEMPLATE/4-Bug-report.md delete mode 100644 .github/ISSUE_TEMPLATE/5-Enhancement.md delete mode 100644 .github/ISSUE_TEMPLATE/6-Feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml 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..2c49bfd22a7 --- /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 E2E Tests Boilerplate. +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://docs.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 issues 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-e2e-boilerplate/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://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. + 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..4c8eb4b698e --- /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: ["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 issues 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-e2e-boilerplate/issues?q=is%3Aissue+label%3Aenhancement+). + 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..40ea05bb0d3 --- /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://docs.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. From 1c63425ad631836cfc2aa0e0a428ae539185a4e3 Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Fri, 15 Oct 2021 20:13:12 +0100 Subject: [PATCH 02/97] Updated URLs in issue form templates --- .github/ISSUE_TEMPLATE/1-bug-report.yml | 4 ++-- .github/ISSUE_TEMPLATE/2-enhancement.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml index 2c49bfd22a7..fee285de95a 100644 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -1,5 +1,5 @@ name: 🐞 Bug Report -description: Report a bug if something isn't working as expected in WooCommerce E2E Tests Boilerplate. +description: Report a bug if something isn't working as expected in WooCommerce Core. body: - type: markdown attributes: @@ -19,7 +19,7 @@ body: Make sure to look through the existing issues 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-e2e-boilerplate/labels). + 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 diff --git a/.github/ISSUE_TEMPLATE/2-enhancement.yml b/.github/ISSUE_TEMPLATE/2-enhancement.yml index 4c8eb4b698e..221cab994ac 100644 --- a/.github/ISSUE_TEMPLATE/2-enhancement.yml +++ b/.github/ISSUE_TEMPLATE/2-enhancement.yml @@ -12,7 +12,7 @@ body: Make sure to look through existing issues 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-e2e-boilerplate/issues?q=is%3Aissue+label%3Aenhancement+). + 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 From a84ffcc42dade7ae6f56a36fe5724dd28127cee9 Mon Sep 17 00:00:00 2001 From: Veljko Date: Thu, 21 Oct 2021 12:15:12 +0200 Subject: [PATCH 03/97] Add new performance test category page --- .../requests/shopper/category-page.js | 45 +++++++++++++++++++ .../example-all-requests-arrival-rate.js | 2 + .../tests/example-all-requests-ramping-vus.js | 2 + .../tests/simple-all-shopper-requests.js | 2 + 4 files changed, 51 insertions(+) create mode 100644 plugins/woocommerce/tests/performance/requests/shopper/category-page.js 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..42d5f83ffd0 --- /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 } 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_site_root"); + +export function categoryPage() { + let response; + + group("Category Page", function () { + var requestHeaders = Object.assign({}, + htmlRequestHeader, + commonRequestHeaders, + commonGetRequestHeaders, + commonNonStandardHeaders + ); + + response = http.get(`${base_url}/product-category/accessories/`, { + headers: requestHeaders, + }); + categoryPageTrend.add(response.timings.duration); + check(response, { + "is status 200": (r) => r.status === 200, + "body contains: 'Accessories' title": (response) => + response.body.includes( + '

Accessories

' + ), + }); + }); + + sleep(randomIntBetween(`${think_time_min}`, `${think_time_max}`)); +} + +export default function () { + categoryPage(); +} \ No newline at end of file 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(); From a5ef3fecf6a749b6b9f86e437a23c6662641e95a Mon Sep 17 00:00:00 2001 From: Veljko Date: Thu, 21 Oct 2021 14:47:32 +0200 Subject: [PATCH 04/97] Add product category parameter --- plugins/woocommerce/tests/performance/config.js | 1 + .../tests/performance/requests/shopper/category-page.js | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) 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 index 42d5f83ffd0..15092c5a825 100644 --- a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js +++ b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js @@ -2,7 +2,7 @@ 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 } from "../../config.js"; +import { base_url, think_time_min, think_time_max, product_category } from "../../config.js"; import { htmlRequestHeader, commonRequestHeaders, @@ -11,7 +11,7 @@ import { } from "../../headers.js"; // Custom metric to add to standard results output. -let categoryPageTrend = new Trend("wc_get_site_root"); +let categoryPageTrend = new Trend("wc_get_product_category_name"); export function categoryPage() { let response; @@ -24,7 +24,7 @@ export function categoryPage() { commonNonStandardHeaders ); - response = http.get(`${base_url}/product-category/accessories/`, { + response = http.get(`${base_url}/product-category/${product_category}/`, { headers: requestHeaders, }); categoryPageTrend.add(response.timings.duration); @@ -32,7 +32,7 @@ export function categoryPage() { "is status 200": (r) => r.status === 200, "body contains: 'Accessories' title": (response) => response.body.includes( - '

Accessories

' + `

${product_category}

` ), }); }); From 348396ec71aaf9221b632fed8752fb9a777a7947 Mon Sep 17 00:00:00 2001 From: Veljko Date: Thu, 21 Oct 2021 14:55:39 +0200 Subject: [PATCH 05/97] Change Accessories with Category's text --- .../tests/performance/requests/shopper/category-page.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js index 15092c5a825..2128c71c540 100644 --- a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js +++ b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js @@ -30,7 +30,7 @@ export function categoryPage() { categoryPageTrend.add(response.timings.duration); check(response, { "is status 200": (r) => r.status === 200, - "body contains: 'Accessories' title": (response) => + "body contains: Category's title": (response) => response.body.includes( `

${product_category}

` ), From 526961ff4067bdb3fd24962c54127e592e8b4862 Mon Sep 17 00:00:00 2001 From: Veljko Date: Thu, 21 Oct 2021 15:09:57 +0200 Subject: [PATCH 06/97] Update ReadMe file --- plugins/woocommerce/tests/performance/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/performance/README.md b/plugins/woocommerce/tests/performance/README.md index fa523fa2024..61b1cb33f0e 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. From e032f6fc51dabc9dc29a2192f80d16d7207b09bd Mon Sep 17 00:00:00 2001 From: Veljko Date: Thu, 21 Oct 2021 15:12:58 +0200 Subject: [PATCH 07/97] Add a new empty line at the end of file --- .../tests/performance/requests/shopper/category-page.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js index 2128c71c540..918cc3d7b64 100644 --- a/plugins/woocommerce/tests/performance/requests/shopper/category-page.js +++ b/plugins/woocommerce/tests/performance/requests/shopper/category-page.js @@ -42,4 +42,4 @@ export function categoryPage() { export default function () { categoryPage(); -} \ No newline at end of file +} From 06894169da06d2f0c8464e266674e1d6b7a552f8 Mon Sep 17 00:00:00 2001 From: LuigiPulcini Date: Fri, 5 Nov 2021 00:32:18 +0100 Subject: [PATCH 08/97] Added logic to return on custom actions This change adds the possibility for custom actions to return prematurely before the AJAX request is sent. --- .../assets/js/admin/meta-boxes-product-variation.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js b/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js index 15f32f01350..e5a8b292f71 100644 --- a/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js +++ b/plugins/woocommerce/assets/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 ( true === data.cancel ) { + return; + } break; } From f7623ac32478f07644fcfdd60ab322a8a8fc2313 Mon Sep 17 00:00:00 2001 From: Cullen Whitmore Date: Mon, 8 Nov 2021 11:30:18 -0600 Subject: [PATCH 09/97] Change attribute label column from `td` to `th` --- .../templates/single-product/add-to-cart/variable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..93dc7302c1e 100644 --- a/plugins/woocommerce/templates/single-product/add-to-cart/variable.php +++ b/plugins/woocommerce/templates/single-product/add-to-cart/variable.php @@ -35,7 +35,7 @@ do_action( 'woocommerce_before_add_to_cart_form' ); ?> $options ) : ?> - + Date: Mon, 8 Nov 2021 12:04:58 -0600 Subject: [PATCH 10/97] Add text-alignment to `th` elements in the variations table --- plugins/woocommerce/assets/css/woocommerce.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/assets/css/woocommerce.scss b/plugins/woocommerce/assets/css/woocommerce.scss index c0c9409d7c6..a59255a8c67 100644 --- a/plugins/woocommerce/assets/css/woocommerce.scss +++ b/plugins/woocommerce/assets/css/woocommerce.scss @@ -453,8 +453,9 @@ p.demo_store, td, th { border: 0; - vertical-align: top; line-height: 2em; + text-align: left; + vertical-align: top; } label { From 057019c6149640e2c06da7a21b4b641acce5ccfe Mon Sep 17 00:00:00 2001 From: Cullen Whitmore Date: Mon, 8 Nov 2021 12:28:56 -0600 Subject: [PATCH 11/97] Move text alignment to the label to improve CSS specificity --- plugins/woocommerce/assets/css/woocommerce.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/assets/css/woocommerce.scss b/plugins/woocommerce/assets/css/woocommerce.scss index a59255a8c67..da71b3321ed 100644 --- a/plugins/woocommerce/assets/css/woocommerce.scss +++ b/plugins/woocommerce/assets/css/woocommerce.scss @@ -454,12 +454,12 @@ p.demo_store, th { border: 0; line-height: 2em; - text-align: left; vertical-align: top; } label { font-weight: 700; + text-align: left; } select { From b5eba41a44921dd7388f70a3e6b7cd7b8d6baeca Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Thu, 11 Nov 2021 21:13:08 +0000 Subject: [PATCH 12/97] Updated issue forms for documentation URL changes and PR Feedback --- .github/ISSUE_TEMPLATE/1-bug-report.yml | 6 +++--- .github/ISSUE_TEMPLATE/2-enhancement.yml | 4 ++-- .github/ISSUE_TEMPLATE/config.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml index fee285de95a..574cceba425 100644 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -12,12 +12,12 @@ body: 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://docs.woocommerce.com/document/woocommerce-self-service-guide/) to see if the solutions listed there apply to your case; + - 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 issues to see whether your bug has already been submitted. + Make sure to look through the [existing 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). @@ -71,7 +71,7 @@ body: attributes: label: WordPress Environment description: | - We use the [WooCommerce System Status Report](https://docs.woocommerce.com/document/understanding-the-woocommerce-system-status-report/) to help us evaluate the issue. + 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**. diff --git a/.github/ISSUE_TEMPLATE/2-enhancement.yml b/.github/ISSUE_TEMPLATE/2-enhancement.yml index 221cab994ac..5b3565a71c9 100644 --- a/.github/ISSUE_TEMPLATE/2-enhancement.yml +++ b/.github/ISSUE_TEMPLATE/2-enhancement.yml @@ -1,7 +1,7 @@ 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: ["enhancement"] +labels: ["type: enhancement"] body: - type: markdown attributes: @@ -10,7 +10,7 @@ body: Please provide us with the information requested in this form. - Make sure to look through existing issues to see whether your idea is already being discussed. + Make sure to look through [existing issues](https://github.com/woocommerce/woocommerce/issues?q=is%3Aopen+is%3Aissue+label%3A%22type%3A+enhancement%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). diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 40ea05bb0d3..22aae818eee 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,7 +4,7 @@ contact_links: 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://docs.woocommerce.com/document/woocommerce-self-service-guide/ + 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 From c924666812e8b0c085c2bb8eafc68abd304740ab Mon Sep 17 00:00:00 2001 From: Rodel Date: Mon, 15 Nov 2021 22:30:34 +0800 Subject: [PATCH 13/97] Test for adding a complex order --- packages/js/api-core-tests/data/index.js | 12 +- packages/js/api-core-tests/data/tax-rate.js | 21 ++ packages/js/api-core-tests/data/variation.js | 29 +++ packages/js/api-core-tests/endpoints/index.js | 12 +- .../js/api-core-tests/endpoints/tax-rates.js | 73 ++++++ .../js/api-core-tests/endpoints/variations.js | 84 ++++++ .../tests/orders/order-complex.test.js | 240 ++++++++++++++++++ 7 files changed, 463 insertions(+), 8 deletions(-) create mode 100644 packages/js/api-core-tests/data/tax-rate.js create mode 100644 packages/js/api-core-tests/data/variation.js create mode 100644 packages/js/api-core-tests/endpoints/tax-rates.js create mode 100644 packages/js/api-core-tests/endpoints/variations.js create mode 100644 packages/js/api-core-tests/tests/orders/order-complex.test.js diff --git a/packages/js/api-core-tests/data/index.js b/packages/js/api-core-tests/data/index.js index 2bfd95b1b2e..a264c745f15 100644 --- a/packages/js/api-core-tests/data/index.js +++ b/packages/js/api-core-tests/data/index.js @@ -1,7 +1,9 @@ -const { order, getOrderExample } = require('./order'); -const { coupon } = require('./coupon'); -const { refund } = require('./refund'); -const shared = require('./shared'); +const { order, getOrderExample } = require( './order' ); +const { coupon } = require( './coupon' ); +const { refund } = require( './refund' ); +const { getExampleTaxRate } = require( './tax-rate' ); +const { getExampleVariation } = require( './variation' ); +const shared = require( './shared' ); module.exports = { order, @@ -9,4 +11,6 @@ module.exports = { coupon, shared, refund, + getExampleTaxRate, + getExampleVariation, }; 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..98449e58eea --- /dev/null +++ b/packages/js/api-core-tests/data/tax-rate.js @@ -0,0 +1,21 @@ +/** + * 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 taxRate = { + name: 'Standard Rate', + rate: '10.0000', + class: 'standard', +}; + +const getExampleTaxRate = () => { + return taxRate; +}; + +module.exports = { + getExampleTaxRate, +}; 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..46fab09a5cf --- /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: '20.00', + attributes: [ + { + name: 'Size', + option: 'Large', + }, + { + name: 'Colour', + option: 'Red', + }, + ], +}; + +const getExampleVariation = () => { + return variation; +}; + +module.exports = { + getExampleVariation, +}; diff --git a/packages/js/api-core-tests/endpoints/index.js b/packages/js/api-core-tests/endpoints/index.js index 43953654d8c..ec922008d39 100644 --- a/packages/js/api-core-tests/endpoints/index.js +++ b/packages/js/api-core-tests/endpoints/index.js @@ -1,11 +1,15 @@ -const { ordersApi } = require('./orders'); -const { couponsApi } = require('./coupons'); -const { productsApi } = require('./products'); -const { refundsApi } = require('./refunds'); +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' ); module.exports = { ordersApi, couponsApi, productsApi, refundsApi, + taxRatesApi, + variationsApi, }; 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..ae2afa2a4e9 --- /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 { getExampleTaxRate, 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: getExampleTaxRate(), + 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: getExampleTaxRate(), + 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( getExampleTaxRate() ), + 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..68584fa52fd --- /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 { getExampleVariation, 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: getExampleVariation(), + 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: getExampleVariation(), + 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( getExampleVariation() ), + variations: async ( batchUpdatePayload ) => + postRequest( + `products/${ productId }/variations/${ variationId }`, + batchUpdatePayload + ), + }, +}; + +module.exports = { variationsApi }; 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..3519509aae6 --- /dev/null +++ b/packages/js/api-core-tests/tests/orders/order-complex.test.js @@ -0,0 +1,240 @@ +const { + taxRatesApi, + productsApi, + ordersApi, + variationsApi, +} = require( '../../endpoints' ); +const { getOrderExample, getExampleTaxRate } = require( '../../data' ); + +/** + * Simple product with Standard tax rate + */ +const simpleProduct = { + name: 'Black Compact Keyboard', + regular_price: '10.00', + tax_class: 'standard', +}; + +/** + * Variable product with 1 variation with Reduced tax rate + */ +const variableProduct = { + name: 'Unbranded Granite Shirt', + type: 'variable', + tax_class: 'reduced-rate', + defaultAttributes: [ + { + name: 'Size', + option: 'Medium', + }, + { + name: 'Colour', + option: 'Blue', + }, + ], + attributes: [ + { + name: 'Colour', + visible: true, + variation: true, + options: [ 'Red', 'Green', 'Blue' ], + }, + { + name: 'Size', + visible: true, + variation: true, + options: [ 'Small', 'Medium', 'Large' ], + }, + { + name: 'Logo', + visible: true, + variation: true, + options: [ 'Woo', 'WordPress' ], + }, + ], +}; +const variation = { + regular_price: '20.00', + tax_class: 'reduced-rate', + attributes: [ + { + name: 'Size', + option: 'Large', + }, + { + name: 'Colour', + option: 'Red', + }, + ], +}; + +/** + * External product with Zero rate tax + */ +const externalProduct = { + name: 'Ergonomic Steel Computer', + regular_price: '400.00', + type: 'external', + tax_class: 'zero-rate', +}; + +/** + * Grouped product with 1 linked product + */ +const groupedProduct = { + name: 'Full Modern Computer Set', + type: 'grouped', +}; + +/** + * Tax rates for each tax class + */ +const standardTaxRate = getExampleTaxRate(); +const reducedTaxRate = { + name: 'Reduced Rate', + rate: '1.0000', + class: 'reduced-rate', +}; +const zeroTaxRate = { + name: 'Zero Rate', + rate: '0.0000', + class: 'zero-rate', +}; + +/** + * Expected totals + */ +const expectedOrderTotal = '442.20'; +const expectedTaxTotal = '2.20'; +const expectedSimpleProductTaxTotal = '1.00'; +const expectedVariableProductTaxTotal = '0.20'; +const expectedExternalProductTaxTotal = '0.00'; + +let order; + +/** + * + * Test for adding a complex order with different product types and tax classes. + * + * @group orders + * @group tax_rates + */ +describe( 'Orders API test', () => { + beforeAll( async () => { + // Create a tax rate for each tax class, and save their ID's + const { body: createdStandardRate } = await taxRatesApi.create.taxRate( + standardTaxRate + ); + standardTaxRate.id = createdStandardRate.id; + + const { body: createdReducedRate } = await taxRatesApi.create.taxRate( + reducedTaxRate + ); + reducedTaxRate.id = createdReducedRate.id; + + const { body: createdZeroRate } = await taxRatesApi.create.taxRate( + zeroTaxRate + ); + zeroTaxRate.id = createdZeroRate.id; + + // Create a simple product + const { body: createdSimpleProduct } = await productsApi.create.product( + simpleProduct + ); + simpleProduct.id = createdSimpleProduct.id; + + // Link this simple product to a grouped product + groupedProduct.grouped_products = [ simpleProduct.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 + 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; + } ); + + 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 an order with products having different tax classes + const createOrderPayload = { + ...getOrderExample(), + shipping_lines: [], + fee_lines: [], + coupon_lines: [], + line_items: [ + { product_id: simpleProduct.id }, + { product_id: variableProduct.id }, + { product_id: externalProduct.id }, + { product_id: groupedProduct.id }, + ], + }; + const { status, body } = await ordersApi.create.order( + createOrderPayload + ); + order = body; + + expect( status ).toEqual( ordersApi.create.responseCode ); + + // Verify totals + expect( body.total ).toEqual( expectedOrderTotal ); + expect( body.total_tax ).toEqual( expectedTaxTotal ); + + // Verify tax total of each product line item + const actualSimpleProductLineItem = body.line_items.find( + ( { product_id } ) => product_id === simpleProduct.id + ); + const actualVariableProductLineItem = body.line_items.find( + ( { product_id } ) => product_id === variableProduct.id + ); + const actualGroupedProductLineItem = body.line_items.find( + ( { product_id } ) => product_id === groupedProduct.id + ); + const actualExternalProductLineItem = body.line_items.find( + ( { product_id } ) => product_id === externalProduct.id + ); + expect( actualSimpleProductLineItem.total_tax ).toEqual( + expectedSimpleProductTaxTotal + ); + expect( actualGroupedProductLineItem.total_tax ).toEqual( + expectedSimpleProductTaxTotal + ); + expect( actualVariableProductLineItem.total_tax ).toEqual( + expectedVariableProductTaxTotal + ); + expect( actualExternalProductLineItem.total_tax ).toEqual( + expectedExternalProductTaxTotal + ); + } ); +} ); From df582a20d3811634dbd91113d591ea8cc5971a46 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Tue, 16 Nov 2021 11:35:30 -0400 Subject: [PATCH 14/97] add flag to distinguish between the development repo and npm package --- packages/js/e2e-environment/bin/wc-e2e.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/js/e2e-environment/bin/wc-e2e.sh b/packages/js/e2e-environment/bin/wc-e2e.sh index d5fee2dc478..29eef561c22 100755 --- a/packages/js/e2e-environment/bin/wc-e2e.sh +++ b/packages/js/e2e-environment/bin/wc-e2e.sh @@ -33,6 +33,14 @@ SCRIPTPATH=$(dirname "$0") REALPATH=$(readlink "$0") cd "$SCRIPTPATH/$(dirname "$REALPATH")/.." +# Set a flag to distinguish between the development repo and npm package +DEV_PATH=$(echo $0 | rev | cut -f4 -d/ | rev) +if [ "$DEV_PATH" != "node_modules" ]; then + export WC_E2E_WOOCOMMERCE_DEV=true +else + export WC_E2E_WOOCOMMERCE_DEV=false +fi + # Run scripts case $1 in 'docker:up') From 61fd4e0a5edfe515d8e4c85283a7e3cea73f878e Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 17 Nov 2021 09:50:40 -0400 Subject: [PATCH 15/97] introduce local E2E file resolver function --- .../js/e2e-environment/bin/docker-compose.js | 11 +- .../bin/e2e-test-integration.js | 21 +- packages/js/e2e-environment/bin/wc-e2e.sh | 8 +- .../js/e2e-environment/config/jest.config.js | 15 +- .../js/e2e-environment/docker-compose.yaml | 4 +- packages/js/e2e-environment/utils/index.js | 3 +- .../e2e-environment/utils/take-screenshot.js | 8 +- .../js/e2e-environment/utils/test-config.js | 26 ++- pnpm-lock.yaml | 220 ++++++++++++++---- 9 files changed, 228 insertions(+), 88 deletions(-) diff --git a/packages/js/e2e-environment/bin/docker-compose.js b/packages/js/e2e-environment/bin/docker-compose.js index fe9742da568..b6046773bae 100755 --- a/packages/js/e2e-environment/bin/docker-compose.js +++ b/packages/js/e2e-environment/bin/docker-compose.js @@ -10,6 +10,7 @@ const { getAppRoot, getAppName, getTestConfig, + resolveLocalE2ePath, } = require( '../utils' ); const dockerArgs = []; @@ -56,10 +57,7 @@ if ( appPath ) { const appInitFile = customInitFile ? customInitFile - : path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/docker/initialize.sh' - ); + : resolveLocalE2ePath( 'docker/initialize.sh' ); // If found, copy it into the wp-cli Docker context so // it gets picked up by the entrypoint script. if ( fs.existsSync( appInitFile ) ) { @@ -84,11 +82,6 @@ if ( ! process.env.WC_E2E_FOLDER_MAPPING ) { '/var/www/html/wp-content/plugins/' + getAppBase(); } -// Set some environment variables -if ( ! process.env.WC_CORE_PATH ) { - envVars.WC_CORE_PATH = 'plugins/woocommerce'; -} - if ( ! process.env.WORDPRESS_PORT ) { process.env.WORDPRESS_PORT = testConfig.port; } diff --git a/packages/js/e2e-environment/bin/e2e-test-integration.js b/packages/js/e2e-environment/bin/e2e-test-integration.js index 709e385333e..09f0c95dcf5 100755 --- a/packages/js/e2e-environment/bin/e2e-test-integration.js +++ b/packages/js/e2e-environment/bin/e2e-test-integration.js @@ -4,7 +4,7 @@ const { spawnSync } = require( 'child_process' ); const program = require( 'commander' ); const path = require( 'path' ); const fs = require( 'fs' ); -const { getAppRoot } = require( '../utils' ); +const { getAppRoot, resolveLocalE2ePath } = require( '../utils' ); const { WC_E2E_SCREENSHOTS, JEST_PUPPETEER_CONFIG, @@ -21,10 +21,7 @@ const appPath = getAppRoot(); // clear the screenshots folder before running tests. if ( WC_E2E_SCREENSHOTS ) { - const screenshotPath = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/screenshots' - ); + const screenshotPath = resolveLocalE2ePath( 'screenshots' ); if ( fs.existsSync( screenshotPath ) ) { fs.readdirSync( screenshotPath ).forEach( ( file, index ) => { const filename = path.join( screenshotPath, file ); @@ -36,9 +33,7 @@ if ( WC_E2E_SCREENSHOTS ) { const nodeConfigDirs = [ path.resolve( __dirname, '../config' ) ]; if ( appPath ) { - nodeConfigDirs.unshift( - path.resolve( appPath, 'plugins/woocommerce/tests/e2e/config' ) - ); + nodeConfigDirs.unshift( resolveLocalE2ePath( 'config' ) ); } const testEnvVars = { @@ -55,10 +50,7 @@ if ( DEFAULT_TIMEOUT_OVERRIDE ) { if ( ! JEST_PUPPETEER_CONFIG ) { // Use local Puppeteer config if there is one. // Load test configuration file into an object. - const localJestConfigFile = path.resolve( - appPath, - 'tests/e2e/config/jest-puppeteer.config.js' - ); + const localJestConfigFile = resolveLocalE2ePath( 'config/jest-puppeteer.config.js' ); const jestConfigFile = path.resolve( __dirname, '../config/jest-puppeteer.config.js' @@ -100,10 +92,7 @@ let configPath = path.resolve( __dirname, '../config/jest.config.js' ); // Look for a Jest config in the dependent app's path. if ( appPath ) { - const appConfig = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/config/jest.config.js' - ); + const appConfig = resolveLocalE2ePath( 'config/jest.config.js' ); if ( fs.existsSync( appConfig ) ) { configPath = appConfig; diff --git a/packages/js/e2e-environment/bin/wc-e2e.sh b/packages/js/e2e-environment/bin/wc-e2e.sh index 29eef561c22..11be2f572bb 100755 --- a/packages/js/e2e-environment/bin/wc-e2e.sh +++ b/packages/js/e2e-environment/bin/wc-e2e.sh @@ -36,9 +36,13 @@ cd "$SCRIPTPATH/$(dirname "$REALPATH")/.." # Set a flag to distinguish between the development repo and npm package DEV_PATH=$(echo $0 | rev | cut -f4 -d/ | rev) if [ "$DEV_PATH" != "node_modules" ]; then - export WC_E2E_WOOCOMMERCE_DEV=true + export WC_E2E_WOOCOMMERCE_DEV='true' + export WC_E2E_FOLDER='plugins/woocommerce' else - export WC_E2E_WOOCOMMERCE_DEV=false + export WC_E2E_WOOCOMMERCE_DEV='' + if [ -z $WC_E2E_FOLDER ]; then + export WC_E2E_FOLDER='' + fi fi # Run scripts diff --git a/packages/js/e2e-environment/config/jest.config.js b/packages/js/e2e-environment/config/jest.config.js index bdb0493cf4f..471007f521d 100644 --- a/packages/js/e2e-environment/config/jest.config.js +++ b/packages/js/e2e-environment/config/jest.config.js @@ -9,7 +9,7 @@ const fs = require( 'fs' ); /** * Internal Dependencies */ -const { getAppRoot } = require( '../utils' ); +const { resolveLocalE2ePath } = require( '../utils' ); const failureSetup = []; if ( WC_E2E_SCREENSHOTS ) { @@ -23,11 +23,10 @@ const setupFilesAfterEnv = [ 'expect-puppeteer', ]; -const appPath = getAppRoot(); -const localJestSetupFile = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/config/jest.setup.js' -); +const localJestSetupFile = resolveLocalE2ePath( 'config/jest.setup.js' ); +const moduleNameMap = resolveLocalE2ePath( '$1' ); +const testSpecs = resolveLocalE2ePath( 'specs' ); + if ( fs.existsSync( localJestSetupFile ) ) { setupFilesAfterEnv.push( localJestSetupFile ); } @@ -35,7 +34,7 @@ if ( fs.existsSync( localJestSetupFile ) ) { const combinedConfig = { ...jestConfig, moduleNameMapper: { - '@woocommerce/e2e/tests/(.*)': appPath + 'tests/e2e/$1', + '@woocommerce/e2e/tests/(.*)': moduleNameMap, }, setupFiles: [ '/config/env.setup.js' ], @@ -52,7 +51,7 @@ const combinedConfig = { ...jestConfig.transformIgnorePatterns, 'node_modules/(?!(woocommerce)/)', ], - roots: [ appPath + 'tests/e2e/specs' ], + roots: [ testSpecs ], }; if ( process.env.jest_test_spec ) { diff --git a/packages/js/e2e-environment/docker-compose.yaml b/packages/js/e2e-environment/docker-compose.yaml index 52129ddf746..db7f1c91049 100644 --- a/packages/js/e2e-environment/docker-compose.yaml +++ b/packages/js/e2e-environment/docker-compose.yaml @@ -35,7 +35,7 @@ services: WORDPRESS_DEBUG: 1 volumes: - wordpress:/var/www/html - - "../../../${WC_CORE_PATH}:${WC_E2E_FOLDER_MAPPING}" + - "../../../${WC_E2E_FOLDER}:${WC_E2E_FOLDER_MAPPING}" wordpress-cli: container_name: "${APP_NAME}_wordpress-cli" @@ -60,7 +60,7 @@ services: volumes: - wordpress:/var/www/html - - "../../../plugins/woocommerce:${WC_E2E_FOLDER_MAPPING}" + - "../../../${WC_E2E_FOLDER}:${WC_E2E_FOLDER_MAPPING}" volumes: db: diff --git a/packages/js/e2e-environment/utils/index.js b/packages/js/e2e-environment/utils/index.js index 3a3e220c88c..baf54dc1b82 100644 --- a/packages/js/e2e-environment/utils/index.js +++ b/packages/js/e2e-environment/utils/index.js @@ -1,6 +1,6 @@ const getAppRoot = require( './app-root' ); const { getAppName, getAppBase } = require( './app-name' ); -const { getTestConfig, getAdminConfig } = require( './test-config' ); +const { getTestConfig, getAdminConfig, resolveLocalE2ePath } = require( './test-config' ); const { getRemotePluginZip, getLatestReleaseZipUrl } = require('./get-plugin-zip'); const takeScreenshotFor = require( './take-screenshot' ); const updateReadyPageStatus = require('./update-ready-page'); @@ -12,6 +12,7 @@ module.exports = { getAppName, getTestConfig, getAdminConfig, + resolveLocalE2ePath, getRemotePluginZip, getLatestReleaseZipUrl, takeScreenshotFor, diff --git a/packages/js/e2e-environment/utils/take-screenshot.js b/packages/js/e2e-environment/utils/take-screenshot.js index dfe9b500e70..b76db7c2e4c 100644 --- a/packages/js/e2e-environment/utils/take-screenshot.js +++ b/packages/js/e2e-environment/utils/take-screenshot.js @@ -1,6 +1,6 @@ const path = require( 'path' ); const mkdirp = require( 'mkdirp' ); -const getAppRoot = require( './app-root' ); +const { resolveLocalE2ePath } = require( './test-config' ); /** * Take a screenshot if browser context exists. @@ -10,11 +10,7 @@ const getAppRoot = require( './app-root' ); */ const takeScreenshotFor = async ( message ) => { const title = message.replace( /\.$/, '' ); - const appPath = getAppRoot(); - const savePath = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/screenshots' - ); + const savePath = resolveLocalE2ePath( 'screenshots' ); const filePath = path.join( savePath, `${ title }.png`.replace( /[^a-z0-9.-]+/gi, '-' ) diff --git a/packages/js/e2e-environment/utils/test-config.js b/packages/js/e2e-environment/utils/test-config.js index 0f423db30d9..2f4f187e5c3 100644 --- a/packages/js/e2e-environment/utils/test-config.js +++ b/packages/js/e2e-environment/utils/test-config.js @@ -2,12 +2,27 @@ const path = require( 'path' ); const fs = require( 'fs' ); const getAppRoot = require( './app-root' ); -// Copy local test configuration file if it exists. const appPath = getAppRoot(); -const localTestConfigFile = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/config/default.json' -); + +/** + * Resolve a local E2E file. + * + * @param {string} filename Filename to append to the path. + * @return {string} + */ +const resolveLocalE2ePath = ( filename = '' ) => { + const { WC_E2E_FOLDER } = process.env; + const localPath = `${WC_E2E_FOLDER}/tests/e2e/${filename}`; + const resolvedPath = path.resolve( + appPath, + localPath.indexOf( '/' ) == 0 ? localPath.slice( 1 ) : localPath + ); + + 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' @@ -78,4 +93,5 @@ const getAdminConfig = () => { module.exports = { getTestConfig, getAdminConfig, + resolveLocalE2ePath, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad7efa07b34..46093cd3052 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,11 +34,11 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.1.3 + '@nrwl/cli': 13.1.4 '@nrwl/linter': 13.1.3 - '@nrwl/tao': 13.1.3 + '@nrwl/tao': 13.1.4 '@nrwl/web': 13.1.3_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.1.3_wp-prettier@2.2.1-beta-1 + '@nrwl/workspace': 13.1.4_wp-prettier@2.2.1-beta-1 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -159,12 +159,9 @@ importers: packages/js/e2e-utils: specifiers: -<<<<<<< HEAD '@automattic/puppeteer-utils': github:Automattic/puppeteer-utils#0f3ec50 -======= '@typescript-eslint/eslint-plugin': ^5.3.0 '@typescript-eslint/parser': ^5.3.0 ->>>>>>> trunk '@wordpress/deprecated': ^2.10.0 '@wordpress/e2e-test-utils': ^4.16.1 config: 3.3.3 @@ -469,7 +466,7 @@ packages: '@babel/compat-data': 7.15.0 '@babel/core': 7.15.8 '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.6 + browserslist: 4.17.3 semver: 6.3.0 /@babel/helper-create-class-features-plugin/7.15.4_@babel+core@7.12.9: @@ -489,6 +486,22 @@ packages: - 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 + /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.15.8: resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} engines: {node: '>=6.9.0'} @@ -523,7 +536,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.15.8 - '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-annotate-as-pure': 7.15.4 regexpu-core: 4.8.0 /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.15.8: @@ -588,7 +601,6 @@ packages: 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==} @@ -622,7 +634,6 @@ packages: 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==} @@ -713,9 +724,9 @@ packages: resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color @@ -795,7 +806,7 @@ packages: '@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-create-class-features-plugin': 7.15.4_@babel+core@7.15.8 '@babel/helper-plugin-utils': 7.14.5 transitivePeerDependencies: - supports-color @@ -1044,7 +1055,7 @@ packages: '@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-create-class-features-plugin': 7.15.4_@babel+core@7.15.8 '@babel/helper-plugin-utils': 7.14.5 transitivePeerDependencies: - supports-color @@ -1470,12 +1481,12 @@ packages: '@babel/core': ^7.0.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-optimise-call-expression': 7.16.0 + '@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.16.0 - '@babel/helper-split-export-declaration': 7.16.0 + '@babel/helper-replace-supers': 7.15.4 + '@babel/helper-split-export-declaration': 7.15.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1616,7 +1627,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.15.8 - '@babel/helper-function-name': 7.16.0 + '@babel/helper-function-name': 7.15.4 '@babel/helper-plugin-utils': 7.14.5 /@babel/plugin-transform-literals/7.14.5_@babel+core@7.12.9: @@ -1736,7 +1747,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.15.8 - '@babel/helper-hoist-variables': 7.16.0 + '@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 @@ -1828,7 +1839,7 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-replace-supers': 7.15.4 transitivePeerDependencies: - supports-color @@ -2276,7 +2287,7 @@ packages: '@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.16.0 + '@babel/types': 7.15.6 esutils: 2.0.3 /@babel/preset-typescript/7.15.0_@babel+core@7.15.8: @@ -3178,6 +3189,18 @@ packages: yargs-parser: 20.0.0 dev: true + /@nrwl/cli/13.1.4: + resolution: {integrity: sha512-X2mJwjXitBbY/zRkcVJCUI4Kwk7bPJ/ZJwZHQH5Sn9IAX3p13ELQ1eAanxpOpUakVLvkjlAJ1g5vzt1znzs8wA==} + hasBin: true + dependencies: + '@nrwl/tao': 13.1.4 + chalk: 4.1.0 + enquirer: 2.3.6 + v8-compile-cache: 2.3.0 + yargs: 15.4.1 + yargs-parser: 20.0.0 + dev: true + /@nrwl/cypress/13.1.3_66b6d5e7c0d0fab5f0fa780d7c17d7d6: resolution: {integrity: sha512-lM/q0AdhUSTIWO/elSlVdjXztMDB0z7b818MeeD5I/dDEUCzIg/GDhcWigCiYfOys2MwBSOz++FrMfkNT8Z+Cw==} peerDependencies: @@ -3237,6 +3260,17 @@ packages: tslib: 2.3.1 dev: true + /@nrwl/devkit/13.1.4: + resolution: {integrity: sha512-2jzb7A94O8k3lQfIvCgVb/LPoym2P6EoKAEYYX6OgPY0hwjaqik1LgkWxSnN0yTPL5gCCxb6pYLHS8A0tDye2w==} + dependencies: + '@nrwl/tao': 13.1.4 + ejs: 3.1.6 + ignore: 5.1.8 + rxjs: 6.6.7 + semver: 7.3.4 + tslib: 2.3.1 + dev: true + /@nrwl/jest/13.1.3: resolution: {integrity: sha512-6ogg6TOOneVtJuIW02wKrkO35EDGtpiuIdB58syQOYbG3SwqsHvy0MPGqzz+A1q4esOE3+qyn/9M+DtTGiAwbQ==} dependencies: @@ -3259,6 +3293,28 @@ packages: - utf-8-validate dev: true + /@nrwl/jest/13.1.4: + 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 + 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/linter/13.1.3: resolution: {integrity: sha512-aUIHKenNTZxqv3RZ2KVgMuZRAoyDIowp0r8qoH+Xfhxkq+PpLHDsk+Z3C0LDzk7sbqQeIbq+bbSleUtHYDh5qg==} dependencies: @@ -3278,6 +3334,25 @@ packages: - utf-8-validate dev: true + /@nrwl/linter/13.1.4: + resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} + 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 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + dev: true + /@nrwl/tao/12.10.0: resolution: {integrity: sha512-YkdgTJJsDQlItVj25vW8zEen7BAra6i41Udd0v3CuxTSEXjJJnBD2KzEOGUxXS0gMg7+ILuw2rl9aOKu43TmVA==} hasBin: true @@ -3312,6 +3387,23 @@ packages: yargs-parser: 20.0.0 dev: true + /@nrwl/tao/13.1.4: + resolution: {integrity: sha512-XslTN56x5Y1sEuVkGoAMCibEU0V5CunOORSewMWsNaEWtefhkLD00R0L02Uj4q1d28H+6TiucjR/mGFjyEzWUQ==} + hasBin: true + dependencies: + chalk: 4.1.0 + enquirer: 2.3.6 + fs-extra: 9.1.0 + jsonc-parser: 3.0.0 + nx: 13.1.4 + rxjs: 6.6.7 + rxjs-for-await: 0.0.2_rxjs@6.6.7 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs-parser: 20.0.0 + dev: true + /@nrwl/web/13.1.3_42cab1dece2b2240094de84cfd414406: resolution: {integrity: sha512-Tt9pWvOg1UWPIWDk4X745UOqmSMEbUlKQ0L1GA9oyeH5dJ9DPEzwXzLfyCZ4aXAXdgZxqnV77Pa4qOVwxL5Jpg==} dependencies: @@ -3465,6 +3557,49 @@ packages: - utf-8-validate dev: true + /@nrwl/workspace/13.1.4_wp-prettier@2.2.1-beta-1: + resolution: {integrity: sha512-dQlxswf2XlMyEJBK4+fZHQTpxtevcWzDCVO9iLjuvL1XZDbDQG95+N7DsASq67qOxFAlpYWVxAVZAXIHsnX9tQ==} + 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 + '@nrwl/linter': 13.1.4 + '@parcel/watcher': 2.0.0-alpha.11 + chalk: 4.1.0 + chokidar: 3.5.2 + cosmiconfig: 4.0.0 + dotenv: 10.0.0 + enquirer: 2.3.6 + flat: 5.0.2 + fs-extra: 9.1.0 + glob: 7.1.4 + ignore: 5.1.8 + 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 + rxjs: 6.6.7 + semver: 7.3.4 + strip-ansi: 6.0.0 + tmp: 0.2.1 + tslib: 2.3.1 + yargs: 15.4.1 + yargs-parser: 20.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + dev: true + /@parcel/watcher/2.0.0-alpha.11: resolution: {integrity: sha512-zMIAsFLcnB82kkk0kSOZ/zgyihb8sty0zVrsz+3ruoYXkchymWsCDsxiX4v+X2s8Jppk3JE8vlnD4DKs3QTOEQ==} engines: {node: '>= 10.0.0'} @@ -5673,10 +5808,10 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.16.0 - '@babel/parser': 7.16.2 - '@babel/traverse': 7.16.0 - '@babel/types': 7.16.0 + '@babel/code-frame': 7.15.8 + '@babel/parser': 7.15.8 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -8789,7 +8924,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 @@ -11601,11 +11736,11 @@ packages: resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} engines: {node: '>=6'} dependencies: - '@babel/generator': 7.15.8 - '@babel/parser': 7.15.8 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/generator': 7.16.0 + '@babel/parser': 7.16.2 + '@babel/template': 7.16.0 + '@babel/traverse': 7.16.0 + '@babel/types': 7.16.0 istanbul-lib-coverage: 2.0.5 semver: 6.3.0 transitivePeerDependencies: @@ -12262,7 +12397,7 @@ packages: resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} engines: {node: '>= 6'} dependencies: - '@babel/traverse': 7.15.4 + '@babel/traverse': 7.16.0 '@jest/environment': 24.9.0 '@jest/test-result': 24.9.0 '@jest/types': 24.9.0 @@ -12400,7 +12535,7 @@ packages: resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==} engines: {node: '>= 6'} dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 '@jest/test-result': 24.9.0 '@jest/types': 24.9.0 '@types/stack-utils': 1.0.1 @@ -12876,7 +13011,7 @@ packages: resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} engines: {node: '>= 6'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 '@jest/types': 24.9.0 chalk: 2.4.2 expect: 24.9.0 @@ -14676,14 +14811,21 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.1.3 + '@nrwl/cli': 13.1.4 dev: true /nx/13.1.3: resolution: {integrity: sha512-clM0NQhQKYkqcNz2E3uYRMLwhp2L/9dBhJhQi9XBX4IAyA2gWAomhRIlLm5Xxg3g4h1xwSpP3eJ5t89VikY8Pw==} hasBin: true dependencies: - '@nrwl/cli': 13.1.3 + '@nrwl/cli': 13.1.4 + dev: true + + /nx/13.1.4: + resolution: {integrity: sha512-m2j3wymaFlEl/7EoGxlgRzdmgQV1Rsh42df1cM8xFzAzV8ZGtR3Zq19qK7r9SUabpq8jMzp1e6rLQTHewCJWig==} + hasBin: true + dependencies: + '@nrwl/cli': 13.1.4 dev: true /oauth-1.0a/2.2.6: From 43d73eb32af1f6128f8d02d28c0104855133b162 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 17 Nov 2021 10:02:15 -0400 Subject: [PATCH 16/97] update package changelog and readme --- packages/js/e2e-environment/CHANGELOG.md | 2 ++ packages/js/e2e-environment/builtin.md | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 4c1db86b56f..a953ce33963 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -5,6 +5,8 @@ - Added quotes around `WORDPRESS_TITLE` value in .env file to address issue with docker compose 2 "key cannot contain a space" error. - Added `LATEST_WP_VERSION_MINUS` that allows setting a number to subtract from the current WordPress version for the WordPress Docker image. - Support for PHP_VERSION, MARIADB_VERSION environment variables for built in container initialization +- `resolveLocalE2ePath` to resolve path to local E2E file +- `WC_E2E_FOLDER` for mapping plugin root to path within repo ## Fixed diff --git a/packages/js/e2e-environment/builtin.md b/packages/js/e2e-environment/builtin.md index 6ec0095f7c9..2b91b80bd98 100644 --- a/packages/js/e2e-environment/builtin.md +++ b/packages/js/e2e-environment/builtin.md @@ -119,7 +119,12 @@ You can override these in `/tests/e2e/config/default.json`. ### Folder Mapping -The built in container defaults to mapping the root folder of the repository to a folder in the `plugins` folder. For example `woocommerce` is mapped to `/var/www/html/wp-content/plugins/woocommerce`. Use the `WC_E2E_FOLDER_MAPPING` environment variable to override this mapping. +The built in container defaults to mapping the root folder of the repository to a folder in the `plugins` folder. Use the environment variables `WC_E2E_FOLDER` and `WC_E2E_FOLDER_MAPPING` to override this mapping. The `WC_E2E_FOLDER` is a path relative to the root of the project. For example, in the `woocommerce` repository this mapping is: + +- `WC_E2E_FOLDER=plugins/woocommerce` +- `WC_E2E_FOLDER_MAPPING=/var/www/html/wp-content/plugins/woocommerce` + +Other repository examples: - Storefront Theme - ```WC_E2E_FOLDER_MAPPING=/var/www/html/wp-content/themes/storefront npx wc-e2e docker:up``` - Site Project - ```WC_E2E_FOLDER_MAPPING=/var/www/html/wp-content npx wc-e2e docker:up``` From b698a80f36cda83801bbcfe7a00d925738cbe9bd Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 19 Nov 2021 17:02:02 -0400 Subject: [PATCH 17/97] add basic test spec installer --- .../data/default-test-config.json | 195 ++++++++++++++++++ .../e2e-core-tests/data/scaffold-tests.json | 138 +++++++++++++ packages/js/e2e-core-tests/index.js | 18 +- packages/js/e2e-environment/bin/scaffold.js | 137 ++++++++++++ packages/js/e2e-environment/bin/wc-e2e.sh | 3 + packages/js/e2e-environment/package.json | 3 +- pnpm-lock.yaml | 113 +++++++++- 7 files changed, 594 insertions(+), 13 deletions(-) create mode 100644 packages/js/e2e-core-tests/data/default-test-config.json create mode 100644 packages/js/e2e-core-tests/data/scaffold-tests.json create mode 100755 packages/js/e2e-environment/bin/scaffold.js diff --git a/packages/js/e2e-core-tests/data/default-test-config.json b/packages/js/e2e-core-tests/data/default-test-config.json new file mode 100644 index 00000000000..c67465ed4ba --- /dev/null +++ b/packages/js/e2e-core-tests/data/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/data/scaffold-tests.json b/packages/js/e2e-core-tests/data/scaffold-tests.json new file mode 100644 index 00000000000..7d95b03587d --- /dev/null +++ b/packages/js/e2e-core-tests/data/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/index.js b/packages/js/e2e-core-tests/index.js index 9fd036edd21..949cffc0690 100644 --- a/packages/js/e2e-core-tests/index.js +++ b/packages/js/e2e-core-tests/index.js @@ -2,5 +2,21 @@ * Internal dependencies */ const allSpecs = require( './specs' ); +const fs = require( 'fs' ); -module.exports = allSpecs; +/** + * Read test set up configuration for the test scaffolding tool. + */ +const getObjectFromJsonFile = ( filename ) => { + const specs = fs.readFileSync( filename ); + return JSON.parse( specs ); +}; + +const getTestInstallSpecs = () => getObjectFromJsonFile( './data/install-specs.json' ); +const getSampleDefaultJson = () => getObjectFromJsonFile( './data/default-test-config.json' ); + +module.exports = { + allSpecs, + getTestInstallSpecs, + getSampleDefaultJson, +}; diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js new file mode 100755 index 00000000000..4594f6c8e76 --- /dev/null +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -0,0 +1,137 @@ +#!/usr/bin/env node + +/** + * External dependencies. + */ +const fs = require( 'fs' ); +const sprintf = require( 'sprintf-js' ).sprintf; + +/** + * Internal dependencies. + */ +const { resolveLocalE2ePath } = require( '../utils' ); + +const [ command, package ] = process.argv.slice( 2 ); + +/** + * Install the test scripts and sample default.json configuration + */ +if ( command == 'install' ) { + /** + const { getTestInstallSpecs, getSampleDefaultJson } = require( package ); + + if ( getTestInstallSpecs instanceof Function ) { + console.log( 'is a function' ); + } + if ( getSampleDefaultJson instanceof Function ) { + const sampleDefaultJson = getSampleDefaultJson(); + console.log( sampleDefaultJson ); + } + /**/ + // @todo Add logic for dynamic file extension + const testExtension = 'test.js'; + const sampleDefaultJson = { + "url": "http://localhost:8084/", + "users": { + "admin": { + "username": "admin", + "password": "password" + }, + "customer": { + "username": "customer", + "password": "password" + } + }, + }; + const testSpecs = { + "active": [ + { + "name": "example", + "description": "Shopper tests", + "testFiles": [ + { + "name": "cart-begin", + "functions": [ "runCartPageTest" ] + }, { + "name": "cart-end", + "functions": [ + "testCartEnd", + "testCartEndPart2", + "testCartEndPart3", + "testCartEndPart4" + ] + } + ] + } + ] + }; + + // Write sample default.json + const packageSlug = package.replace( '@', '' ).replace( /\//g, '.' ); + const defaultJsonName = `config/default-${packageSlug}.json`; + const defaultJsonSample = resolveLocalE2ePath( defaultJsonName ); + fs.writeFileSync( defaultJsonSample, JSON.stringify( sampleDefaultJson , null, 2 ) ); + console.log( `\nWrote sample test configuration to 'tests/e2e/${defaultJsonName}'.\n` ); + + // Write test files + if ( testSpecs.active && testSpecs.active.length ) { + const eol = "\n"; + const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s. */', package ); + const importLineFormat = sprintf( "import {%%s} from '%s';", package ); + // Loop through folders and files to write test scripts. + for ( let f = 0; f < testSpecs.active.length; f++ ) { + const testFolder = testSpecs.active[ f ]; + if ( ! testFolder.testFiles || ! testFolder.testFiles.length ) { + continue; + } + + const specFolder = testFolder.name.length ? `specs/${testFolder.name}` : 'specs'; + const specFolderPath = resolveLocalE2ePath( specFolder ); + + // Create the test folder if it doesn't exist. + if ( ! fs.existsSync( specFolderPath) ) { + fs.mkdirSync( specFolderPath ); + } + + // Create the test files. + for ( let t = 0; t < testFolder.testFiles.length; t++ ) { + const testFile = testFolder.testFiles[ t ]; + if ( ! testFile.functions.length ) { + continue; + } + + const testFileName = `${specFolder}/${testFile.name}.${testExtension}`; + const testFilePath = resolveLocalE2ePath( testFileName ); + + // @todo Add check to see if file exists + // fs.existsSync + // @todo Confirm overwrite + // readline + + console.log( 'Writing tests/e2e/' + 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; + // '' adds a blank line + buffer.push( sprintf( importLineFormat, importPrefix + testImport ), '' ); + + // Add test function calls and write the file + let functionCalls = testFile.functions.map( functionName => functionName + '();' ); + buffer.push( ...functionCalls ); + fs.writeFileSync( testFilePath, buffer.join( eol ) ); + } + console.log( eol ); + } + } +} diff --git a/packages/js/e2e-environment/bin/wc-e2e.sh b/packages/js/e2e-environment/bin/wc-e2e.sh index 11be2f572bb..bbba17c2802 100755 --- a/packages/js/e2e-environment/bin/wc-e2e.sh +++ b/packages/js/e2e-environment/bin/wc-e2e.sh @@ -71,6 +71,9 @@ case $1 in ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug $2 TESTRESULT=$? ;; + 'install') + ./bin/scaffold.js $@ + ;; *) usage ;; diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 33e576f5420..47b12b89ba5 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -32,8 +32,9 @@ "jest": "^25.1.0", "jest-each": "25.5.0", "jest-puppeteer": "^4.4.0", + "node-stream-zip": "^1.13.6", "request": "^2.88.2", - "node-stream-zip": "^1.13.6" + "sprintf-js": "^1.1.2" }, "devDependencies": { "@babel/cli": "7.12.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cee9c417779..35b3bc23251 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,11 +34,11 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.1.4 + '@nrwl/cli': 13.2.0 '@nrwl/linter': 13.1.4 - '@nrwl/tao': 13.1.4 + '@nrwl/tao': 13.2.0 '@nrwl/web': 13.1.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.1.4_wp-prettier@2.2.1-beta-1 + '@nrwl/workspace': 13.2.0_wp-prettier@2.2.1-beta-1 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -129,6 +129,7 @@ importers: node-stream-zip: ^1.13.6 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 @@ -143,6 +144,7 @@ importers: jest-puppeteer: 4.4.0 node-stream-zip: 1.15.0 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 @@ -4249,6 +4251,18 @@ packages: yargs-parser: 20.0.0 dev: true + /@nrwl/cli/13.2.0: + resolution: {integrity: sha512-zpDkt+e1cZS+/3IVJLXcmwwvy/vnW/FAQdSecvrEkYZPIMFfVFlL6814RebuIyg5LKak5rdqIPp+ndv5quTkzg==} + hasBin: true + dependencies: + '@nrwl/tao': 13.2.0 + chalk: 4.1.0 + enquirer: 2.3.6 + v8-compile-cache: 2.3.0 + yargs: 15.4.1 + yargs-parser: 20.0.0 + dev: true + /@nrwl/cypress/13.1.4_45e5b05f8550ddf8ad44a90a38658752: resolution: {integrity: sha512-t3HewJdWl7wWAoFm6ZCtMbe8AODvV7Gtck4RP/cB0lFn6Di0q8tUNutVXSfNSdAvSURvegurZsyb30ehIM1FcQ==} peerDependencies: @@ -4308,6 +4322,17 @@ packages: tslib: 2.3.1 dev: true + /@nrwl/devkit/13.2.0: + resolution: {integrity: sha512-CaFepGKDxeH5esoQzj92Q6tAlcUjhZTxXWTOZ5D/2JeC5sdIaWqPJ5G3jeKm9zODbv9f1Q3L+Zv1ZDULHTQtCw==} + dependencies: + '@nrwl/tao': 13.2.0 + 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==} dependencies: @@ -4352,6 +4377,29 @@ packages: - utf-8-validate dev: true + /@nrwl/jest/13.2.0: + resolution: {integrity: sha512-vnc+vtTzTZGG057cOkBGKhRc6ZQQtdWsF8KzZ3KTAlH5u4l7BetQ6borogcMuCTFUzzB30Aj6Gl3Hyc5CSwGuA==} + dependencies: + '@jest/reporters': 27.2.2 + '@jest/test-result': 27.2.2 + '@nrwl/devkit': 13.2.0 + 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 + resolve.exports: 1.1.0 + rxjs: 6.6.7 + tslib: 2.3.1 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - utf-8-validate + dev: true + /@nrwl/linter/13.1.4: resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} dependencies: @@ -4390,6 +4438,25 @@ packages: - utf-8-validate dev: true + /@nrwl/linter/13.2.0: + resolution: {integrity: sha512-cNEpL1j/6wZswxY4oGY2p3JurwHCrJ2jfKGuEeNbqlYcVgt+BFHTkzGdgBepFo2z1/mbj2DneJlGZCK19RrtRQ==} + dependencies: + '@nrwl/devkit': 13.2.0 + '@nrwl/jest': 13.2.0 + eslint: 7.32.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 + - utf-8-validate + dev: true + /@nrwl/tao/12.10.0: resolution: {integrity: sha512-YkdgTJJsDQlItVj25vW8zEen7BAra6i41Udd0v3CuxTSEXjJJnBD2KzEOGUxXS0gMg7+ILuw2rl9aOKu43TmVA==} hasBin: true @@ -4424,6 +4491,23 @@ packages: yargs-parser: 20.0.0 dev: true + /@nrwl/tao/13.2.0: + resolution: {integrity: sha512-1mxEJ9o3DftTteMaLVcNBewnfkYafm1vHmoWmtaJCFZ85xeYJ8bZQioFFYoRLN0eqWhpkgr8JzKj0VPoqKHrow==} + hasBin: true + dependencies: + chalk: 4.1.0 + enquirer: 2.3.6 + fs-extra: 9.1.0 + jsonc-parser: 3.0.0 + nx: 13.2.0 + rxjs: 6.6.7 + rxjs-for-await: 0.0.2_rxjs@6.6.7 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs-parser: 20.0.0 + dev: true + /@nrwl/web/13.1.4_42cab1dece2b2240094de84cfd414406: resolution: {integrity: sha512-ana2YrMHYltowOHG3f3+EzA5jQVL4+QsVniN8qXFJrwecpFEoRlCZYGvhomhe3TyC4QlQkmmSm575foV8dzAyQ==} dependencies: @@ -4581,18 +4665,18 @@ packages: - utf-8-validate dev: true - /@nrwl/workspace/13.1.4_wp-prettier@2.2.1-beta-1: - resolution: {integrity: sha512-dQlxswf2XlMyEJBK4+fZHQTpxtevcWzDCVO9iLjuvL1XZDbDQG95+N7DsASq67qOxFAlpYWVxAVZAXIHsnX9tQ==} + /@nrwl/workspace/13.2.0_wp-prettier@2.2.1-beta-1: + resolution: {integrity: sha512-k0iUdJRsn8JY4SID/ybYDednKEWtYOgsapgShBzUjv2BZJoRfXuPCp21VuH6kdZDZx18/i5uOpmjzju1U12PkQ==} 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 - '@nrwl/linter': 13.1.4 + '@nrwl/cli': 13.2.0 + '@nrwl/devkit': 13.2.0 + '@nrwl/jest': 13.2.0 + '@nrwl/linter': 13.2.0 '@parcel/watcher': 2.0.0-alpha.11 chalk: 4.1.0 chokidar: 3.5.2 @@ -16109,14 +16193,21 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.1.4 + '@nrwl/cli': 13.2.0 dev: true /nx/13.1.4: resolution: {integrity: sha512-m2j3wymaFlEl/7EoGxlgRzdmgQV1Rsh42df1cM8xFzAzV8ZGtR3Zq19qK7r9SUabpq8jMzp1e6rLQTHewCJWig==} hasBin: true dependencies: - '@nrwl/cli': 13.1.4 + '@nrwl/cli': 13.2.0 + dev: true + + /nx/13.2.0: + resolution: {integrity: sha512-6EmHNwU3wsxfpy57+MQGbMcvrd9CImw3OU2OCW8Ddywi6UVmoVevaHgcxyOsUlaicj/4xU+7Pv5fGt4q1uAjyw==} + hasBin: true + dependencies: + '@nrwl/cli': 13.2.0 dev: true /oauth-1.0a/2.2.6: From d738e5b3ce33e207aa96fabb14afa6c6e345d4c8 Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Fri, 26 Nov 2021 16:49:51 +0000 Subject: [PATCH 18/97] Adding link to votes needed issues. --- .github/ISSUE_TEMPLATE/1-bug-report.yml | 2 +- .github/ISSUE_TEMPLATE/2-enhancement.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml index 574cceba425..69cb4e1c960 100644 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -17,7 +17,7 @@ body: - 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 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. + 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). diff --git a/.github/ISSUE_TEMPLATE/2-enhancement.yml b/.github/ISSUE_TEMPLATE/2-enhancement.yml index 5b3565a71c9..e3fc4f7c854 100644 --- a/.github/ISSUE_TEMPLATE/2-enhancement.yml +++ b/.github/ISSUE_TEMPLATE/2-enhancement.yml @@ -10,7 +10,7 @@ body: Please provide us with the information requested in this form. - Make sure to look through [existing issues](https://github.com/woocommerce/woocommerce/issues?q=is%3Aopen+is%3Aissue+label%3A%22type%3A+enhancement%22) to see whether your idea is already being discussed. + 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). From a21af3d3c66eb84a6a113e9f1e741c5e7fd55f2e Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 26 Nov 2021 15:14:49 -0400 Subject: [PATCH 19/97] add resolvePackage(), resolvePackagePath() utilities --- packages/js/e2e-environment/README.md | 4 +- .../js/e2e-environment/bin/docker-compose.js | 5 +- .../bin/e2e-test-integration.js | 15 ++-- .../e2e-environment/utils/get-plugin-zip.js | 5 +- packages/js/e2e-environment/utils/index.js | 6 +- .../js/e2e-environment/utils/test-config.js | 71 +++++++++++++++++-- 6 files changed, 81 insertions(+), 25 deletions(-) diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index 26752959fba..f81679bcf82 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -60,10 +60,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; 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 09f0c95dcf5..be837564888 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 @@ -88,7 +89,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/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index a537813e408..91be84837c1 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -13,10 +13,7 @@ const StreamZip = require( 'node-stream-zip' ); */ const getRemotePluginZip = async ( fileUrl ) => { const appPath = getAppRoot(); - const savePath = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/plugins' - ); + const savePath = resolveLocalE2ePath( 'plugins' ); mkdirp.sync( savePath ); // Pull the filename from the end of the URL diff --git a/packages/js/e2e-environment/utils/index.js b/packages/js/e2e-environment/utils/index.js index baf54dc1b82..54e5939a5c7 100644 --- a/packages/js/e2e-environment/utils/index.js +++ b/packages/js/e2e-environment/utils/index.js @@ -1,6 +1,6 @@ const getAppRoot = require( './app-root' ); const { getAppName, getAppBase } = require( './app-name' ); -const { getTestConfig, getAdminConfig, resolveLocalE2ePath } = require( './test-config' ); +const testConfig = require( './test-config' ); const { getRemotePluginZip, getLatestReleaseZipUrl } = require('./get-plugin-zip'); const takeScreenshotFor = require( './take-screenshot' ); const updateReadyPageStatus = require('./update-ready-page'); @@ -10,12 +10,10 @@ module.exports = { getAppBase, getAppRoot, getAppName, - getTestConfig, - getAdminConfig, - resolveLocalE2ePath, getRemotePluginZip, getLatestReleaseZipUrl, takeScreenshotFor, updateReadyPageStatus, + ...testConfig, ...consoleUtils, }; diff --git a/packages/js/e2e-environment/utils/test-config.js b/packages/js/e2e-environment/utils/test-config.js index 2f4f187e5c3..29f426c835f 100644 --- a/packages/js/e2e-environment/utils/test-config.js +++ b/packages/js/e2e-environment/utils/test-config.js @@ -19,15 +19,72 @@ 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 { + resolvedPackage.path = require.resolve( packageName ); + 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 packageLockData = JSON.parse( packageLockContent ); + + for ( const [ key, value ] of Object.entries( packageLockData.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 package = resolvePackage( packageName ); + packagePath = package.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 +151,6 @@ module.exports = { getTestConfig, getAdminConfig, resolveLocalE2ePath, + resolvePackage, + resolvePackagePath, }; From 25cd08933c3f797c056081e7874927efd473913a Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 26 Nov 2021 16:55:22 -0400 Subject: [PATCH 20/97] add --ext and --format arguments --- packages/js/e2e-core-tests/index.js | 15 +-- packages/js/e2e-environment/bin/scaffold.js | 140 +++++++++++--------- 2 files changed, 83 insertions(+), 72 deletions(-) diff --git a/packages/js/e2e-core-tests/index.js b/packages/js/e2e-core-tests/index.js index 949cffc0690..265ecaf6522 100644 --- a/packages/js/e2e-core-tests/index.js +++ b/packages/js/e2e-core-tests/index.js @@ -5,18 +5,15 @@ const allSpecs = require( './specs' ); const fs = require( 'fs' ); /** - * Read test set up configuration for the test scaffolding tool. + * Test set up configuration for the test scaffolding tool. */ -const getObjectFromJsonFile = ( filename ) => { - const specs = fs.readFileSync( filename ); - return JSON.parse( specs ); +const packageInstallFiles = { + testSpecs: 'data/install-specs.json', + defaultJson: 'data/default-test-config.json', + initializeSh: 'data/initialize.sh.default', }; -const getTestInstallSpecs = () => getObjectFromJsonFile( './data/install-specs.json' ); -const getSampleDefaultJson = () => getObjectFromJsonFile( './data/default-test-config.json' ); - module.exports = { allSpecs, - getTestInstallSpecs, - getSampleDefaultJson, + packageInstallFiles, }; diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index 4594f6c8e76..d20187693f0 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -9,79 +9,91 @@ const sprintf = require( 'sprintf-js' ).sprintf; /** * Internal dependencies. */ -const { resolveLocalE2ePath } = require( '../utils' ); +const { + resolveLocalE2ePath, + resolvePackage, + resolvePackagePath, +} = require( '../utils' ); -const [ command, package ] = process.argv.slice( 2 ); +const args = process.argv.slice( 2 ); +const [ command, packageName ] = args; /** * Install the test scripts and sample default.json configuration */ if ( command == 'install' ) { - /** - const { getTestInstallSpecs, getSampleDefaultJson } = require( package ); - - if ( getTestInstallSpecs instanceof Function ) { - console.log( 'is a function' ); + //** + const package = resolvePackage( packageName ).name; + if ( ! package.length ) { + //@todo add error message + return; } - if ( getSampleDefaultJson instanceof Function ) { - const sampleDefaultJson = getSampleDefaultJson(); - console.log( sampleDefaultJson ); - } - /**/ - // @todo Add logic for dynamic file extension - const testExtension = 'test.js'; - const sampleDefaultJson = { - "url": "http://localhost:8084/", - "users": { - "admin": { - "username": "admin", - "password": "password" - }, - "customer": { - "username": "customer", - "password": "password" - } - }, - }; - const testSpecs = { - "active": [ - { - "name": "example", - "description": "Shopper tests", - "testFiles": [ - { - "name": "cart-begin", - "functions": [ "runCartPageTest" ] - }, { - "name": "cart-end", - "functions": [ - "testCartEnd", - "testCartEndPart2", - "testCartEndPart3", - "testCartEndPart4" - ] - } - ] - } - ] - }; + const packageSlug = package.replace( '@', '' ).replace( /\//g, '.' ); + const { packageInstallFiles } = require( package ); + const { testSpecs, defaultJson, initializeSh } = packageInstallFiles; // Write sample default.json - const packageSlug = package.replace( '@', '' ).replace( /\//g, '.' ); - const defaultJsonName = `config/default-${packageSlug}.json`; - const defaultJsonSample = resolveLocalE2ePath( defaultJsonName ); - fs.writeFileSync( defaultJsonSample, JSON.stringify( sampleDefaultJson , null, 2 ) ); - console.log( `\nWrote sample test configuration to 'tests/e2e/${defaultJsonName}'.\n` ); + if ( defaultJson ) { + const defaultJsonName = `config/default-${packageSlug}.json`; + const defaultJsonSample = resolveLocalE2ePath( defaultJsonName ); + const packageJsonSample = resolvePackagePath( defaultJson, package ); + fs.copyFileSync( packageJsonSample, defaultJsonSample ); + console.log( `\nCreated sample test configuration to 'tests/e2e/${defaultJsonName}'.\n` ); + } + + // Write sample initialize.sh + if ( initializeSh ) { + const defaultInitName = `docker/${packageSlug}.sh`; + const defaultInitPath = resolveLocalE2ePath( defaultInitName ); + const packageInitPath = resolvePackagePath( initializeSh, package ); + fs.copyFileSync( packageInitPath, defaultInitPath ); + console.log( `\nCreated sample test container initialization script to 'tests/e2e/${defaultInitName}'.\n` ); + } // Write test files - if ( testSpecs.active && testSpecs.active.length ) { + if ( ! testSpecs ) { + return; + } + + const testsSpecFile = resolvePackagePath( testSpecs, package ); + const specs = fs.readFileSync( testsSpecFile ); + const tests = JSON.parse( specs ); + const { active, deprecated } = tests; + + // 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; + } + } + + if ( active && active.length ) { const eol = "\n"; - const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s. */', package ); - const importLineFormat = sprintf( "import {%%s} from '%s';", package ); + const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s. */', packageName ); + let importLineFormat; + if ( testFormat.toLowerCase() == 'cjs' ) { + importLineFormat = sprintf( "const {%%s} = require( '%s' );", package ); + } else { + importLineFormat = sprintf( "import {%%s} from '%s';", package ); + } + // Loop through folders and files to write test scripts. - for ( let f = 0; f < testSpecs.active.length; f++ ) { - const testFolder = testSpecs.active[ f ]; - if ( ! testFolder.testFiles || ! testFolder.testFiles.length ) { + for ( let f = 0; f < active.length; f++ ) { + const testFolder = active[ f ]; + const { testFiles } = testFolder; + + if ( ! testFiles || ! testFiles.length ) { continue; } @@ -89,13 +101,13 @@ if ( command == 'install' ) { const specFolderPath = resolveLocalE2ePath( specFolder ); // Create the test folder if it doesn't exist. - if ( ! fs.existsSync( specFolderPath) ) { + if ( ! fs.existsSync( specFolderPath ) ) { fs.mkdirSync( specFolderPath ); } // Create the test files. - for ( let t = 0; t < testFolder.testFiles.length; t++ ) { - const testFile = testFolder.testFiles[ t ]; + for ( let t = 0; t < testFiles.length; t++ ) { + const testFile = testFiles[ t ]; if ( ! testFile.functions.length ) { continue; } @@ -134,4 +146,6 @@ if ( command == 'install' ) { console.log( eol ); } } + + // @todo: deprecated files. } From 06f0908443503ed96db29190dc800de060980a81 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 26 Nov 2021 16:56:56 -0400 Subject: [PATCH 21/97] add default container initialization --- .../e2e-core-tests/data/initialize.sh.default | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 packages/js/e2e-core-tests/data/initialize.sh.default diff --git a/packages/js/e2e-core-tests/data/initialize.sh.default b/packages/js/e2e-core-tests/data/initialize.sh.default new file mode 100755 index 00000000000..7c0ab8f9991 --- /dev/null +++ b/packages/js/e2e-core-tests/data/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%/ From 72cf968bcedf978d786e6fce2cd5ae34e26b2e93 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 14:33:34 -0500 Subject: [PATCH 22/97] Updated CHANGELOG.md --- packages/js/e2e-environment/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 091ce2028fc..35890d62c52 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -1,5 +1,10 @@ # Unreleased +## Added + +- Added `jest-circus` as a test runner to enable retrying failed tests +- Added `E2E_RETRY_TIMES` environment variable to determine retry count. The default is 3. + ## Fixed - Updated the browserViewport in `jest.setup.js` to match the `defaultViewport` dimensions defined in `jest-puppeteer.config.js` From f8210cade8a91c24af78bec53ba6ac53085ed76f Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 14:34:06 -0500 Subject: [PATCH 23/97] Updated README.md --- plugins/woocommerce/tests/e2e/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/woocommerce/tests/e2e/README.md b/plugins/woocommerce/tests/e2e/README.md index dfd265a4010..0f734809c01 100644 --- a/plugins/woocommerce/tests/e2e/README.md +++ b/plugins/woocommerce/tests/e2e/README.md @@ -186,6 +186,15 @@ For example: - `PUPPETEER_SLOWMO=10` - will run tests faster - `PUPPETEER_SLOWMO=70` - will run tests slower +### How to retry failed tests + +Sometimes tests may fail for different reasons such as network issues, or lost connection. To mitigate against test flakiess, failed tests are rerun up to 3 times before being marked as failed. The amount of retry attempts can be adjusted by passing the `E2E_RETRY_TIMES` variable when running tests. For example: + +``` +cd plugins/woocommerce +E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +``` + ### How to run tests in debug mode Tests run in headless mode by default. While writing tests it may be useful to have the debugger loaded while running a test in non-headless mode. To run tests in debug mode: From 69dc645f0e213c3d6e7a6c6d16681eca9bdf8910 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 14:34:28 -0500 Subject: [PATCH 24/97] Added the jest-circus package In jest version before 27, we need to use jest-circus. For 27 and after, jest-circus is the default test runner. --- packages/js/e2e-environment/package.json | 5 +++-- pnpm-lock.yaml | 26 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 33e576f5420..8955bc1409c 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -32,8 +32,8 @@ "jest": "^25.1.0", "jest-each": "25.5.0", "jest-puppeteer": "^4.4.0", - "request": "^2.88.2", - "node-stream-zip": "^1.13.6" + "node-stream-zip": "^1.13.6", + "request": "^2.88.2" }, "devDependencies": { "@babel/cli": "7.12.8", @@ -42,6 +42,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" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82eef76d9f5..e52ccadcc8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,6 +125,7 @@ importers: 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 @@ -152,6 +153,7 @@ importers: '@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 + jest-circus: 25.1.0 ndb: 1.1.5 semver: 7.3.5 @@ -13277,6 +13279,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} From 920c1a7580228fc5dcfd5bd9cc369b9032ee9664 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 14:35:06 -0500 Subject: [PATCH 25/97] Updated testRunner to be jest-circus --- packages/js/e2e-environment/config/jest.config.js | 3 +++ 1 file changed, 3 insertions(+) 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 ], }; From 6fa14b0b6cfc552bc03245ecf091601499d0c885 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 14:35:25 -0500 Subject: [PATCH 26/97] Set jest.retryTimes wih the E2E_RETRY_TIME env --- plugins/woocommerce/tests/e2e/config/jest.setup.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/e2e/config/jest.setup.js b/plugins/woocommerce/tests/e2e/config/jest.setup.js index 5fd474f804f..003127d1d8b 100644 --- a/plugins/woocommerce/tests/e2e/config/jest.setup.js +++ b/plugins/woocommerce/tests/e2e/config/jest.setup.js @@ -8,7 +8,7 @@ import { const config = require( 'config' ); const { HTTPClientFactory } = require( '@woocommerce/api' ); const { addConsoleSuppression, updateReadyPageStatus } = require( '@woocommerce/e2e-environment' ); -const { DEFAULT_TIMEOUT_OVERRIDE } = process.env; +const { DEFAULT_TIMEOUT_OVERRIDE, E2E_RETRY_TIMES } = process.env; // @todo: remove this once https://github.com/woocommerce/woocommerce-admin/issues/6992 has been addressed addConsoleSuppression( 'woocommerce_shared_settings', false ); @@ -40,6 +40,8 @@ async function trashExistingPosts() { // each other's side-effects. beforeAll(async () => { + const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : 3; + if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); page.setDefaultTimeout( DEFAULT_TIMEOUT_OVERRIDE ); @@ -62,6 +64,9 @@ beforeAll(async () => { width: 1280, height: 800, }); + + // Set how many times to retry failed tests. + jest.retryTimes( retryTimes ); }); // Clear browser cookies and cache using DevTools. From 3a39d7d9fcb10a386b2394b37550768436852a24 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 1 Dec 2021 15:48:31 -0500 Subject: [PATCH 27/97] Updated check for default category --- packages/js/e2e-utils/src/flows/with-rest-api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..ce15c98ce29 100644 --- a/packages/js/e2e-utils/src/flows/with-rest-api.js +++ b/packages/js/e2e-utils/src/flows/with-rest-api.js @@ -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` ); From 46d60f9b8762208458a170a7db31d5e7f6f85aed Mon Sep 17 00:00:00 2001 From: Rodel Date: Thu, 2 Dec 2021 14:06:19 +0800 Subject: [PATCH 28/97] Add api group to test, and other minor changes --- .../js/api-core-tests/tests/orders/order-complex.test.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) 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 index 3519509aae6..0ecdf0aaf63 100644 --- a/packages/js/api-core-tests/tests/orders/order-complex.test.js +++ b/packages/js/api-core-tests/tests/orders/order-complex.test.js @@ -117,7 +117,8 @@ let order; * Test for adding a complex order with different product types and tax classes. * * @group orders - * @group tax_rates + * @group api + * @group tax-rates */ describe( 'Orders API test', () => { beforeAll( async () => { @@ -143,9 +144,6 @@ describe( 'Orders API test', () => { ); simpleProduct.id = createdSimpleProduct.id; - // Link this simple product to a grouped product - groupedProduct.grouped_products = [ simpleProduct.id ]; - // Create a variable product with 1 variation const { body: createdVariableProduct, @@ -153,10 +151,11 @@ describe( 'Orders API test', () => { variableProduct.id = createdVariableProduct.id; await variationsApi.create.variation( variableProduct.id, variation ); - // Create a grouped product + // Create a grouped product using the simple product created earlier. const { body: createdGroupedProduct, } = await productsApi.create.product( groupedProduct ); + groupedProduct.grouped_products = [ simpleProduct.id ]; // Link the simple product groupedProduct.id = createdGroupedProduct.id; // Create an external product From daa43add85999acb3a68e6554b69cd769ab2f309 Mon Sep 17 00:00:00 2001 From: Rodel Date: Thu, 2 Dec 2021 21:33:52 +0800 Subject: [PATCH 29/97] Improved test readability --- packages/js/api-core-tests/data/index.js | 14 + .../js/api-core-tests/data/products-crud.js | 37 +++ .../tests/orders/order-complex.test.js | 255 ++++++++---------- 3 files changed, 168 insertions(+), 138 deletions(-) diff --git a/packages/js/api-core-tests/data/index.js b/packages/js/api-core-tests/data/index.js index a264c745f15..81d0c8e976e 100644 --- a/packages/js/api-core-tests/data/index.js +++ b/packages/js/api-core-tests/data/index.js @@ -3,6 +3,14 @@ const { coupon } = require( './coupon' ); const { refund } = require( './refund' ); const { getExampleTaxRate } = require( './tax-rate' ); const { getExampleVariation } = require( './variation' ); +const { + simpleProduct, + variableProduct, + variation, + virtualProduct, + groupedProduct, + externalProduct, +} = require( './products-crud' ); const shared = require( './shared' ); module.exports = { @@ -13,4 +21,10 @@ module.exports = { refund, getExampleTaxRate, getExampleVariation, + simpleProduct, + variableProduct, + variation, + virtualProduct, + groupedProduct, + externalProduct, }; diff --git a/packages/js/api-core-tests/data/products-crud.js b/packages/js/api-core-tests/data/products-crud.js index b42b4deb2a6..68a0fbd09ef 100644 --- a/packages/js/api-core-tests/data/products-crud.js +++ b/packages/js/api-core-tests/data/products-crud.js @@ -54,8 +54,45 @@ const variableProduct = { ], }; +/** + * Variation example + */ +const variation = { + regular_price: '1.00', + attributes: [ + { + name: 'Size', + option: 'Large', + }, + { + name: 'Colour', + option: 'Red', + }, + ], +}; + +/** + * 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, + variation, + externalProduct, + groupedProduct, }; 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 index 0ecdf0aaf63..83381d0bdd5 100644 --- a/packages/js/api-core-tests/tests/orders/order-complex.test.js +++ b/packages/js/api-core-tests/tests/orders/order-complex.test.js @@ -4,13 +4,21 @@ const { ordersApi, variationsApi, } = require( '../../endpoints' ); -const { getOrderExample, getExampleTaxRate } = require( '../../data' ); +const { + getOrderExample, + getExampleTaxRate, + simpleProduct: defaultSimpleProduct, + variableProduct: defaultVariableProduct, + variation: defaultVariation, + groupedProduct: defaultGroupedProduct, + externalProduct: defaultExternalProduct, +} = require( '../../data' ); /** * Simple product with Standard tax rate */ const simpleProduct = { - name: 'Black Compact Keyboard', + ...defaultSimpleProduct, regular_price: '10.00', tax_class: 'standard', }; @@ -19,72 +27,29 @@ const simpleProduct = { * Variable product with 1 variation with Reduced tax rate */ const variableProduct = { - name: 'Unbranded Granite Shirt', - type: 'variable', + ...defaultVariableProduct, tax_class: 'reduced-rate', - defaultAttributes: [ - { - name: 'Size', - option: 'Medium', - }, - { - name: 'Colour', - option: 'Blue', - }, - ], - attributes: [ - { - name: 'Colour', - visible: true, - variation: true, - options: [ 'Red', 'Green', 'Blue' ], - }, - { - name: 'Size', - visible: true, - variation: true, - options: [ 'Small', 'Medium', 'Large' ], - }, - { - name: 'Logo', - visible: true, - variation: true, - options: [ 'Woo', 'WordPress' ], - }, - ], }; + const variation = { + ...defaultVariation, regular_price: '20.00', tax_class: 'reduced-rate', - attributes: [ - { - name: 'Size', - option: 'Large', - }, - { - name: 'Colour', - option: 'Red', - }, - ], }; /** * External product with Zero rate tax */ const externalProduct = { - name: 'Ergonomic Steel Computer', + ...defaultExternalProduct, regular_price: '400.00', - type: 'external', tax_class: 'zero-rate', }; /** - * Grouped product with 1 linked product + * Grouped product */ -const groupedProduct = { - name: 'Full Modern Computer Set', - type: 'grouped', -}; +const groupedProduct = defaultGroupedProduct; /** * Tax rates for each tax class @@ -101,6 +66,74 @@ const zeroTaxRate = { class: 'zero-rate', }; +/** + * 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 */ @@ -110,59 +143,27 @@ const expectedSimpleProductTaxTotal = '1.00'; const expectedVariableProductTaxTotal = '0.20'; const expectedExternalProductTaxTotal = '0.00'; -let order; - /** * * Test for adding a complex order with different product types and tax classes. * - * @group orders * @group api - * @group tax-rates + * @group orders + * */ describe( 'Orders API test', () => { beforeAll( async () => { - // Create a tax rate for each tax class, and save their ID's - const { body: createdStandardRate } = await taxRatesApi.create.taxRate( - standardTaxRate - ); - standardTaxRate.id = createdStandardRate.id; + await deletePreExistingTaxRates(); + await createTaxRates(); + await createProducts(); - const { body: createdReducedRate } = await taxRatesApi.create.taxRate( - reducedTaxRate - ); - reducedTaxRate.id = createdReducedRate.id; - - const { body: createdZeroRate } = await taxRatesApi.create.taxRate( - zeroTaxRate - ); - zeroTaxRate.id = createdZeroRate.id; - - // 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. - const { - body: createdGroupedProduct, - } = await productsApi.create.product( groupedProduct ); - groupedProduct.grouped_products = [ simpleProduct.id ]; // Link the simple product - groupedProduct.id = createdGroupedProduct.id; - - // Create an external product - const { - body: createdExternalProduct, - } = await productsApi.create.product( externalProduct ); - externalProduct.id = createdExternalProduct.id; + // 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 () => { @@ -186,54 +187,32 @@ describe( 'Orders API test', () => { } ); it( 'can add complex order', async () => { - // Create an order with products having different tax classes - const createOrderPayload = { - ...getOrderExample(), - shipping_lines: [], - fee_lines: [], - coupon_lines: [], - line_items: [ - { product_id: simpleProduct.id }, - { product_id: variableProduct.id }, - { product_id: externalProduct.id }, - { product_id: groupedProduct.id }, - ], - }; - const { status, body } = await ordersApi.create.order( - createOrderPayload - ); - order = body; + // 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 totals + // Verify order and tax totals expect( body.total ).toEqual( expectedOrderTotal ); expect( body.total_tax ).toEqual( expectedTaxTotal ); - // Verify tax total of each product line item - const actualSimpleProductLineItem = body.line_items.find( - ( { product_id } ) => product_id === simpleProduct.id - ); - const actualVariableProductLineItem = body.line_items.find( - ( { product_id } ) => product_id === variableProduct.id - ); - const actualGroupedProductLineItem = body.line_items.find( - ( { product_id } ) => product_id === groupedProduct.id - ); - const actualExternalProductLineItem = body.line_items.find( - ( { product_id } ) => product_id === externalProduct.id - ); - expect( actualSimpleProductLineItem.total_tax ).toEqual( - expectedSimpleProductTaxTotal - ); - expect( actualGroupedProductLineItem.total_tax ).toEqual( - expectedSimpleProductTaxTotal - ); - expect( actualVariableProductLineItem.total_tax ).toEqual( - expectedVariableProductTaxTotal - ); - expect( actualExternalProductLineItem.total_tax ).toEqual( - expectedExternalProductTaxTotal - ); + // 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 ); + } } ); } ); From c40d12fc506269cf6c1b3ea10c629be38b8c0138 Mon Sep 17 00:00:00 2001 From: Rodel Date: Thu, 2 Dec 2021 21:52:25 +0800 Subject: [PATCH 30/97] Simplified test data setup --- packages/js/api-core-tests/data/index.js | 8 ++++---- .../js/api-core-tests/data/products-crud.js | 18 ----------------- packages/js/api-core-tests/data/tax-rate.js | 20 +++++++++++++++---- packages/js/api-core-tests/data/variation.js | 6 +++--- .../js/api-core-tests/endpoints/tax-rates.js | 8 ++++---- .../js/api-core-tests/endpoints/variations.js | 8 ++++---- .../tests/orders/order-complex.test.js | 18 ++++------------- 7 files changed, 35 insertions(+), 51 deletions(-) diff --git a/packages/js/api-core-tests/data/index.js b/packages/js/api-core-tests/data/index.js index 81d0c8e976e..26db6e362ef 100644 --- a/packages/js/api-core-tests/data/index.js +++ b/packages/js/api-core-tests/data/index.js @@ -1,8 +1,8 @@ const { order, getOrderExample } = require( './order' ); const { coupon } = require( './coupon' ); const { refund } = require( './refund' ); -const { getExampleTaxRate } = require( './tax-rate' ); -const { getExampleVariation } = require( './variation' ); +const { getTaxRateExamples } = require( './tax-rate' ); +const { getVariationExample } = require( './variation' ); const { simpleProduct, variableProduct, @@ -19,8 +19,8 @@ module.exports = { coupon, shared, refund, - getExampleTaxRate, - getExampleVariation, + getTaxRateExamples, + getVariationExample, simpleProduct, variableProduct, variation, diff --git a/packages/js/api-core-tests/data/products-crud.js b/packages/js/api-core-tests/data/products-crud.js index 68a0fbd09ef..18cb8e076cf 100644 --- a/packages/js/api-core-tests/data/products-crud.js +++ b/packages/js/api-core-tests/data/products-crud.js @@ -54,23 +54,6 @@ const variableProduct = { ], }; -/** - * Variation example - */ -const variation = { - regular_price: '1.00', - attributes: [ - { - name: 'Size', - option: 'Large', - }, - { - name: 'Colour', - option: 'Red', - }, - ], -}; - /** * External product example */ @@ -92,7 +75,6 @@ module.exports = { simpleProduct, virtualProduct, variableProduct, - variation, externalProduct, groupedProduct, }; diff --git a/packages/js/api-core-tests/data/tax-rate.js b/packages/js/api-core-tests/data/tax-rate.js index 98449e58eea..670f6ca76b4 100644 --- a/packages/js/api-core-tests/data/tax-rate.js +++ b/packages/js/api-core-tests/data/tax-rate.js @@ -6,16 +6,28 @@ * https://woocommerce.github.io/woocommerce-rest-api-docs/#tax-rate-properties * */ -const taxRate = { +const standardTaxRate = { name: 'Standard Rate', rate: '10.0000', class: 'standard', }; -const getExampleTaxRate = () => { - return taxRate; +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 = { - getExampleTaxRate, + getTaxRateExamples, }; diff --git a/packages/js/api-core-tests/data/variation.js b/packages/js/api-core-tests/data/variation.js index 46fab09a5cf..465a71248b0 100644 --- a/packages/js/api-core-tests/data/variation.js +++ b/packages/js/api-core-tests/data/variation.js @@ -7,7 +7,7 @@ * */ const variation = { - regular_price: '20.00', + regular_price: '1.00', attributes: [ { name: 'Size', @@ -20,10 +20,10 @@ const variation = { ], }; -const getExampleVariation = () => { +const getVariationExample = () => { return variation; }; module.exports = { - getExampleVariation, + getVariationExample, }; diff --git a/packages/js/api-core-tests/endpoints/tax-rates.js b/packages/js/api-core-tests/endpoints/tax-rates.js index ae2afa2a4e9..cfe86f8e7ea 100644 --- a/packages/js/api-core-tests/endpoints/tax-rates.js +++ b/packages/js/api-core-tests/endpoints/tax-rates.js @@ -7,7 +7,7 @@ const { putRequest, deleteRequest, } = require( '../utils/request' ); -const { getExampleTaxRate, shared } = require( '../data' ); +const { getTaxRateExamples, shared } = require( '../data' ); /** * WooCommerce Tax Rates endpoints. @@ -21,7 +21,7 @@ const taxRatesApi = { method: 'POST', path: 'taxes', responseCode: 201, - payload: getExampleTaxRate(), + payload: getTaxRateExamples(), taxRate: async ( taxRate ) => postRequest( 'taxes', taxRate ), }, retrieve: { @@ -44,7 +44,7 @@ const taxRatesApi = { method: 'PUT', path: 'taxes/', responseCode: 200, - payload: getExampleTaxRate(), + payload: getTaxRateExamples(), taxRate: async ( taxRateId, taxRateDetails ) => putRequest( `taxes/${ taxRateId }`, taxRateDetails ), }, @@ -64,7 +64,7 @@ const taxRatesApi = { method: 'POST', path: 'taxes/batch', responseCode: 200, - payload: shared.getBatchPayloadExample( getExampleTaxRate() ), + payload: shared.getBatchPayloadExample( getTaxRateExamples() ), taxRates: async ( batchUpdatePayload ) => postRequest( `taxes/batch`, batchUpdatePayload ), }, diff --git a/packages/js/api-core-tests/endpoints/variations.js b/packages/js/api-core-tests/endpoints/variations.js index 68584fa52fd..816910a4872 100644 --- a/packages/js/api-core-tests/endpoints/variations.js +++ b/packages/js/api-core-tests/endpoints/variations.js @@ -7,7 +7,7 @@ const { putRequest, deleteRequest, } = require( '../utils/request' ); -const { getExampleVariation, shared } = require( '../data' ); +const { getVariationExample, shared } = require( '../data' ); /** * WooCommerce Product Variation endpoints. @@ -21,7 +21,7 @@ const variationsApi = { method: 'POST', path: 'products//variations', responseCode: 201, - payload: getExampleVariation(), + payload: getVariationExample(), variation: async ( productId, variation ) => postRequest( `products/${ productId }/variations`, variation ), }, @@ -46,7 +46,7 @@ const variationsApi = { method: 'PUT', path: 'products//variations/', responseCode: 200, - payload: getExampleVariation(), + payload: getVariationExample(), variation: async ( productId, variationId, variationDetails ) => putRequest( `products/${ productId }/variations/${ variationId }`, @@ -72,7 +72,7 @@ const variationsApi = { method: 'POST', path: 'products//variations/batch', responseCode: 200, - payload: shared.getBatchPayloadExample( getExampleVariation() ), + payload: shared.getBatchPayloadExample( getVariationExample() ), variations: async ( batchUpdatePayload ) => postRequest( `products/${ productId }/variations/${ variationId }`, 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 index 83381d0bdd5..ccc6d50678b 100644 --- a/packages/js/api-core-tests/tests/orders/order-complex.test.js +++ b/packages/js/api-core-tests/tests/orders/order-complex.test.js @@ -6,10 +6,10 @@ const { } = require( '../../endpoints' ); const { getOrderExample, - getExampleTaxRate, + getTaxRateExamples, + getVariationExample, simpleProduct: defaultSimpleProduct, variableProduct: defaultVariableProduct, - variation: defaultVariation, groupedProduct: defaultGroupedProduct, externalProduct: defaultExternalProduct, } = require( '../../data' ); @@ -32,7 +32,7 @@ const variableProduct = { }; const variation = { - ...defaultVariation, + ...getVariationExample(), regular_price: '20.00', tax_class: 'reduced-rate', }; @@ -54,17 +54,7 @@ const groupedProduct = defaultGroupedProduct; /** * Tax rates for each tax class */ -const standardTaxRate = getExampleTaxRate(); -const reducedTaxRate = { - name: 'Reduced Rate', - rate: '1.0000', - class: 'reduced-rate', -}; -const zeroTaxRate = { - name: 'Zero Rate', - rate: '0.0000', - class: 'zero-rate', -}; +const { standardTaxRate, reducedTaxRate, zeroTaxRate } = getTaxRateExamples(); /** * Delete all pre-existing tax rates. From 35286bbbe6012b8c862fa04aa851dab8b003f5dd Mon Sep 17 00:00:00 2001 From: jamelreid Date: Thu, 2 Dec 2021 09:40:27 -0500 Subject: [PATCH 31/97] Added jest-object.config.js file This file is intended to be used to configure the jest object in a single place. The setupJestObject method can be imported from @woocommerce/e2e-environment for easy usage. --- packages/js/e2e-environment/config/index.js | 4 +++- .../e2e-environment/config/jest-object.config.js | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 packages/js/e2e-environment/config/jest-object.config.js diff --git a/packages/js/e2e-environment/config/index.js b/packages/js/e2e-environment/config/index.js index b53bdd83640..d7347602326 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 setupJestObject = require('./jest-object.config'); const { useE2EBabelConfig, useE2EEsLintConfig, useE2EJestConfig, - useE2EJestPuppeteerConfig + useE2EJestPuppeteerConfig, } = require( './use-config' ); module.exports = { jestConfig, + setupJestObject, 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..15e002c3019 --- /dev/null +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -0,0 +1,16 @@ +/** + * External Dependencies + */ +const { E2E_RETRY_TIMES } = process.env; + +const setupJestRetries = () => { + const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : 3; + + jest.retryTimes( retryTimes ); +}; + +const setupJestObject = () => { + setupJestRetries(); +}; + +module.exports = setupJestObject; From 0d2b20b309cace448838628684b63dc27c7a3f87 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Thu, 2 Dec 2021 09:41:04 -0500 Subject: [PATCH 32/97] Added jest object setup --- plugins/woocommerce/tests/e2e/config/jest.setup.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/plugins/woocommerce/tests/e2e/config/jest.setup.js b/plugins/woocommerce/tests/e2e/config/jest.setup.js index 003127d1d8b..05dda4bb8f3 100644 --- a/plugins/woocommerce/tests/e2e/config/jest.setup.js +++ b/plugins/woocommerce/tests/e2e/config/jest.setup.js @@ -7,8 +7,8 @@ import { const config = require( 'config' ); const { HTTPClientFactory } = require( '@woocommerce/api' ); -const { addConsoleSuppression, updateReadyPageStatus } = require( '@woocommerce/e2e-environment' ); -const { DEFAULT_TIMEOUT_OVERRIDE, E2E_RETRY_TIMES } = process.env; +const { addConsoleSuppression, updateReadyPageStatus, setupJestObject } = 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 ); @@ -40,7 +40,7 @@ async function trashExistingPosts() { // each other's side-effects. beforeAll(async () => { - const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : 3; + setupJestObject(); if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); @@ -64,9 +64,6 @@ beforeAll(async () => { width: 1280, height: 800, }); - - // Set how many times to retry failed tests. - jest.retryTimes( retryTimes ); }); // Clear browser cookies and cache using DevTools. From c03bcc59b447ec5f2cd43fe4964562040ce04271 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 2 Dec 2021 11:09:46 -0800 Subject: [PATCH 33/97] Prevent the use of npm to install packages --- packages/js/api-core-tests/package.json | 1 + packages/js/api/package.json | 1 + packages/js/e2e-core-tests/package.json | 1 + packages/js/e2e-environment/package.json | 1 + packages/js/e2e-utils/package.json | 1 + 5 files changed, 5 insertions(+) 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/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/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-environment/package.json b/packages/js/e2e-environment/package.json index 33e576f5420..7cf0a5dbcec 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -49,6 +49,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/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", From 286928bb6d2975acc34c8feba568b8052c19fc73 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 2 Dec 2021 11:12:27 -0800 Subject: [PATCH 34/97] Ignore package-lock.json --- packages/js/api-core-tests/.gitignore | 2 ++ packages/js/api/.gitignore | 2 ++ packages/js/e2e-core-tests/.gitignore | 2 ++ packages/js/e2e-environment/.gitignore | 1 + packages/js/e2e-utils/.gitignore | 1 + plugins/woocommerce/.gitignore | 2 ++ 6 files changed, 10 insertions(+) create mode 100644 packages/js/e2e-environment/.gitignore create mode 100644 packages/js/e2e-utils/.gitignore diff --git a/packages/js/api-core-tests/.gitignore b/packages/js/api-core-tests/.gitignore index 5a5072cb91d..d0961824d84 100644 --- a/packages/js/api-core-tests/.gitignore +++ b/packages/js/api-core-tests/.gitignore @@ -1,2 +1,4 @@ # Collection output collection.json + +package-lock.json diff --git a/packages/js/api/.gitignore b/packages/js/api/.gitignore index e22a3150198..9d5ef1986ac 100644 --- a/packages/js/api/.gitignore +++ b/packages/js/api/.gitignore @@ -1,2 +1,4 @@ # Editors /nbproject/private/ + +package-lock.json diff --git a/packages/js/e2e-core-tests/.gitignore b/packages/js/e2e-core-tests/.gitignore index 5585f5a8863..b698ab70fe7 100644 --- a/packages/js/e2e-core-tests/.gitignore +++ b/packages/js/e2e-core-tests/.gitignore @@ -1 +1,3 @@ /test-data/sample_products.csv + +package-lock.json diff --git a/packages/js/e2e-environment/.gitignore b/packages/js/e2e-environment/.gitignore new file mode 100644 index 00000000000..d8b83df9cdb --- /dev/null +++ b/packages/js/e2e-environment/.gitignore @@ -0,0 +1 @@ +package-lock.json diff --git a/packages/js/e2e-utils/.gitignore b/packages/js/e2e-utils/.gitignore new file mode 100644 index 00000000000..d8b83df9cdb --- /dev/null +++ b/packages/js/e2e-utils/.gitignore @@ -0,0 +1 @@ +package-lock.json diff --git a/plugins/woocommerce/.gitignore b/plugins/woocommerce/.gitignore index 65ccaf64123..b4bcbc85e23 100644 --- a/plugins/woocommerce/.gitignore +++ b/plugins/woocommerce/.gitignore @@ -54,3 +54,5 @@ yarn.lock # Language files i18n/languages/woocommerce.pot + +package-lock.json From feaf225526b4f646a171ce4e0470c76a817aa9c6 Mon Sep 17 00:00:00 2001 From: Peter Fabian Date: Mon, 6 Dec 2021 14:50:25 +0100 Subject: [PATCH 35/97] Update db version to match the WC version after running update callbacks. This is the behaviour that normally happens when a user updates version by version, but if the user skips several versions, db version and WC version could diverge. --- plugins/woocommerce/includes/class-wc-install.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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' + ); + } } /** From ba1b98cba84aa54393a09aa5cafa08f20b74b5d8 Mon Sep 17 00:00:00 2001 From: Peter Fabian Date: Mon, 6 Dec 2021 14:52:08 +0100 Subject: [PATCH 36/97] Update the tooltip to reflect the db update policy. --- .../includes/admin/views/html-admin-page-status-report.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 : - + From f845063422d8a3f46774883c90d811ee5106ce64 Mon Sep 17 00:00:00 2001 From: LuigiPulcini Date: Tue, 7 Dec 2021 10:03:02 +0100 Subject: [PATCH 37/97] Requested change on data check --- .../woocommerce/assets/js/admin/meta-boxes-product-variation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js b/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js index e5a8b292f71..f21f41a3066 100644 --- a/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js +++ b/plugins/woocommerce/assets/js/admin/meta-boxes-product-variation.js @@ -808,7 +808,7 @@ jQuery( function( $ ) { $( 'select.variation_actions' ).trigger( do_variation_action ); data = $( 'select.variation_actions' ).triggerHandler( do_variation_action + '_ajax_data', data ); - if ( true === data.cancel ) { + if ( null === data ) { return; } break; From 23fe784e5a132c3e8b351730b377df7d785bd6a9 Mon Sep 17 00:00:00 2001 From: Tom Castle Date: Wed, 8 Dec 2021 12:53:20 +0000 Subject: [PATCH 38/97] Fix #31393 to use country from headers only if geolocating current user --- plugins/woocommerce/includes/class-wc-geolocation.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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. * From 2ec68e0e69cea56669a4216e505ff4f52849331a Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 26 Nov 2021 17:08:27 -0400 Subject: [PATCH 39/97] code cleanup --- packages/js/e2e-environment/package.json | 4 ++-- packages/js/e2e-environment/utils/test-config.js | 8 ++++---- packages/js/e2e-utils/src/flows/with-rest-api.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 47b12b89ba5..adc4f680866 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -32,9 +32,9 @@ "jest": "^25.1.0", "jest-each": "25.5.0", "jest-puppeteer": "^4.4.0", - "node-stream-zip": "^1.13.6", + "node-stream-zip": "^1.13.6", "request": "^2.88.2", - "sprintf-js": "^1.1.2" + "sprintf-js": "^1.1.2" }, "devDependencies": { "@babel/cli": "7.12.8", diff --git a/packages/js/e2e-environment/utils/test-config.js b/packages/js/e2e-environment/utils/test-config.js index 29f426c835f..430bbc6da59 100644 --- a/packages/js/e2e-environment/utils/test-config.js +++ b/packages/js/e2e-environment/utils/test-config.js @@ -44,9 +44,9 @@ const resolvePackage = ( packageName, allowRecurse = true ) => { if ( ! resolvedPackage.path.length && allowRecurse ) { const packageLockPath = path.resolve( appPath, 'package-lock.json' ); const packageLockContent = fs.readFileSync( packageLockPath ); - const packageLockData = JSON.parse( packageLockContent ); + const { dependencies } = JSON.parse( packageLockContent ); - for ( const [ key, value ] of Object.entries( packageLockData.dependencies ) ) { + for ( const [ key, value ] of Object.entries( dependencies ) ) { if ( value.version.indexOf( packageName ) == 0 ) { resolvedPackage = resolvePackage( key, false ); break; @@ -69,8 +69,8 @@ const resolvePackagePath = ( filename, packageName = '' ) => { if ( ! packageName.length ) { packagePath = path.resolve( __dirname, '../' ); } else { - const package = resolvePackage( packageName ); - packagePath = package.path; + const pkg = resolvePackage( packageName ); + packagePath = pkg.path; } const resolvedPath = path.resolve( 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..6e6683b7e89 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. From be19efe729644ecc24d5a2851bad2968aae20ca4 Mon Sep 17 00:00:00 2001 From: Cullen Whitmore Date: Wed, 8 Dec 2021 10:13:11 -0600 Subject: [PATCH 40/97] Bump the version string in the template header to 6.1.0 --- .../templates/single-product/add-to-cart/variable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 93dc7302c1e..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; From 59f1f3a6b518ece5a3babc97c0b25d7e918d4833 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 8 Dec 2021 13:47:30 -0400 Subject: [PATCH 41/97] Give installFiles its own index --- packages/js/e2e-core-tests/index.js | 14 +----- .../js/e2e-core-tests/installFiles/index.js | 5 ++ packages/js/e2e-environment/bin/scaffold.js | 46 +++++++++++-------- .../js/e2e-environment/utils/test-config.js | 14 +++++- 4 files changed, 46 insertions(+), 33 deletions(-) create mode 100644 packages/js/e2e-core-tests/installFiles/index.js diff --git a/packages/js/e2e-core-tests/index.js b/packages/js/e2e-core-tests/index.js index 265ecaf6522..e30dc29012b 100644 --- a/packages/js/e2e-core-tests/index.js +++ b/packages/js/e2e-core-tests/index.js @@ -4,16 +4,4 @@ const allSpecs = require( './specs' ); const fs = require( 'fs' ); -/** - * Test set up configuration for the test scaffolding tool. - */ -const packageInstallFiles = { - testSpecs: 'data/install-specs.json', - defaultJson: 'data/default-test-config.json', - initializeSh: 'data/initialize.sh.default', -}; - -module.exports = { - allSpecs, - packageInstallFiles, -}; +module.exports = allSpecs; 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..202b83fcfda --- /dev/null +++ b/packages/js/e2e-core-tests/installFiles/index.js @@ -0,0 +1,5 @@ +module.exports = { + testSpecs: 'data/scaffold-tests.json', + defaultJson: 'data/default-test-config.json', + initializeSh: 'data/initialize.sh.default', +}; diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index d20187693f0..ac74a756206 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -22,32 +22,31 @@ const [ command, packageName ] = args; * Install the test scripts and sample default.json configuration */ if ( command == 'install' ) { - //** - const package = resolvePackage( packageName ).name; - if ( ! package.length ) { + // `package` is a reserved word + const pkg = resolvePackage( packageName ).name; + if ( ! pkg.length ) { //@todo add error message return; } - const packageSlug = package.replace( '@', '' ).replace( /\//g, '.' ); - const { packageInstallFiles } = require( package ); - const { testSpecs, defaultJson, initializeSh } = packageInstallFiles; + const packageSlug = pkg.replace( '@', '' ).replace( /\//g, '.' ); + const { testSpecs, defaultJson, initializeSh } = require( `${pkg}/installFiles` ); // Write sample default.json if ( defaultJson ) { const defaultJsonName = `config/default-${packageSlug}.json`; const defaultJsonSample = resolveLocalE2ePath( defaultJsonName ); - const packageJsonSample = resolvePackagePath( defaultJson, package ); + const packageJsonSample = resolvePackagePath( defaultJson, pkg ); fs.copyFileSync( packageJsonSample, defaultJsonSample ); - console.log( `\nCreated sample test configuration to 'tests/e2e/${defaultJsonName}'.\n` ); + console.log( `Created sample test configuration to 'tests/e2e/${defaultJsonName}'.` ); } // Write sample initialize.sh if ( initializeSh ) { const defaultInitName = `docker/${packageSlug}.sh`; const defaultInitPath = resolveLocalE2ePath( defaultInitName ); - const packageInitPath = resolvePackagePath( initializeSh, package ); + const packageInitPath = resolvePackagePath( initializeSh, pkg ); fs.copyFileSync( packageInitPath, defaultInitPath ); - console.log( `\nCreated sample test container initialization script to 'tests/e2e/${defaultInitName}'.\n` ); + console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); } // Write test files @@ -55,7 +54,7 @@ if ( command == 'install' ) { return; } - const testsSpecFile = resolvePackagePath( testSpecs, package ); + const testsSpecFile = resolvePackagePath( testSpecs, pkg ); const specs = fs.readFileSync( testsSpecFile ); const tests = JSON.parse( specs ); const { active, deprecated } = tests; @@ -79,15 +78,26 @@ if ( command == 'install' ) { } 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; if ( testFormat.toLowerCase() == 'cjs' ) { - importLineFormat = sprintf( "const {%%s} = require( '%s' );", package ); + importLineFormat = sprintf( "const {%%s} = require( '%s' );", pkg ); } else { - importLineFormat = sprintf( "import {%%s} from '%s';", package ); + importLineFormat = sprintf( "import {%%s} from '%s';", pkg ); } + // Create the entire folder structure if not present + let specFolderPath; + const rootFolders = [ '../../tests', '../e2e', 'specs' ]; + rootFolders.forEach( ( folder ) => { + specFolderPath = resolveLocalE2ePath( folder ); + if ( ! fs.existsSync( specFolderPath ) ) { + fs.mkdirSync( specFolderPath ); + } + } ); + // Loop through folders and files to write test scripts. for ( let f = 0; f < active.length; f++ ) { const testFolder = active[ f ]; @@ -98,7 +108,7 @@ if ( command == 'install' ) { } const specFolder = testFolder.name.length ? `specs/${testFolder.name}` : 'specs'; - const specFolderPath = resolveLocalE2ePath( specFolder ); + specFolderPath = resolveLocalE2ePath( specFolder ); // Create the test folder if it doesn't exist. if ( ! fs.existsSync( specFolderPath ) ) { @@ -131,19 +141,17 @@ if ( command == 'install' ) { importPrefix = eol; } else { testSeparator = ', '; - testTerminator = ''; + testTerminator = ' '; importPrefix = ' '; } const testImport = testFile.functions.join( testSeparator ) + testTerminator; - // '' adds a blank line - buffer.push( sprintf( importLineFormat, importPrefix + testImport ), '' ); + 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 ); + buffer.push( ...functionCalls, blankLine ); fs.writeFileSync( testFilePath, buffer.join( eol ) ); } - console.log( eol ); } } diff --git a/packages/js/e2e-environment/utils/test-config.js b/packages/js/e2e-environment/utils/test-config.js index 430bbc6da59..35d369cf182 100644 --- a/packages/js/e2e-environment/utils/test-config.js +++ b/packages/js/e2e-environment/utils/test-config.js @@ -32,7 +32,19 @@ const resolvePackage = ( packageName, allowRecurse = true ) => { const resolvedPackage = {}; try { - resolvedPackage.path = require.resolve( packageName ); + 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. From fecbeac4add7a151ebaa792fc025bed1cd5c2c1a Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 13:44:58 -0500 Subject: [PATCH 42/97] Updated CHANGELOG.md --- packages/js/e2e-utils/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) 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()` From 1f14d557dd79d0fb4857cb54bcaa5c6dcc50f914 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 13:59:10 -0500 Subject: [PATCH 43/97] Updated README.md with jest retry documentation --- packages/js/e2e-environment/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index 26752959fba..85a2e0a76a9 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -71,6 +71,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 From a6f51a9a3925ea6c6b810984b71500ea33828a20 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 14:00:02 -0500 Subject: [PATCH 44/97] Added default param and exported all methods --- .../js/e2e-environment/config/jest-object.config.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/js/e2e-environment/config/jest-object.config.js b/packages/js/e2e-environment/config/jest-object.config.js index 15e002c3019..bcad1205b17 100644 --- a/packages/js/e2e-environment/config/jest-object.config.js +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -3,8 +3,8 @@ */ const { E2E_RETRY_TIMES } = process.env; -const setupJestRetries = () => { - const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : 3; +const setupJestRetries = ( retries = 2 ) => { + const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : retries; jest.retryTimes( retryTimes ); }; @@ -13,4 +13,8 @@ const setupJestObject = () => { setupJestRetries(); }; -module.exports = setupJestObject; +module.exports = { + setupJestObject, + setupJestRetries, +}; + From 6086223708f98ddf1c61ba81a57ace0a2b03b865 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 14:00:31 -0500 Subject: [PATCH 45/97] Added setupJestRetries to beforeAll block --- packages/js/e2e-environment/src/setup/jest.setup.js | 2 ++ plugins/woocommerce/tests/e2e/config/jest.setup.js | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/js/e2e-environment/src/setup/jest.setup.js b/packages/js/e2e-environment/src/setup/jest.setup.js index 2481a9b5771..ffaa81910da 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( 2 ); } ); afterEach( async () => { diff --git a/plugins/woocommerce/tests/e2e/config/jest.setup.js b/plugins/woocommerce/tests/e2e/config/jest.setup.js index 05dda4bb8f3..4a4feee45f2 100644 --- a/plugins/woocommerce/tests/e2e/config/jest.setup.js +++ b/plugins/woocommerce/tests/e2e/config/jest.setup.js @@ -7,7 +7,7 @@ import { const config = require( 'config' ); const { HTTPClientFactory } = require( '@woocommerce/api' ); -const { addConsoleSuppression, updateReadyPageStatus, setupJestObject } = require( '@woocommerce/e2e-environment' ); +const { addConsoleSuppression, updateReadyPageStatus, setupJestRetries } = 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 @@ -40,7 +40,7 @@ async function trashExistingPosts() { // each other's side-effects. beforeAll(async () => { - setupJestObject(); + setupJestRetries( 2 ); if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); From 1a5c44c4725201cf75a6db8260aed85b0079b829 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 14:01:00 -0500 Subject: [PATCH 46/97] Exported all methods from jest-object.config --- packages/js/e2e-environment/config/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/e2e-environment/config/index.js b/packages/js/e2e-environment/config/index.js index d7347602326..ba96035504a 100644 --- a/packages/js/e2e-environment/config/index.js +++ b/packages/js/e2e-environment/config/index.js @@ -3,7 +3,7 @@ */ const jestConfig = require( './jest.config' ); const jestPuppeteerConfig = require( './jest-puppeteer.config' ); -const setupJestObject = require('./jest-object.config'); +const jestobjectConfig = require('./jest-object.config'); const { useE2EBabelConfig, useE2EEsLintConfig, @@ -13,7 +13,7 @@ const { module.exports = { jestConfig, - setupJestObject, + ...jestobjectConfig, jestPuppeteerConfig, useE2EBabelConfig, useE2EEsLintConfig, From 17d2c25ae57d85d8f471e52652729453fc43b2b7 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Wed, 8 Dec 2021 14:03:08 -0500 Subject: [PATCH 47/97] Added comment --- packages/js/e2e-environment/config/jest-object.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/e2e-environment/config/jest-object.config.js b/packages/js/e2e-environment/config/jest-object.config.js index bcad1205b17..e165e42edeb 100644 --- a/packages/js/e2e-environment/config/jest-object.config.js +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -9,6 +9,7 @@ const setupJestRetries = ( retries = 2 ) => { jest.retryTimes( retryTimes ); }; +// If more methods are added to setupJestObject, it should be include in the readme const setupJestObject = () => { setupJestRetries(); }; @@ -17,4 +18,3 @@ module.exports = { setupJestObject, setupJestRetries, }; - From 2698cb36fffd3e7f248a95ab64a63d587dc99e05 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 8 Dec 2021 15:12:27 -0400 Subject: [PATCH 48/97] add overwrite confirmation --- packages/js/e2e-core-tests/index.js | 1 - packages/js/e2e-environment/bin/scaffold.js | 41 ++++++++++++++++++--- packages/js/e2e-environment/package.json | 1 + pnpm-lock.yaml | 7 ++++ 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/packages/js/e2e-core-tests/index.js b/packages/js/e2e-core-tests/index.js index e30dc29012b..9fd036edd21 100644 --- a/packages/js/e2e-core-tests/index.js +++ b/packages/js/e2e-core-tests/index.js @@ -2,6 +2,5 @@ * Internal dependencies */ const allSpecs = require( './specs' ); -const fs = require( 'fs' ); module.exports = allSpecs; diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index ac74a756206..49d252f425e 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -5,6 +5,7 @@ */ const fs = require( 'fs' ); const sprintf = require( 'sprintf-js' ).sprintf; +const readlineSync = require( 'readline-sync' ); /** * Internal dependencies. @@ -18,6 +19,18 @@ const { const args = process.argv.slice( 2 ); const [ command, packageName ] = args; +/** + * 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; +}; + /** * Install the test scripts and sample default.json configuration */ @@ -49,11 +62,11 @@ if ( command == 'install' ) { console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); } - // Write test files if ( ! testSpecs ) { return; } + // Write test files const testsSpecFile = resolvePackagePath( testSpecs, pkg ); const specs = fs.readFileSync( testsSpecFile ); const tests = JSON.parse( specs ); @@ -82,6 +95,8 @@ if ( command == 'install' ) { 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 { @@ -100,6 +115,11 @@ if ( command == 'install' ) { // 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; @@ -125,10 +145,21 @@ if ( command == 'install' ) { const testFileName = `${specFolder}/${testFile.name}.${testExtension}`; const testFilePath = resolveLocalE2ePath( testFileName ); - // @todo Add check to see if file exists - // fs.existsSync - // @todo Confirm overwrite - // readline + // 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/' + testFileName ); let buffer = [ autoGenerate ]; diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index adc4f680866..c7005cb16c6 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -33,6 +33,7 @@ "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", "sprintf-js": "^1.1.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d9a5c0fb9b..9a39c20dbf2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,6 +129,7 @@ importers: 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 @@ -145,6 +146,7 @@ importers: 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: @@ -18063,6 +18065,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'} From 036ab6a464b4b3f3a61d3a4c3e13f7c23355db80 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 8 Dec 2021 16:56:53 -0400 Subject: [PATCH 49/97] simplify core test scaffold, add default setup --- .../default-test-config.json | 0 .../js/e2e-core-tests/installFiles/index.js | 6 +- .../initialize.sh.default | 0 .../scaffold-tests.json | 0 packages/js/e2e-environment/bin/scaffold.js | 68 ++++----- .../js/e2e-environment/config/default.json | 135 +----------------- 6 files changed, 33 insertions(+), 176 deletions(-) rename packages/js/e2e-core-tests/{data => installFiles}/default-test-config.json (100%) rename packages/js/e2e-core-tests/{data => installFiles}/initialize.sh.default (100%) rename packages/js/e2e-core-tests/{data => installFiles}/scaffold-tests.json (100%) diff --git a/packages/js/e2e-core-tests/data/default-test-config.json b/packages/js/e2e-core-tests/installFiles/default-test-config.json similarity index 100% rename from packages/js/e2e-core-tests/data/default-test-config.json rename to packages/js/e2e-core-tests/installFiles/default-test-config.json diff --git a/packages/js/e2e-core-tests/installFiles/index.js b/packages/js/e2e-core-tests/installFiles/index.js index 202b83fcfda..6601661582c 100644 --- a/packages/js/e2e-core-tests/installFiles/index.js +++ b/packages/js/e2e-core-tests/installFiles/index.js @@ -1,5 +1,5 @@ module.exports = { - testSpecs: 'data/scaffold-tests.json', - defaultJson: 'data/default-test-config.json', - initializeSh: 'data/initialize.sh.default', + testSpecs: 'installFiles/scaffold-tests.json', + defaultJson: 'installFiles/default-test-config.json', + initializeSh: 'installFiles/initialize.sh.default', }; diff --git a/packages/js/e2e-core-tests/data/initialize.sh.default b/packages/js/e2e-core-tests/installFiles/initialize.sh.default similarity index 100% rename from packages/js/e2e-core-tests/data/initialize.sh.default rename to packages/js/e2e-core-tests/installFiles/initialize.sh.default diff --git a/packages/js/e2e-core-tests/data/scaffold-tests.json b/packages/js/e2e-core-tests/installFiles/scaffold-tests.json similarity index 100% rename from packages/js/e2e-core-tests/data/scaffold-tests.json rename to packages/js/e2e-core-tests/installFiles/scaffold-tests.json diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index 49d252f425e..fa37df08767 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -5,7 +5,6 @@ */ const fs = require( 'fs' ); const sprintf = require( 'sprintf-js' ).sprintf; -const readlineSync = require( 'readline-sync' ); /** * Internal dependencies. @@ -15,26 +14,26 @@ const { resolvePackage, resolvePackagePath, } = require( '../utils' ); +const { + createLocalE2ePath, + confirm, + confirmLocalCopy, + installDefaults +} = require( '../utils/scaffold' ); const args = process.argv.slice( 2 ); const [ command, packageName ] = args; -/** - * 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; -}; - /** * 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 ) { @@ -47,19 +46,17 @@ if ( command == 'install' ) { // Write sample default.json if ( defaultJson ) { const defaultJsonName = `config/default-${packageSlug}.json`; - const defaultJsonSample = resolveLocalE2ePath( defaultJsonName ); - const packageJsonSample = resolvePackagePath( defaultJson, pkg ); - fs.copyFileSync( packageJsonSample, defaultJsonSample ); - console.log( `Created sample test configuration to 'tests/e2e/${defaultJsonName}'.` ); + if ( confirmLocalCopy( defaultJsonName, defaultJson, pkg ) ) { + console.log( `Created sample test configuration to 'tests/e2e/${defaultJsonName}'.` ); + } } // Write sample initialize.sh if ( initializeSh ) { const defaultInitName = `docker/${packageSlug}.sh`; - const defaultInitPath = resolveLocalE2ePath( defaultInitName ); - const packageInitPath = resolvePackagePath( initializeSh, pkg ); - fs.copyFileSync( packageInitPath, defaultInitPath ); - console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); + if ( confirmLocalCopy( defaultInitName, initializeSh, pkg ) ) { + console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); + } } if ( ! testSpecs ) { @@ -103,15 +100,8 @@ if ( command == 'install' ) { importLineFormat = sprintf( "import {%%s} from '%s';", pkg ); } - // Create the entire folder structure if not present - let specFolderPath; - const rootFolders = [ '../../tests', '../e2e', 'specs' ]; - rootFolders.forEach( ( folder ) => { - specFolderPath = resolveLocalE2ePath( folder ); - if ( ! fs.existsSync( specFolderPath ) ) { - fs.mkdirSync( specFolderPath ); - } - } ); + // 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++ ) { @@ -127,12 +117,11 @@ if ( command == 'install' ) { continue; } - const specFolder = testFolder.name.length ? `specs/${testFolder.name}` : 'specs'; - specFolderPath = resolveLocalE2ePath( specFolder ); - - // Create the test folder if it doesn't exist. - if ( ! fs.existsSync( specFolderPath ) ) { - fs.mkdirSync( specFolderPath ); + let specFolder; + if ( testFolder.name.length ) { + specFolder = createLocalE2ePath( testFolder.name ); + } else { + specFolder = specFolderPath; } // Create the test files. @@ -142,8 +131,8 @@ if ( command == 'install' ) { continue; } - const testFileName = `${specFolder}/${testFile.name}.${testExtension}`; - const testFilePath = resolveLocalE2ePath( testFileName ); + const testFileName = `${testFolder.name}/${testFile.name}.${testExtension}`; + const testFilePath = `${specFolder}/${testFile.name}.${testExtension}`; // Check to see if file exists. if ( fs.existsSync( testFilePath ) ) { @@ -161,7 +150,7 @@ if ( command == 'install' ) { } } - console.log( 'Writing tests/e2e/' + testFileName ); + console.log( 'Writing tests/e2e/specs/' + testFileName ); let buffer = [ autoGenerate ]; let testSeparator, testTerminator, importPrefix; @@ -185,6 +174,5 @@ if ( command == 'install' ) { } } } - // @todo: deprecated files. } diff --git a/packages/js/e2e-environment/config/default.json b/packages/js/e2e-environment/config/default.json index e70b3c6c5d8..e01ee4e9a27 100644 --- a/packages/js/e2e-environment/config/default.json +++ b/packages/js/e2e-environment/config/default.json @@ -1,5 +1,6 @@ { "url": "http://localhost:8084/", + "appName": "woocommerce_e2e", "users": { "admin": { "username": "admin", @@ -15,133 +16,12 @@ "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" + "name": "Variable Product with Three Variations" } }, "addresses": { "admin": { "store": { - "email": "admin@woocommercecoree2etestsuite.com", "firstname": "John", "lastname": "Doe", "company": "Automattic", @@ -181,17 +61,6 @@ } } }, - "orders": { - "basicPaidOrder": { - "paymentMethod": "cod", - "status": "processing", - "billing": { - "firstName": "John", - "lastName": "Doe", - "email": "john.doe@example.com" - } - } - }, "onboardingwizard": { "industry": "Test industry", "numberofproducts": "1 - 10", From 473c4e527902ba9c4a0e09b5ebd309c43da81553 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 8 Dec 2021 15:56:42 -0700 Subject: [PATCH 50/97] Added upload and test functionality --- .github/workflows/test-plugins.yml | 62 +++++++++++++++++++ packages/js/e2e-environment/CHANGELOG.md | 2 + packages/js/e2e-environment/README.md | 4 +- .../js/e2e-environment/docker-compose.yaml | 1 + packages/js/e2e-environment/upload.ini | 5 ++ .../e2e-environment/utils/get-plugin-zip.js | 60 ++++++++++++++---- packages/js/e2e-environment/utils/index.js | 3 +- .../specs/smoke-tests/update-woocommerce.js | 9 ++- .../e2e/specs/smoke-tests/upload-plugin.js | 43 +++++++++++++ 9 files changed, 172 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/test-plugins.yml create mode 100644 packages/js/e2e-environment/upload.ini create mode 100644 plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml new file mode 100644 index 00000000000..7e1c4c0b8ac --- /dev/null +++ b/.github/workflows/test-plugins.yml @@ -0,0 +1,62 @@ +name: Build zip for PR +on: pull_request +# on: +# release: +# types: [published] +jobs: + test-plugins: + name: Smoke tests with ${{ matrix.plugins }} plugin installed + runs-on: ubuntu-18.04 + strategy: + matrix: + plugins: [ 'automattic/woocommerce-payments', 'woocommerce/facebook-for-woocommerce', 'automattic/woocommerce-services', ${{ secrets.WC_SUBSCRIPTIONS_REPO }}] + pluginNames: [ 'WooCommerce Payments', 'Facebook for WooCommerce', 'WooCommerce Shipping & Tax', 'WooCommerce Subscriptions' ] + 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: 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 }} + PLUGIN_REPOSITORY: ${{ matrix.plugins }} + PLUGIN_NAME: ${{ matrix.pluginNames }} + 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/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 781c66330cb..b75dad74503 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -3,6 +3,8 @@ ## 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 ## Fixed diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index 26752959fba..2e83b1cc70d 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -227,9 +227,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/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/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..14d2c3245e7 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -9,9 +9,10 @@ const StreamZip = require( 'node-stream-zip' ); * 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 getRemotePluginZip = async ( fileUrl, authorizationToken = '' ) => { const appPath = getAppRoot(); const savePath = path.resolve( appPath, @@ -19,12 +20,12 @@ const getRemotePluginZip = async ( fileUrl ) => { ); mkdirp.sync( savePath ); - // Pull the filename from the end of the URL - const fileName = fileUrl.split( '/' ).pop(); + // Pull the version from the end of the URL and add .zip + const fileName = fileUrl.split( '/' ).pop() + '.zip'; 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 +36,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 +63,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 ) { @@ -71,11 +77,11 @@ const getLatestReleaseZipUrl = async ( // Loop until we find the first pre-release, then return it. body.forEach( ( release ) => { if ( release.prerelease ) { - resolve( release.assets[ 0 ].browser_download_url ); + resolve( release.zipball_url ); } } ); } else { - resolve( body.assets[ 0 ].browser_download_url ); + resolve( body.zipball_url ); } } ); } ); @@ -110,17 +116,24 @@ const checkNestedZip = async ( zipFilePath, savePath ) => { * @param {string} downloadPath The location where to download the zip to. * @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 .get( options, function ( err, resp, body ) { + console.log(resp.statusCode) if ( err ) { reject( err ); } else { @@ -131,9 +144,32 @@ const downloadZip = async ( fileUrl, downloadPath ) => { } ); }; +/** + * Delete the downloaded plugin files. + */ +const deleteDownloadedPluginFiles = async () => { + const appPath = getAppRoot(); + const pluginSavePath = path.resolve( + appPath, + 'plugins/woocommerce/tests/e2e/plugins' + ); + + fs.readdir( pluginSavePath, ( err, files ) => { + if ( err ) throw err; + + for ( const file of files ) { + fs.unlink(path.join( pluginSavePath, file ), err => { + if ( err ) throw err; + } ); + } + } ); + +} + 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..45b916a1539 100644 --- a/packages/js/e2e-environment/utils/index.js +++ b/packages/js/e2e-environment/utils/index.js @@ -1,7 +1,7 @@ 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 { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require('./get-plugin-zip'); const takeScreenshotFor = require( './take-screenshot' ); const updateReadyPageStatus = require('./update-ready-page'); const consoleUtils = require( './filter-console' ); @@ -15,6 +15,7 @@ module.exports = { resolveLocalE2ePath, getRemotePluginZip, getLatestReleaseZipUrl, + deleteDownloadedPluginFiles, takeScreenshotFor, updateReadyPageStatus, ...consoleUtils, 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..aeab4072747 --- /dev/null +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js @@ -0,0 +1,43 @@ +/** + * Internal dependencies + */ +const { merchant } = require( '@woocommerce/e2e-utils' ); + +const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' ); + +/** + * External dependencies + */ +const { + it, + beforeAll, +} = require( '@jest/globals' ); + +const { PLUGIN_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN } = process.env; + +let zipUrl; +let pluginPath; + +describe( 'Upload and activate plugin', () => { + beforeAll( async () => { + zipUrl = await getLatestReleaseZipUrl( PLUGIN_REPOSITORY, GITHUB_TOKEN ); + + pluginPath = await getRemotePluginZip( zipUrl, GITHUB_TOKEN ); + + await merchant.login(); + }); + + afterAll( async () => { + await merchant.logout(); + await deleteDownloadedPluginFiles(); + }); + + it( 'can upload and activate the provided plugin', async () => { + await merchant.uploadAndActivatePlugin( pluginPath, PLUGIN_NAME ); + }); + + it( 'can remove downloaded plugin zip', async () => { + await deleteDownloadedPluginFiles(); + } ); + +}); From 287df6e10b87f0b90a8de737f30f7f45bfe8bf3c Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 8 Dec 2021 15:58:58 -0700 Subject: [PATCH 51/97] Update workflow name --- .github/workflows/test-plugins.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml index 7e1c4c0b8ac..7af01529d1b 100644 --- a/.github/workflows/test-plugins.yml +++ b/.github/workflows/test-plugins.yml @@ -1,4 +1,4 @@ -name: Build zip for PR +name: Run smoke tests against plugins on: pull_request # on: # release: From 3041bb25faaf79248f740a5fa38975df2af1a102 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 8 Dec 2021 19:08:29 -0400 Subject: [PATCH 52/97] add uninstall feature --- packages/js/e2e-environment/bin/scaffold.js | 99 +++++++++++---- packages/js/e2e-environment/bin/wc-e2e.sh | 3 +- .../installFiles/initialize.sh | 25 ++++ .../installFiles/jest.config.js | 8 ++ .../installFiles/jest.setup.js | 80 ++++++++++++ packages/js/e2e-environment/utils/scaffold.js | 119 ++++++++++++++++++ 6 files changed, 311 insertions(+), 23 deletions(-) create mode 100755 packages/js/e2e-environment/installFiles/initialize.sh create mode 100644 packages/js/e2e-environment/installFiles/jest.config.js create mode 100644 packages/js/e2e-environment/installFiles/jest.setup.js create mode 100644 packages/js/e2e-environment/utils/scaffold.js diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index fa37df08767..83f7c6ecabc 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -18,12 +18,32 @@ 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 */ @@ -40,12 +60,12 @@ if ( command == 'install' ) { //@todo add error message return; } - const packageSlug = pkg.replace( '@', '' ).replace( /\//g, '.' ); - const { testSpecs, defaultJson, initializeSh } = require( `${pkg}/installFiles` ); + const { packageSlug, testSpecs, defaultJson, initializeSh } = getPackageData( pkg ); // Write sample default.json if ( defaultJson ) { const defaultJsonName = `config/default-${packageSlug}.json`; + createLocalE2ePath( 'config' ); if ( confirmLocalCopy( defaultJsonName, defaultJson, pkg ) ) { console.log( `Created sample test configuration to 'tests/e2e/${defaultJsonName}'.` ); } @@ -54,6 +74,7 @@ if ( command == 'install' ) { // Write sample initialize.sh if ( initializeSh ) { const defaultInitName = `docker/${packageSlug}.sh`; + createLocalE2ePath( 'docker' ); if ( confirmLocalCopy( defaultInitName, initializeSh, pkg ) ) { console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` ); } @@ -69,24 +90,6 @@ if ( command == 'install' ) { const tests = JSON.parse( specs ); const { active, deprecated } = tests; - // 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; - } - } - if ( active && active.length ) { const blankLine = ''; const eol = "\n"; @@ -119,7 +122,7 @@ if ( command == 'install' ) { let specFolder; if ( testFolder.name.length ) { - specFolder = createLocalE2ePath( testFolder.name ); + specFolder = createLocalE2ePath( `specs/${testFolder.name}` ); } else { specFolder = specFolderPath; } @@ -137,7 +140,7 @@ if ( command == 'install' ) { // 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: `; + confirmPrompt = `${testFileName} already exists. Overwrite? [y]es/[n]o/[a]ll/[q]uit: `; overwriteFiles = confirm( confirmPrompt, 'anqy' ); overwriteFiles = overwriteFiles.toLowerCase(); } @@ -175,4 +178,56 @@ if ( command == 'install' ) { } } // @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/default-${packageSlug}.json`; + confirmLocalDelete( defaultJsonName ); + } + + // Delete sample initialize.sh + if ( initializeSh ) { + const defaultInitName = `docker/${packageSlug}.sh`; + confirmLocalDelete( defaultInitName ); + } + + if ( ! testSpecs ) { + return; + } + + const testsSpecFile = resolvePackagePath( testSpecs, pkg ); + const specs = fs.readFileSync( testsSpecFile ); + const tests = JSON.parse( specs ); + const { active, deprecated } = 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/${testFolder.name}` : 'specs'; + for ( let t = 0; t < testFiles.length; t++ ) { + const testFile = testFiles[ t ]; + const testFilePath = `${specFolder}/${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 bbba17c2802..9f7fa6d72d1 100755 --- a/packages/js/e2e-environment/bin/wc-e2e.sh +++ b/packages/js/e2e-environment/bin/wc-e2e.sh @@ -71,7 +71,8 @@ case $1 in ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug $2 TESTRESULT=$? ;; - 'install') + 'install' | \ + 'uninstall') ./bin/scaffold.js $@ ;; *) 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/utils/scaffold.js b/packages/js/e2e-environment/utils/scaffold.js new file mode 100644 index 00000000000..c8ffb6151a6 --- /dev/null +++ b/packages/js/e2e-environment/utils/scaffold.js @@ -0,0 +1,119 @@ +/** + * External dependencies. + */ +const fs = require( 'fs' ); +const readlineSync = require( 'readline-sync' ); +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 = [ '../../tests', '../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 ); + const confirmPrompt = `${localE2ePath} exists. Delete? [y]es/[n]o: `; + + if ( ! fs.existsSync( localPath ) ) { + return; + } + 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}/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/initialize.sh', 'installFiles/initialize.sh' ); + + createLocalE2ePath( 'config' ); + console.log( 'Writing tests/e2e/config/jest.config.js' ); + confirmLocalCopy( 'config/jest.config.js', 'installFiles/jest.config.js' ); + console.log( 'Writing tests/e2e/config/jest.setup.js' ); + confirmLocalCopy( 'config/jest.setup.js', 'installFiles/jest.setup.js' ); +}; + +module.exports = { + createLocalE2ePath, + confirm, + confirmLocalCopy, + confirmLocalDelete, + getPackageData, + installDefaults, +}; From 2c5bed66e7c0191c15a60f6df20497567a4898e9 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Wed, 8 Dec 2021 19:38:45 -0400 Subject: [PATCH 53/97] use path.sep throughout scaffolding --- packages/js/e2e-environment/bin/scaffold.js | 22 +++++++++---------- packages/js/e2e-environment/utils/scaffold.js | 19 ++++++++++------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index 83f7c6ecabc..e7a9bd0bc95 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -4,13 +4,13 @@ * External dependencies. */ const fs = require( 'fs' ); +const path = require( 'path' ); const sprintf = require( 'sprintf-js' ).sprintf; /** * Internal dependencies. */ const { - resolveLocalE2ePath, resolvePackage, resolvePackagePath, } = require( '../utils' ); @@ -64,7 +64,7 @@ if ( command == 'install' ) { // Write sample default.json if ( defaultJson ) { - const defaultJsonName = `config/default-${packageSlug}.json`; + 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}'.` ); @@ -73,7 +73,7 @@ if ( command == 'install' ) { // Write sample initialize.sh if ( initializeSh ) { - const defaultInitName = `docker/${packageSlug}.sh`; + 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}'.` ); @@ -122,7 +122,7 @@ if ( command == 'install' ) { let specFolder; if ( testFolder.name.length ) { - specFolder = createLocalE2ePath( `specs/${testFolder.name}` ); + specFolder = createLocalE2ePath( `specs${path.sep}${testFolder.name}` ); } else { specFolder = specFolderPath; } @@ -134,8 +134,8 @@ if ( command == 'install' ) { continue; } - const testFileName = `${testFolder.name}/${testFile.name}.${testExtension}`; - const testFilePath = `${specFolder}/${testFile.name}.${testExtension}`; + 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 ) ) { @@ -189,13 +189,13 @@ if ( command == 'install' ) { // Delete sample default.json if ( defaultJson ) { - const defaultJsonName = `config/default-${packageSlug}.json`; + const defaultJsonName = `config${path.sep}default-${packageSlug}.json`; confirmLocalDelete( defaultJsonName ); } // Delete sample initialize.sh if ( initializeSh ) { - const defaultInitName = `docker/${packageSlug}.sh`; + const defaultInitName = `docker${path.sep}${packageSlug}.sh`; confirmLocalDelete( defaultInitName ); } @@ -206,7 +206,7 @@ if ( command == 'install' ) { const testsSpecFile = resolvePackagePath( testSpecs, pkg ); const specs = fs.readFileSync( testsSpecFile ); const tests = JSON.parse( specs ); - const { active, deprecated } = tests; + const { active } = tests; if ( ! active || ! active.length ) { return; @@ -221,10 +221,10 @@ if ( command == 'install' ) { continue; } - const specFolder = testFolder.name.length ? `specs/${testFolder.name}` : 'specs'; + 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}/${testFile.name}.${testExtension}`; + const testFilePath = `${specFolder}${path.sep}${testFile.name}.${testExtension}`; confirmLocalDelete( testFilePath ); } diff --git a/packages/js/e2e-environment/utils/scaffold.js b/packages/js/e2e-environment/utils/scaffold.js index c8ffb6151a6..7662a35ad50 100644 --- a/packages/js/e2e-environment/utils/scaffold.js +++ b/packages/js/e2e-environment/utils/scaffold.js @@ -2,7 +2,12 @@ * External dependencies. */ const fs = require( 'fs' ); +const path = require( 'path' ); const readlineSync = require( 'readline-sync' ); + +/** + * Internal dependencies. + */ const { resolveLocalE2ePath, resolvePackagePath } = require( './test-config' ); /** @@ -12,7 +17,7 @@ const { resolveLocalE2ePath, resolvePackagePath } = require( './test-config' ); */ const createLocalE2ePath = ( relativePath ) => { let specFolderPath = ''; - const folders = [ '../../tests', '../e2e', relativePath ]; + const folders = [ `..${path.sep}..${path.sep}tests`, `..${path.sep}e2e`, relativePath ]; folders.forEach( ( folder ) => { specFolderPath = resolveLocalE2ePath( folder ); if ( ! fs.existsSync( specFolderPath ) ) { @@ -70,11 +75,11 @@ const confirmLocalCopy = ( localE2ePath, packageE2ePath, packageName = '' ) => { */ const confirmLocalDelete = ( localE2ePath ) => { const localPath = resolveLocalE2ePath( localE2ePath ); - const confirmPrompt = `${localE2ePath} exists. Delete? [y]es/[n]o: `; - 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 ); @@ -89,7 +94,7 @@ const confirmLocalDelete = ( localE2ePath ) => { */ const getPackageData = ( packageName ) => { const packageSlug = packageName.replace( '@', '' ).replace( /\//g, '.' ); - const installFiles = require( `${packageName}/installFiles` ); + const installFiles = require( `${packageName}${path.sep}installFiles` ); return { packageSlug, ...installFiles }; }; @@ -100,13 +105,13 @@ const getPackageData = ( packageName ) => { const installDefaults = () => { createLocalE2ePath( 'docker' ); console.log( 'Writing tests/e2e/docker/initialize.sh' ); - confirmLocalCopy( 'docker/initialize.sh', 'installFiles/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/jest.config.js', 'installFiles/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/jest.setup.js', 'installFiles/jest.setup.js' ); + confirmLocalCopy( `config${path.sep}jest.setup.js`, `installFiles${path.sep}jest.setup.js` ); }; module.exports = { From 24f2f557429928a471d9476141d666a65c539d14 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 8 Dec 2021 16:40:42 -0700 Subject: [PATCH 54/97] Use a different syntax --- .github/workflows/test-plugins.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml index 7af01529d1b..021017ed4f6 100644 --- a/.github/workflows/test-plugins.yml +++ b/.github/workflows/test-plugins.yml @@ -8,9 +8,17 @@ jobs: name: Smoke tests with ${{ matrix.plugins }} plugin installed runs-on: ubuntu-18.04 strategy: - matrix: - plugins: [ 'automattic/woocommerce-payments', 'woocommerce/facebook-for-woocommerce', 'automattic/woocommerce-services', ${{ secrets.WC_SUBSCRIPTIONS_REPO }}] - pluginNames: [ 'WooCommerce Payments', 'Facebook for WooCommerce', 'WooCommerce Shipping & Tax', 'WooCommerce Subscriptions' ] + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'Facebook for WooCommerce' + repo: 'woocommerce/facebook-for-woocommerce' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'woocommerce/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true steps: - name: Create dirs. @@ -54,8 +62,8 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.plugins }} - PLUGIN_NAME: ${{ matrix.pluginNames }} + PLUGIN_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 From 44eedb0ee97106a8da9a523bee300bcda1ded6a7 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 8 Dec 2021 17:23:00 -0700 Subject: [PATCH 55/97] Run on trunk code --- .github/workflows/test-plugins.yml | 33 ++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml index 021017ed4f6..ea558f3000e 100644 --- a/.github/workflows/test-plugins.yml +++ b/.github/workflows/test-plugins.yml @@ -20,18 +20,17 @@ jobs: repo: WC_SUBSCRIPTIONS_REPO private: true steps: - - name: Create dirs. run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + 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 + path: package/woocommerce - name: Install PNPM and install dependencies working-directory: package/woocommerce @@ -41,20 +40,28 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpm nx docker-up 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 release zip + - name: Download WooCommerce ZIP. + uses: actions/download-artifact@v2 + with: + name: woocommerce + path: tmp + + - name: Extract and replace WooCommerce zip. working-directory: tmp run: | - ASSET_ID=$(jq ".release.assets[0].id" $GITHUB_EVENT_PATH) + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - 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: Install dependencies again + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce From f5b4c86e8e7d0d4633b58c72eddfaabca44f10c4 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 9 Dec 2021 06:21:01 -0800 Subject: [PATCH 56/97] Move ignore file to root level --- .gitignore | 3 +++ packages/js/api-core-tests/.gitignore | 2 -- packages/js/api/.gitignore | 2 -- packages/js/e2e-core-tests/.gitignore | 2 -- packages/js/e2e-environment/.gitignore | 1 - packages/js/e2e-utils/.gitignore | 1 - 6 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 packages/js/e2e-environment/.gitignore delete mode 100644 packages/js/e2e-utils/.gitignore diff --git a/.gitignore b/.gitignore index 130ad00fe7e..e99fc6a5d4d 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,9 @@ vendor/ # TypeScript files tsconfig.tsbuildinfo +# Node Package Dependencies +package-lock.json + # wp-env config .wp-env.override.json diff --git a/packages/js/api-core-tests/.gitignore b/packages/js/api-core-tests/.gitignore index d0961824d84..5a5072cb91d 100644 --- a/packages/js/api-core-tests/.gitignore +++ b/packages/js/api-core-tests/.gitignore @@ -1,4 +1,2 @@ # Collection output collection.json - -package-lock.json diff --git a/packages/js/api/.gitignore b/packages/js/api/.gitignore index 9d5ef1986ac..e22a3150198 100644 --- a/packages/js/api/.gitignore +++ b/packages/js/api/.gitignore @@ -1,4 +1,2 @@ # Editors /nbproject/private/ - -package-lock.json diff --git a/packages/js/e2e-core-tests/.gitignore b/packages/js/e2e-core-tests/.gitignore index b698ab70fe7..5585f5a8863 100644 --- a/packages/js/e2e-core-tests/.gitignore +++ b/packages/js/e2e-core-tests/.gitignore @@ -1,3 +1 @@ /test-data/sample_products.csv - -package-lock.json diff --git a/packages/js/e2e-environment/.gitignore b/packages/js/e2e-environment/.gitignore deleted file mode 100644 index d8b83df9cdb..00000000000 --- a/packages/js/e2e-environment/.gitignore +++ /dev/null @@ -1 +0,0 @@ -package-lock.json diff --git a/packages/js/e2e-utils/.gitignore b/packages/js/e2e-utils/.gitignore deleted file mode 100644 index d8b83df9cdb..00000000000 --- a/packages/js/e2e-utils/.gitignore +++ /dev/null @@ -1 +0,0 @@ -package-lock.json From 4a577e9f1ea9bd0098025880c0e52e5e8c785a82 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 9 Dec 2021 08:58:08 -0700 Subject: [PATCH 57/97] Added some more plugins --- .github/workflows/test-plugins.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml index ea558f3000e..d32bf655923 100644 --- a/.github/workflows/test-plugins.yml +++ b/.github/workflows/test-plugins.yml @@ -1,13 +1,13 @@ -name: Run smoke tests against plugins -on: pull_request -# on: -# release: -# types: [published] +name: On release run smoke tests against plugins +on: + release: + types: [published] jobs: test-plugins: - name: Smoke tests with ${{ matrix.plugins }} plugin installed + name: Smoke tests with ${{ matrix.plugin }} plugin installed runs-on: ubuntu-18.04 strategy: + fail-fast: false matrix: include: - plugin: 'WooCommerce Payments' @@ -19,6 +19,10 @@ jobs: - 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: | @@ -30,7 +34,8 @@ jobs: - name: Checkout code. uses: actions/checkout@v2 with: - path: package/woocommerce + path: package/woocommerce + ref: trunk - name: Install PNPM and install dependencies working-directory: package/woocommerce From 9621e13de56f98e4b19bad26e36fc75ad69566dc Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 9 Dec 2021 09:01:37 -0700 Subject: [PATCH 58/97] Run the plugin test on PR --- .github/workflows/test-plugins.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml index d32bf655923..d6141792550 100644 --- a/.github/workflows/test-plugins.yml +++ b/.github/workflows/test-plugins.yml @@ -1,7 +1,8 @@ name: On release run smoke tests against plugins -on: - release: - types: [published] +# on: +# release: +# types: [published] +on: pull_request jobs: test-plugins: name: Smoke tests with ${{ matrix.plugin }} plugin installed From 7f86a452922c76b19199137bad64e8980eba2b86 Mon Sep 17 00:00:00 2001 From: Jeff Stieler Date: Thu, 9 Dec 2021 15:22:07 -0500 Subject: [PATCH 59/97] Adds the image size to gallery nav (waiting the image load) (#31407) * adds the image size to gallery nav * replaces tabs with spaces Co-authored-by: Erik Golinelli --- .../legacy/js/flexslider/jquery.flexslider.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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' ) ) { From cf66823a55013a1d17284fc722d2d1a36aed8747 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Thu, 9 Dec 2021 16:53:06 -0400 Subject: [PATCH 60/97] add changelog and readme --- packages/js/e2e-core-tests/CHANGELOG.md | 1 + packages/js/e2e-core-tests/README.md | 12 +++ packages/js/e2e-environment/CHANGELOG.md | 2 + packages/js/e2e-environment/README.md | 13 +++ packages/js/e2e-environment/test-packages.md | 104 +++++++++++++++++++ 5 files changed, 132 insertions(+) create mode 100644 packages/js/e2e-environment/test-packages.md 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..03490879b95 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 diff --git a/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 781c66330cb..44e84d7266a 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -3,10 +3,12 @@ ## Added - Added `await` for every call to `shopper.logout` +- 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 f81679bcf82..f825d5e08c6 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. 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(); +``` + From c6cdf87aa7d61c418f4ba7e6504375a4325c5df8 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 9 Dec 2021 14:07:13 -0700 Subject: [PATCH 61/97] Remove standalone run and add to smoke and release testing --- .github/workflows/smoke-test-daily.yml | 100 +++++++++++++++++++++++ .github/workflows/smoke-test-release.yml | 71 ++++++++++++++++ .github/workflows/test-plugins.yml | 83 ------------------- 3 files changed, 171 insertions(+), 83 deletions(-) delete mode 100644 .github/workflows/test-plugins.yml diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 68fb656a777..632256aa752 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: 'Facebook for WooCommerce' + repo: 'woocommerce/facebook-for-woocommerce' + - 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 }} + PLUGIN_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..e51c0d519ab 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: 'Facebook for WooCommerce' + repo: 'woocommerce/facebook-for-woocommerce' + - 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 }} + PLUGIN_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/test-plugins.yml b/.github/workflows/test-plugins.yml deleted file mode 100644 index d6141792550..00000000000 --- a/.github/workflows/test-plugins.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: On release run smoke tests against plugins -# on: -# release: -# types: [published] -on: pull_request -jobs: - 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: 'Facebook for WooCommerce' - repo: 'woocommerce/facebook-for-woocommerce' - - 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 - ref: trunk - - - 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 }} - PLUGIN_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 From c5300e7a671a2c8df2e4c3f84420a086388ef182 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Thu, 9 Dec 2021 17:08:48 -0400 Subject: [PATCH 62/97] undo unintended changes to default.json --- packages/js/e2e-environment/bin/scaffold.js | 2 +- .../js/e2e-environment/config/default.json | 135 +++++++++++++++++- 2 files changed, 134 insertions(+), 3 deletions(-) diff --git a/packages/js/e2e-environment/bin/scaffold.js b/packages/js/e2e-environment/bin/scaffold.js index e7a9bd0bc95..ba7a9257d8b 100755 --- a/packages/js/e2e-environment/bin/scaffold.js +++ b/packages/js/e2e-environment/bin/scaffold.js @@ -93,7 +93,7 @@ if ( command == 'install' ) { 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 ); + const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s`. */', packageName ); let importLineFormat; let overwriteFiles; let confirmPrompt; diff --git a/packages/js/e2e-environment/config/default.json b/packages/js/e2e-environment/config/default.json index e01ee4e9a27..e70b3c6c5d8 100644 --- a/packages/js/e2e-environment/config/default.json +++ b/packages/js/e2e-environment/config/default.json @@ -1,6 +1,5 @@ { "url": "http://localhost:8084/", - "appName": "woocommerce_e2e", "users": { "admin": { "username": "admin", @@ -16,12 +15,133 @@ "name": "Simple product" }, "variable": { - "name": "Variable Product with Three Variations" + "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", @@ -61,6 +181,17 @@ } } }, + "orders": { + "basicPaidOrder": { + "paymentMethod": "cod", + "status": "processing", + "billing": { + "firstName": "John", + "lastName": "Doe", + "email": "john.doe@example.com" + } + } + }, "onboardingwizard": { "industry": "Test industry", "numberofproducts": "1 - 10", From 68ca895e8b07346d1429da74762be181230c0791 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Thu, 9 Dec 2021 16:46:55 -0500 Subject: [PATCH 63/97] Removed parameter --- packages/js/e2e-environment/src/setup/jest.setup.js | 2 +- plugins/woocommerce/tests/e2e/config/jest.setup.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/e2e-environment/src/setup/jest.setup.js b/packages/js/e2e-environment/src/setup/jest.setup.js index ffaa81910da..f7ed5466984 100644 --- a/packages/js/e2e-environment/src/setup/jest.setup.js +++ b/packages/js/e2e-environment/src/setup/jest.setup.js @@ -176,7 +176,7 @@ beforeAll( async () => { capturePageEventsForTearDown(); enablePageDialogAccept(); observeConsoleLogging(); - setupJestRetries( 2 ); + setupJestRetries(); } ); afterEach( async () => { diff --git a/plugins/woocommerce/tests/e2e/config/jest.setup.js b/plugins/woocommerce/tests/e2e/config/jest.setup.js index 4a4feee45f2..1d2ba572ee4 100644 --- a/plugins/woocommerce/tests/e2e/config/jest.setup.js +++ b/plugins/woocommerce/tests/e2e/config/jest.setup.js @@ -40,7 +40,7 @@ async function trashExistingPosts() { // each other's side-effects. beforeAll(async () => { - setupJestRetries( 2 ); + setupJestRetries(); if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); From feec71249a2e3dbc1b8709738df4ca984caaf41a Mon Sep 17 00:00:00 2001 From: jamelreid Date: Fri, 10 Dec 2021 10:22:08 -0500 Subject: [PATCH 64/97] Updated paths in READMe.md --- packages/js/e2e-core-tests/README.md | 4 ++-- packages/js/e2e-environment/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/js/e2e-core-tests/README.md b/packages/js/e2e-core-tests/README.md index 1c48455197b..a23b038345c 100644 --- a/packages/js/e2e-core-tests/README.md +++ b/packages/js/e2e-core-tests/README.md @@ -104,7 +104,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 +130,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-environment/README.md b/packages/js/e2e-environment/README.md index 85a2e0a76a9..e3e43f256a3 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -156,7 +156,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' ); @@ -172,7 +172,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 From b4d0bc0dab45508787bc0d97859e4d763999f2d3 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Fri, 10 Dec 2021 11:01:58 -0500 Subject: [PATCH 65/97] Enabled jest retries locally --- plugins/woocommerce/tests/e2e/config/jest.setup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/e2e/config/jest.setup.js b/plugins/woocommerce/tests/e2e/config/jest.setup.js index 1d2ba572ee4..4a4feee45f2 100644 --- a/plugins/woocommerce/tests/e2e/config/jest.setup.js +++ b/plugins/woocommerce/tests/e2e/config/jest.setup.js @@ -40,7 +40,7 @@ async function trashExistingPosts() { // each other's side-effects. beforeAll(async () => { - setupJestRetries(); + setupJestRetries( 2 ); if ( DEFAULT_TIMEOUT_OVERRIDE ) { page.setDefaultNavigationTimeout( DEFAULT_TIMEOUT_OVERRIDE ); From ac83762aca80c1f150f6e5189def5655378d0a08 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Fri, 10 Dec 2021 11:02:21 -0500 Subject: [PATCH 66/97] Disabled jest retries by default --- packages/js/e2e-environment/config/jest-object.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/e2e-environment/config/jest-object.config.js b/packages/js/e2e-environment/config/jest-object.config.js index e165e42edeb..7ae25d5bebf 100644 --- a/packages/js/e2e-environment/config/jest-object.config.js +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -3,7 +3,7 @@ */ const { E2E_RETRY_TIMES } = process.env; -const setupJestRetries = ( retries = 2 ) => { +const setupJestRetries = ( retries = 0 ) => { const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : retries; jest.retryTimes( retryTimes ); From 56ebc906745a9cd5b7903eed3048da3b52d8457b Mon Sep 17 00:00:00 2001 From: roykho Date: Fri, 10 Dec 2021 11:18:21 -0800 Subject: [PATCH 67/97] Remove remaining gitignore item --- plugins/woocommerce/.gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/woocommerce/.gitignore b/plugins/woocommerce/.gitignore index b4bcbc85e23..65ccaf64123 100644 --- a/plugins/woocommerce/.gitignore +++ b/plugins/woocommerce/.gitignore @@ -54,5 +54,3 @@ yarn.lock # Language files i18n/languages/woocommerce.pot - -package-lock.json From 26121fa059fee6dff8b7a1a5ca42fa3683afba94 Mon Sep 17 00:00:00 2001 From: roykho Date: Mon, 13 Dec 2021 08:06:50 -0800 Subject: [PATCH 68/97] Designate root level eslint config --- .eslintrc.js | 1 + plugins/woocommerce/.eslintrc.js | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) 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/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, From 705a383de574cdbbb24be9c42083f1a079234cbb Mon Sep 17 00:00:00 2001 From: MD Sultan Nasir Uddin Date: Tue, 14 Dec 2021 03:03:45 +0600 Subject: [PATCH 69/97] Fix hard coded email template path (#31321) --- plugins/woocommerce/includes/emails/class-wc-email.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 54d1379deb7fcf82c6922db6b65e4d8c01d6e71a Mon Sep 17 00:00:00 2001 From: Greg Date: Mon, 13 Dec 2021 16:11:22 -0700 Subject: [PATCH 70/97] Rename plugin_repository variable --- .../woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js index aeab4072747..211de9f1e5a 100644 --- a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js @@ -13,14 +13,14 @@ const { beforeAll, } = require( '@jest/globals' ); -const { PLUGIN_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN } = process.env; +const { GITHUB_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN } = process.env; let zipUrl; let pluginPath; describe( 'Upload and activate plugin', () => { beforeAll( async () => { - zipUrl = await getLatestReleaseZipUrl( PLUGIN_REPOSITORY, GITHUB_TOKEN ); + zipUrl = await getLatestReleaseZipUrl( GITHUB_REPOSITORY, GITHUB_TOKEN ); pluginPath = await getRemotePluginZip( zipUrl, GITHUB_TOKEN ); From 2e9bbae66f23fa90ba62f941e32e7930ec639d98 Mon Sep 17 00:00:00 2001 From: Moon Date: Mon, 13 Dec 2021 16:11:30 -0800 Subject: [PATCH 71/97] Bump woocommerce-admin version to 2.9.2 --- plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 10e55a64cef..7ea71a550b8 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-admin": "2.9.1", + "woocommerce/woocommerce-admin": "2.9.2", "woocommerce/woocommerce-blocks": "6.3.3" }, "require-dev": { diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index e4b4a93be1a..beee6701951 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": "688f13d253b2879a5f0181eb7fbf0e38", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -543,16 +543,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "fdffbfef084c65a3e2141f0aff41cef3bad27553" + "reference": "0533358c160f58272d02ae1962e267a546a5c26c" }, "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/0533358c160f58272d02ae1962e267a546a5c26c", + "reference": "0533358c160f58272d02ae1962e267a546a5c26c", "shasum": "" }, "require": { @@ -608,9 +608,9 @@ "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/v2.9.2" }, - "time": "2021-12-08T02:59:25+00:00" + "time": "2021-12-13T23:49:48+00:00" }, { "name": "woocommerce/woocommerce-blocks", @@ -2926,5 +2926,5 @@ "platform-overrides": { "php": "7.0.33" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } From ff7c6157709b50c48e17472cd68084c43b244c36 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 08:21:37 -0800 Subject: [PATCH 72/97] Move gitignore paths to root when it makes sense --- .gitignore | 26 +++++++++++++++++++++++--- packages/js/api/.gitignore | 2 -- packages/js/e2e-environment/.gitignore | 2 ++ plugins/woocommerce/.gitignore | 26 -------------------------- 4 files changed, 25 insertions(+), 31 deletions(-) delete mode 100644 packages/js/api/.gitignore create mode 100644 packages/js/e2e-environment/.gitignore diff --git a/.gitignore b/.gitignore index e99fc6a5d4d..257b401098d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,15 @@ project.properties *.sublime-workspace .sublimelinterrc +# Grunt +none + +# Sass +.sass-cache/ + +# Logs +logs/ + # Eslint Cache .eslintcache @@ -47,6 +56,17 @@ package-lock.json .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/ 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/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/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 From 85297dd1a1880475807e14a8b62d69acb4ae68a2 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 08:57:28 -0800 Subject: [PATCH 73/97] Use sass package instead of node-sass --- plugins/woocommerce/legacy/Gruntfile.js | 2 +- plugins/woocommerce/legacy/package.json | 2 +- pnpm-lock.yaml | 259 ++++++++++++++++++++---- 3 files changed, 223 insertions(+), 40 deletions(-) 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/package.json b/plugins/woocommerce/legacy/package.json index 378e4721758..b927fe79485 100644 --- a/plugins/woocommerce/legacy/package.json +++ b/plugins/woocommerce/legacy/package.json @@ -24,7 +24,7 @@ "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" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 183937402f8..32ebcc63c6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,11 +34,11 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.2 '@nrwl/linter': 13.1.4 - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.2 '@nrwl/web': 13.1.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.2.3_wp-prettier@2.2.1-beta-1 + '@nrwl/workspace': 13.3.2_42cab1dece2b2240094de84cfd414406 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -184,6 +184,7 @@ importers: specifiers: '@babel/cli': 7.12.8 '@babel/core': 7.12.9 + '@babel/eslint-parser': ^7.16.5 '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 @@ -200,7 +201,6 @@ importers: '@wordpress/babel-preset-default': 3.0.2 '@wordpress/eslint-plugin': 7.3.0 autoprefixer: 9.8.6 - babel-eslint: 10.1.0 chai: 4.2.0 chai-as-promised: 7.1.1 config: 3.3.3 @@ -215,7 +215,6 @@ 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 @@ -226,6 +225,7 @@ importers: devDependencies: '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 + '@babel/eslint-parser': 7.16.5_@babel+core@7.12.9+eslint@6.8.0 '@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 @@ -242,7 +242,6 @@ importers: '@wordpress/babel-preset-default': 3.0.2 '@wordpress/eslint-plugin': 7.3.0_eslint@6.8.0+typescript@3.9.7 autoprefixer: 9.8.6 - babel-eslint: 10.1.0_eslint@6.8.0 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 config: 3.3.3 @@ -257,7 +256,6 @@ 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 @@ -455,6 +453,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/eslint-parser/7.16.5_@babel+core@7.12.9+eslint@6.8.0: + resolution: {integrity: sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.12.9 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + /@babel/generator/7.16.0: resolution: {integrity: sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==} engines: {node: '>=6.9.0'} @@ -4271,11 +4283,11 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cli/13.2.3: - resolution: {integrity: sha512-4hrOYQ9MqhWOdjQTwuQqHTfPu8lYgdFCE39PVWAcePtoi67mUeba54HkyT6nkTHI1TbO7q8Kf+R73dRhhxDlpA==} + /@nrwl/cli/13.3.2: + resolution: {integrity: sha512-Vcvw8TIMPtY28IiM9wchrM1mxEtNIIrQkvgOrxx4NMfz28HkH4x+kEjyQ3UUZHnPbFDggpYX0KHn5mtFJSG4XA==} hasBin: true dependencies: - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.2 chalk: 4.1.0 enquirer: 2.3.6 v8-compile-cache: 2.3.0 @@ -4342,10 +4354,10 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.2.3: - resolution: {integrity: sha512-/cp8hFclOXSAjj9pwb6bOU8yw593HfelcCBi8o8Jhb0Luhn1RzLCOpmHNsOf2hWzSUPEr0BuI0R55ubCEB+k6A==} + /@nrwl/devkit/13.3.2: + resolution: {integrity: sha512-BZJdeLi5K3YeJhNeGvJUrD1SnwqNDaadkb2cgs/FSbB7ogLpfyXiJ/1khR94kV44SxSe+puJJGBBClJAlEeXTg==} dependencies: - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.2 ejs: 3.1.6 ignore: 5.1.9 rxjs: 6.6.7 @@ -4397,12 +4409,12 @@ packages: - utf-8-validate dev: true - /@nrwl/jest/13.2.3: - resolution: {integrity: sha512-M9/x0uZNSVKkcyNHcA2+Muj23KRo9SDiCsTb7HnkHhtSbhIWMd1knKP45bOr8CjeeiKNPeervx7uiN5516z8JA==} + /@nrwl/jest/13.3.2: + resolution: {integrity: sha512-NdV9mi5FtZHydArcmgTfvazRY+zDi0DjA7W26u8jen7l4mT0xRP4Zv3CE2TukyOikAKdXqVDC/8Nb1ZCzO6sLA==} dependencies: '@jest/reporters': 27.2.2 '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.2.3 + '@nrwl/devkit': 13.3.2 chalk: 4.1.0 identity-obj-proxy: 3.0.0 jest-config: 27.2.2 @@ -4458,12 +4470,13 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.2.3: - resolution: {integrity: sha512-kdzPWYzR96XYghJ5yIaYSybDrtcAcSxgcscwP1UWvME19O2W8DHbhIj3AzBgjSG0X6hBEh6k9kpyQ49jNkUMCw==} + /@nrwl/linter/13.3.2_typescript@4.2.4: + resolution: {integrity: sha512-afDS9N+Td1f9nJKBeMRKuyQYJpACut2zGj7qBm4BrW0LGWZ8Xr84TdYrS8XvkmHEKNoyppPyiaIXncwtWTr80g==} dependencies: - '@nrwl/devkit': 13.2.3 - '@nrwl/jest': 13.2.3 - eslint: 7.32.0 + '@nrwl/devkit': 13.3.2 + '@nrwl/jest': 13.3.2 + '@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 @@ -4474,6 +4487,7 @@ packages: - node-notifier - supports-color - ts-node + - typescript - utf-8-validate dev: true @@ -4511,15 +4525,17 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/tao/13.2.3: - resolution: {integrity: sha512-vn+GqvFVinqAXzvbHznPBtCg9OCfirh3hF68sZgY2C6jZ3m47XwST3mLTRSDTtSDy9QfUrSZ6p4uAk2Iht0yBQ==} + /@nrwl/tao/13.3.2: + resolution: {integrity: sha512-MZfaWVG4+sjD1yahHEAHOeYph/YOmeuhsVPfkw5iGAMDZnOgMzI7pcxH4JqR50weTpwOIVWQxB/eugp1Icuaqg==} 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.2 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 semver: 7.3.4 @@ -4685,33 +4701,37 @@ packages: - 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.2_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-c7iuIUaDXRLwixThnqvVBRVVdbGCZu7mKhWLLlfNDvvR0vGx5REpwWlHiA8yLesjL6pjH0GAnNQUA/Wwpz0bhg==} 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.2 + '@nrwl/devkit': 13.3.2 + '@nrwl/jest': 13.3.2 + '@nrwl/linter': 13.3.2_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 @@ -4720,11 +4740,13 @@ 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 @@ -4737,6 +4759,24 @@ packages: node-gyp-build: 4.3.0 dev: true + /@parcel/watcher/2.0.4: + resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + 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'} @@ -5274,6 +5314,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} @@ -6877,6 +6921,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} @@ -8122,6 +8171,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'} @@ -8135,6 +8189,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'} @@ -8143,6 +8202,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 @@ -8204,6 +8271,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'} @@ -8405,6 +8479,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 @@ -12422,6 +12501,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.21.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'} @@ -16167,21 +16297,21 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.2 dev: true /nx/13.1.4: resolution: {integrity: sha512-m2j3wymaFlEl/7EoGxlgRzdmgQV1Rsh42df1cM8xFzAzV8ZGtR3Zq19qK7r9SUabpq8jMzp1e6rLQTHewCJWig==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.2 dev: true - /nx/13.2.3: - resolution: {integrity: sha512-aNRbPjArROZazOKAiUhG5uZAZmL1uXdsGoA3p5mDt5fCLSj/CX1V/myuRx+Js0qsAV78W6dSf2z6TiQeIgieXg==} + /nx/13.3.2: + resolution: {integrity: sha512-7zESkiQ5kmzKuT04k5X/osyCNrGYCGjn1KsreQhv2PeClc461U5dGwEHiiPZC80RqAsO6LL4jCx5MLVAE7arJg==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.2 dev: true /oauth-1.0a/2.2.6: @@ -16655,6 +16785,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 @@ -17958,6 +18093,16 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-devtools-core/4.21.0: + resolution: {integrity: sha512-clGWwJHV5MHwTwYyKc+7FZHwzdbzrD2/AoZSkicUcr6YLc3Za9a9FaLhccWDHfjQ+ron9yzNhDT6Tv+FiPkD3g==} + 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: @@ -17983,6 +18128,18 @@ 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'} @@ -18005,7 +18162,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=} @@ -18662,7 +18818,6 @@ packages: 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==} @@ -18927,6 +19082,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'} @@ -20351,6 +20515,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'} @@ -21107,6 +21276,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 @@ -21398,6 +21574,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 From 3578d61c0a00b9564df0b97c71b17b714493cb1b Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 09:08:24 -0800 Subject: [PATCH 74/97] Replace deprecated babel-eslint with @babel/eslint-parser --- plugins/woocommerce/.eslintrc.js | 2 +- plugins/woocommerce/legacy/.eslintrc.js | 2 +- plugins/woocommerce/package.json | 3 +-- pnpm-lock.yaml | 4 +++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce/.eslintrc.js b/plugins/woocommerce/.eslintrc.js index 03f9124652e..ec10e6f3e08 100644 --- a/plugins/woocommerce/.eslintrc.js +++ b/plugins/woocommerce/.eslintrc.js @@ -18,7 +18,7 @@ module.exports = { 'max-len': [ 2, { code: 140 } ], 'no-console': 1, }, - parser: 'babel-eslint', + parser: '@babel/eslint-parser', parserOptions: { ecmaVersion: 8, ecmaFeatures: { diff --git a/plugins/woocommerce/legacy/.eslintrc.js b/plugins/woocommerce/legacy/.eslintrc.js index 7c90a4dbbb8..772c5252e15 100644 --- a/plugins/woocommerce/legacy/.eslintrc.js +++ b/plugins/woocommerce/legacy/.eslintrc.js @@ -19,7 +19,7 @@ module.exports = { 'max-len': [ 2, { 'code': 140 } ], 'no-console': 1 }, - parser: 'babel-eslint', + parser: '@babel/eslint-parser', parserOptions: { ecmaVersion: 8, ecmaFeatures: { diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 60b302e6cc6..61de271ec21 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -33,6 +33,7 @@ "devDependencies": { "@babel/cli": "7.12.8", "@babel/core": "7.12.9", + "@babel/eslint-parser": "^7.16.5", "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", @@ -49,7 +50,6 @@ "@wordpress/babel-preset-default": "3.0.2", "@wordpress/eslint-plugin": "7.3.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,7 +64,6 @@ "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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32ebcc63c6c..492be8a558d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -215,6 +215,7 @@ 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 @@ -256,6 +257,7 @@ 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 @@ -8637,7 +8639,7 @@ packages: create-hash: 1.2.0 inherits: 2.0.4 ripemd160: 2.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 sha.js: 2.4.11 /create-require/1.1.1: From 3ba275e6c9a24a0e1121b862d1eae39f3381c0c3 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 09:14:54 -0800 Subject: [PATCH 75/97] Deprecate stylelint-config-wordpress with current package --- .stylelintrc | 2 +- packages/js/e2e-environment/package.json | 1 - plugins/woocommerce/legacy/.stylelintrc | 2 +- plugins/woocommerce/legacy/package.json | 2 +- plugins/woocommerce/package.json | 3 +-- 5 files changed, 4 insertions(+), 6 deletions(-) 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/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index ebb03adbcbf..a80f2e87028 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -38,7 +38,6 @@ "devDependencies": { "@babel/cli": "7.12.8", "@babel/core": "7.12.9", - "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", "@wordpress/eslint-plugin": "7.3.0", "eslint": "^8.1.0", 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/package.json b/plugins/woocommerce/legacy/package.json index b927fe79485..8e3d83a635a 100644 --- a/plugins/woocommerce/legacy/package.json +++ b/plugins/woocommerce/legacy/package.json @@ -26,6 +26,6 @@ "gruntify-eslint": "5.0.0", "sass": "^1.45.0", "stylelint": "13.8.0", - "stylelint-config-wordpress": "17.0.0" + "@wordpress/stylelint-config": "19.1.0" } } diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 61de271ec21..0702a13dd2f 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -34,7 +34,6 @@ "@babel/cli": "7.12.8", "@babel/core": "7.12.9", "@babel/eslint-parser": "^7.16.5", - "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", "@typescript-eslint/eslint-plugin": "3.10.1", @@ -66,7 +65,7 @@ "mocha": "7.2.0", "prettier": "npm:wp-prettier@2.0.5", "stylelint": "^13.8.0", - "stylelint-config-wordpress": "17.0.0", + "@wordpress/stylelint-config": "19.1.0", "typescript": "3.9.7", "webpack": "4.44.2", "webpack-cli": "3.3.12", From 6fb892bca4ae3623c9512357a6aee6a44409275f Mon Sep 17 00:00:00 2001 From: Greg Date: Tue, 14 Dec 2021 10:56:44 -0700 Subject: [PATCH 76/97] Linting updates --- packages/js/e2e-environment/utils/get-plugin-zip.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/js/e2e-environment/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index 14d2c3245e7..cd85b11d4d7 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -114,6 +114,7 @@ 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, authorizationToken ) => { @@ -133,7 +134,6 @@ const downloadZip = async ( fileUrl, downloadPath, authorizationToken ) => { return new Promise( function ( resolve, reject ) { request .get( options, function ( err, resp, body ) { - console.log(resp.statusCode) if ( err ) { reject( err ); } else { @@ -158,13 +158,12 @@ const deleteDownloadedPluginFiles = async () => { if ( err ) throw err; for ( const file of files ) { - fs.unlink(path.join( pluginSavePath, file ), err => { - if ( err ) throw err; + fs.unlink( path.join( pluginSavePath, file ), ( error ) => { + if ( error ) throw error; } ); } } ); - -} +}; module.exports = { getRemotePluginZip, From 9d3af216bc9cb3dc9ff3de6dfd7b2bb6cc4ca89a Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 10:10:07 -0800 Subject: [PATCH 77/97] Update nrwl packages --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8591d1464ec..7167cddb6e6 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,11 @@ }, "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/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", From b9231cbf242360f5e2178b39b90228d6bd40e492 Mon Sep 17 00:00:00 2001 From: Greg Date: Tue, 14 Dec 2021 11:11:53 -0700 Subject: [PATCH 78/97] Regex fix --- packages/js/e2e-environment/utils/get-plugin-zip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/e2e-environment/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index cd85b11d4d7..4873d0609a4 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -99,7 +99,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 ); From 6dcab53871c7d027dd9779d7571d4dea7e611122 Mon Sep 17 00:00:00 2001 From: jamelreid Date: Tue, 14 Dec 2021 13:14:41 -0500 Subject: [PATCH 79/97] Updated jest.retryTimes() to be a conditional This way it doesn't matter if the call is made locally or from the package. --- packages/js/e2e-environment/config/jest-object.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/js/e2e-environment/config/jest-object.config.js b/packages/js/e2e-environment/config/jest-object.config.js index 7ae25d5bebf..e485fc18e2b 100644 --- a/packages/js/e2e-environment/config/jest-object.config.js +++ b/packages/js/e2e-environment/config/jest-object.config.js @@ -6,7 +6,9 @@ const { E2E_RETRY_TIMES } = process.env; const setupJestRetries = ( retries = 0 ) => { const retryTimes = E2E_RETRY_TIMES ? E2E_RETRY_TIMES : retries; - jest.retryTimes( retryTimes ); + if ( retryTimes > 0 ) { + jest.retryTimes( retryTimes ); + } }; // If more methods are added to setupJestObject, it should be include in the readme From ea1871abb949bb20e56cc1d88410b7b388b73bba Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Tue, 14 Dec 2021 11:07:37 -0800 Subject: [PATCH 80/97] Updated Changelog --- changelog.txt | 105 +++++++++++++++++++++++++++++++++ plugins/woocommerce/readme.txt | 59 +----------------- 2 files changed, 107 insertions(+), 57 deletions(-) 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/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). From 01d9a5419b6b65042232c0e00e9c614ed0bdd875 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 11:39:52 -0800 Subject: [PATCH 81/97] Update pnpm-lock.yml --- pnpm-lock.yaml | 666 ++++++++++++++++--------------------------------- 1 file changed, 214 insertions(+), 452 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 492be8a558d..4b51d92dcd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,11 @@ 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/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 +34,11 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.3.2 - '@nrwl/linter': 13.1.4 - '@nrwl/tao': 13.3.2 - '@nrwl/web': 13.1.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.3.2_42cab1dece2b2240094de84cfd414406 + '@nrwl/cli': 13.3.4 + '@nrwl/linter': 13.3.4_typescript@4.2.4 + '@nrwl/tao': 13.3.4 + '@nrwl/web': 13.3.4_42cab1dece2b2240094de84cfd414406 + '@nrwl/workspace': 13.3.4_42cab1dece2b2240094de84cfd414406 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -113,7 +113,6 @@ importers: '@automattic/puppeteer-utils': github:Automattic/puppeteer-utils#0f3ec50 '@babel/cli': 7.12.8 '@babel/core': 7.12.9 - '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@jest/test-sequencer': ^25.5.4 '@slack/web-api': ^6.1.0 @@ -149,7 +148,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 '@wordpress/eslint-plugin': 7.3.0_eslint@8.1.0+typescript@4.2.4 eslint: 8.1.0 @@ -185,7 +183,6 @@ importers: '@babel/cli': 7.12.8 '@babel/core': 7.12.9 '@babel/eslint-parser': ^7.16.5 - '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 '@typescript-eslint/eslint-plugin': 3.10.1 @@ -200,6 +197,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 chai: 4.2.0 chai-as-promised: 7.1.1 @@ -215,10 +213,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 @@ -227,7 +223,6 @@ importers: '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 '@babel/eslint-parser': 7.16.5_@babel+core@7.12.9+eslint@6.8.0 - '@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 @@ -242,6 +237,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 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 @@ -257,10 +253,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 @@ -268,6 +262,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 @@ -286,10 +281,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 @@ -308,9 +303,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: @@ -3061,14 +3055,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.0 '@babel/helper-plugin-utils': 7.14.5 - /@babel/polyfill/7.12.1: - resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} - deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information. - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.13.9 - dev: true - /@babel/preset-env/7.12.7_@babel+core@7.12.9: resolution: {integrity: sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==} peerDependencies: @@ -4273,11 +4259,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 @@ -4285,20 +4271,8 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cli/13.3.2: - resolution: {integrity: sha512-Vcvw8TIMPtY28IiM9wchrM1mxEtNIIrQkvgOrxx4NMfz28HkH4x+kEjyQ3UUZHnPbFDggpYX0KHn5mtFJSG4XA==} - hasBin: true - dependencies: - '@nrwl/tao': 13.3.2 - chalk: 4.1.0 - enquirer: 2.3.6 - v8-compile-cache: 2.3.0 - yargs: 15.4.1 - yargs-parser: 20.0.0 - dev: true - - /@nrwl/cypress/13.1.4_45e5b05f8550ddf8ad44a90a38658752: - resolution: {integrity: sha512-t3HewJdWl7wWAoFm6ZCtMbe8AODvV7Gtck4RP/cB0lFn6Di0q8tUNutVXSfNSdAvSURvegurZsyb30ehIM1FcQ==} + /@nrwl/cypress/13.3.4_45e5b05f8550ddf8ad44a90a38658752: + resolution: {integrity: sha512-Ejir7rKGTlNeo9DyU1+LP7rnM9Q3YB6cDioFqVYk/l4IWBDrniPKjCgIqYolypmbm3v7BAEnKqp4gFWE3jadoQ==} peerDependencies: cypress: '>= 3 < 9' peerDependenciesMeta: @@ -4306,9 +4280,9 @@ packages: 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.4 + '@nrwl/linter': 13.3.4_ts-node@9.1.1+typescript@4.2.4 + '@nrwl/workspace': 13.3.4_e77b5b0640b6ec0ecc6c8e0dab0ec669 chalk: 4.1.0 enhanced-resolve: 5.8.3 fork-ts-checker-webpack-plugin: 6.2.10 @@ -4322,6 +4296,7 @@ packages: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - '@types/react' - babel-loader - bufferutil - canvas @@ -4345,10 +4320,10 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.1.4: - resolution: {integrity: sha512-2jzb7A94O8k3lQfIvCgVb/LPoym2P6EoKAEYYX6OgPY0hwjaqik1LgkWxSnN0yTPL5gCCxb6pYLHS8A0tDye2w==} + /@nrwl/devkit/13.3.4: + resolution: {integrity: sha512-fmYScbZYJWCdjRsi1kFq+c5HotdJx4k3TofZ7Bm+OdI3CWsFtjdLajhNMDWDPw2vIRLIZPtZUAyVTkwajR7yJw==} dependencies: - '@nrwl/tao': 13.1.4 + '@nrwl/tao': 13.3.4 ejs: 3.1.6 ignore: 5.1.9 rxjs: 6.6.7 @@ -4356,67 +4331,12 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.3.2: - resolution: {integrity: sha512-BZJdeLi5K3YeJhNeGvJUrD1SnwqNDaadkb2cgs/FSbB7ogLpfyXiJ/1khR94kV44SxSe+puJJGBBClJAlEeXTg==} - dependencies: - '@nrwl/tao': 13.3.2 - 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.4: + resolution: {integrity: sha512-seeuHHZVRDdugUoEI+JQsHG7q/7BOoJOeb7djR9TIwPRd8Tj5nBVO6dzOq3pMdvsgYmNkiVMFwIqMWXy6rNvaQ==} 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.3.2: - resolution: {integrity: sha512-NdV9mi5FtZHydArcmgTfvazRY+zDi0DjA7W26u8jen7l4mT0xRP4Zv3CE2TukyOikAKdXqVDC/8Nb1ZCzO6sLA==} - dependencies: - '@jest/reporters': 27.2.2 - '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.3.2 + '@nrwl/devkit': 13.3.4 chalk: 4.1.0 identity-obj-proxy: 3.0.0 jest-config: 27.2.2 @@ -4434,15 +4354,19 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.1.4: - resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} + /@nrwl/jest/13.3.4_ts-node@9.1.1: + resolution: {integrity: sha512-seeuHHZVRDdugUoEI+JQsHG7q/7BOoJOeb7djR9TIwPRd8Tj5nBVO6dzOq3pMdvsgYmNkiVMFwIqMWXy6rNvaQ==} 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.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 + resolve.exports: 1.1.0 + rxjs: 6.6.7 tslib: 2.3.1 transitivePeerDependencies: - bufferutil @@ -4453,12 +4377,13 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.1.4_ts-node@9.1.1: - resolution: {integrity: sha512-eeBP2BOA8U7QpDbWcYQ7d30I9oSXsxl7jZnhggRUDxmrW1SzJmMTXCSAwRLFnHediFAYQVR1FxVmIjX8cxRPBQ==} + /@nrwl/linter/13.3.4_ts-node@9.1.1+typescript@4.2.4: + resolution: {integrity: sha512-p3SEL5pDgv1g2Q9OjdoBcYwDIEDnuO7cHUEUS1H7oww+HfDhuzVs4Zx+PtGjOSmT5qi3sLZZvt7U7pRNtIyrHQ==} dependencies: - '@nrwl/devkit': 13.1.4 - '@nrwl/jest': 13.1.4_ts-node@9.1.1 - eslint: 7.32.0 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4_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 @@ -4469,14 +4394,15 @@ packages: - node-notifier - supports-color - ts-node + - typescript - utf-8-validate dev: true - /@nrwl/linter/13.3.2_typescript@4.2.4: - resolution: {integrity: sha512-afDS9N+Td1f9nJKBeMRKuyQYJpACut2zGj7qBm4BrW0LGWZ8Xr84TdYrS8XvkmHEKNoyppPyiaIXncwtWTr80g==} + /@nrwl/linter/13.3.4_typescript@4.2.4: + resolution: {integrity: sha512-p3SEL5pDgv1g2Q9OjdoBcYwDIEDnuO7cHUEUS1H7oww+HfDhuzVs4Zx+PtGjOSmT5qi3sLZZvt7U7pRNtIyrHQ==} dependencies: - '@nrwl/devkit': 13.3.2 - '@nrwl/jest': 13.3.2 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4 '@phenomnomnominal/tsquery': 4.1.1_typescript@4.2.4 eslint: 8.2.0 glob: 7.1.4 @@ -4510,25 +4436,8 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/tao/13.1.4: - resolution: {integrity: sha512-XslTN56x5Y1sEuVkGoAMCibEU0V5CunOORSewMWsNaEWtefhkLD00R0L02Uj4q1d28H+6TiucjR/mGFjyEzWUQ==} - hasBin: true - dependencies: - chalk: 4.1.0 - enquirer: 2.3.6 - fs-extra: 9.1.0 - jsonc-parser: 3.0.0 - nx: 13.1.4 - rxjs: 6.6.7 - rxjs-for-await: 0.0.2_rxjs@6.6.7 - semver: 7.3.4 - tmp: 0.2.1 - tslib: 2.3.1 - yargs-parser: 20.0.0 - dev: true - - /@nrwl/tao/13.3.2: - resolution: {integrity: sha512-MZfaWVG4+sjD1yahHEAHOeYph/YOmeuhsVPfkw5iGAMDZnOgMzI7pcxH4JqR50weTpwOIVWQxB/eugp1Icuaqg==} + /@nrwl/tao/13.3.4: + resolution: {integrity: sha512-ujwxGZcR3De8FSj8IjVSGmfZ2CQZfFzeV9QXU8DeiZ9J1ylWPwWpMIS3XVxZIpe7gR++XP4jbvFodKFQP7PzVQ==} hasBin: true dependencies: chalk: 4.1.0 @@ -4537,7 +4446,7 @@ packages: fs-extra: 9.1.0 ignore: 5.1.9 jsonc-parser: 3.0.0 - nx: 13.3.2 + nx: 13.3.4 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 semver: 7.3.4 @@ -4546,8 +4455,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.4_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-phAM19omTn3yEb7CY3tW/N/7r4ZBEU0xm8TcvU286Cp6PJGfo22xRGI4FQL6xc5DYrAgvA79tDUC0/RfToRZOw==} dependencies: '@babel/core': 7.16.0 '@babel/plugin-proposal-class-properties': 7.16.0_@babel+core@7.16.0 @@ -4557,11 +4466,11 @@ 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.4_45e5b05f8550ddf8ad44a90a38658752 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4_ts-node@9.1.1 + '@nrwl/linter': 13.3.4_ts-node@9.1.1+typescript@4.2.4 + '@nrwl/workspace': 13.3.4_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 @@ -4611,8 +4520,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 @@ -4635,6 +4544,7 @@ packages: transitivePeerDependencies: - '@swc/core' - '@types/babel__core' + - '@types/react' - '@types/webpack' - acorn - bufferutil @@ -4660,61 +4570,18 @@ packages: - webpack-plugin-serve dev: true - /@nrwl/workspace/13.1.4_e369ab82b1fb00f8171cda4ee1f045dc: - resolution: {integrity: sha512-dQlxswf2XlMyEJBK4+fZHQTpxtevcWzDCVO9iLjuvL1XZDbDQG95+N7DsASq67qOxFAlpYWVxAVZAXIHsnX9tQ==} + /@nrwl/workspace/13.3.4_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-FIBa705KC2LumlfESTRZ54oAVg+a+CMNtI3QULPQVYOMtEJLrYR+D8MDmz3Qchbwx704YO70+hy7FI7dY1rKFQ==} 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 - chalk: 4.1.0 - chokidar: 3.5.2 - cosmiconfig: 4.0.0 - dotenv: 10.0.0 - enquirer: 2.3.6 - flat: 5.0.2 - fs-extra: 9.1.0 - glob: 7.1.4 - ignore: 5.1.9 - 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 - rxjs: 6.6.7 - semver: 7.3.4 - strip-ansi: 6.0.0 - tmp: 0.2.1 - tslib: 2.3.1 - yargs: 15.4.1 - yargs-parser: 20.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - node-notifier - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@nrwl/workspace/13.3.2_42cab1dece2b2240094de84cfd414406: - resolution: {integrity: sha512-c7iuIUaDXRLwixThnqvVBRVVdbGCZu7mKhWLLlfNDvvR0vGx5REpwWlHiA8yLesjL6pjH0GAnNQUA/Wwpz0bhg==} - peerDependencies: - prettier: ^2.3.0 - peerDependenciesMeta: - prettier: - optional: true - dependencies: - '@nrwl/cli': 13.3.2 - '@nrwl/devkit': 13.3.2 - '@nrwl/jest': 13.3.2 - '@nrwl/linter': 13.3.2_typescript@4.2.4 + '@nrwl/cli': 13.3.4 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4 + '@nrwl/linter': 13.3.4_typescript@4.2.4 '@parcel/watcher': 2.0.4 chalk: 4.1.0 chokidar: 3.5.2 @@ -4752,13 +4619,53 @@ packages: - utf-8-validate dev: true - /@parcel/watcher/2.0.0-alpha.11: - resolution: {integrity: sha512-zMIAsFLcnB82kkk0kSOZ/zgyihb8sty0zVrsz+3ruoYXkchymWsCDsxiX4v+X2s8Jppk3JE8vlnD4DKs3QTOEQ==} - engines: {node: '>= 10.0.0'} - requiresBuild: true + /@nrwl/workspace/13.3.4_e77b5b0640b6ec0ecc6c8e0dab0ec669: + resolution: {integrity: sha512-FIBa705KC2LumlfESTRZ54oAVg+a+CMNtI3QULPQVYOMtEJLrYR+D8MDmz3Qchbwx704YO70+hy7FI7dY1rKFQ==} + peerDependencies: + prettier: ^2.3.0 + peerDependenciesMeta: + prettier: + optional: true dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.3.0 + '@nrwl/cli': 13.3.4 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4_ts-node@9.1.1 + '@nrwl/linter': 13.3.4_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 + tmp: 0.2.1 + tslib: 2.3.1 + 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.4: @@ -6386,6 +6293,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: @@ -6594,11 +6525,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: @@ -6709,13 +6635,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 @@ -6881,10 +6800,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==} @@ -8116,11 +8031,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'} @@ -8452,10 +8362,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 @@ -8727,12 +8633,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 @@ -9167,10 +9073,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'} @@ -9506,11 +9408,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: @@ -11310,13 +11207,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 @@ -11383,19 +11273,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'} @@ -11436,11 +11313,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'} @@ -12039,10 +11911,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'} @@ -12374,6 +12242,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'} @@ -12410,6 +12287,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'} @@ -14773,10 +14654,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 @@ -15798,21 +15675,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'} @@ -15940,6 +15802,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==} @@ -16054,23 +15917,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=} @@ -16142,29 +15988,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'} @@ -16184,14 +16007,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: @@ -16269,15 +16084,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: @@ -16299,21 +16105,14 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.3.2 + '@nrwl/cli': 13.3.4 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.3.2 - dev: true - - /nx/13.3.2: - resolution: {integrity: sha512-7zESkiQ5kmzKuT04k5X/osyCNrGYCGjn1KsreQhv2PeClc461U5dGwEHiiPZC80RqAsO6LL4jCx5MLVAE7arJg==} - hasBin: true - dependencies: - '@nrwl/cli': 13.3.2 + '@nrwl/cli': 13.3.4 dev: true /oauth-1.0a/2.2.6: @@ -17310,6 +17109,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} @@ -17322,6 +17130,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} @@ -17332,6 +17152,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} @@ -17342,6 +17172,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: @@ -18752,17 +18592,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: @@ -18780,16 +18610,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: @@ -18857,13 +18689,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 @@ -19183,13 +19008,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'} @@ -19331,12 +19149,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'} @@ -19675,32 +19487,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'} @@ -20031,18 +19817,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'} @@ -20372,12 +20146,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'} @@ -21265,12 +21033,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'} From 76794e374c5e9ba7518a7457d8dc73598b8be5ca Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 12:10:28 -0800 Subject: [PATCH 82/97] Restore babel/polyfill removed by accident --- packages/js/e2e-environment/package.json | 1 + pnpm-lock.yaml | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index a80f2e87028..ebb03adbcbf 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -38,6 +38,7 @@ "devDependencies": { "@babel/cli": "7.12.8", "@babel/core": "7.12.9", + "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", "@wordpress/eslint-plugin": "7.3.0", "eslint": "^8.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b51d92dcd9..0a11916f632 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,6 +113,7 @@ importers: '@automattic/puppeteer-utils': github:Automattic/puppeteer-utils#0f3ec50 '@babel/cli': 7.12.8 '@babel/core': 7.12.9 + '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@jest/test-sequencer': ^25.5.4 '@slack/web-api': ^6.1.0 @@ -148,6 +149,7 @@ 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 '@wordpress/eslint-plugin': 7.3.0_eslint@8.1.0+typescript@4.2.4 eslint: 8.1.0 @@ -3055,6 +3057,14 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.0 '@babel/helper-plugin-utils': 7.14.5 + /@babel/polyfill/7.12.1: + resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} + deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information. + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.13.9 + dev: true + /@babel/preset-env/7.12.7_@babel+core@7.12.9: resolution: {integrity: sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==} peerDependencies: From 47e39bcafc19a152a3924d0a3d089f71213b03ed Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 14 Dec 2021 12:22:50 -0800 Subject: [PATCH 83/97] Restore eslint dep --- plugins/woocommerce/.eslintrc.js | 2 +- plugins/woocommerce/legacy/.eslintrc.js | 2 +- plugins/woocommerce/package.json | 2 +- pnpm-lock.yaml | 160 ++++++------------------ 4 files changed, 42 insertions(+), 124 deletions(-) diff --git a/plugins/woocommerce/.eslintrc.js b/plugins/woocommerce/.eslintrc.js index ec10e6f3e08..03f9124652e 100644 --- a/plugins/woocommerce/.eslintrc.js +++ b/plugins/woocommerce/.eslintrc.js @@ -18,7 +18,7 @@ module.exports = { 'max-len': [ 2, { code: 140 } ], 'no-console': 1, }, - parser: '@babel/eslint-parser', + parser: 'babel-eslint', parserOptions: { ecmaVersion: 8, ecmaFeatures: { diff --git a/plugins/woocommerce/legacy/.eslintrc.js b/plugins/woocommerce/legacy/.eslintrc.js index 772c5252e15..7c90a4dbbb8 100644 --- a/plugins/woocommerce/legacy/.eslintrc.js +++ b/plugins/woocommerce/legacy/.eslintrc.js @@ -19,7 +19,7 @@ module.exports = { 'max-len': [ 2, { 'code': 140 } ], 'no-console': 1 }, - parser: '@babel/eslint-parser', + parser: 'babel-eslint', parserOptions: { ecmaVersion: 8, ecmaFeatures: { diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 0702a13dd2f..d6130d2ae78 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/eslint-parser": "^7.16.5", + "babel-eslint": "10.1.0", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", "@typescript-eslint/eslint-plugin": "3.10.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a11916f632..a88d4cfa7c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -184,7 +184,6 @@ importers: specifiers: '@babel/cli': 7.12.8 '@babel/core': 7.12.9 - '@babel/eslint-parser': ^7.16.5 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 '@typescript-eslint/eslint-plugin': 3.10.1 @@ -201,6 +200,7 @@ importers: '@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 @@ -224,7 +224,6 @@ importers: devDependencies: '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 - '@babel/eslint-parser': 7.16.5_@babel+core@7.12.9+eslint@6.8.0 '@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 @@ -241,6 +240,7 @@ importers: '@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 chai-as-promised: 7.1.1_chai@4.2.0 config: 3.3.3 @@ -367,6 +367,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.16.0 + dev: true /@babel/code-frame/7.16.0: resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} @@ -415,9 +416,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 @@ -451,20 +452,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser/7.16.5_@babel+core@7.12.9+eslint@6.8.0: - resolution: {integrity: sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': '>=7.11.0' - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.12.9 - eslint: 6.8.0 - eslint-scope: 5.1.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - /@babel/generator/7.16.0: resolution: {integrity: sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==} engines: {node: '>=6.9.0'} @@ -547,11 +534,11 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@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 + '@babel/helper-split-export-declaration': 7.16.0 transitivePeerDependencies: - supports-color dev: true @@ -564,11 +551,11 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@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 + '@babel/helper-split-export-declaration': 7.16.0 transitivePeerDependencies: - supports-color dev: true @@ -664,7 +651,7 @@ packages: '@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 + '@babel/traverse': 7.16.3 debug: 4.3.2 lodash.debounce: 4.0.8 resolve: 1.20.0 @@ -703,15 +690,6 @@ packages: 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'} @@ -726,13 +704,6 @@ 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'} @@ -743,7 +714,7 @@ packages: resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 dev: true /@babel/helper-member-expression-to-functions/7.16.0: @@ -775,7 +746,7 @@ 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 @@ -800,7 +771,7 @@ packages: resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.16.0 dev: true /@babel/helper-optimise-call-expression/7.16.0: @@ -840,7 +811,7 @@ packages: dependencies: '@babel/helper-member-expression-to-functions': 7.16.0 '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/traverse': 7.16.0 + '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color @@ -883,13 +854,6 @@ packages: 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'} @@ -910,7 +874,7 @@ packages: dependencies: '@babel/helper-function-name': 7.16.0 '@babel/template': 7.16.0 - '@babel/traverse': 7.16.0 + '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color @@ -932,7 +896,7 @@ 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 @@ -956,18 +920,6 @@ 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==} engines: {node: '>=6.0.0'} @@ -2077,11 +2029,11 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@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-split-export-declaration': 7.16.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2095,11 +2047,11 @@ packages: dependencies: '@babel/core': 7.15.8 '@babel/helper-annotate-as-pure': 7.15.4 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@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-split-export-declaration': 7.16.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2309,7 +2261,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-function-name': 7.15.4 + '@babel/helper-function-name': 7.16.0 '@babel/helper-plugin-utils': 7.14.5 dev: true @@ -2320,7 +2272,7 @@ packages: '@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 @@ -2484,7 +2436,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-hoist-variables': 7.15.4 + '@babel/helper-hoist-variables': 7.16.0 '@babel/helper-module-transforms': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-identifier': 7.15.7 @@ -2500,7 +2452,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.15.8 - '@babel/helper-hoist-variables': 7.15.4 + '@babel/helper-hoist-variables': 7.16.0 '@babel/helper-module-transforms': 7.15.8 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-identifier': 7.15.7 @@ -3318,7 +3270,7 @@ packages: '@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 + '@babel/types': 7.16.0 esutils: 2.0.3 dev: true @@ -3331,7 +3283,7 @@ packages: '@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/types': 7.16.0 esutils: 2.0.3 dev: true @@ -3401,40 +3353,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'} - 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.3: resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==} engines: {node: '>=6.9.0'} @@ -6952,10 +6870,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 @@ -6970,10 +6888,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 @@ -6988,10 +6906,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: 8.1.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 @@ -13955,7 +13873,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 From eb453cce20d524b59b772383f2d181a05ca6602e Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 15 Dec 2021 14:14:17 +1300 Subject: [PATCH 84/97] Add NX commands for Jetpack Changelogger (#31166) --- package.json | 1 + packages/js/api-core-tests/project.json | 65 ++-- packages/js/api/project.json | 89 +++-- packages/js/e2e-core-tests/project.json | 15 +- packages/js/e2e-environment/project.json | 161 ++++---- packages/js/e2e-utils/project.json | 77 ++-- plugins/woocommerce/project.json | 309 +++++++-------- pnpm-lock.yaml | 417 +++++++++++++++++---- tools/executors/changelogger/executor.json | 9 + tools/executors/changelogger/impl.js | 115 ++++++ tools/executors/changelogger/impl.ts | 96 +++++ tools/executors/changelogger/package.json | 3 + tools/executors/changelogger/schema.json | 13 + 13 files changed, 951 insertions(+), 419 deletions(-) create mode 100644 tools/executors/changelogger/executor.json create mode 100644 tools/executors/changelogger/impl.js create mode 100644 tools/executors/changelogger/impl.ts create mode 100644 tools/executors/changelogger/package.json create mode 100644 tools/executors/changelogger/schema.json diff --git a/package.json b/package.json index 8591d1464ec..ac6dcf1f83f 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@automattic/nx-composer": "^0.1.0", "@nrwl/cli": "latest", "@nrwl/linter": "^13.1.4", + "@nrwl/devkit": "^13.1.4", "@nrwl/tao": "latest", "@nrwl/web": "^13.1.4", "@nrwl/workspace": "latest", 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/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/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/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-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/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/pnpm-lock.yaml b/pnpm-lock.yaml index 183937402f8..0a616bd13aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,7 @@ importers: '@automattic/nx-composer': ^0.1.0 '@babel/core': 7.12.9 '@nrwl/cli': latest + '@nrwl/devkit': ^13.1.4 '@nrwl/linter': ^13.1.4 '@nrwl/tao': latest '@nrwl/web': ^13.1.4 @@ -34,11 +35,12 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.3.4 + '@nrwl/devkit': 13.1.4 '@nrwl/linter': 13.1.4 - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.4 '@nrwl/web': 13.1.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.2.3_wp-prettier@2.2.1-beta-1 + '@nrwl/workspace': 13.3.4_42cab1dece2b2240094de84cfd414406 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': 1.3.0 '@wordpress/prettier-config': 1.1.1 @@ -381,7 +383,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==} @@ -431,7 +432,6 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: true /@babel/core/7.16.0: resolution: {integrity: sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==} @@ -515,7 +515,6 @@ packages: '@babel/helper-validator-option': 7.14.5 browserslist: 4.17.6 semver: 6.3.0 - dev: true /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.0: resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} @@ -747,7 +746,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==} @@ -769,7 +767,6 @@ packages: '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-module-transforms/7.16.0: resolution: {integrity: sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==} @@ -852,7 +849,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==} @@ -926,7 +922,6 @@ packages: '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helpers/7.16.3: resolution: {integrity: sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==} @@ -956,7 +951,6 @@ packages: 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==} @@ -1529,7 +1523,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==} @@ -1548,6 +1541,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: @@ -1555,6 +1556,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==} @@ -1571,7 +1573,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==} @@ -1671,6 +1672,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: @@ -1678,6 +1687,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==} @@ -1694,7 +1704,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==} @@ -1739,7 +1748,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==} @@ -1764,7 +1772,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==} @@ -1789,7 +1796,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==} @@ -1814,7 +1820,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==} @@ -1839,7 +1844,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==} @@ -1864,7 +1868,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==} @@ -3423,7 +3426,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/traverse/7.16.3: resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==} @@ -3915,11 +3917,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 @@ -4140,9 +4142,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 @@ -4271,11 +4273,23 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cli/13.2.3: - resolution: {integrity: sha512-4hrOYQ9MqhWOdjQTwuQqHTfPu8lYgdFCE39PVWAcePtoi67mUeba54HkyT6nkTHI1TbO7q8Kf+R73dRhhxDlpA==} + /@nrwl/cli/13.2.4: + resolution: {integrity: sha512-2PxQ7iNghvrDk7O7nPt8ySOi4BPUL/oTQajd4tcsytfWonMrsb5f7wMpwoP5UAoKhcpWyiiFENylizOzEQoQdg==} hasBin: true dependencies: - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.2.4 + chalk: 4.1.0 + enquirer: 2.3.6 + v8-compile-cache: 2.3.0 + yargs: 15.4.1 + yargs-parser: 20.0.0 + dev: true + + /@nrwl/cli/13.3.4: + resolution: {integrity: sha512-x3IM9X/q5Yv54ZSr+GsIxa07GJt+hG7dOdjvAFBnixMWb3o4utOVrd6GusDrn2t0HhnCuzqLosFnk+gcOrL34w==} + hasBin: true + dependencies: + '@nrwl/tao': 13.3.4 chalk: 4.1.0 enquirer: 2.3.6 v8-compile-cache: 2.3.0 @@ -4342,10 +4356,10 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.2.3: - resolution: {integrity: sha512-/cp8hFclOXSAjj9pwb6bOU8yw593HfelcCBi8o8Jhb0Luhn1RzLCOpmHNsOf2hWzSUPEr0BuI0R55ubCEB+k6A==} + /@nrwl/devkit/13.3.4: + resolution: {integrity: sha512-fmYScbZYJWCdjRsi1kFq+c5HotdJx4k3TofZ7Bm+OdI3CWsFtjdLajhNMDWDPw2vIRLIZPtZUAyVTkwajR7yJw==} dependencies: - '@nrwl/tao': 13.2.3 + '@nrwl/tao': 13.3.4 ejs: 3.1.6 ignore: 5.1.9 rxjs: 6.6.7 @@ -4397,12 +4411,12 @@ packages: - utf-8-validate dev: true - /@nrwl/jest/13.2.3: - resolution: {integrity: sha512-M9/x0uZNSVKkcyNHcA2+Muj23KRo9SDiCsTb7HnkHhtSbhIWMd1knKP45bOr8CjeeiKNPeervx7uiN5516z8JA==} + /@nrwl/jest/13.3.4: + resolution: {integrity: sha512-seeuHHZVRDdugUoEI+JQsHG7q/7BOoJOeb7djR9TIwPRd8Tj5nBVO6dzOq3pMdvsgYmNkiVMFwIqMWXy6rNvaQ==} dependencies: '@jest/reporters': 27.2.2 '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.2.3 + '@nrwl/devkit': 13.3.4 chalk: 4.1.0 identity-obj-proxy: 3.0.0 jest-config: 27.2.2 @@ -4458,12 +4472,13 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.2.3: - resolution: {integrity: sha512-kdzPWYzR96XYghJ5yIaYSybDrtcAcSxgcscwP1UWvME19O2W8DHbhIj3AzBgjSG0X6hBEh6k9kpyQ49jNkUMCw==} + /@nrwl/linter/13.3.4_typescript@4.2.4: + resolution: {integrity: sha512-p3SEL5pDgv1g2Q9OjdoBcYwDIEDnuO7cHUEUS1H7oww+HfDhuzVs4Zx+PtGjOSmT5qi3sLZZvt7U7pRNtIyrHQ==} dependencies: - '@nrwl/devkit': 13.2.3 - '@nrwl/jest': 13.2.3 - eslint: 7.32.0 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4 + '@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 @@ -4474,6 +4489,7 @@ packages: - node-notifier - supports-color - ts-node + - typescript - utf-8-validate dev: true @@ -4511,15 +4527,34 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/tao/13.2.3: - resolution: {integrity: sha512-vn+GqvFVinqAXzvbHznPBtCg9OCfirh3hF68sZgY2C6jZ3m47XwST3mLTRSDTtSDy9QfUrSZ6p4uAk2Iht0yBQ==} + /@nrwl/tao/13.2.4: + resolution: {integrity: sha512-iYzv+JiWMZOLwtunOzHFVMuYW9iiICkjau94mlLHHDqsa6RgMx4qcXoZyVM78N9hlkc2yNvA+XVYFsoFsFWrpg==} hasBin: true dependencies: chalk: 4.1.0 enquirer: 2.3.6 fs-extra: 9.1.0 jsonc-parser: 3.0.0 - nx: 13.2.3 + nx: 13.2.4 + rxjs: 6.6.7 + rxjs-for-await: 0.0.2_rxjs@6.6.7 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs-parser: 20.0.0 + dev: true + + /@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.3.4 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 semver: 7.3.4 @@ -4685,33 +4720,37 @@ packages: - 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.4_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-FIBa705KC2LumlfESTRZ54oAVg+a+CMNtI3QULPQVYOMtEJLrYR+D8MDmz3Qchbwx704YO70+hy7FI7dY1rKFQ==} 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.4 + '@nrwl/devkit': 13.3.4 + '@nrwl/jest': 13.3.4 + '@nrwl/linter': 13.3.4_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 @@ -4720,11 +4759,13 @@ 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 @@ -4737,6 +4778,24 @@ packages: node-gyp-build: 4.3.0 dev: true + /@parcel/watcher/2.0.4: + resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + 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'} @@ -5274,6 +5333,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} @@ -6877,6 +6940,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} @@ -7073,18 +7141,18 @@ packages: - supports-color dev: false - /babel-jest/25.5.1_@babel+core@7.16.0: + /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.16.0 + '@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.16.0 + babel-preset-jest: 25.5.0_@babel+core@7.15.8 chalk: 3.0.0 graceful-fs: 4.2.8 slash: 3.0.0 @@ -7161,6 +7229,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'} @@ -7304,23 +7384,23 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 dev: false - /babel-preset-current-node-syntax/0.1.4_@babel+core@7.16.0: + /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.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/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.16.0: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} @@ -7364,15 +7444,15 @@ packages: babel-preset-current-node-syntax: 0.1.4_@babel+core@7.12.9 dev: false - /babel-preset-jest/25.5.0_@babel+core@7.16.0: + /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.16.0 + '@babel/core': 7.15.8 babel-plugin-jest-hoist: 25.5.0 - babel-preset-current-node-syntax: 0.1.4_@babel+core@7.16.0 + babel-preset-current-node-syntax: 0.1.4_@babel+core@7.15.8 /babel-preset-jest/27.2.0_@babel+core@7.16.0: resolution: {integrity: sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==} @@ -7671,7 +7751,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==} @@ -7869,7 +7948,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==} @@ -8122,6 +8200,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'} @@ -8135,6 +8218,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'} @@ -8143,6 +8231,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 @@ -8204,6 +8300,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'} @@ -8405,6 +8508,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 @@ -9331,7 +9439,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==} @@ -12422,6 +12529,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'} @@ -13006,6 +13164,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'} @@ -13115,6 +13277,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'} @@ -13124,6 +13296,7 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true /istanbul-reports/1.5.1: resolution: {integrity: sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==} @@ -13138,12 +13311,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=} @@ -13352,10 +13533,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 @@ -13738,7 +13919,7 @@ 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 @@ -13791,7 +13972,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 @@ -15344,6 +15525,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: @@ -16167,21 +16353,28 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.2.4 dev: true /nx/13.1.4: resolution: {integrity: sha512-m2j3wymaFlEl/7EoGxlgRzdmgQV1Rsh42df1cM8xFzAzV8ZGtR3Zq19qK7r9SUabpq8jMzp1e6rLQTHewCJWig==} 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.2.4: + resolution: {integrity: sha512-/ZQRSKl1582CvntOT9cqItIu9vqGp1DnKuYgLClxpqkhk7GzIHWE9mtm56qT3o8NvBjZXyf+IZcxBwPgjd49NQ==} hasBin: true dependencies: - '@nrwl/cli': 13.2.3 + '@nrwl/cli': 13.2.4 + dev: true + + /nx/13.3.4: + resolution: {integrity: sha512-prWCa/8jKBWUiCWhAbRD3UftTvaD8MgUo98g557/EpPaC9LHPPWNOhXDyij21sedouyDVdQGhr8TW4pEHt2zeQ==} + hasBin: true + dependencies: + '@nrwl/cli': 13.3.4 dev: true /oauth-1.0a/2.2.6: @@ -16655,6 +16848,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 @@ -17958,6 +18156,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: @@ -17983,6 +18191,18 @@ 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'} @@ -18005,7 +18225,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=} @@ -18662,7 +18881,6 @@ packages: 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==} @@ -18927,6 +19145,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'} @@ -20351,6 +20578,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'} @@ -20747,6 +20979,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: @@ -21107,6 +21344,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 @@ -21398,6 +21642,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" ] +} From 21f0a4e618d0db2817f5c43c7c840c8c1c0e18b7 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 15 Dec 2021 11:38:06 +0800 Subject: [PATCH 85/97] Bump WCA version to 2.9.3 --- plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 7ea71a550b8..80b4dacdb37 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-admin": "2.9.2", + "woocommerce/woocommerce-admin": "2.9.3", "woocommerce/woocommerce-blocks": "6.3.3" }, "require-dev": { diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index beee6701951..7bc30dc2a45 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": "688f13d253b2879a5f0181eb7fbf0e38", + "content-hash": "8c4f8b290830d85dce9e69de46ca72ce", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -543,16 +543,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.9.2", + "version": "2.9.3", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "0533358c160f58272d02ae1962e267a546a5c26c" + "reference": "0c4f1e637ad03178999ff53ae930b8258ca95962" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0533358c160f58272d02ae1962e267a546a5c26c", - "reference": "0533358c160f58272d02ae1962e267a546a5c26c", + "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0c4f1e637ad03178999ff53ae930b8258ca95962", + "reference": "0c4f1e637ad03178999ff53ae930b8258ca95962", "shasum": "" }, "require": { @@ -608,9 +608,9 @@ "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.2" + "source": "https://github.com/woocommerce/woocommerce-admin/tree/v2.9.3" }, - "time": "2021-12-13T23:49:48+00:00" + "time": "2021-12-15T03:02:58+00:00" }, { "name": "woocommerce/woocommerce-blocks", From 8c98b437dafc5db126cf30e70b7f8dbc03a62292 Mon Sep 17 00:00:00 2001 From: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com> Date: Wed, 15 Dec 2021 22:49:15 +0800 Subject: [PATCH 86/97] Bump Woo Admin to 2.9.4 --- plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 80b4dacdb37..fe15e596ba6 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-admin": "2.9.3", + "woocommerce/woocommerce-admin": "2.9.4", "woocommerce/woocommerce-blocks": "6.3.3" }, "require-dev": { diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index 7bc30dc2a45..f41dd8f031e 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": "8c4f8b290830d85dce9e69de46ca72ce", + "content-hash": "d12a5b11e3d6dc2ac228efa1cd5efadc", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -543,16 +543,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.9.3", + "version": "2.9.4", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "0c4f1e637ad03178999ff53ae930b8258ca95962" + "reference": "0cc85981f2def42e604118c7f5032e2750056763" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0c4f1e637ad03178999ff53ae930b8258ca95962", - "reference": "0c4f1e637ad03178999ff53ae930b8258ca95962", + "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0cc85981f2def42e604118c7f5032e2750056763", + "reference": "0cc85981f2def42e604118c7f5032e2750056763", "shasum": "" }, "require": { @@ -608,9 +608,9 @@ "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.3" + "source": "https://github.com/woocommerce/woocommerce-admin/tree/v2.9.4" }, - "time": "2021-12-15T03:02:58+00:00" + "time": "2021-12-15T14:33:43+00:00" }, { "name": "woocommerce/woocommerce-blocks", @@ -2926,5 +2926,5 @@ "platform-overrides": { "php": "7.0.33" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.0.0" } From 0f369d70403ce1534475951e4589479afff467b7 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 15 Dec 2021 07:08:37 -0800 Subject: [PATCH 87/97] Update package and node version --- .nvmrc | 2 +- packages/js/e2e-environment/package.json | 2 +- plugins/woocommerce/legacy/package.json | 4 +- plugins/woocommerce/package.json | 6 +- pnpm-lock.yaml | 2282 +++++++--------------- 5 files changed, 709 insertions(+), 1587 deletions(-) diff --git a/.nvmrc b/.nvmrc index dae199aecb1..6f7f377bf51 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v12 +v16 diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index ebb03adbcbf..95e9ca63c16 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -26,7 +26,7 @@ "@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", diff --git a/plugins/woocommerce/legacy/package.json b/plugins/woocommerce/legacy/package.json index 8e3d83a635a..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", @@ -25,7 +26,6 @@ "grunt-stylelint": "0.16.0", "gruntify-eslint": "5.0.0", "sass": "^1.45.0", - "stylelint": "13.8.0", - "@wordpress/stylelint-config": "19.1.0" + "stylelint": "13.8.0" } } diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index d6130d2ae78..6ec8be94d33 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -48,6 +48,7 @@ "@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", "chai": "4.2.0", "chai-as-promised": "7.1.1", @@ -65,15 +66,14 @@ "mocha": "7.2.0", "prettier": "npm:wp-prettier@2.0.5", "stylelint": "^13.8.0", - "@wordpress/stylelint-config": "19.1.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/pnpm-lock.yaml b/pnpm-lock.yaml index a88d4cfa7c1..4062135e816 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,11 +34,11 @@ importers: wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 - '@nrwl/cli': 13.3.4 - '@nrwl/linter': 13.3.4_typescript@4.2.4 + '@nrwl/cli': 13.3.5 + '@nrwl/linter': 13.3.5_typescript@4.2.4 '@nrwl/tao': 13.3.4 - '@nrwl/web': 13.3.4_42cab1dece2b2240094de84cfd414406 - '@nrwl/workspace': 13.3.4_42cab1dece2b2240094de84cfd414406 + '@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,7 +120,7 @@ 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 @@ -135,10 +135,10 @@ importers: 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 @@ -151,8 +151,8 @@ importers: '@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 @@ -362,13 +362,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 - dev: true - /@babel/code-frame/7.16.0: resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} engines: {node: '>=6.9.0'} @@ -378,7 +371,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==} @@ -428,7 +420,6 @@ packages: source-map: 0.5.7 transitivePeerDependencies: - supports-color - dev: true /@babel/core/7.16.0: resolution: {integrity: sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==} @@ -460,27 +451,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'} @@ -488,19 +464,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'} @@ -512,6 +475,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: @@ -526,40 +501,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.16.0 - '@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.16.0 - 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.16.0 - '@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.16.0 - 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'} @@ -577,23 +518,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'} @@ -610,25 +534,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 @@ -642,24 +555,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.3 - 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: @@ -677,13 +572,6 @@ 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'} @@ -710,13 +598,6 @@ packages: 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.16.0 - dev: true - /@babel/helper-member-expression-to-functions/7.16.0: resolution: {integrity: sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==} engines: {node: '>=6.9.0'} @@ -728,7 +609,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==} @@ -750,7 +630,6 @@ packages: '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-module-transforms/7.16.0: resolution: {integrity: sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==} @@ -767,13 +646,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.16.0 - dev: true - /@babel/helper-optimise-call-expression/7.16.0: resolution: {integrity: sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==} engines: {node: '>=6.9.0'} @@ -784,17 +656,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'} @@ -805,18 +666,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.3 - '@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'} @@ -833,7 +682,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==} @@ -841,13 +689,6 @@ 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'} @@ -868,18 +709,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.3 - '@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'} @@ -900,7 +729,6 @@ packages: '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helpers/7.16.3: resolution: {integrity: sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==} @@ -920,6 +748,11 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/parser/7.16.2: + resolution: {integrity: sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==} + engines: {node: '>=6.0.0'} + hasBin: true + /@babel/parser/7.16.4: resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==} engines: {node: '>=6.0.0'} @@ -934,18 +767,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'} @@ -957,34 +778,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'} @@ -998,8 +805,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 @@ -1011,19 +818,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'} @@ -1036,20 +830,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'} @@ -1077,8 +857,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 @@ -1088,17 +868,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'} @@ -1109,8 +878,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 @@ -1120,17 +889,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'} @@ -1141,8 +899,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 @@ -1152,17 +910,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'} @@ -1173,8 +920,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 @@ -1184,17 +931,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'} @@ -1205,8 +941,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 @@ -1216,17 +952,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'} @@ -1237,8 +962,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 @@ -1248,17 +973,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'} @@ -1269,32 +983,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: @@ -1310,8 +1010,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 @@ -1321,17 +1021,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'} @@ -1342,30 +1031,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'} @@ -1377,27 +1054,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 @@ -1415,21 +1079,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'} @@ -1444,25 +1093,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 @@ -1491,7 +1129,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==} @@ -1510,6 +1147,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: @@ -1517,6 +1162,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==} @@ -1533,7 +1179,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==} @@ -1543,16 +1188,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'} @@ -1581,15 +1216,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: @@ -1607,15 +1233,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: @@ -1633,6 +1250,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: @@ -1640,6 +1265,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==} @@ -1656,7 +1282,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==} @@ -1666,16 +1291,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'} @@ -1684,7 +1299,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==} @@ -1701,7 +1315,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==} @@ -1726,7 +1339,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==} @@ -1751,7 +1363,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==} @@ -1776,7 +1387,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==} @@ -1801,7 +1411,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==} @@ -1826,7 +1435,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==} @@ -1836,16 +1444,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'} @@ -1863,17 +1461,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==} @@ -1893,8 +1480,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 @@ -1903,16 +1490,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'} @@ -1922,30 +1499,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 @@ -1963,8 +1526,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 @@ -1973,16 +1536,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'} @@ -1992,8 +1545,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 @@ -2002,16 +1555,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'} @@ -2021,36 +1564,18 @@ 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-annotate-as-pure': 7.16.0 '@babel/helper-function-name': 7.16.0 - '@babel/helper-optimise-call-expression': 7.15.4 + '@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.16.0 - 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.16.0 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.15.4 + '@babel/helper-replace-supers': 7.16.0 '@babel/helper-split-export-declaration': 7.16.0 globals: 11.12.0 transitivePeerDependencies: @@ -2074,8 +1599,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 @@ -2084,16 +1609,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'} @@ -2103,8 +1618,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 @@ -2113,16 +1628,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'} @@ -2132,25 +1637,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 @@ -2164,8 +1658,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 @@ -2174,16 +1668,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'} @@ -2193,25 +1677,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 @@ -2225,8 +1698,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 @@ -2235,16 +1708,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'} @@ -2254,8 +1717,8 @@ 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 @@ -2265,17 +1728,6 @@ packages: '@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.16.0 - '@babel/helper-plugin-utils': 7.14.5 - dev: true - /@babel/plugin-transform-function-name/7.16.0_@babel+core@7.16.0: resolution: {integrity: sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==} engines: {node: '>=6.9.0'} @@ -2286,8 +1738,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 @@ -2296,16 +1748,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'} @@ -2315,8 +1757,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 @@ -2325,16 +1767,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'} @@ -2344,28 +1776,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: @@ -2385,31 +1803,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 @@ -2429,31 +1832,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.16.0 - '@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.16.0 - '@babel/helper-module-transforms': 7.15.8 + '@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 @@ -2476,27 +1863,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 @@ -2514,24 +1888,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: @@ -2543,8 +1907,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 @@ -2553,16 +1917,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'} @@ -2572,28 +1926,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 @@ -2610,8 +1951,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 @@ -2620,16 +1961,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'} @@ -2639,8 +1970,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 @@ -2649,16 +1980,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'} @@ -2668,20 +1989,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'} @@ -2694,10 +2001,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 @@ -2706,16 +2012,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'} @@ -2725,8 +2021,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 @@ -2735,16 +2031,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'} @@ -2754,23 +2040,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'} @@ -2787,8 +2056,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 @@ -2797,16 +2066,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'} @@ -2816,26 +2075,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: @@ -2848,8 +2096,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 @@ -2858,16 +2106,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'} @@ -2877,8 +2115,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 @@ -2887,16 +2125,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'} @@ -2906,8 +2134,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 @@ -2916,16 +2144,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'} @@ -2948,8 +2166,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 @@ -2958,16 +2176,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'} @@ -2977,25 +2185,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 @@ -3022,25 +2219,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 @@ -3053,126 +2250,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 @@ -3261,28 +2374,15 @@ 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.16.0 - 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/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 @@ -3338,6 +2438,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==} @@ -3353,6 +2454,22 @@ packages: '@babel/parser': 7.16.4 '@babel/types': 7.16.0 + /@babel/traverse/7.16.0: + resolution: {integrity: sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==} + 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 + /@babel/traverse/7.16.3: resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==} engines: {node: '>=6.9.0'} @@ -3369,14 +2486,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'} @@ -3843,11 +2952,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 @@ -4068,9 +3177,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 @@ -4087,6 +3196,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} @@ -4199,18 +3331,30 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cypress/13.3.4_45e5b05f8550ddf8ad44a90a38658752: - resolution: {integrity: sha512-Ejir7rKGTlNeo9DyU1+LP7rnM9Q3YB6cDioFqVYk/l4IWBDrniPKjCgIqYolypmbm3v7BAEnKqp4gFWE3jadoQ==} + /@nrwl/cli/13.3.5: + resolution: {integrity: sha512-Cpa/DnsgcE7mLNOPXQbbN4wXBalvEi1TF+sPvTpGaRpy5FxEg6kTQ0C4oKiOGX97YkR1uy0OGVPpw2IKGzG2Ig==} + hasBin: true + dependencies: + '@nrwl/tao': 13.3.5 + chalk: 4.1.0 + enquirer: 2.3.6 + v8-compile-cache: 2.3.0 + yargs: 15.4.1 + yargs-parser: 20.0.0 + dev: true + + /@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.3.4 - '@nrwl/linter': 13.3.4_ts-node@9.1.1+typescript@4.2.4 - '@nrwl/workspace': 13.3.4_e77b5b0640b6ec0ecc6c8e0dab0ec669 + '@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 @@ -4248,10 +3392,10 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/devkit/13.3.4: - resolution: {integrity: sha512-fmYScbZYJWCdjRsi1kFq+c5HotdJx4k3TofZ7Bm+OdI3CWsFtjdLajhNMDWDPw2vIRLIZPtZUAyVTkwajR7yJw==} + /@nrwl/devkit/13.3.5: + resolution: {integrity: sha512-QqCP81T1PmAQdVyX5roQwNMMkyp+Pqe79WU4r/Uln0DAEzb9BcTQE61TDgNIcdvMq7Ng6uxGWRnhK8XbdLNVtw==} dependencies: - '@nrwl/tao': 13.3.4 + '@nrwl/tao': 13.3.5 ejs: 3.1.6 ignore: 5.1.9 rxjs: 6.6.7 @@ -4259,12 +3403,12 @@ packages: tslib: 2.3.1 dev: true - /@nrwl/jest/13.3.4: - resolution: {integrity: sha512-seeuHHZVRDdugUoEI+JQsHG7q/7BOoJOeb7djR9TIwPRd8Tj5nBVO6dzOq3pMdvsgYmNkiVMFwIqMWXy6rNvaQ==} + /@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.3.4 + '@nrwl/devkit': 13.3.5 chalk: 4.1.0 identity-obj-proxy: 3.0.0 jest-config: 27.2.2 @@ -4282,12 +3426,12 @@ packages: - utf-8-validate dev: true - /@nrwl/jest/13.3.4_ts-node@9.1.1: - resolution: {integrity: sha512-seeuHHZVRDdugUoEI+JQsHG7q/7BOoJOeb7djR9TIwPRd8Tj5nBVO6dzOq3pMdvsgYmNkiVMFwIqMWXy6rNvaQ==} + /@nrwl/jest/13.3.5_ts-node@9.1.1: + resolution: {integrity: sha512-psSpkw+ZzasVnHlJuoTuEDKvQ1O+ad7ND2a6ZSSJVPqxcB/sapikXJZjwKIYdGvl4LLQdfNAV1ioXSVP3Jl4sg==} dependencies: '@jest/reporters': 27.2.2 '@jest/test-result': 27.2.2 - '@nrwl/devkit': 13.3.4 + '@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 @@ -4305,11 +3449,32 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.3.4_ts-node@9.1.1+typescript@4.2.4: - resolution: {integrity: sha512-p3SEL5pDgv1g2Q9OjdoBcYwDIEDnuO7cHUEUS1H7oww+HfDhuzVs4Zx+PtGjOSmT5qi3sLZZvt7U7pRNtIyrHQ==} + /@nrwl/js/13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669: + resolution: {integrity: sha512-XqRvZbyBC4BAlG4V2QNjXb7t8PNgfuWs8km+/S82AYJebRdf17lR+ARm+qghVIc61fZThYSTu2Be2zDdzn8YZA==} dependencies: - '@nrwl/devkit': 13.3.4 - '@nrwl/jest': 13.3.4_ts-node@9.1.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.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.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 @@ -4326,11 +3491,11 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/13.3.4_typescript@4.2.4: - resolution: {integrity: sha512-p3SEL5pDgv1g2Q9OjdoBcYwDIEDnuO7cHUEUS1H7oww+HfDhuzVs4Zx+PtGjOSmT5qi3sLZZvt7U7pRNtIyrHQ==} + /@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.4 - '@nrwl/jest': 13.3.4 + '@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 @@ -4383,8 +3548,27 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/web/13.3.4_42cab1dece2b2240094de84cfd414406: - resolution: {integrity: sha512-phAM19omTn3yEb7CY3tW/N/7r4ZBEU0xm8TcvU286Cp6PJGfo22xRGI4FQL6xc5DYrAgvA79tDUC0/RfToRZOw==} + /@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.3.5 + rxjs: 6.6.7 + rxjs-for-await: 0.0.2_rxjs@6.6.7 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.3.1 + yargs-parser: 20.0.0 + dev: true + + /@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 @@ -4394,11 +3578,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.3.4_45e5b05f8550ddf8ad44a90a38658752 - '@nrwl/devkit': 13.3.4 - '@nrwl/jest': 13.3.4_ts-node@9.1.1 - '@nrwl/linter': 13.3.4_ts-node@9.1.1+typescript@4.2.4 - '@nrwl/workspace': 13.3.4_e77b5b0640b6ec0ecc6c8e0dab0ec669 + '@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 @@ -4498,18 +3683,18 @@ packages: - webpack-plugin-serve dev: true - /@nrwl/workspace/13.3.4_42cab1dece2b2240094de84cfd414406: - resolution: {integrity: sha512-FIBa705KC2LumlfESTRZ54oAVg+a+CMNtI3QULPQVYOMtEJLrYR+D8MDmz3Qchbwx704YO70+hy7FI7dY1rKFQ==} + /@nrwl/workspace/13.3.5_42cab1dece2b2240094de84cfd414406: + resolution: {integrity: sha512-2SU0uiplM0A7oxejDCsXftJkELyi00FYTIPq19oD+uVLUblWo2THIks9Zst7mjw1FMYu4PsCTLQAO2qpDnRmUA==} peerDependencies: prettier: ^2.3.0 peerDependenciesMeta: prettier: optional: true dependencies: - '@nrwl/cli': 13.3.4 - '@nrwl/devkit': 13.3.4 - '@nrwl/jest': 13.3.4 - '@nrwl/linter': 13.3.4_typescript@4.2.4 + '@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 @@ -4547,18 +3732,18 @@ packages: - utf-8-validate dev: true - /@nrwl/workspace/13.3.4_e77b5b0640b6ec0ecc6c8e0dab0ec669: - resolution: {integrity: sha512-FIBa705KC2LumlfESTRZ54oAVg+a+CMNtI3QULPQVYOMtEJLrYR+D8MDmz3Qchbwx704YO70+hy7FI7dY1rKFQ==} + /@nrwl/workspace/13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669: + resolution: {integrity: sha512-2SU0uiplM0A7oxejDCsXftJkELyi00FYTIPq19oD+uVLUblWo2THIks9Zst7mjw1FMYu4PsCTLQAO2qpDnRmUA==} peerDependencies: prettier: ^2.3.0 peerDependenciesMeta: prettier: optional: true dependencies: - '@nrwl/cli': 13.3.4 - '@nrwl/devkit': 13.3.4 - '@nrwl/jest': 13.3.4_ts-node@9.1.1 - '@nrwl/linter': 13.3.4_ts-node@9.1.1+typescript@4.2.4 + '@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 @@ -4793,8 +3978,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 @@ -4816,15 +4001,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 @@ -4963,13 +4148,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: @@ -5247,7 +4425,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: @@ -5255,7 +4433,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: @@ -5889,6 +5067,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: @@ -5922,7 +5127,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: @@ -5947,15 +5152,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 @@ -6082,10 +5287,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 @@ -6094,22 +5299,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 @@ -6171,29 +5376,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: @@ -6391,22 +5595,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: @@ -6431,15 +5619,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: @@ -6648,14 +5827,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'} @@ -6749,8 +5920,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: @@ -6806,11 +5977,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'} @@ -6855,12 +6021,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: @@ -6899,7 +6065,7 @@ 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. @@ -6910,7 +6076,7 @@ packages: '@babel/parser': 7.16.4 '@babel/traverse': 7.16.3 '@babel/types': 7.16.0 - eslint: 8.1.0 + eslint: 8.2.0 eslint-visitor-keys: 1.3.0 resolve: 1.20.0 transitivePeerDependencies: @@ -6948,43 +6114,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} @@ -7055,6 +6221,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'} @@ -7082,6 +6260,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} @@ -7100,19 +6288,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: @@ -7125,18 +6300,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: @@ -7148,17 +6311,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: @@ -7179,8 +6331,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: @@ -7196,26 +6366,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: @@ -7247,27 +6400,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} @@ -7565,7 +6718,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==} @@ -7763,7 +6915,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==} @@ -7994,8 +7145,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 @@ -8277,7 +7428,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 @@ -8363,13 +7514,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: @@ -8473,7 +7617,7 @@ packages: create-hash: 1.2.0 inherits: 2.0.4 ripemd160: 2.0.2 - safe-buffer: 5.2.1 + safe-buffer: 5.1.2 sha.js: 2.4.11 /create-require/1.1.1: @@ -8973,7 +8117,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 @@ -9242,7 +8386,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==} @@ -9336,39 +8479,6 @@ packages: /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - /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: @@ -9547,13 +8657,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 @@ -9628,14 +8738,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 @@ -9694,7 +8804,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: @@ -9702,7 +8812,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 @@ -9712,17 +8822,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 @@ -9730,26 +8840,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: @@ -9773,7 +8864,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: @@ -9784,8 +8896,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 @@ -9833,24 +8945,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'} @@ -9860,40 +8963,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 @@ -9929,6 +9018,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'} @@ -10118,7 +9230,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 @@ -10358,11 +9470,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'} @@ -10858,8 +9965,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 @@ -11482,20 +10589,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'} @@ -11604,7 +10697,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 @@ -11614,7 +10707,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 @@ -11655,7 +10748,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 @@ -11782,7 +10875,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: @@ -12346,7 +11439,7 @@ packages: lodash: 4.17.21 patch-console: 1.0.0 react: 17.0.2 - react-devtools-core: 4.21.0 + react-devtools-core: 4.22.0 react-reconciler: 0.26.2_react@17.0.2 scheduler: 0.20.2 signal-exit: 3.0.5 @@ -12947,6 +12040,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'} @@ -13056,6 +12153,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'} @@ -13065,6 +12172,7 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true /istanbul-reports/1.5.1: resolution: {integrity: sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==} @@ -13079,12 +12187,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=} @@ -13293,10 +12409,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 @@ -13435,7 +12551,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 @@ -13679,11 +12795,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} @@ -13732,7 +12869,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 @@ -14298,6 +13435,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} @@ -14527,6 +13672,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'} @@ -15128,10 +14282,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=} @@ -15281,6 +14431,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: @@ -15863,7 +15018,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 @@ -16033,7 +15188,7 @@ packages: resolution: {integrity: sha512-LpCfZCWsVEtmD2SI1j2KRaw1uIyn4DJ3eRzsjnDYitbq38aORpkvYO+L0zVMZRNDSYSRGTsuj0nHCS3OOxK/Cg==} hasBin: true dependencies: - '@nrwl/cli': 13.3.4 + '@nrwl/cli': 13.3.5 dev: true /nx/13.3.4: @@ -16043,6 +15198,13 @@ packages: '@nrwl/cli': 13.3.4 dev: true + /nx/13.3.5: + resolution: {integrity: sha512-wxdvfOgza6KJ6hRDNBfFNatcp45VfCMQpDfbmL2Jdc3KiSN7K/bvtOVZvXaPrcKtbYghfL6SRsXtStIeITxlng==} + hasBin: true + dependencies: + '@nrwl/cli': 13.3.5 + dev: true + /oauth-1.0a/2.2.6: resolution: {integrity: sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==} dev: false @@ -17631,14 +16793,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: @@ -17704,10 +16858,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'} @@ -17863,8 +17013,8 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-devtools-core/4.21.0: - resolution: {integrity: sha512-clGWwJHV5MHwTwYyKc+7FZHwzdbzrD2/AoZSkicUcr6YLc3Za9a9FaLhccWDHfjQ+ron9yzNhDT6Tv+FiPkD3g==} + /react-devtools-core/4.22.0: + resolution: {integrity: sha512-OYY2FO+z+w/N7kVZr2x0rVOD2QCGZoRThbs1diJ2Az0rqtMxyk0JJvsr7FS9+b5CJkWQ2Ro810BCnySygOt2pA==} dependencies: shell-quote: 1.7.3 ws: 7.5.5 @@ -17915,15 +17065,24 @@ packages: 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: @@ -18039,10 +17198,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,13 +17723,6 @@ 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: @@ -19464,7 +18612,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 @@ -19493,7 +18641,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: @@ -19706,18 +18854,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'} @@ -19771,7 +18907,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 @@ -19839,16 +18975,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'} @@ -20274,8 +19400,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 @@ -20614,6 +19740,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: @@ -21071,15 +20202,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==} From a4cb3fa796a0e587c962c6d6e4394188cdc9b89b Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 15 Dec 2021 07:16:55 -0800 Subject: [PATCH 88/97] Update lock file --- pnpm-lock.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4062135e816..4293c4aec68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,7 @@ importers: '@automattic/nx-composer': ^0.1.0 '@babel/core': 7.12.9 '@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 @@ -35,6 +36,7 @@ importers: devDependencies: '@automattic/nx-composer': 0.1.0 '@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 From 7c8bd91b2523767f0ab931e4b5a0b7819e890eba Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 15 Dec 2021 13:55:24 -0700 Subject: [PATCH 89/97] Use describeIf to check for running plugin upload --- .../woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js index 211de9f1e5a..ec419d883bd 100644 --- a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js @@ -1,7 +1,7 @@ /** * Internal dependencies */ -const { merchant } = require( '@woocommerce/e2e-utils' ); +const { merchant, utils } = require( '@woocommerce/e2e-utils' ); const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require( '@woocommerce/e2e-environment' ); @@ -18,7 +18,7 @@ const { GITHUB_REPOSITORY, PLUGIN_NAME, GITHUB_TOKEN } = process.env; let zipUrl; let pluginPath; -describe( 'Upload and activate plugin', () => { +utils.describeIf( GITHUB_REPOSITORY )( 'Upload and activate plugin', () => { beforeAll( async () => { zipUrl = await getLatestReleaseZipUrl( GITHUB_REPOSITORY, GITHUB_TOKEN ); From fdee881ab86d419b2acce3c60c48d0fda85a4eba Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 15 Dec 2021 13:59:17 -0700 Subject: [PATCH 90/97] Prettier fixes --- packages/js/e2e-environment/utils/index.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/js/e2e-environment/utils/index.js b/packages/js/e2e-environment/utils/index.js index 04330c419ab..f50c8a012e8 100644 --- a/packages/js/e2e-environment/utils/index.js +++ b/packages/js/e2e-environment/utils/index.js @@ -1,11 +1,13 @@ const getAppRoot = require( './app-root' ); const { getAppName, getAppBase } = require( './app-name' ); -const { getTestConfig, getAdminConfig, resolveLocalE2ePath } = require( './test-config' ); -const { getRemotePluginZip, getLatestReleaseZipUrl, deleteDownloadedPluginFiles } = require('./get-plugin-zip'); const testConfig = require( './test-config' ); -const { getRemotePluginZip, getLatestReleaseZipUrl } = require('./get-plugin-zip'); +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 = { From 89d74d4bc34cc4fa1d4ac2479dca965758c29281 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 15 Dec 2021 14:06:19 -0700 Subject: [PATCH 91/97] Update to use new resolveLocalE2ePath --- packages/js/e2e-environment/utils/get-plugin-zip.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/js/e2e-environment/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index b7bc084b537..2c9cf9fc66c 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -1,9 +1,9 @@ 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. @@ -13,7 +13,6 @@ const StreamZip = require( 'node-stream-zip' ); * @return {string} The path where the zip file is located. */ const getRemotePluginZip = async ( fileUrl, authorizationToken = '' ) => { - const appPath = getAppRoot(); const savePath = resolveLocalE2ePath( 'plugins' ); mkdirp.sync( savePath ); @@ -145,11 +144,7 @@ const downloadZip = async ( fileUrl, downloadPath, authorizationToken ) => { * Delete the downloaded plugin files. */ const deleteDownloadedPluginFiles = async () => { - const appPath = getAppRoot(); - const pluginSavePath = path.resolve( - appPath, - 'plugins/woocommerce/tests/e2e/plugins' - ); + const pluginSavePath = resolveLocalE2ePath( 'plugins' ); fs.readdir( pluginSavePath, ( err, files ) => { if ( err ) throw err; From 8b0b840a894564c45fccc51bd3519023577fbf0f Mon Sep 17 00:00:00 2001 From: Joel Thiessen Date: Tue, 14 Dec 2021 16:22:28 -0800 Subject: [PATCH 92/97] Bumping WCA version to 3.0.0-rc.1 --- plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index fe15e596ba6..7684d5273fc 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "3.1.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-admin": "2.9.4", + "woocommerce/woocommerce-admin": "3.0.0-rc.1", "woocommerce/woocommerce-blocks": "6.3.3" }, "require-dev": { diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index f41dd8f031e..faf3db2a3a1 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": "d12a5b11e3d6dc2ac228efa1cd5efadc", + "content-hash": "c4f41955bfde1a0a4e2d6d7428b8ee58", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -543,16 +543,16 @@ }, { "name": "woocommerce/woocommerce-admin", - "version": "2.9.4", + "version": "3.0.0-rc.1", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-admin.git", - "reference": "0cc85981f2def42e604118c7f5032e2750056763" + "reference": "7c0cdd01ae98be058d684dd19023b0f40094cb63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/0cc85981f2def42e604118c7f5032e2750056763", - "reference": "0cc85981f2def42e604118c7f5032e2750056763", + "url": "https://api.github.com/repos/woocommerce/woocommerce-admin/zipball/7c0cdd01ae98be058d684dd19023b0f40094cb63", + "reference": "7c0cdd01ae98be058d684dd19023b0f40094cb63", "shasum": "" }, "require": { @@ -608,9 +608,9 @@ "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.4" + "source": "https://github.com/woocommerce/woocommerce-admin/tree/v3.0.0-rc.1" }, - "time": "2021-12-15T14:33:43+00:00" + "time": "2021-12-14T23:55:42+00:00" }, { "name": "woocommerce/woocommerce-blocks", From 935b65e50c776c20e6a6c10950738dd5ce25c77a Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 16 Dec 2021 05:52:40 -0800 Subject: [PATCH 93/97] Update lock file --- pnpm-lock.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4293c4aec68..08de37f5c08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,8 +132,10 @@ importers: 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 @@ -147,7 +149,9 @@ importers: 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 @@ -17174,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'} From 77bb3e958d6e7d5c5218f83bf4bdaf89fd0967b7 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 16 Dec 2021 09:58:11 -0700 Subject: [PATCH 94/97] Logic for private repos and minor tweaks --- .github/workflows/smoke-test-daily.yml | 2 +- .github/workflows/smoke-test-release.yml | 2 +- .../js/e2e-environment/utils/get-plugin-zip.js | 14 ++++++++++---- .../tests/e2e/specs/smoke-tests/upload-plugin.js | 1 - 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 632256aa752..078f683a4a1 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -146,7 +146,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + GITHUB_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} PLUGIN_NAME: ${{ matrix.plugin }} GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} run: | diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index e51c0d519ab..a5365841e52 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -170,7 +170,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + GITHUB_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} PLUGIN_NAME: ${{ matrix.plugin }} GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} run: | diff --git a/packages/js/e2e-environment/utils/get-plugin-zip.js b/packages/js/e2e-environment/utils/get-plugin-zip.js index 2c9cf9fc66c..e1077bae98c 100644 --- a/packages/js/e2e-environment/utils/get-plugin-zip.js +++ b/packages/js/e2e-environment/utils/get-plugin-zip.js @@ -16,8 +16,8 @@ const getRemotePluginZip = async ( fileUrl, authorizationToken = '' ) => { const savePath = resolveLocalE2ePath( 'plugins' ); mkdirp.sync( savePath ); - // Pull the version from the end of the URL and add .zip - const fileName = fileUrl.split( '/' ).pop() + '.zip'; + // 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 @@ -73,11 +73,17 @@ const getLatestReleaseZipUrl = async ( // Loop until we find the first pre-release, then return it. body.forEach( ( release ) => { if ( release.prerelease ) { - resolve( release.zipball_url ); + 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.zipball_url ); + resolve( body.assets[ 0 ].browser_download_url ); } } ); } ); diff --git a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js index ec419d883bd..1bdb3a950a4 100644 --- a/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js +++ b/plugins/woocommerce/tests/e2e/specs/smoke-tests/upload-plugin.js @@ -29,7 +29,6 @@ utils.describeIf( GITHUB_REPOSITORY )( 'Upload and activate plugin', () => { afterAll( async () => { await merchant.logout(); - await deleteDownloadedPluginFiles(); }); it( 'can upload and activate the provided plugin', async () => { From 07a96e3aaa29e877e8e3812923f490a7cc7eba24 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 16 Dec 2021 13:32:43 -0700 Subject: [PATCH 95/97] Swap out plugins --- .github/workflows/smoke-test-daily.yml | 4 ++-- .github/workflows/smoke-test-release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 078f683a4a1..2145213e988 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -85,8 +85,8 @@ jobs: include: - plugin: 'WooCommerce Payments' repo: 'automattic/woocommerce-payments' - - plugin: 'Facebook for WooCommerce' - repo: 'woocommerce/facebook-for-woocommerce' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' - plugin: 'WooCommerce Shipping & Tax' repo: 'woocommerce/woocommerce-services' - plugin: 'WooCommerce Subscriptions' diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index a5365841e52..9475a07ebda 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -115,8 +115,8 @@ jobs: include: - plugin: 'WooCommerce Payments' repo: 'automattic/woocommerce-payments' - - plugin: 'Facebook for WooCommerce' - repo: 'woocommerce/facebook-for-woocommerce' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' - plugin: 'WooCommerce Shipping & Tax' repo: 'woocommerce/woocommerce-services' - plugin: 'WooCommerce Subscriptions' From e364a67f42ded079852a41467c98fa4d6213c0d0 Mon Sep 17 00:00:00 2001 From: Tom Cafferkey Date: Fri, 17 Dec 2021 08:52:25 +0000 Subject: [PATCH 96/97] Update package version --- plugins/woocommerce/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 7684d5273fc..6939d0ee1b0 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -22,7 +22,7 @@ "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", "woocommerce/woocommerce-admin": "3.0.0-rc.1", - "woocommerce/woocommerce-blocks": "6.3.3" + "woocommerce/woocommerce-blocks": "6.5.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", From bb5b1a1e90a401647368292c8b839df40c5c7e9e Mon Sep 17 00:00:00 2001 From: Tom Cafferkey Date: Fri, 17 Dec 2021 09:01:10 +0000 Subject: [PATCH 97/97] composer.lock update --- plugins/woocommerce/composer.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index faf3db2a3a1..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": "c4f41955bfde1a0a4e2d6d7428b8ee58", + "content-hash": "97d29d724f0342a99e7bf3f9d1d3c262", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -614,16 +614,16 @@ }, { "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" }