From c3888d658e9a924f85261546de39361fb0badedd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 16:24:29 +0200 Subject: [PATCH 001/249] Remove `qs` dependency from layout Controller, use native `URLSearchParams` instead. --- .../client/layout/controller.js | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce-admin/client/layout/controller.js b/plugins/woocommerce-admin/client/layout/controller.js index 0ef2068d80f..720eb9215ee 100644 --- a/plugins/woocommerce-admin/client/layout/controller.js +++ b/plugins/woocommerce-admin/client/layout/controller.js @@ -3,7 +3,6 @@ */ import { Suspense, lazy } from '@wordpress/element'; import { useRef, useEffect } from 'react'; -import { parse, stringify } from 'qs'; import { find, isEqual, last, omit } from 'lodash'; import { applyFilters } from '@wordpress/hooks'; import { __ } from '@wordpress/i18n'; @@ -356,18 +355,22 @@ export const Controller = ( { ...props } ) => { */ export function updateLinkHref( item, nextQuery, excludedScreens ) { if ( isWCAdmin( item.href ) ) { + // If we accept a full HTMLAnchorElement, then we should be able to use `.search`. + // const query = new URLSearchParams( item.search ); + // but to remain backward compatible, we support any object with `href` property. const search = last( item.href.split( '?' ) ); - const query = parse( search ); - const path = query.path || 'homescreen'; + let query = new URLSearchParams( search ); + const path = query.get( 'path' ) || 'homescreen'; const screen = getScreenFromPath( path ); - const isExcludedScreen = excludedScreens.includes( screen ); + if ( ! excludedScreens.includes( screen ) ) { + query = new URLSearchParams( { + ...Object.fromEntries( query ), + ...nextQuery, + } ); + } - const href = - 'admin.php?' + - stringify( - Object.assign( query, isExcludedScreen ? {} : nextQuery ) - ); + const href = 'admin.php?' + query.toString(); // Replace the href so you can see the url on hover. item.href = href; From 1002f06d07fbfab8804e32c16d131f69a4397da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 16:39:19 +0200 Subject: [PATCH 002/249] Remove `qs` dependency from `<_Layout>`, use native `URLSearchParams` instead. --- plugins/woocommerce-admin/client/layout/index.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/plugins/woocommerce-admin/client/layout/index.js b/plugins/woocommerce-admin/client/layout/index.js index 1ff5ff0b42c..a1400dedbc1 100644 --- a/plugins/woocommerce-admin/client/layout/index.js +++ b/plugins/woocommerce-admin/client/layout/index.js @@ -16,7 +16,6 @@ import { import { Children, cloneElement } from 'react'; import PropTypes from 'prop-types'; import { get, isFunction, identity, memoize } from 'lodash'; -import { parse } from 'qs'; import { getHistory, getQuery } from '@woocommerce/navigation'; import { PLUGINS_STORE_NAME, @@ -190,15 +189,6 @@ class _Layout extends Component { } ); } - getQuery( searchString ) { - if ( ! searchString ) { - return {}; - } - - const search = searchString.substring( 1 ); - return parse( search ); - } - isWCPaySettingsPage() { const { page, section, tab } = getQuery(); return ( @@ -212,7 +202,9 @@ class _Layout extends Component { const { isEmbedded, ...restProps } = this.props; const { location, page } = this.props; const { breadcrumbs } = page; - const query = this.getQuery( location && location.search ); + const query = Object.fromEntries( + new URLSearchParams( location && location.search ) + ); return ( Date: Mon, 17 Oct 2022 16:57:21 +0200 Subject: [PATCH 003/249] Remove `qs` dependency from client analitics, use native `URLSearchParams` instead. --- .../client/analytics/report/revenue/table.js | 3 +-- .../client/analytics/settings/default-date.js | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce-admin/client/analytics/report/revenue/table.js b/plugins/woocommerce-admin/client/analytics/report/revenue/table.js index 80385cfd18e..c40cc5ff6ea 100644 --- a/plugins/woocommerce-admin/client/analytics/report/revenue/table.js +++ b/plugins/woocommerce-admin/client/analytics/report/revenue/table.js @@ -20,7 +20,6 @@ import { defaultTableDateFormat, getCurrentDates, } from '@woocommerce/date'; -import { stringify } from 'qs'; /** * Internal dependencies @@ -308,7 +307,7 @@ const formatProps = memoize( [ isError, isRequesting, - stringify( tableQuery ), + ( new URLSearchParams( tableQuery ) ).toString(), get( revenueData, [ 'totalResults' ], 0 ), get( revenueData, [ 'data', 'intervals' ], EMPTY_ARRAY ).length, ].join( ':' ) diff --git a/plugins/woocommerce-admin/client/analytics/settings/default-date.js b/plugins/woocommerce-admin/client/analytics/settings/default-date.js index d5737e18648..4810f229b8b 100644 --- a/plugins/woocommerce-admin/client/analytics/settings/default-date.js +++ b/plugins/woocommerce-admin/client/analytics/settings/default-date.js @@ -1,7 +1,6 @@ /** * External dependencies */ -import { parse, stringify } from 'qs'; import { DateRangeFilterPicker } from '@woocommerce/components'; import { useSettings } from '@woocommerce/data'; import { @@ -20,11 +19,13 @@ const DefaultDate = ( { value, onChange } ) => { onChange( { target: { name: 'woocommerce_default_date_range', - value: stringify( query ), + value: ( new URLSearchParams( query ) ).toString(), }, } ); }; - const query = parse( value.replace( /&/g, '&' ) ); + const query = Object.fromEntries( + new URLSearchParams( value.replace( /&/g, '&' ) ) + ); const { period, compare, before, after } = getDateParamsFromQuery( query, defaultDateRange From 1baac3445e1114753ea1d11f25681c0255d040e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 17:12:20 +0200 Subject: [PATCH 004/249] Remove `qs` dependency from `EmbeddedBodyLayout`, use native `URLSearchParams` instead. --- .../embedded-body-layout/embedded-body-layout.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx b/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx index ec31ae5fc9c..55a0bcde870 100644 --- a/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx +++ b/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx @@ -2,7 +2,6 @@ * External dependencies */ import { applyFilters } from '@wordpress/hooks'; -import QueryString, { parse } from 'qs'; /** * Internal dependencies @@ -16,9 +15,9 @@ import './style.scss'; type QueryParams = EmbeddedBodyProps; function isWPPage( - params: QueryParams | QueryString.ParsedQs -): params is QueryParams { - return ( params as QueryParams ).page !== undefined; + params: URLSearchParams +): Boolean { + return params.get( 'page' ) !== null; } const EMBEDDED_BODY_COMPONENT_LIST: React.ElementType[] = [ @@ -34,10 +33,10 @@ const EMBEDDED_BODY_COMPONENT_LIST: React.ElementType[] = [ * Each Fill component receives QueryParams, consisting of a page, tab, and section string. */ export const EmbeddedBodyLayout = () => { - const query = parse( location.search.substring( 1 ) ); + const query = new URLSearchParams( location.search ); let queryParams: QueryParams = { page: '', tab: '' }; if ( isWPPage( query ) ) { - queryParams = query; + queryParams = Object.fromEntries( query ) as QueryParams; } /** * Filter an array of body components for WooCommerce non-react pages. From 4754b2e56069b790cabebad7522da4de55d491e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 17:13:15 +0200 Subject: [PATCH 005/249] Remove `qs` dependency from `woocommerce-admin` --- plugins/woocommerce-admin/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index dd9131c0f09..7d2c92f3686 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -86,7 +86,6 @@ "history": "^5.3.0", "lodash": "^4.17.21", "memize": "^1.1.0", - "qs": "^6.10.3", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^6.3.0", From 86a40e2114136026ca7866418937ae66239de8d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 17:17:42 +0200 Subject: [PATCH 006/249] Add changelog entry --- plugins/woocommerce/changelog/remove-qs | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/remove-qs diff --git a/plugins/woocommerce/changelog/remove-qs b/plugins/woocommerce/changelog/remove-qs new file mode 100644 index 00000000000..f93da22a4c3 --- /dev/null +++ b/plugins/woocommerce/changelog/remove-qs @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Remove `qs` dependency from `woocommerce-admin` From 33aa7c58dc4855194c274f21f8fe0f6b37cafd78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 17:31:15 +0200 Subject: [PATCH 007/249] Update `pnpm-lock.yaml`. --- pnpm-lock.yaml | 637 +++++++++++++++---------------------------------- 1 file changed, 190 insertions(+), 447 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b890df03d66..0a0b2a6db03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1535,7 +1535,6 @@ importers: promptly: ^3.2.0 prop-types: ^15.8.1 puppeteer: ^2.0.0 - qs: ^6.10.3 raw-loader: ^4.0.2 react: ^17.0.2 react-dom: ^17.0.2 @@ -1602,7 +1601,6 @@ importers: history: 5.3.0 lodash: 4.17.21 memize: 1.1.0 - qs: 6.10.3 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 react-router-dom: 6.3.0_sfoxds7t5ydpegc3knd667wn6m @@ -2384,7 +2382,7 @@ packages: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.16.10 + '@babel/highlight': 7.18.6 /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} @@ -2536,6 +2534,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.3 + dev: true /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} @@ -2549,14 +2548,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-builder-binary-assignment-operator-visitor/7.16.0: - resolution: {integrity: sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.3 - dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: resolution: {integrity: sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==} engines: {node: '>=6.9.0'} @@ -2577,10 +2568,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.4 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 semver: 6.3.0 dev: true @@ -2661,23 +2652,6 @@ packages: browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.12.9: - resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.12.9: resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} engines: {node: '>=6.9.0'} @@ -2784,17 +2758,6 @@ packages: transitivePeerDependencies: - supports-color - /@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.18.6 - regexpu-core: 4.8.0 - dev: true - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.12.9: resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} engines: {node: '>=6.9.0'} @@ -2827,6 +2790,17 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.12.9: + resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.2.1 + dev: true + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} @@ -2855,60 +2829,6 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider/0.3.0_@babel+core@7.12.9: - resolution: {integrity: sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider/0.3.0_@babel+core@7.16.12: - resolution: {integrity: sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-define-polyfill-provider/0.3.0_@babel+core@7.17.8: - resolution: {integrity: sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.12.9: resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: @@ -3026,15 +2946,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-function-name/7.16.0: - resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 - dev: true - /@babel/helper-function-name/7.16.7: resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} engines: {node: '>=6.9.0'} @@ -3056,13 +2967,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-hoist-variables/7.16.0: - resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - dev: true - /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} @@ -3103,11 +3007,11 @@ packages: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.17.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.18.10 '@babel/traverse': 7.19.3 '@babel/types': 7.19.3 @@ -3129,13 +3033,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.16.0: - resolution: {integrity: sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - dev: true - /@babel/helper-optimise-call-expression/7.16.7: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} @@ -3168,7 +3065,7 @@ packages: resolution: {integrity: sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-annotate-as-pure': 7.16.0 + '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-wrap-function': 7.16.0 '@babel/types': 7.19.3 transitivePeerDependencies: @@ -3185,6 +3082,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.19.0 + '@babel/types': 7.19.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -3199,18 +3111,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers/7.16.0: - resolution: {integrity: sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-replace-supers/7.16.7: resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} engines: {node: '>=6.9.0'} @@ -3235,13 +3135,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.16.0: - resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - dev: true - /@babel/helper-simple-access/7.17.7: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} @@ -3266,13 +3159,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-split-export-declaration/7.16.0: - resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - dev: true - /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} @@ -3289,10 +3175,6 @@ packages: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.15.7: - resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} @@ -3347,14 +3229,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight/7.16.10: - resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -3423,9 +3297,9 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.12: @@ -3435,9 +3309,9 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.8: @@ -3540,8 +3414,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true @@ -3553,8 +3427,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true @@ -3566,8 +3440,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: false @@ -3672,7 +3546,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 dev: true @@ -3736,7 +3610,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 dev: true @@ -3790,7 +3664,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 dev: true @@ -3844,7 +3718,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 dev: true @@ -3898,7 +3772,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 dev: true @@ -3909,7 +3783,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 dev: true @@ -3920,7 +3794,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 dev: false @@ -3951,7 +3825,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 dev: true @@ -4085,7 +3959,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 dev: true @@ -4139,8 +4013,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 dev: true @@ -4179,30 +4053,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.12.9: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.16.12: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -4221,8 +4071,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true @@ -4344,8 +4194,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.12.9: @@ -4464,7 +4314,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.16.12: @@ -4474,7 +4324,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.17.8: @@ -4484,7 +4334,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-decorators/7.16.0_@babel+core@7.17.8: resolution: {integrity: sha512-nxnnngZClvlY13nHJAIDow0S7Qzhq64fQ/NlqS+VER3kjW/4F0jLhXjeL8jcwSwz6Ca3rotT5NJD2T9I7lcv7g==} @@ -4502,7 +4352,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.16.12: @@ -4511,7 +4361,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.17.8: @@ -4520,7 +4370,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-export-default-from/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==} @@ -4598,7 +4448,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.12: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -4606,7 +4456,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.8: @@ -4615,7 +4465,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} @@ -4633,7 +4483,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-syntax-jsx/7.16.0_@babel+core@7.16.12: @@ -4643,7 +4493,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: @@ -4721,7 +4571,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.12: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -4729,7 +4579,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.8: @@ -4738,7 +4588,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4746,7 +4596,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.12: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4754,7 +4604,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.8: @@ -4763,7 +4613,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4771,7 +4621,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.12: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4779,7 +4629,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.8: @@ -4788,7 +4638,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -4851,7 +4701,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.12: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -4860,7 +4710,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: false /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.8: @@ -4870,7 +4720,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.16.12: resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} @@ -4907,7 +4757,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.12.9: @@ -4956,9 +4806,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.4 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 transitivePeerDependencies: - supports-color dev: true @@ -5025,7 +4875,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.12.9: @@ -5074,7 +4924,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.12.9: @@ -5123,12 +4973,12 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -5217,7 +5067,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.12.9: @@ -5266,7 +5116,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.12.9: @@ -5315,8 +5165,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.12.9: @@ -5327,7 +5177,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 dev: true /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.16.12: @@ -5338,7 +5188,7 @@ packages: dependencies: '@babel/core': 7.16.12 '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.18.9 dev: false /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.8: @@ -5368,7 +5218,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.12.9: @@ -5417,8 +5267,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.12.9: @@ -5481,7 +5331,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.12.9: @@ -5530,8 +5380,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.12.9: @@ -5588,7 +5438,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-literals/7.16.7_@babel+core@7.12.9: @@ -5637,7 +5487,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.12.9: @@ -5687,7 +5537,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -5756,8 +5606,8 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-simple-access': 7.16.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-simple-access': 7.18.6 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -5828,10 +5678,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-hoist-variables': 7.16.0 + '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.15.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -5908,7 +5758,7 @@ packages: dependencies: '@babel/core': 7.12.9 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true @@ -5971,7 +5821,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 dev: true /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.12.9: @@ -6021,7 +5871,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.12.9: @@ -6070,8 +5920,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color dev: true @@ -6134,7 +5984,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.12.9: @@ -6193,7 +6043,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.12.9: @@ -6303,11 +6153,11 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.12 - '@babel/types': 7.16.0 + '@babel/types': 7.19.3 dev: false /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.8: @@ -6405,7 +6255,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.12.9: @@ -6521,7 +6371,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.12.9: @@ -6570,8 +6420,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true /@babel/plugin-transform-spread/7.16.7_@babel+core@7.12.9: @@ -6624,7 +6474,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.12.9: @@ -6673,7 +6523,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.12.9: @@ -6722,7 +6572,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.12.9: @@ -6785,8 +6635,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 transitivePeerDependencies: - supports-color @@ -6811,7 +6661,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.12.9: @@ -6860,8 +6710,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.12.9: @@ -7402,8 +7252,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.16.12 transitivePeerDependencies: - supports-color @@ -7502,10 +7352,10 @@ packages: dependencies: '@babel/code-frame': 7.18.6 '@babel/generator': 7.19.3 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.3 '@babel/types': 7.19.3 debug: 4.3.4 @@ -7534,8 +7384,9 @@ packages: resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.15.7 + '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: true /@babel/types/7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} @@ -8342,7 +8193,7 @@ packages: '@jest/console': 27.5.1 '@jest/reporters': 27.3.1 '@jest/test-result': 27.5.1 - '@jest/transform': 27.3.1 + '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/node': 17.0.21 ansi-escapes: 4.3.2 @@ -8353,9 +8204,9 @@ packages: jest-changed-files: 27.3.0 jest-config: 27.5.1 jest-haste-map: 27.3.1 - jest-message-util: 27.3.1 - jest-regex-util: 27.0.6 - jest-resolve: 27.3.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 jest-resolve-dependencies: 27.3.1 jest-runner: 27.3.1 jest-runtime: 27.3.1 @@ -8920,29 +8771,6 @@ packages: transitivePeerDependencies: - supports-color - /@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} - dependencies: - '@babel/core': 7.17.8 - '@jest/types': 27.5.1 - 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.9 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.4 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/transform/27.5.1: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10664,23 +10492,23 @@ packages: optional: true dependencies: '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 @@ -14038,12 +13866,12 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/type-utils': 5.15.0_z4bbprzjrhnsfa24uvmcbu7f5q '@typescript-eslint/utils': 5.15.0_z4bbprzjrhnsfa24uvmcbu7f5q - debug: 4.3.4 + debug: 4.3.3 eslint: 8.25.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.3.5 tsutils: 3.21.0_typescript@4.8.4 typescript: 4.8.4 transitivePeerDependencies: @@ -14064,12 +13892,12 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/type-utils': 5.15.0_himlt4eddny2rsb5zkuydvuf7u '@typescript-eslint/utils': 5.15.0_himlt4eddny2rsb5zkuydvuf7u - debug: 4.3.4 + debug: 4.3.3 eslint: 8.11.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.3.5 tsutils: 3.21.0_typescript@4.8.4 typescript: 4.8.4 transitivePeerDependencies: @@ -16572,8 +16400,8 @@ packages: puppeteer: '>=1.19.0' dependencies: '@babel/runtime': 7.19.0 - '@wordpress/keycodes': 3.16.0 - '@wordpress/url': 3.16.0 + '@wordpress/keycodes': 3.19.0 + '@wordpress/url': 3.20.0 jest: 27.5.1 lodash: 4.17.21 node-fetch: 2.6.7 @@ -17825,14 +17653,6 @@ packages: transitivePeerDependencies: - react-native - /@wordpress/url/3.16.0: - resolution: {integrity: sha512-5hlT8KfioKrmfqQAHihj2pWqc8oMUFNae3n5/Wlu8H60Btf5h+cBfxr6eiOXPEVX9Ko9NskLjmAqCxxoiNviqg==} - engines: {node: '>=12'} - dependencies: - '@babel/runtime': 7.19.0 - remove-accents: 0.4.2 - dev: false - /@wordpress/url/3.20.0: resolution: {integrity: sha512-geLgg7AWh/pIFPQEI43hQYR6MvEUi3QIawaPPoYMqw3Fne1UvbnXW9ETsCLzYyegmV8DXzcYSMPeSBQf+HL/ig==} engines: {node: '>=12'} @@ -19209,9 +19029,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.12.9 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.12.9 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -19222,9 +19042,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.16.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -19273,8 +19093,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-define-polyfill-provider': 0.3.0_@babel+core@7.12.9 - core-js-compat: 3.21.1 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color dev: true @@ -19285,8 +19105,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.0_@babel+core@7.16.12 - core-js-compat: 3.21.1 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color dev: false @@ -19297,8 +19117,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.0_@babel+core@7.17.8 - core-js-compat: 3.21.1 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color dev: true @@ -21317,7 +21137,7 @@ packages: /core-js-compat/3.19.1: resolution: {integrity: sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==} dependencies: - browserslist: 4.20.4 + browserslist: 4.21.4 semver: 7.0.0 dev: true @@ -29171,21 +28991,6 @@ packages: stack-utils: 2.0.5 dev: true - /jest-message-util/27.3.1: - resolution: {integrity: sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.9 - micromatch: 4.0.4 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - /jest-message-util/27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29276,18 +29081,6 @@ packages: jest-resolve: 26.6.2 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.3.1: - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 27.3.1 - dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} @@ -29338,11 +29131,6 @@ packages: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} - /jest-regex-util/27.0.6: - resolution: {integrity: sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /jest-regex-util/27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29439,22 +29227,6 @@ packages: slash: 3.0.0 dev: true - /jest-resolve/27.3.1: - resolution: {integrity: sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.2_jest-resolve@27.3.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.1 - resolve.exports: 1.1.0 - slash: 3.0.0 - dev: true - /jest-resolve/27.5.1: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -36848,13 +36620,6 @@ packages: dependencies: regenerate: 1.4.2 - /regenerate-unicode-properties/9.0.0: - resolution: {integrity: sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - /regenerate/1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} @@ -36898,18 +36663,6 @@ packages: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /regexpu-core/4.8.0: - resolution: {integrity: sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 9.0.0 - regjsgen: 0.5.2 - regjsparser: 0.7.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.0.0 - dev: true - /regexpu-core/5.2.1: resolution: {integrity: sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==} engines: {node: '>=4'} @@ -36944,20 +36697,9 @@ packages: rc: 1.2.8 dev: true - /regjsgen/0.5.2: - resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==} - dev: true - /regjsgen/0.7.1: resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - /regjsparser/0.7.0: - resolution: {integrity: sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - /regjsparser/0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -41054,7 +40796,7 @@ packages: resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} /verror/1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -41132,6 +40874,7 @@ packages: /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 @@ -41644,7 +41387,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 acorn-import-assertions: 1.8.0_acorn@8.8.0 - browserslist: 4.20.4 + browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.9.2 es-module-lexer: 0.9.3 @@ -41683,7 +41426,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 acorn-import-assertions: 1.8.0_acorn@8.8.0 - browserslist: 4.20.4 + browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.9.2 es-module-lexer: 0.9.3 @@ -41724,7 +41467,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 acorn-import-assertions: 1.8.0_acorn@8.8.0 - browserslist: 4.20.4 + browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.9.2 es-module-lexer: 0.9.3 @@ -41764,7 +41507,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 acorn-import-assertions: 1.8.0_acorn@8.8.0 - browserslist: 4.20.4 + browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.9.2 es-module-lexer: 0.9.3 @@ -42511,4 +42254,4 @@ packages: - react-native - supports-color - utf-8-validate - dev: false \ No newline at end of file + dev: false From 30a487d545a24be43a9f6fffa69e485bb7116c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 23:52:43 +0200 Subject: [PATCH 008/249] Remove `qs` dependency from `ProductTour`, use native `URLSearchParams` instead. --- .../client/guided-tours/add-product-tour/index.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx b/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx index c2b45f8f4ed..6eba5ac9f33 100644 --- a/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx +++ b/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx @@ -5,7 +5,6 @@ import { useEffect, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { TourKit, TourKitTypes } from '@woocommerce/components'; import { recordEvent } from '@woocommerce/tracks'; -import qs from 'qs'; /** * Internal dependencies @@ -294,7 +293,9 @@ export const ProductTour = () => { recordEvent( 'walkthrough_product_enable_button_click' ); } ); - const query = qs.parse( window.location.search.slice( 1 ) ); + const query = Object.fromEntries( + new URLSearchParams( window.location.search ) + ); if ( query && query.tutorial === 'true' ) { const intervalId = waitUntilElementTopNotChange( tourConfig.steps[ 0 ].referenceElements?.desktop || '', From 9adc8a733fef03f0842a4345cea3055a9b9bee67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 17 Oct 2022 23:57:53 +0200 Subject: [PATCH 009/249] Remove `@types/qs` devDependency from `woocommerce-admin` --- plugins/woocommerce-admin/package.json | 1 - pnpm-lock.yaml | 3207 +++++++++++------------- 2 files changed, 1418 insertions(+), 1790 deletions(-) diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index 7d2c92f3686..6d8fad07fba 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -128,7 +128,6 @@ "@types/wordpress__media-utils": "^3.0.0", "@types/wordpress__notices": "^3.3.0", "@types/wordpress__plugins": "^3.0.0", - "@types/qs": "^6.9.7", "@typescript-eslint/eslint-plugin": "^5.14.0", "@typescript-eslint/parser": "^5.14.0", "@woocommerce/admin-e2e-tests": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a0b2a6db03..032a3139f7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1420,7 +1420,6 @@ importers: '@types/jest': ^27.4.1 '@types/lodash': ^4.14.179 '@types/puppeteer': ^4.0.2 - '@types/qs': ^6.9.7 '@types/react': ^17.0.0 '@types/react-router-dom': ^5.3.3 '@types/react-transition-group': ^4.4.4 @@ -1631,7 +1630,6 @@ importers: '@types/jest': 27.4.1 '@types/lodash': 4.14.180 '@types/puppeteer': 4.0.2 - '@types/qs': 6.9.7 '@types/react': 17.0.40 '@types/react-router-dom': 5.3.3 '@types/react-transition-group': 4.4.4 @@ -2398,6 +2396,7 @@ packages: /@babel/compat-data/7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/compat-data/7.19.3: resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} @@ -2541,6 +2540,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.3 + dev: true /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} @@ -2548,13 +2548,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: - resolution: {integrity: sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.3 - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} @@ -2575,42 +2568,16 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.12.9 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.4 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.4 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.4 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 semver: 6.3.0 dev: true @@ -2652,42 +2619,6 @@ packages: browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.12.9: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.16.12: - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} engines: {node: '>=6.9.0'} @@ -2758,38 +2689,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.12.9: - resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.1 - dev: true - - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.16.12: - resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.1 - dev: false - - /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.17.8: - resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.1 - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.12.9: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} @@ -2801,6 +2700,17 @@ packages: regexpu-core: 5.2.1 dev: true + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.16.12: + resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.2.1 + dev: false + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} @@ -2829,60 +2739,6 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.12.9: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.16.12: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.8: - resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.3 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.12.9: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: @@ -2930,12 +2786,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} @@ -2946,14 +2796,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/helper-function-name/7.16.7: - resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.18.10 - '@babel/types': 7.19.3 - /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} @@ -2961,18 +2803,6 @@ packages: '@babel/template': 7.18.10 '@babel/types': 7.19.3 - /@babel/helper-get-function-arity/7.16.7: - resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -2996,6 +2826,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.3 + dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} @@ -3033,12 +2864,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.16.7: - resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -3081,6 +2906,7 @@ packages: '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.12.9: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -3097,6 +2923,21 @@ packages: - supports-color dev: true + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.19.0 + '@babel/types': 7.19.3 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -3111,18 +2952,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers/7.16.7: - resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 - transitivePeerDependencies: - - supports-color - /@babel/helper-replace-supers/7.19.1: resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} engines: {node: '>=6.9.0'} @@ -3135,36 +2964,18 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.17.7: - resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-simple-access/7.18.6: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.3 - /@babel/helper-skip-transparent-expression-wrappers/7.16.0: - resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.3 - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.3 - /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} @@ -3175,10 +2986,6 @@ packages: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} @@ -3251,26 +3058,6 @@ packages: dependencies: '@babel/types': 7.19.3 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} engines: {node: '>=6.9.0'} @@ -3278,9 +3065,29 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -3290,30 +3097,6 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} engines: {node: '>=6.9.0'} @@ -3321,11 +3104,35 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 dev: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.16.12 + dev: false + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} @@ -3351,34 +3158,6 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.12.9: - resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.17.8: resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} engines: {node: '>=6.9.0'} @@ -3386,13 +3165,43 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.17.8 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.8 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.12.9: + resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.16.12: + resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.17.8: resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} engines: {node: '>=6.9.0'} @@ -3420,32 +3229,6 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} engines: {node: '>=6.9.0'} @@ -3458,6 +3241,32 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -3470,34 +3279,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.12.9: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.16.12: - resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.17.8: resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} engines: {node: '>=6.9.0'} @@ -3505,13 +3286,41 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.17.8 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} @@ -3550,28 +3359,6 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} engines: {node: '>=6.9.0'} @@ -3579,10 +3366,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} @@ -3614,28 +3423,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.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} engines: {node: '>=6.9.0'} @@ -3643,10 +3430,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} @@ -3668,28 +3477,6 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} engines: {node: '>=6.9.0'} @@ -3697,10 +3484,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} @@ -3722,28 +3531,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.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} engines: {node: '>=6.9.0'} @@ -3751,10 +3538,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} @@ -3776,9 +3585,19 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.12.9: + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 + + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -3787,8 +3606,8 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3798,16 +3617,6 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 dev: false - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.8 - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -3829,28 +3638,6 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} engines: {node: '>=6.9.0'} @@ -3858,10 +3645,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} @@ -3897,48 +3706,48 @@ packages: '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.12.9: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.16.12: - resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.8: resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.19.3 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.19.3 + '@babel/core': 7.16.12 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} engines: {node: '>=6.9.0'} @@ -3963,28 +3772,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.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} engines: {node: '>=6.9.0'} @@ -3992,10 +3779,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.8 dev: true + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} @@ -4018,30 +3827,6 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 dev: true - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - dev: false - /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} engines: {node: '>=6.9.0'} @@ -4053,6 +3838,30 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.8 + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 + dev: false + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} @@ -4077,32 +3886,6 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.12.9: - resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.16.12: - resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.17.8: resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} engines: {node: '>=6.9.0'} @@ -4116,6 +3899,32 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} @@ -4128,36 +3937,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} engines: {node: '>=6.9.0'} @@ -4173,6 +3952,36 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} @@ -4198,28 +4007,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} engines: {node: '>=4'} @@ -4227,8 +4014,31 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -4760,26 +4570,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} engines: {node: '>=6.9.0'} @@ -4787,9 +4577,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} @@ -4813,34 +4623,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.12.9: - resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.17.8: resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} engines: {node: '>=6.9.0'} @@ -4855,6 +4637,34 @@ packages: - supports-color dev: true + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.16.12 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} @@ -4878,26 +4688,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} engines: {node: '>=6.9.0'} @@ -4905,9 +4695,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} @@ -4927,26 +4737,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} engines: {node: '>=6.9.0'} @@ -4954,9 +4744,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} engines: {node: '>=6.9.0'} @@ -4984,44 +4794,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-classes/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} engines: {node: '>=6.9.0'} @@ -5029,18 +4801,58 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.12.9: + resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.16.12: + resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} engines: {node: '>=6.9.0'} @@ -5070,26 +4882,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} engines: {node: '>=6.9.0'} @@ -5097,9 +4889,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} @@ -5119,26 +4931,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} engines: {node: '>=6.9.0'} @@ -5146,9 +4938,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.12.9: + resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.16.12: + resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.17.8: resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} engines: {node: '>=6.9.0'} @@ -5169,28 +4981,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} engines: {node: '>=6.9.0'} @@ -5198,8 +4988,31 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -5221,26 +5034,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} engines: {node: '>=6.9.0'} @@ -5248,9 +5041,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} @@ -5271,28 +5084,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} - 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.16.7 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} engines: {node: '>=6.9.0'} @@ -5300,10 +5091,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + 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.18.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} @@ -5334,26 +5147,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} engines: {node: '>=6.9.0'} @@ -5361,9 +5154,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.12.9: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.16.12: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.17.8: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} @@ -5384,30 +5197,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} engines: {node: '>=6.9.0'} @@ -5416,10 +5205,34 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} @@ -5441,26 +5254,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-literals/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} engines: {node: '>=6.9.0'} @@ -5468,9 +5261,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} @@ -5490,26 +5303,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} engines: {node: '>=6.9.0'} @@ -5517,9 +5310,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} @@ -5543,34 +5356,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} engines: {node: '>=6.9.0'} @@ -5579,12 +5364,40 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} @@ -5613,36 +5426,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.12.9: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-simple-access': 7.17.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.16.12: - resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-simple-access': 7.17.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.17.8: resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} engines: {node: '>=6.9.0'} @@ -5651,12 +5434,42 @@ packages: dependencies: '@babel/core': 7.17.8 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-simple-access': 7.17.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-simple-access': 7.18.6 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-simple-access': 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-simple-access': 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} @@ -5687,38 +5500,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.12.9: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.16.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.16.12: - resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.16.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.17.8: resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} engines: {node: '>=6.9.0'} @@ -5726,15 +5507,47 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.12.9: + resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-identifier': 7.19.1 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.16.12: + resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-identifier': 7.19.1 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} engines: {node: '>=6.9.0'} @@ -5763,9 +5576,22 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -5776,8 +5602,8 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5789,19 +5615,6 @@ packages: - supports-color dev: false - /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} @@ -5824,26 +5637,6 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.12.9: - resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - dev: false - /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.17.8: resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} engines: {node: '>=6.9.0'} @@ -5851,9 +5644,31 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.8 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 dev: true + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.12.9: + resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.16.12: + resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.17.8: resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} engines: {node: '>=6.9.0'} @@ -5874,26 +5689,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} engines: {node: '>=6.9.0'} @@ -5901,9 +5696,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} @@ -5926,32 +5741,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} engines: {node: '>=6.9.0'} @@ -5959,12 +5748,38 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color dev: true + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} @@ -5987,26 +5802,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} engines: {node: '>=6.9.0'} @@ -6014,7 +5809,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.12.9: @@ -6027,6 +5822,16 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.16.12: + resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.17.8: resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} engines: {node: '>=6.9.0'} @@ -6046,26 +5851,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} engines: {node: '>=6.9.0'} @@ -6073,9 +5858,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} @@ -6208,26 +6013,6 @@ packages: regenerator-transform: 0.14.5 dev: true - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - regenerator-transform: 0.14.5 - dev: true - - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - regenerator-transform: 0.14.5 - dev: false - /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} engines: {node: '>=6.9.0'} @@ -6238,6 +6023,28 @@ packages: regenerator-transform: 0.14.5 dev: true + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + regenerator-transform: 0.15.0 + dev: true + + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + regenerator-transform: 0.15.0 + dev: false + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} @@ -6258,26 +6065,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} engines: {node: '>=6.9.0'} @@ -6285,9 +6072,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} @@ -6374,26 +6181,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} engines: {node: '>=6.9.0'} @@ -6401,9 +6188,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} @@ -6424,9 +6231,20 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.12.9: + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 + dev: true + + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.12.9: + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -6435,8 +6253,8 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.16.12: + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6446,17 +6264,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: false - /@babel/plugin-transform-spread/7.16.7_@babel+core@7.17.8: - resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - dev: true - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.17.8: resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} @@ -6477,26 +6284,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} engines: {node: '>=6.9.0'} @@ -6504,9 +6291,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} @@ -6526,26 +6333,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} engines: {node: '>=6.9.0'} @@ -6553,9 +6340,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} @@ -6575,26 +6382,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} engines: {node: '>=6.9.0'} @@ -6602,9 +6389,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.12.9: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.16.12: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.17.8: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} @@ -6664,26 +6471,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} engines: {node: '>=6.9.0'} @@ -6691,9 +6478,29 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.12.9: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.16.12: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.17.8: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} @@ -6714,28 +6521,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.12.9: - resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - dev: false - /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} engines: {node: '>=6.9.0'} @@ -6743,10 +6528,32 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.17.8 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + dev: true + + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.16.12: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.17.8: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} @@ -6847,28 +6654,28 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.12.9 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.12.9 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.12.9 - '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.12.9 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.9 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.9 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 @@ -6883,44 +6690,44 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.9 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.12.9 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.12.9 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.12.9 - '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.12.9 - '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.9 '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.12.9 + '@babel/types': 7.19.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.9 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.12.9 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.12.9 - core-js-compat: 3.21.1 + core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -6932,28 +6739,28 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.16.12 - '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.16.12 - '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.16.12 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.16.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.16.12 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.12 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 @@ -6968,44 +6775,44 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.16.12 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.16.12 - '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.16.12 - '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.16.12 - '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.16.12 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.16.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.16.12 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.16.12 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.16.12 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.16.12 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.16.12 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.16.12 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.16.12 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.16.12 '@babel/preset-modules': 0.1.5_@babel+core@7.16.12 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 + '@babel/types': 7.19.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.16.12 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.16.12 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 - core-js-compat: 3.21.1 + core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -7198,9 +7005,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.12.9 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.9 '@babel/types': 7.19.3 esutils: 2.0.3 dev: true @@ -7211,9 +7018,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.16.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.16.12 '@babel/types': 7.19.3 esutils: 2.0.3 dev: false @@ -7224,9 +7031,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.8 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.17.8 '@babel/types': 7.19.3 esutils: 2.0.3 @@ -7252,8 +7059,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 + '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-validator-option': 7.16.7 '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.16.12 transitivePeerDependencies: - supports-color @@ -7392,7 +7199,7 @@ packages: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 /@babel/types/7.19.3: @@ -8191,7 +7998,7 @@ packages: optional: true dependencies: '@jest/console': 27.5.1 - '@jest/reporters': 27.3.1 + '@jest/reporters': 27.5.1 '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 @@ -8201,19 +8008,19 @@ packages: emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.9 - jest-changed-files: 27.3.0 + jest-changed-files: 27.5.1 jest-config: 27.5.1 - jest-haste-map: 27.3.1 + jest-haste-map: 27.5.1 jest-message-util: 27.5.1 jest-regex-util: 27.5.1 jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.3.1 - jest-runner: 27.3.1 - jest-runtime: 27.3.1 - jest-snapshot: 27.3.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 jest-util: 27.5.1 jest-validate: 27.5.1 - jest-watcher: 27.3.1 + jest-watcher: 27.5.1 micromatch: 4.0.4 rimraf: 3.0.2 slash: 3.0.0 @@ -8379,15 +8186,6 @@ packages: expect: 26.6.2 dev: true - /@jest/globals/27.3.1: - resolution: {integrity: sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - dev: true - /@jest/globals/27.5.1: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8495,44 +8293,6 @@ packages: - supports-color dev: true - /@jest/reporters/27.3.1: - resolution: {integrity: sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.21 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.4 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.0 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/reporters/27.5.1: resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10604,7 +10364,7 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -10628,7 +10388,7 @@ packages: babel-plugin-macros: 2.8.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.21.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 @@ -10697,7 +10457,7 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -10721,7 +10481,7 @@ packages: babel-plugin-macros: 2.8.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.21.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 @@ -10790,7 +10550,7 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -10814,7 +10574,7 @@ packages: babel-plugin-macros: 2.8.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.21.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 @@ -10883,7 +10643,7 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.18.6_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@storybook/addons': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/api': 6.4.19_sfoxds7t5ydpegc3knd667wn6m '@storybook/channel-postmessage': 6.4.19 @@ -10907,7 +10667,7 @@ packages: babel-plugin-macros: 2.8.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.5 + core-js: 3.21.1 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 @@ -11335,22 +11095,22 @@ packages: optional: true dependencies: '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 @@ -11405,22 +11165,22 @@ packages: optional: true dependencies: '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.17.8 '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.17.8 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.17.8 '@babel/preset-env': 7.19.3_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 @@ -13866,12 +13626,12 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/type-utils': 5.15.0_z4bbprzjrhnsfa24uvmcbu7f5q '@typescript-eslint/utils': 5.15.0_z4bbprzjrhnsfa24uvmcbu7f5q - debug: 4.3.3 + debug: 4.3.4 eslint: 8.25.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.5 + semver: 7.3.7 tsutils: 3.21.0_typescript@4.8.4 typescript: 4.8.4 transitivePeerDependencies: @@ -13892,12 +13652,12 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/type-utils': 5.15.0_himlt4eddny2rsb5zkuydvuf7u '@typescript-eslint/utils': 5.15.0_himlt4eddny2rsb5zkuydvuf7u - debug: 4.3.3 + debug: 4.3.4 eslint: 8.11.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.5 + semver: 7.3.7 tsutils: 3.21.0_typescript@4.8.4 typescript: 4.8.4 transitivePeerDependencies: @@ -14173,7 +13933,7 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/types': 5.15.0 '@typescript-eslint/typescript-estree': 5.15.0_typescript@4.8.4 - debug: 4.3.4 + debug: 4.3.3 eslint: 8.11.0 typescript: 4.8.4 transitivePeerDependencies: @@ -14193,7 +13953,7 @@ packages: '@typescript-eslint/scope-manager': 5.15.0 '@typescript-eslint/types': 5.15.0 '@typescript-eslint/typescript-estree': 5.15.0_typescript@4.8.4 - debug: 4.3.4 + debug: 4.3.3 eslint: 8.12.0 typescript: 4.8.4 transitivePeerDependencies: @@ -17902,14 +17662,6 @@ packages: dependencies: acorn: 7.4.1 - /acorn-jsx/5.3.2_acorn@8.7.0: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.7.0 - dev: true - /acorn-jsx/5.3.2_acorn@8.8.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -18698,13 +18450,13 @@ packages: peerDependencies: eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.3 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.17.8 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 eslint: 7.32.0 eslint-visitor-keys: 1.3.0 - resolve: 1.22.1 + resolve: 1.20.0 transitivePeerDependencies: - supports-color dev: true @@ -19013,7 +18765,7 @@ packages: dependencies: '@babel/runtime': 7.19.0 cosmiconfig: 7.0.1 - resolve: 1.20.0 + resolve: 1.22.1 dev: true /babel-plugin-named-asset-import/0.3.8_@babel+core@7.17.8: @@ -19055,14 +18807,40 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 + '@babel/compat-data': 7.19.3 '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.8 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.12.9: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.19.3 + '@babel/core': 7.12.9 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.16.12: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.19.3 + '@babel/core': 7.16.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.17.8: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: @@ -19129,7 +18907,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.12.9 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.9 core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color @@ -19141,7 +18919,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.16.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.16.12 core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color @@ -19153,8 +18931,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.8 - core-js-compat: 3.21.1 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color dev: true @@ -19198,7 +18976,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.17.8 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.17.8 transitivePeerDependencies: - supports-color dev: true @@ -21144,8 +20922,9 @@ packages: /core-js-compat/3.21.1: resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==} dependencies: - browserslist: 4.20.4 + browserslist: 4.21.4 semver: 7.0.0 + dev: true /core-js-compat/3.25.5: resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==} @@ -24084,8 +23863,8 @@ packages: resolution: {integrity: sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 eslint-visitor-keys: 3.3.0 dev: true @@ -24093,8 +23872,8 @@ packages: resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 eslint-visitor-keys: 3.3.0 dev: true @@ -28031,15 +27810,6 @@ packages: throat: 5.0.0 dev: true - /jest-changed-files/27.3.0: - resolution: {integrity: sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.1 - dev: true - /jest-changed-files/27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -28732,26 +28502,6 @@ packages: transitivePeerDependencies: - supports-color - /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} - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.21 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.9 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.4 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /jest-haste-map/27.5.1: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29166,17 +28916,6 @@ packages: - supports-color dev: true - /jest-resolve-dependencies/27.3.1: - resolution: {integrity: sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-resolve-dependencies/27.5.1: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29344,39 +29083,6 @@ packages: - utf-8-validate dev: true - /jest-runner/27.3.1: - resolution: {integrity: sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.21 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.20 - throat: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - /jest-runner/27.5.1: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29520,40 +29226,6 @@ packages: - utf-8-validate dev: true - /jest-runtime/27.3.1: - resolution: {integrity: sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/globals': 27.3.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - execa: 5.1.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /jest-runtime/27.5.1: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29675,38 +29347,6 @@ packages: - supports-color dev: true - /jest-snapshot/27.3.1: - resolution: {integrity: sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.19.3 - '@babel/parser': 7.19.3 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.17.8 - '@babel/traverse': 7.19.3 - '@babel/types': 7.19.3 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.4.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.8 - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.9 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.3.7 - transitivePeerDependencies: - - supports-color - dev: true - /jest-snapshot/27.5.1: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -29875,19 +29515,6 @@ packages: string-length: 4.0.2 dev: true - /jest-watcher/27.3.1: - resolution: {integrity: sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.21 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 - dev: true - /jest-watcher/27.5.1: resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -36634,6 +36261,7 @@ packages: resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} dependencies: '@babel/runtime': 7.19.0 + dev: true /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} @@ -37448,6 +37076,7 @@ packages: /semver/7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true + dev: true /semver/7.3.5: resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} @@ -40796,7 +40425,7 @@ packages: resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} /verror/1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -41750,7 +41379,7 @@ packages: dev: false /wrap-ansi/2.1.0: - resolution: {integrity: sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=} + resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} engines: {node: '>=0.10.0'} dependencies: string-width: 1.0.2 From b9842b6f99ec90b9807a51e0df7450c5d5b1f98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Tue, 18 Oct 2022 00:17:22 +0200 Subject: [PATCH 010/249] Fix JS linting errors adjust whitespaces and parentheses. --- .../client/analytics/report/revenue/table.js | 2 +- .../client/analytics/settings/default-date.js | 2 +- .../client/embedded-body-layout/embedded-body-layout.tsx | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce-admin/client/analytics/report/revenue/table.js b/plugins/woocommerce-admin/client/analytics/report/revenue/table.js index c40cc5ff6ea..e4c5ab5e14e 100644 --- a/plugins/woocommerce-admin/client/analytics/report/revenue/table.js +++ b/plugins/woocommerce-admin/client/analytics/report/revenue/table.js @@ -307,7 +307,7 @@ const formatProps = memoize( [ isError, isRequesting, - ( new URLSearchParams( tableQuery ) ).toString(), + new URLSearchParams( tableQuery ).toString(), get( revenueData, [ 'totalResults' ], 0 ), get( revenueData, [ 'data', 'intervals' ], EMPTY_ARRAY ).length, ].join( ':' ) diff --git a/plugins/woocommerce-admin/client/analytics/settings/default-date.js b/plugins/woocommerce-admin/client/analytics/settings/default-date.js index 4810f229b8b..22c1f99909d 100644 --- a/plugins/woocommerce-admin/client/analytics/settings/default-date.js +++ b/plugins/woocommerce-admin/client/analytics/settings/default-date.js @@ -19,7 +19,7 @@ const DefaultDate = ( { value, onChange } ) => { onChange( { target: { name: 'woocommerce_default_date_range', - value: ( new URLSearchParams( query ) ).toString(), + value: new URLSearchParams( query ).toString(), }, } ); }; diff --git a/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx b/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx index 55a0bcde870..4836b0599fa 100644 --- a/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx +++ b/plugins/woocommerce-admin/client/embedded-body-layout/embedded-body-layout.tsx @@ -14,9 +14,7 @@ import './style.scss'; type QueryParams = EmbeddedBodyProps; -function isWPPage( - params: URLSearchParams -): Boolean { +function isWPPage( params: URLSearchParams ): boolean { return params.get( 'page' ) !== null; } From 35cd4518bb33524c5c7209dc96f1adaf46a74858 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 9 Nov 2022 16:14:34 +0000 Subject: [PATCH 011/249] Enqueue fragments only in the cart widget --- plugins/woocommerce/includes/class-wc-frontend-scripts.php | 1 - plugins/woocommerce/includes/widgets/class-wc-widget-cart.php | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-frontend-scripts.php b/plugins/woocommerce/includes/class-wc-frontend-scripts.php index 4ddbb076061..d95833aa819 100644 --- a/plugins/woocommerce/includes/class-wc-frontend-scripts.php +++ b/plugins/woocommerce/includes/class-wc-frontend-scripts.php @@ -430,7 +430,6 @@ class WC_Frontend_Scripts { // Global frontend scripts. self::enqueue_script( 'woocommerce' ); - self::enqueue_script( 'wc-cart-fragments' ); // CSS Styles. $enqueue_styles = self::get_styles(); diff --git a/plugins/woocommerce/includes/widgets/class-wc-widget-cart.php b/plugins/woocommerce/includes/widgets/class-wc-widget-cart.php index cc76280b5a7..0d33873c5cc 100644 --- a/plugins/woocommerce/includes/widgets/class-wc-widget-cart.php +++ b/plugins/woocommerce/includes/widgets/class-wc-widget-cart.php @@ -56,6 +56,8 @@ class WC_Widget_Cart extends WC_Widget { return; } + wp_enqueue_script( 'wc-cart-fragments' ); + $hide_if_empty = empty( $instance['hide_if_empty'] ) ? 0 : 1; if ( ! isset( $instance['title'] ) ) { From 6ade094a289971713d4a43fe0d3f7995f9a2331a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 9 Nov 2022 16:17:56 +0000 Subject: [PATCH 012/249] changelog --- plugins/woocommerce/changelog/update-cart-fragments-enqueue | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-cart-fragments-enqueue diff --git a/plugins/woocommerce/changelog/update-cart-fragments-enqueue b/plugins/woocommerce/changelog/update-cart-fragments-enqueue new file mode 100644 index 00000000000..bc15dd297af --- /dev/null +++ b/plugins/woocommerce/changelog/update-cart-fragments-enqueue @@ -0,0 +1,4 @@ +Significance: minor +Type: performance + +Removed global enqueue of wc-cart-fragments. Moved to the cart widget (it's main consumer). From c503d9dda95417be41356fa910b0c051daaaab94 Mon Sep 17 00:00:00 2001 From: Dinesh Kesarwani Date: Fri, 17 Feb 2023 17:30:22 +0530 Subject: [PATCH 013/249] Use esc_html_e instead of esc_attr_e --- plugins/woocommerce/templates/cart/cart.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index a8f8c22d83d..34bee648c78 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -144,7 +144,7 @@ do_action( 'woocommerce_before_cart' ); ?>
- +
From edb54536b1cde56789484406f9bdc0f0cd9b8baf Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Wed, 19 Apr 2023 16:21:20 +0530 Subject: [PATCH 014/249] Fix/37599 Add Product Name in the `aria-label` --- plugins/woocommerce/templates/cart/cart.php | 7 ++++--- plugins/woocommerce/templates/cart/mini-cart.php | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index a8f8c22d83d..e9222b69104 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -38,8 +38,9 @@ do_action( 'woocommerce_before_cart' ); ?> cart->get_cart() as $cart_item_key => $cart_item ) { - $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); - $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); + $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); + $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); + $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) { $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key ); @@ -53,7 +54,7 @@ do_action( 'woocommerce_before_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - esc_html__( 'Remove this item', 'woocommerce' ), + sprintf( esc_attr__( 'Remove %s', 'woocommerce' ), $product_name ), esc_attr( $product_id ), esc_attr( $_product->get_sku() ) ), diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index a3c1ecf2e4e..28fb651a6f9 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -44,7 +44,7 @@ do_action( 'woocommerce_before_mini_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - esc_attr__( 'Remove this item', 'woocommerce' ), + sprintf( esc_attr__( 'Remove %s', 'woocommerce' ), $product_name ), esc_attr( $product_id ), esc_attr( $cart_item_key ), esc_attr( $_product->get_sku() ) From 4696721e8c2bb28d100eacda09c847788afc6e98 Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Wed, 19 Apr 2023 16:22:29 +0530 Subject: [PATCH 015/249] adding changelog --- plugins/woocommerce/changelog/fix-37599 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-37599 diff --git a/plugins/woocommerce/changelog/fix-37599 b/plugins/woocommerce/changelog/fix-37599 new file mode 100644 index 00000000000..51632c3857e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-37599 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Add a product name in the aria-label attribute on the cart page. \ No newline at end of file From dbac9ff4d05e799510f5f1ab8759f848218ea71b Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Wed, 19 Apr 2023 14:03:57 +0200 Subject: [PATCH 016/249] Add order note to display held stock inventory to provide more visibility to merchants. --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 247e80a5255..24faa7699cd 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -72,6 +72,8 @@ final class ReserveStock { return; } + $order_notes = array(); + try { $items = array_filter( $order->get_items(), @@ -113,6 +115,7 @@ final class ReserveStock { $item_quantity = apply_filters( 'woocommerce_order_item_quantity', $item->get_quantity(), $order, $item ); $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; + $order_notes[] = $product->get_formatted_name() . ' : ' . $rows[ $managed_by_id ]; } if ( ! empty( $rows ) ) { @@ -124,6 +127,11 @@ final class ReserveStock { $this->release_stock_for_order( $order ); throw $e; } + + // Add order note after successfully holding the stock. + if ( ! empty( $rows ) ) { + $order->add_order_note( sprintf( __( 'Products stock held for %s minutes:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); + } } /** From 45ec163aa7dd793a9551e1e8d5c4ca13246737e3 Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Wed, 19 Apr 2023 14:24:20 +0200 Subject: [PATCH 017/249] add changelog --- plugins/woocommerce/changelog/enhancement-add-held-stock-note | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/enhancement-add-held-stock-note diff --git a/plugins/woocommerce/changelog/enhancement-add-held-stock-note b/plugins/woocommerce/changelog/enhancement-add-held-stock-note new file mode 100644 index 00000000000..7e8b1de222a --- /dev/null +++ b/plugins/woocommerce/changelog/enhancement-add-held-stock-note @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Add order note to display held stock inventory to provide more visibility to merchants. From 66dcd19f0d36c86384256be7bedf14d60dda825f Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Wed, 19 Apr 2023 14:46:40 +0200 Subject: [PATCH 018/249] change note message --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 24faa7699cd..5feca99a72d 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -130,7 +130,7 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $rows ) ) { - $order->add_order_note( sprintf( __( 'Products stock held for %s minutes:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); + $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); } } From da0d28ed2407370450270b0636d29a620cf25cc7 Mon Sep 17 00:00:00 2001 From: Faisal Alvi Date: Wed, 19 Apr 2023 19:37:30 +0530 Subject: [PATCH 019/249] Update plugins/woocommerce/changelog/fix-37599 Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com> --- plugins/woocommerce/changelog/fix-37599 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/changelog/fix-37599 b/plugins/woocommerce/changelog/fix-37599 index 51632c3857e..426713de61f 100644 --- a/plugins/woocommerce/changelog/fix-37599 +++ b/plugins/woocommerce/changelog/fix-37599 @@ -1,4 +1,4 @@ Significance: patch Type: fix -Add a product name in the aria-label attribute on the cart page. \ No newline at end of file +Add the product name to the "Remove from cart" button's aria-label in the cart and mini cart. \ No newline at end of file From aaf089168f2320fd0b763263784024884f167dd1 Mon Sep 17 00:00:00 2001 From: Alejandro Iglesias Date: Wed, 19 Apr 2023 18:43:40 +0200 Subject: [PATCH 020/249] Do not call login if user is already logged in --- plugins/woocommerce/includes/class-wc-form-handler.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/includes/class-wc-form-handler.php b/plugins/woocommerce/includes/class-wc-form-handler.php index 3ec4872d871..e125a720971 100644 --- a/plugins/woocommerce/includes/class-wc-form-handler.php +++ b/plugins/woocommerce/includes/class-wc-form-handler.php @@ -961,8 +961,12 @@ class WC_Form_Handler { } } - // Perform the login. - $user = wp_signon( apply_filters( 'woocommerce_login_credentials', $creds ), is_ssl() ); + // Perform the login if the user is not already logged in. + if ( is_user_logged_in() ) { + $user = wp_get_current_user(); + } else { + $user = wp_signon( apply_filters( 'woocommerce_login_credentials', $creds ), is_ssl() ); + } if ( is_wp_error( $user ) ) { throw new Exception( $user->get_error_message() ); From 1a9439f7dbb9526547bbd435a0055897c779d080 Mon Sep 17 00:00:00 2001 From: Alejandro Iglesias Date: Wed, 19 Apr 2023 19:08:10 +0200 Subject: [PATCH 021/249] add changelog --- plugins/woocommerce/changelog/fix-34127 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-34127 diff --git a/plugins/woocommerce/changelog/fix-34127 b/plugins/woocommerce/changelog/fix-34127 new file mode 100644 index 00000000000..a5e76e2226e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-34127 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Prevent login call if the user is already logged in. From 3b9be84659e10a198f3de267e95546fbc68edf47 Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Thu, 20 Apr 2023 00:55:04 +0200 Subject: [PATCH 022/249] products held stock notes variable rename --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 5feca99a72d..6e189d0c033 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -72,7 +72,7 @@ final class ReserveStock { return; } - $order_notes = array(); + $held_stock_notes = array(); try { $items = array_filter( @@ -115,7 +115,7 @@ final class ReserveStock { $item_quantity = apply_filters( 'woocommerce_order_item_quantity', $item->get_quantity(), $order, $item ); $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; - $order_notes[] = $product->get_formatted_name() . ' : ' . $rows[ $managed_by_id ]; + $held_stock_notes[] = $product->get_formatted_name() . ' : ' . $rows[ $managed_by_id ]; } if ( ! empty( $rows ) ) { @@ -129,7 +129,7 @@ final class ReserveStock { } // Add order note after successfully holding the stock. - if ( ! empty( $rows ) ) { + if ( ! empty( $held_stock_notes ) ) { $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); } } From 1109f7147a16177c7a2820dbd6a2e5f9801b0add Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Thu, 20 Apr 2023 00:55:56 +0200 Subject: [PATCH 023/249] Add comment to the translatable string --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 6e189d0c033..0f992de59e3 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -130,6 +130,7 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $held_stock_notes ) ) { + // translators: %s is a time in minutes $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); } } From 70c782fa639a97be9c9b71f0bf1f875dc17419d9 Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Thu, 20 Apr 2023 01:10:16 +0200 Subject: [PATCH 024/249] fix notes array --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 0f992de59e3..971c6e22ded 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -131,7 +131,7 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $held_stock_notes ) ) { // translators: %s is a time in minutes - $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $order_notes ) ); + $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $held_stock_notes ) ); } } From 7d4a7ca8839cd2366e9eed24063c7cd74ddbd9e2 Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Thu, 20 Apr 2023 14:03:38 +0530 Subject: [PATCH 025/249] update text: Remove %s from cart --- plugins/woocommerce/templates/cart/cart.php | 2 +- plugins/woocommerce/templates/cart/mini-cart.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index e9222b69104..7766dd32099 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -54,7 +54,7 @@ do_action( 'woocommerce_before_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - sprintf( esc_attr__( 'Remove %s', 'woocommerce' ), $product_name ), + sprintf( esc_attr__( 'Remove %s from cart', 'woocommerce' ), $product_name ), esc_attr( $product_id ), esc_attr( $_product->get_sku() ) ), diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index 28fb651a6f9..89e12b079d2 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -44,7 +44,7 @@ do_action( 'woocommerce_before_mini_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - sprintf( esc_attr__( 'Remove %s', 'woocommerce' ), $product_name ), + sprintf( esc_attr__( 'Remove %s from cart', 'woocommerce' ), $product_name ), esc_attr( $product_id ), esc_attr( $cart_item_key ), esc_attr( $_product->get_sku() ) From 158748a6d46d785b94aa8f05564ec7ce23ebbb1b Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Thu, 20 Apr 2023 14:20:31 +0530 Subject: [PATCH 026/249] escape the $product_name --- plugins/woocommerce/templates/cart/cart.php | 2 +- plugins/woocommerce/templates/cart/mini-cart.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index 7766dd32099..2c501bc5383 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -54,7 +54,7 @@ do_action( 'woocommerce_before_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - sprintf( esc_attr__( 'Remove %s from cart', 'woocommerce' ), $product_name ), + esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), $product_name ) ), esc_attr( $product_id ), esc_attr( $_product->get_sku() ) ), diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index 89e12b079d2..e2d4dfffd70 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -44,7 +44,7 @@ do_action( 'woocommerce_before_mini_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - sprintf( esc_attr__( 'Remove %s from cart', 'woocommerce' ), $product_name ), + esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), $product_name ) ), esc_attr( $product_id ), esc_attr( $cart_item_key ), esc_attr( $_product->get_sku() ) From bfb1f08d2a78688d9482d2636a9f706956c8452a Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Thu, 20 Apr 2023 14:21:18 +0530 Subject: [PATCH 027/249] translation hint for the product name --- plugins/woocommerce/templates/cart/cart.php | 1 + plugins/woocommerce/templates/cart/mini-cart.php | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index 2c501bc5383..3ed52e601aa 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -54,6 +54,7 @@ do_action( 'woocommerce_before_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), + /* translators: %s is the product name */ esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), $product_name ) ), esc_attr( $product_id ), esc_attr( $_product->get_sku() ) diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index e2d4dfffd70..148d3c7ab31 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -44,6 +44,7 @@ do_action( 'woocommerce_before_mini_cart' ); ?> sprintf( '×', esc_url( wc_get_cart_remove_url( $cart_item_key ) ), + /* translators: %s is the product name */ esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), $product_name ) ), esc_attr( $product_id ), esc_attr( $cart_item_key ), From eab77938c0a7975febe84d60249a79e2f82f9aa5 Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Thu, 20 Apr 2023 17:29:35 +0200 Subject: [PATCH 028/249] Add order note as a list of products --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 971c6e22ded..b3ea924a631 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -115,7 +115,7 @@ final class ReserveStock { $item_quantity = apply_filters( 'woocommerce_order_item_quantity', $item->get_quantity(), $order, $item ); $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; - $held_stock_notes[] = $product->get_formatted_name() . ' : ' . $rows[ $managed_by_id ]; + $held_stock_notes[] = $product->get_formatted_name() . ' x ' . $rows[ $managed_by_id ]; } if ( ! empty( $rows ) ) { @@ -131,7 +131,7 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $held_stock_notes ) ) { // translators: %s is a time in minutes - $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . ' ' . implode( ', ', $held_stock_notes ) ); + $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . '
- ' . implode( '
- ', $held_stock_notes ) ); } } From e10fb35731224ab415ba1219fd0912cdb54d9bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Thu, 20 Apr 2023 20:57:24 +0300 Subject: [PATCH 029/249] Fix tt3 attributes table --- .../legacy/css/twenty-twenty-three.scss | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss index 3613c74465f..11c1a59a923 100644 --- a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss +++ b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss @@ -584,12 +584,28 @@ ul.wc-tabs { font-size: var(--wp--preset--font-size--small); margin-left: 1em; - h2 { + // Hide repeated heading. + h2:first-of-type { display: none; } + // Attributes table styles. table.woocommerce-product-attributes { - text-align: left; + tbody { + + td, th { + padding: 0.2rem 0.2rem 0.2rem 0; + + p { + margin: 0; + } + } + + th { + text-align: left; + padding-right: 1rem; + } + } } } From 3a467bb6a05c748405d2c6e61cab9886e514e75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Thu, 20 Apr 2023 20:59:41 +0300 Subject: [PATCH 030/249] Add changelog --- plugins/woocommerce/changelog/fix-tt3-attributes-table | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-tt3-attributes-table diff --git a/plugins/woocommerce/changelog/fix-tt3-attributes-table b/plugins/woocommerce/changelog/fix-tt3-attributes-table new file mode 100644 index 00000000000..4d799f85715 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-tt3-attributes-table @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Fixed the attributes table styling in TT3 tabs content area From 70cbbeebd422b7c592a49442dd31f83e976a9838 Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Fri, 21 Apr 2023 14:02:35 +0530 Subject: [PATCH 031/249] updating the product name var --- plugins/woocommerce/templates/cart/cart.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index 3ed52e601aa..02ffae67aa8 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -79,9 +79,9 @@ do_action( 'woocommerce_before_cart' ); ?> get_name(), $cart_item, $cart_item_key ) . ' ' ); + echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', $product_name, $cart_item, $cart_item_key ) . ' ' ); } else { - echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '%s', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) ); + echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '%s', esc_url( $product_permalink ), $product_name ), $cart_item, $cart_item_key ) ); } do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key ); @@ -118,7 +118,7 @@ do_action( 'woocommerce_before_cart' ); ?> 'input_value' => $cart_item['quantity'], 'max_value' => $max_quantity, 'min_value' => $min_quantity, - 'product_name' => $_product->get_name(), + 'product_name' => $product_name, ), $_product, false From a4c88e90b16716cf6f1c3e69bdbeb3887c2101b9 Mon Sep 17 00:00:00 2001 From: faisal-alvi Date: Fri, 21 Apr 2023 14:05:15 +0530 Subject: [PATCH 032/249] templates version bump to 7.8.0 --- plugins/woocommerce/templates/cart/cart.php | 2 +- plugins/woocommerce/templates/cart/mini-cart.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index 02ffae67aa8..85340ada108 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -12,7 +12,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 7.4.0 + * @version 7.8.0 */ defined( 'ABSPATH' ) || exit; diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index 148d3c7ab31..a5f5a8d9488 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -14,7 +14,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 5.2.0 + * @version 7.8.0 */ defined( 'ABSPATH' ) || exit; From e524e959d6fac9da33ca8fa69d236026e0af9175 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 21 Apr 2023 10:51:46 -0300 Subject: [PATCH 033/249] add filter PHPDocs --- plugins/woocommerce/templates/cart/cart.php | 5 +++++ plugins/woocommerce/templates/cart/mini-cart.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index 85340ada108..fb903cebf79 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -40,6 +40,11 @@ do_action( 'woocommerce_before_cart' ); ?> foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); + /** + * Filter the product name. + * + * @param string $product_name Name of the product in the cart. + */ $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) { diff --git a/plugins/woocommerce/templates/cart/mini-cart.php b/plugins/woocommerce/templates/cart/mini-cart.php index a5f5a8d9488..d0e0b181a55 100644 --- a/plugins/woocommerce/templates/cart/mini-cart.php +++ b/plugins/woocommerce/templates/cart/mini-cart.php @@ -32,6 +32,11 @@ do_action( 'woocommerce_before_mini_cart' ); ?> $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) { + /** + * Filter the product name. + * + * @param string $product_name Name of the product in the cart. + */ $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key ); $product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); From 78fce9af351c007c848ff9bd4b1d4518fc824257 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Fri, 21 Apr 2023 12:59:59 -0300 Subject: [PATCH 034/249] more filter PHPDocs --- plugins/woocommerce/templates/cart/cart.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/templates/cart/cart.php b/plugins/woocommerce/templates/cart/cart.php index fb903cebf79..267ac19b004 100644 --- a/plugins/woocommerce/templates/cart/cart.php +++ b/plugins/woocommerce/templates/cart/cart.php @@ -38,11 +38,12 @@ do_action( 'woocommerce_before_cart' ); ?> cart->get_cart() as $cart_item_key => $cart_item ) { - $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); - $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); + $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); + $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); /** * Filter the product name. * + * @since 7.8.0 * @param string $product_name Name of the product in the cart. */ $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); @@ -84,8 +85,22 @@ do_action( 'woocommerce_before_cart' ); ?> %s', esc_url( $product_permalink ), $product_name ), $cart_item, $cart_item_key ) ); } From 65bf73835de77ba4cfc3466a6f9c64ea6101ae6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Fri, 21 Apr 2023 19:02:48 +0300 Subject: [PATCH 035/249] Add order-again button class --- plugins/woocommerce/includes/wc-template-functions.php | 1 + plugins/woocommerce/templates/order/order-again.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/includes/wc-template-functions.php b/plugins/woocommerce/includes/wc-template-functions.php index 09a1c18eb34..9429164250d 100644 --- a/plugins/woocommerce/includes/wc-template-functions.php +++ b/plugins/woocommerce/includes/wc-template-functions.php @@ -2747,6 +2747,7 @@ if ( ! function_exists( 'woocommerce_order_again_button' ) ) { 'order/order-again.php', array( 'order' => $order, + 'wp_button_class' => wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '', 'order_again_url' => wp_nonce_url( add_query_arg( 'order_again', $order->get_id(), wc_get_cart_url() ), 'woocommerce-order_again' ), ) ); diff --git a/plugins/woocommerce/templates/order/order-again.php b/plugins/woocommerce/templates/order/order-again.php index f7bc2242cdd..78cc5018088 100644 --- a/plugins/woocommerce/templates/order/order-again.php +++ b/plugins/woocommerce/templates/order/order-again.php @@ -12,12 +12,12 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 3.5.0 + * @version x.x.x */ defined( 'ABSPATH' ) || exit; ?>

- +

From 43bd3177972ace948b3170f5a60504420bc296be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Fri, 21 Apr 2023 19:03:04 +0300 Subject: [PATCH 036/249] Add no-downloads button class --- plugins/woocommerce/templates/myaccount/downloads.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/templates/myaccount/downloads.php b/plugins/woocommerce/templates/myaccount/downloads.php index 7d445faacdd..fc00fadb3b7 100644 --- a/plugins/woocommerce/templates/myaccount/downloads.php +++ b/plugins/woocommerce/templates/myaccount/downloads.php @@ -14,7 +14,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 7.8.0 + * @version x.x.x */ if ( ! defined( 'ABSPATH' ) ) { @@ -35,8 +35,12 @@ do_action( 'woocommerce_before_account_downloads', $has_downloads ); ?> - - ' . esc_html__( 'Browse products', 'woocommerce' ) . '', 'notice' ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment ?> + + ' . esc_html__( 'Browse products', 'woocommerce' ) . '', 'notice' ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment + ?> From ddb399b4aa384c7056ad83323da220f04019f887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Fri, 21 Apr 2023 19:03:28 +0300 Subject: [PATCH 037/249] Add order-pagination button class --- plugins/woocommerce/templates/myaccount/orders.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce/templates/myaccount/orders.php b/plugins/woocommerce/templates/myaccount/orders.php index 315f9a25fd1..9452964c3cd 100644 --- a/plugins/woocommerce/templates/myaccount/orders.php +++ b/plugins/woocommerce/templates/myaccount/orders.php @@ -14,7 +14,7 @@ * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates - * @version 7.8.0 + * @version x.x.x */ defined( 'ABSPATH' ) || exit; @@ -86,18 +86,18 @@ do_action( 'woocommerce_before_account_orders', $has_orders ); ?> max_num_pages ) : ?>
- + max_num_pages ) !== $current_page ) : ?> - +
- ' . esc_html__( 'Browse products', 'woocommerce' ) . '', 'notice' ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment ?> + ' . esc_html__( 'Browse products', 'woocommerce' ) . '', 'notice' ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment ?> From e30983ef5920ed37e657496681e7a30c4900fd4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Fri, 21 Apr 2023 19:07:32 +0300 Subject: [PATCH 038/249] Add changelog --- plugins/woocommerce/changelog/add-tt3-comp-button-classes | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-tt3-comp-button-classes diff --git a/plugins/woocommerce/changelog/add-tt3-comp-button-classes b/plugins/woocommerce/changelog/add-tt3-comp-button-classes new file mode 100644 index 00000000000..935235e217f --- /dev/null +++ b/plugins/woocommerce/changelog/add-tt3-comp-button-classes @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Added missing button element classes in account orders and downloads pages From 704ad2832abac673bfaeaa5d889304ca4d50dd19 Mon Sep 17 00:00:00 2001 From: Abdalsalaam Halawa Date: Thu, 27 Apr 2023 00:09:43 +0200 Subject: [PATCH 039/249] Limit the number of products that are listed in the held stock note. --- .../src/Checkout/Helpers/ReserveStock.php | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index b3ea924a631..1f5d5c9a4fb 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -72,7 +72,8 @@ final class ReserveStock { return; } - $held_stock_notes = array(); + $held_stock_notes = array(); + $held_stock_counter = 0; try { $items = array_filter( @@ -115,7 +116,11 @@ final class ReserveStock { $item_quantity = apply_filters( 'woocommerce_order_item_quantity', $item->get_quantity(), $order, $item ); $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; - $held_stock_notes[] = $product->get_formatted_name() . ' x ' . $rows[ $managed_by_id ]; + + if ( $held_stock_counter < 5 ) { + $held_stock_notes[] = $product->get_formatted_name() . ' x ' . $rows[ $managed_by_id ]; + $held_stock_counter++; + } } if ( ! empty( $rows ) ) { @@ -130,8 +135,18 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $held_stock_notes ) ) { + + $note_suffix = ''; + // Add suffix if there are more than 5 items. + if ( count( $items ) > $held_stock_counter ) { + $remaining_count = count( $items ) - $held_stock_counter; + + // translators: %d is the remaining order items count. + $note_suffix = '
- ' . sprintf( __( '... and %d more items.', 'woocommerce' ), $remaining_count ); + } + // translators: %s is a time in minutes - $order->add_order_note( sprintf( __( 'Stock is held for %s minutes for payment:', 'woocommerce' ), $minutes ) . '
- ' . implode( '
- ', $held_stock_notes ) ); + $order->add_order_note( sprintf( __( 'Stock hold of %s minutes applied to:', 'woocommerce' ), $minutes ) . '
- ' . implode( '
- ', $held_stock_notes ) . $note_suffix ); } } From ef7bf6a28bb9f9f6d418714163ba5427faaeb6c1 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Fri, 5 May 2023 15:42:47 +0800 Subject: [PATCH 040/249] Update Payfast logo and title (#38090) * Update Payfast title * Update Payfast logo * Add changelog * Update Payfast 72x72 logo --- packages/js/data/changelog/update-payfast | 4 ++++ packages/js/data/src/plugins/constants.ts | 2 +- .../client/activity-panel/panels/help.js | 2 +- .../client/activity-panel/test/help-panel.js | 2 +- plugins/woocommerce/assets/images/payfast.png | Bin 5488 -> 8017 bytes .../images/payment_methods/72x72/payfast.png | Bin 766 -> 2960 bytes plugins/woocommerce/changelog/update-payfast | 4 ++++ .../DefaultPaymentGateways.php | 4 ++-- 8 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 packages/js/data/changelog/update-payfast create mode 100644 plugins/woocommerce/changelog/update-payfast diff --git a/packages/js/data/changelog/update-payfast b/packages/js/data/changelog/update-payfast new file mode 100644 index 00000000000..40e5dec5fce --- /dev/null +++ b/packages/js/data/changelog/update-payfast @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Update Payfast title diff --git a/packages/js/data/src/plugins/constants.ts b/packages/js/data/src/plugins/constants.ts index a3949810cc2..511984b757b 100644 --- a/packages/js/data/src/plugins/constants.ts +++ b/packages/js/data/src/plugins/constants.ts @@ -33,7 +33,7 @@ export const pluginNames = { 'woocommerce' ), 'woocommerce-gateway-stripe': __( 'WooCommerce Stripe', 'woocommerce' ), - 'woocommerce-payfast-gateway': __( 'WooCommerce PayFast', 'woocommerce' ), + 'woocommerce-payfast-gateway': __( 'WooCommerce Payfast', 'woocommerce' ), 'woocommerce-payments': __( 'WooCommerce Payments', 'woocommerce' ), 'woocommerce-services': __( 'WooCommerce Shipping & Tax', 'woocommerce' ), 'woocommerce-services:shipping': __( diff --git a/plugins/woocommerce-admin/client/activity-panel/panels/help.js b/plugins/woocommerce-admin/client/activity-panel/panels/help.js index 00a94cac886..2f1df913eb4 100644 --- a/plugins/woocommerce-admin/client/activity-panel/panels/help.js +++ b/plugins/woocommerce-admin/client/activity-panel/panels/help.js @@ -145,7 +145,7 @@ function getPaymentGatewaySuggestions( props ) { link: 'https://woocommerce.com/document/klarna-payments/?utm_source=help_panel&utm_medium=product', }, paymentGatewaySuggestions.payfast && { - title: __( 'PayFast Setup and Configuration', 'woocommerce' ), + title: __( 'Payfast Setup and Configuration', 'woocommerce' ), link: 'https://woocommerce.com/document/payfast-payment-gateway/?utm_source=help_panel&utm_medium=product', }, paymentGatewaySuggestions.eway && { diff --git a/plugins/woocommerce-admin/client/activity-panel/test/help-panel.js b/plugins/woocommerce-admin/client/activity-panel/test/help-panel.js index 987bf25de49..c12f1326ee5 100644 --- a/plugins/woocommerce-admin/client/activity-panel/test/help-panel.js +++ b/plugins/woocommerce-admin/client/activity-panel/test/help-panel.js @@ -39,7 +39,7 @@ describe( 'Activity Panels', () => { }, { id: 'payfast', - text: 'PayFast', + text: 'Payfast', }, { id: 'eway', diff --git a/plugins/woocommerce/assets/images/payfast.png b/plugins/woocommerce/assets/images/payfast.png index 7199cd00b8fd91fbeed353d9b21219ae96a6f5e8..2b51964034038582625b8d1435e55f5c474f7394 100644 GIT binary patch literal 8017 zcmd5>hdbNf_qU2x(Q57Dqo}qhZS6g)C>_+EwMV3=kwnav4{Fp1Rl8OZu?b?jnh{1*6VO&36 z?XFQ!@UH1-su=}PZp~YH-!*}??fE>{`)uDavoD&{wA*~^vu-hjGJKcz)qgz|E#cbN zFYLCq)GrRHxD**&ev8_Q-gClUgbc9P3 zL{y7Ho`~CQ-w65sPX+ZuQwjg=!i$}VjO&Z;`HFl08Q8sVb3LR$)s~LU5^E8U zWZ`t7-Ki=Q381@L_z{c5P>JSPr(cK$&|&67wER~8M65zmxz=}sOoILD&p*D;u<-qQ z(>8tV5V^=h<7XQxGz8GKRQOJer{&rIyT#}JD&N&2k{Y<)GcB7y<=e{*gFvj>6|M|Z z9q6zKRhSEHjvtDff7^}?+$}XZPD8y~iGt2xX8uhN=an!o_eU)%{-;$AhnBZ|k}Fwk zgP2o5V+2-(KOC5)2Z_nD$KXP=*qno)k^HYEZ#sI@Um;k0pD`5Yv#F}FelqS3#&_PH z3GHHa_Jp*l%h}R4`)@x%9WABV(@DHC2`SvYaGzaprg5bK6DUH~4lX>8_gCv|1^<(} ztK@ul$hcS6W8--hC~~|cbNEcf=ZiM7uWu&h_ApVne14X;b1DeBue0BqM4ii0r8Kql zCnYw2vhjhLpH9ZvNOoWLR`fkgt4ljH({c6y=^AU@G6zdx#jvB&0~V&-&wfJD%)QJP zYw|}y}PE_mLCe>hK+BFv!Cuh+vy!&T+S8`OF@cig)v%O9J8E&x?Vg z@YZ&C<1UmyMzyNUe9N>mU5Em=ABiDc z_C0LMU1Tyb;3~w1Jqu)EVgRc7fjH-VX@}Y#d1ogoA0MYfLs!e)Pr5F#YgZp zM*SV2psSm&fl2te-%okA;;&sk02;7v9Q$NKCFI5Q3Y41p znsAp?jcX`W;L`+}5zukY(!QEUkd=DDhWapKSO?U+JT=`KAHa+qC;guCl{`%c zB1O*>+MzACX0-P%gdwSZ@-j}W6R%x*=(ioI3+ldn_!bKttmAn_wbHpNWn|lafXD8L z?dP%|81Vvft&$=2|5C^DAIjdfZ_W#< z-;Hk1X6$!uOLpsMR8j^>Ty6QANDvKt9nn~5tc(pV=nPeOW}xiIEloJ86U=*t z@R_di%Oo}XfY=_vX+<&S6LRi=C~Uv9v>%;Sb$``P{!3}YD8?TUNcsKM;=0qLgwK!V zTU$h8is`-I;?g3Md;Bi4<^TMQlU;WYbj|2#Oi6M1d8f#`1S6kgjVKkMEb8|tovf?r zsKaRR1rJt<=;kQmK1(^tCKrs-69gn}#kV9%`}X#D;HGujN)lT~o+tE-cT3;Y{0&TI zW=@qMRs@=2Bl0ZZ?j$Au`%($$zR^)*>3{Sr3qvJ7a+IhHw}{-P8Ad=ZttJBP8NZd6 zd2~0FKVE&RlgQ0Q0Cqo)uj_$2z~uEB?g&dEtahju+~)ay?#;5T!@HW}y1%5+m%jZ%cBL%9>K2r=j)*8*Vh-!r#PavufK__NZVOD0pESY)prtr)qM!FzX z?%ie!Hu3B0DKkMQ97W$|^Yr-q;B;4ULHphNQ4NTgo!<-IFeA0k`we)TmYYGbi2?0o zQU&;*8s4hp4rP6WHs-jYB}hARy>$CF{B`h|%JovBwY%B5sRT<5uH;XZ z_%P&$f+f%pGc$&z4dVs7Es|0;iH5ZST2b=Gj>X**A;_j9B0da-?g(qk9>KlRj`mkp|d!<@f7SzY7}#dS9)^@CEp&q9q;n{ z3*xtm^0uzS5OR~4;}d*Kk}VXI^-Gt{ZJdi=ZK&F zmFJT1q8KYU~s3^&P=?2%%L{HWBesU1W_d@OB ztJgS7|Mnz{TXR;b!dXh2r>A%|P1_8OL~&v+$d5~^U?o?UR6)9SOs281hinUEd)R-7 zO&SY}K0FIQu8!PRukfXcX&4l9W*n4Ec~FUU-#xIRSty@qTibQ#h*K#}7gp=Xy$uUJAdd@F**FrVzs5K_8wSf7RA~_b$14~OpLzc6;3B&sh@&}c(Sy~(xv}4^ zhrwGZ;EUV?JOlKVyRF9a!79J%^j}~2gH68PMqpj!%Q5)n0l+p-m>vR-eDL-8gYeW>R!@n>$t-ty?Qtj0<# zAZR{9TcDsui(1okz|75kcBb+kMfo@=y$n8I??X7?dAj9yLZu{n6HKu0Ederc{;1o` zb}3bU=oN!KY`3UkiyG8T_VV>j|O6ID+%bpijbyXL{1?GHA!Dz!GJz+WR#f^>+vMnN%8Vy6p$zsZO zwq3MKi8u%eQ6g)|odn8>Rp3 zj&!pB-rvF@5#Z)6qLhCf5g43WTD@5sxs}TN-I?g>#<1?!eG##HdPHq7l=v&P2d!5( z$?xUY`uk%e<;czvyIQL|@oUg|zJI_;S-EOF`1XwUF4?Z^5xKk#i(NrcW@hU}EA7hU z%eqaj6*|8C%)9*fj`R(WAf=Vr1LwGVR`Px~(tYatyJyr>wDGk~*5XsYynS7pK0LX6 zkr#?(%Ry5bR37-}Sc_(H1KbYYf;GN8z;dWm;47S3D0+}ZAB2@B6*Og^o1K8xwsctH zKd(jlher9X!Qwt0_W#7oJY$dDns_)Awf-lgf)*U_FpTM~kYjqB_GD z7sjx{)We_JK9k|%VP`!5xuqY!&+0yNa?FeyIJa0Y) zZx)tKro`^-*iuf=#@=DY!o)~;MM6Nu~uo~{e$&yMwL0Xy%s)cscmv7DV*oooNaVi?)32Q2y$eo4L z6?8gT0s9w0DY>pVd1DoS!FbP+=I0Ee`H>+D_-pBm;#rDF{mNviPb&vnVto2y_FewB z+85pkc1cG&Rx#$! z!YJGXq>1Tq&DKm~4*5~OJ3DTmIkvCIb<@Emfv#;pJj&M4$AaahHhq{pV=-MQ^d9Ux zz}~(Iwsg{;Dr99gdy~=ov;^%F;hhvh8%`dO4+CFRSC_#%G0&u)#(7QNjvzF*1+D6y zoRcJn1Y9V#06=5?Yo)7uzE*1Un2yQxcMs}6O_bqE$R9JEc4zxjS>AhjY{MM@TSX&x z>y5WlKjga(U7=d-CN}2**kXu+CYh1C=@~E{r4t~Tw7OyuKF_5pf*L?(E2nzdJ(+Kr zOX7SdMpFtWmcx)~W0P)guJPw*(2muwaOrZ5i}I%)x<`;XHX~0x#+vquE%{9MP#riu@RFc?S`!~l7okDNd9C& zyKXmTE%|wXFBijicFMCE;T(<1;Bo)dKi6E<-Z5-y*)J9TPAJ3yQ}$cHBGYl*U-co{ z?*_JN9nsNU#{4N^N~u4bRXFV~N$+lU$|S;iu6VfEueXS4ysp+z9TG4h+aPuS*LzWP zl-KD-O0EiS-KBI2XRmf^Mz}h?tnA!s!Dg6Q>S5S~19~ej!Qx}JAhQ=?Vl-O6`7-IZ zk)lni6S4@)YJbn^grML+-1%jGC=88<#7L@a^d*4v+`1*cl z{gdI>q-U81OXQ-K%i?$QO`7zCBzN~~_U&W~Xj3xXi5GZROSRs5SDQ2{W8TZBEBIg8 zCg^E?3Sn;0rRW*!@MuAm-2{xYFW!qW=YWu%wej@Ibp}7+h*2WyJRM`*{sbyB8C~Dj z)jGX#Y&s1!|M(=zt9oU2w8>L7EB3mTH_G}g5$%)5i2o)n6Z0YiwYD@)=@Tk+drvByXkOfCWzhS9_EeCPyml9hJ4KeKS_KR4WF~0r43=_j_Z^(@G*IL0k-j1uV zn(1c~ynE>anyHpQ&h&oosrm8pBvL=MwjiK-qwC9pxvnj7b8mkHBtpAt=;x4|ut7@$|LnPMUYaVR30fQ^g-oj~}>? z%)r_oRE&?y^FW{_Eo`O2ci658vzfyrtDt613U^9gTixwk3r5q92G&elTQ55?-8uILRfcDd7jN9_aiv(Rh^b?&rEa*0yjY2&DkH6$~Ly+7<@Te(K8d9 z`q|O)xwL$xkaQ|gfx3p$KBYuu+_qx$#+FWPfeR<5gy=4?rlmpULC+nBu_c!R)w=PAn2YGCozRSN^{E^6CrZ*q(tjgo&#M?L-&$)Sajo9A z!_|OU#j_>5k@H6G1c>doSse)4J*KuL|6x2@AXRO3k4)@&694XN2MzH9-TsA|i#kVT zGdmjc8jB5=)}2W?sE5ziVn%$d4U*dIbBEJq5vrpn0e6?=+URMHZ)d<)ZgR?(#Sr~_ zHn(OwGHYwK)#!3EhRyp@L~h{WSDZsu=BSOA%aU|JxQd+pi7$?m={YIr=tbhOJB{hY zug>r(=ro=jS)Fp?)jZFq;?OuaIpQ-2!HZifrmsK_Nn7*OC}PGjT~`jkmP&%z{9I^hazTbO^L(qa1hFmbVCo@&BU@0RWn0v3s(A0h zC+bt&m}tuMQ%>$U73B*#KBOv~p73*hH^q3-Mpt9yw8{eB=lK{vD^vVz5C=0kczNJq#x)o1`^i}Hg)7CX77 zI6~W$X1Q`a5df6z4}SW5ifgQ3$Z>U(ty!q~eK- zD%k_Z`u63U;DhIhE7fKug`_h+XO(k_18h3a@?%O%+b3ZK88#|?5e2o1!-@@Y$IJVP}>!GQja~X2*_f%b%1K-1&7#0_-$IuB*T%)fC+eYf+q9AmbL{Z>RLK z>>S-N2ZzMg?=RAvv`9=4rGC`RR^hAd%UfonSVA@>IE9@a6I&B3obU)pZ{PUPKa$mZ~~0!WENtFy3pJhb|8yzq8U#I=CS!VA#pm^|xVf7vynAQBP# zBUl8HNx^qL6iO59*ZUs$+avfA##9hwZEshDEITt_f?7^j9R0wC(OUl6i;#aS7wBE+ zRrUBe6Jho%nDFG|61HR1`z_Wmd(x`CmGj-yf`6f6onyqll*E*40QaIZ>&pI%hU5I! z;_3@fCz=5QK^%QhDMuPuJ*GJ>@leaGs}W%9&impKV>otbbHLxxXrgZcRHOEs!mlbl zu<^jhcp0LQu+WswB|8fzv2%`TT~QmwUp~;U!H&RQB#= z6kBX=s3rqJ)C-$gKYzv_yf}$rXD)1Xw-0V@eTghKjDZLq`-HMfB68`hB0q`153{G2AAguR_{d%~tW`DX_w5*zq zi)8udN0&9^sz89)>h5MA!vh{*ZN_n1>D(C)|5Q~s``}k}5~>E+T*#%^N7+{OTs!%j#Ge+}0DR1A`_DMIH5u`OJmV zhIDVHDu=HWiw>_a9Fh-a)=@_t&!w55a9t9e3>$t&Y|bF{N*wfq0kz) zP@WjvzN43jNW6wY*BJj4zU*JRH^OT(p?g+0u5X@7D5~+O4qm;rbYIamOvT!QP}{St zHCkKJdL^~Mikg*!1y#MKBZ@cDhN759$8R4@V$Czx4eaH z6m+h4n#Np^rqP<-e0dQ;d+4&^SrjDtFr?tc)nc>Bpi`#{6@0Em5$ci^kHq6X2>a#K zGufg|S(zt_6&Y_)6h^c$O>~`|`Bg+-ZSCn@=83k5MQCZ)oP5ZypFK>PPTHT>GRO4 z*Eo|aK2$69CmXUDQ{VZad1rGv+j&SSRTA2P{Y0V9em1~ht86xMNhZDr?VzZ`Wd7G5 fbpP9*so*8E>&Kg2KcG7A|C4pJ3^dEtZNvT#_DbD% literal 5488 zcma)A_cI)h(>{cRNN`$|Q=<14qMddUy|?IzQzPUMoe&X3j}pB{Cq(C?M=z)M-Z}2v zIj5I5-~Zs1pj>G>-uv5 zfB>MYY53~?{{9w+yP2N3YG^*s$i{_)pMG#VF*L)dXrq{r=+e{`U4fD(go!E!9IQZ)Y8&&d3kwz zd%Li(5E~nNetv%X$@e@tb!llyPEL-Vo}Pk&f|Qh$goK2Zl{Gy*y`Z4L+}u1NAwgVR zoQ#Z&fZ%^?5f&D%t*ymiFn34DhK2?O1qDh& zori~KZf=f`k1r%71dGM~n_F618i&IjF|uFe{p#-SE-x>yuC9Ll`t{!4UU+yoikWj_ zVuFT-28l$rwzk6I@HcPX*xTEKK%kC}j_K*?Lq?7p493dJ%Guf3+uNIig9E|L_3YWR z14fSF;o*H=Q6nQGl##_AE6*+?$L8i{X=y16g-S_Dxj~|K7&##j$o1a-QPhvq@+wS9 z<~Ac2^1a&*EB}F((H4m7Kt*R)Ty6uzwJQz5);Di*2%WZdt%10gS^4&jt&(2n zR`y#ex+@^=bvf0;z|gb75p-7mII+FsxhUzJc?g=o)#cyO}|i(>K@Ya6>k;mFFGSrG3Oh;>^1MzKqje;}rp*ngF>s!!+qf^Q{qfC6`;!0B*Cc{kp zLrnZz$yuv`--d<31I+x3Fux&giS?M|ekT4&Q#({k#~jpk*3o@{O{AAeV97u9FRxUe zm{K>Bz+WbTk$)YO^*WgZ_DU*y1i>9lf}N})y~6SXGHU3u12F&q$fu^PXy}7?H2(En z=RYb`(?ebEgSO$R36#Kp>Ho*%3Eok0IsK%y!z2`{F}CquB3D=C<%Y{#(;JX2zg;ql zP~mRrqc=9gElAHL(5UJ5oTQcaWnKS7{V29K))L3{n-C9>vk7#3p!IIPh!{1!vXYFl z{Ktejp+Fsd6?a0PfxC;2K8M(mo+Va^zXe(e@L||MLpa++DtHwb*Eml(m?Y%l$?C4j zxfC5w^F54Zk7VbB@JCAQPC6}RmL-0El$!I$L>FKTzv#Pg?quf8t-BZD1B*7J!cNii zqb+_lHpvA^^AyV4+D^{x5*Qa!Q9rAlQ2wX^x{M!_Nj`vPgVy((S`qswmoRk*cSmrh z$!(@EkZ8PJsj4I07LUHDD(EfD(Z{wf;m02gaY^qsRWo*A;FOe+t58x|@gc8|7_c@s z(4$LN9Q;#(9WO>$O1`bSsjjtEe*s~}JZ)od*^ZrjeJ~ptktsktGwP;V7jm{x&6^Tc zC}zrpaDDIL>|gw5299zn8MKDHvhjVSotqz>X%b}>GQ?Qxn&kOqH;Y1-n)cI)u7kr^ z)*4S)voJus*{4)Bv%{igZ9aZIbhZLC#IaYw&zqU+D@}Vxut7rRDc0HCdMIfB&+3iDtHgD}XE47J16dn*$%dck_O0ZZ&kg z5)S-sy!^MB@UZl^l*6wA2s7rJ)-F?eVDL4Qey*>jYSW_2&Ik<+wS{HMhKjkrsb!1s z?S-11!yZ>2&G}qZ&rD4F2~B_4Lkq^kA}2+1$Hh^1GIabO!n(2O2OzM4;!$J_B#q~( zr-vK#)%VM(sWFtMp+_SV_0$a`G&bx}%JI%;%VZ^CLA&DacYv!8XF-doW{-z88d6Dk1iSg<;;PVKzm# zt6-vPPW$RC&?A>wePlV{CgA9{o+Nuf%=4%(hI#mvjRS5rhM-YGkrSS`L=Ssyp8J4V zgHF@<3XfOTL1BwD$42m)S_jpt1$4v*OvIz5_gsnVV>(!W@H#$uK5`UTSh^~?cK^`7+ z)-L>djGY~YJ}?J9Rf9(wF!~!hlzvy%y4CqlO2og%<2tr-SNhTeG8wv{wN`boS1h%s zjmyqxZmx~W75c!lRY|}zKiTtPnPegi91}_Bw3>P?g7d9yrAh`35cEB*bkeVO1}Lka zSPVTNRQ~4c=Z97^i!63{WB4H#`F2_0@1+c9_AEE0;r>&sPaP43;!q>NjUL<1EuBxv z;%=!_T+3v!!Otu*Qz7upaW`T}z%t8IDKn$POsdotM$qBtVt6Ic_xN3rB~{zBjc90^ z#rrtvHp>U|cbgu2A!dTHTR z?S%|^j3!-+gZAX4iTQG{rFLcCalGCWs&0CLFjrc*J8j!N9qUbLmvfs_Pj3XaG9?84qMs%^FHtCnpONCCbZ+nkXT^CX}+ z7r%49b7U9jfrOKqj&8$a*j~K-HP9{@2VgDC$nP$mq@);3K#}Zu?TC7at0D6ioaan0 zS`;4-JU$wrTQGQ6kzsRVyDEb5tQdBGB-*wQwR$M31Ts*3NfoUX4X^dY_66?7I#37C z-e{WzE$Fv;8g?nO4saLN?>ZOuhZetBuWRvvnAXh!y;xOf<6hXSduh!GrO z0{RYk!JAAiKNn;G{n|JKtvv{fz=-IZI}x)${ToAHixZMFYFR0`xJ{l$#sim@@`pNg zc-mS)7c?H%`M|%)8I4UD-t63yYm#1>YGQbg$*{@#{dKZwN-01Wd(C=((@P)^~^x<&BINj>GLng}O$6{_0mY zbHpUAi%1&3FnG0sC5jMTz68fOTmOpowGGtoiA?Qm<}tv}Tr4!talh6lnx67Y`yS6a zfk1$X@j;-m#>7Z|P@A4|6RQuO2#BNsStC67LoC-vR9Xc%H=1+*Zmt!w~rD( z97d}dHZvf?;Cj2}{N;*^N2-Sr?)}Pjzx8(0AcmS3o797@PEM|ac6T4#9mVWP+;oBs z5_9A{wlP>*eg}^_zm$|TFVylcclep2bR|=E_&)Ww<&ix7yJv~(1Ejm#(Z-DFt1kUF z5hFe#)q$y1VZ|8Y6`B1PuEF`rCh2y-t2~M>RxDRON?NkA>Ce3V* zt$@Gs>x=UhNxXid^ciW+d`wgkrJ>dvGl|UQtn=kWGFqxuzv~mtrz4`MR{yK3v>IB@ zb#sz-GeDO&8FTf(p}!ey$`Ix$)6szGwZfVkLVJt7j|_P25sB`>qve;A^R2ueA&oP$ z%lh+TV^<6&-jHueuBv((A5^K@Jhrz5TlZGgYgEl2@U46+CTlmrs)n70hOgPGli#3| zj(xA#RBr{d(?DX)#UJ!+%o>q~Ip?UdJ)@?C*%%{B8Toem^WN1TH!cis3r=m>z-avk zM(J{prj*o$`1vI2&p%+F<=Y%S&vyN>mbz0QmQXP+p z9;sum$}^^Q`$JJNuMdyb9F3M1T1A6OsCw-C>S$wAuQt2E1vZecN}ODmT2C3o1c)_w zq6YdL6s~T`cAH7V;T`L02H2Yv#+%C}=Hs<{3|b~a@V575+ePoL@$WzFMk5GUzY)Vx z1Z%ox^vg2KmAbfYo5PCDXf>AqF6a_&+YD@E!BE-!l@*JWOTm7JjbrQkx7nSnQ}Xin zUAH%L*fr!0?&0}1DO%`O?pTvtRfzk=oJdy5w(r8pXzIm~W?XYh*@C#_2WK>(u(CKA zQSDu=hkWhjve8O6#d^bhLKkT3_3JJm?37vNoMKvnrVsB1E454}SM1)AdfEf=+YfwW z<0qD#=W8>YM=AjR((AN`Ydsa63#ZUrTr2*}e7)>TavD1igyY^h4J4CmDBsw9?svSLwL7 zt~GyZP?g1n=nzCks6~!Kd{}4|?yt!kU(q2vJEoxNqQxdwT)NBP>KLAGE&8pG zHk+l2vw#!9WS~V*&{skp7D&{=}Wy1YhSlDJD4ePj(F70L>n0pITI|{ zBMJW~u9~dk$yT6N2TizNQRbYfLyPiNuqMyR4|nN8idqXlX+{c}sg+j#ToEZO+5h;T z1=%=3mHW3^LN__q=vm z&;K-hNnMi}%zUqYn&Y_F^vlJP(>8i2p4ST|uKv)o><8 z#QQ~M786_g$!IVSMy|rifqsKt%K{}Tl|Z{SoE9+zbSm+M>-!U{{qH?-Y= zFrL`!NH0y*t^TK?o9uVgRe)0IMKzmBB9VIN-_UQ&X>@#}M8I1~INa_m;A#E2IO%aFP*N}n+E0~>N3k$}_4<-vBj8$wU5ilPuB)d=L35|`#RLXH4vW@I z=$^&{K-MJb&gjVS!{3D&_Kmo+oM7lvlOI@oHUU+MC6$(f5(NoEc|5c))?J+Oa}8a% zDJo*(KlCf>gK`K(9?JBI%r)~u^2#p>chMI|ihwvN`+;XKxt< z(WvjkX-ecUHhdBN{k1#na$3BvLdz5wzKPhJ&WlRPKmDbpyK@w;-@^pjiXL3Ftg(Kh z4D~1w{7Hl^`JUO!HXP+x1MQv}VV9EKJ4#iDRpQR@e`k;}>h*A}^4iN-hNjF``vW3H z<&PDZjuXiSNNe_ge);=KO*UkOR>xLw};x#^&&OF>QTl9YS6sUxiJOB~>pq_%h(NozepCszRKP#GBOrIZSaR9ff$S2&`zP*nvs@Q9^k~2R|L8p6rv~QhTg8_|AOD9| Nd!?=XTj_1c{{aBm+ur~H diff --git a/plugins/woocommerce/assets/images/payment_methods/72x72/payfast.png b/plugins/woocommerce/assets/images/payment_methods/72x72/payfast.png index 96440121c30a0a3daa5a96efd13019bf41a1c3e8..40d30bfeaaaa40634c751071ce6ba7f1b05e5ff5 100644 GIT binary patch literal 2960 zcmai0c|25Y8=gUyX(~(BEQ1osj3KCoW8Vjp2_w5~rA3scvWquMWM7i3 zDH0=+EhfemnHtPHdf%`2`~LdQ`JHp$&vjqVbv^g|N00109Aq}mV z5xIYHvNP}Jsny2J01UA*)(2F)5v4E(7VdT^EE)|s#mqSYEI?iW>pq2f0usFdY`<~< zK!zCs09F$4-ztgacNIxu{WsqyUR(BDXNuT++1TOi(548t06*wuOn|F96z>@8ML4HwiK3YIN!X!Or?=15D*6Nd{#z+mCw;m~kpXh5(B46d%O4pUTuDJdy1844j+{Bf7@3jQI| ze~bJ_$Iv~*E!Zm%=M~@&+1I`78W4)pl9Jjt`hEPpPMjC^Unl>Nf7)U;2-~l~;7~=_ zZ*AsO&3zPM9_;1Lbl%t3hHL&}{txz#k0xy2{J$3Scc;HlW~+PM zT*)XyJsUib>Toa+Ju0&I9hH7u>iA5k^;`@uzkYpO%3Df#>4nk)M6*ouuvfrRp}1JZ zo6W-_X%XPZ^Fw!&zAB!t2%dabXoS=nx6nJ@xx`)gUfLut{eDPmw2B6wq{lHLyWO;0y*S$i;sDf96} zp-@kI+ITpRN_Kv4z)y5Q_>_vE;&t#6c1W^%6hA-xz(7N}>36avWp&DWFjxhO_0X+t zv$RPn?$VF60GEc9Tg$km7>5YgNT2YOXD2&W2#Xh>?c{uP;FrqMwO+||wpI5yc-j8^ zadsR-|7<^$|9s?<{IN3%?fKk7ISO>M+=16ciI4J82Qb$DS&sE6>UP&MXZh2n32Iut zy}P$S3id!-xBo#1Yust#X(E_gvA9+U1H=%Cde2`$m@pf-RDs2D3yW;c+53!Wr1P>io=i%e&wCIcNdq%hht1WDk@?qfF6dgpGcw!89e?_=wJo*g3F_*xR`J@;rHa6nKa|tF>0vc~WZvPfwAhS{4DY(DlZa(ZbjO`qzi~)f#n$fh%hD(s5xBO!{o2CG z_>fr2{U%M!%0zOO$6&`@>JtrITUIRlBRBeY6~xuL0EyZaGVAO5khSe^2Bt-3_=s-q zk?rLS?T!x;QEi{3jTLFriSHiUE8EmN2r*`^FY<^v4jWIZi37*G+VgVGpdM+nN_$9fjy`LH4h?d%(A>6-gQo^m#AntUuj-dF z67q$l6MD|RiY-KkZb}(#3H5P+$r}WD$w~c)nw@z?TS^rkJDYhnprCcEt@XJtgY9Hh z%S@2ioU}=mf#u%JNZD9Tpk!_223Ow9QrzR?Ov1!>lz?(8cphtDBS9*>?i5`EOawzoU&qB>FK z#&L(|b5Y4dA~baX`;gpsS32E|aLS2;LhhGoI9FhnO*E}4yhfT6MZ~E&M{vF5aJPjFom1ly7~K{>fWv#aXCD9=%| z^IiGYG~hh$tsZkn58AziIVJS*$w+vje^x8MR!Gp-@fNm=ES9L(3e z6fpGq#S$Q>VJ*V@lni%1L}?*b#mA;C_3#m6aP@osE|wehPF9a`e}wO8?x9=n60H1h z9(reK>1jMJ2$#89?|u+;Z^%7?j$5t3d?oNCm{8@7ldx*m?)7&yUc^8Ukl$IhsS=fZF04+aDmJ$f*8e4nB?i3 zRe~1xR242luJj9;eqn)yz5?Y3e=uCdJXI4VCx`?sflR(}`mYKKBVq>k511 zgOlox;3-6L^ViA>x}Fu%LyN0`yzbwcyYlVmV%oh9z8AdOJ;^V+d{3}PDY}F9_V(zs zj}!IYS5Z<{nAAFF0=ij3*;nX8P>*Dmvh`+ue>7%B6EFuKIQLWBh;jQKZSUJ4|7~}b zQ%j_nX2R?dHWZ9w(Y2nfvxmI0_12*G+5K3K^Q9R@$GCKF`fUgoVR=1+p4;;ARemn7 z+k^(@0K;`g_0oj$Ih3(%+?;YVyo9mQ=??vZK0udp(5%6ZXm?a%pq326r0tXWs8;m) zV-dBRF-;z$6`X~1$~^C6kRV@tH}aBw8Kp<}Zb{@8^YKYh2X{DT`$hTOcoA}+G{^Uu zY&yUXUcQ%V8Kkwc`j8!ug9jaY)b#d2s}-YstT=3nI(dEF;bRiLXUc~CJzY%Haza{{ zr~l&WQ1l7i+MNfvMm?^44+&-p0w?Af$(L>?SZFrb87O{^E|=csy|5lfJdk-3XXgR@ zf8VC-dIGxaoI*C=N&>|e3 zA8Jl-A+b+3HnI%mJ72`tAE)8*N$9*I;U9g4zbH+PUF`b8e=Y6j!i_CE8kIP?VfR8) z0$N0xfMVZhT#Ju-o9vp|<|2l+G)T~pKuhk)7z~FA2avDJ*_M?? zB-}pi*k)+U!BGF1x^l5$QUzK#m08A>(Nj;g6BWz2B$PjO^yqw&kTRQprKMP+L2fAB z$9c7zG|tjdXr#Flw{$IkeEZl2flTTfAEboAN|&rcsY-0f0Mg;evSQ?%7oJPR+{ZKN sHCyke(q78M3K%>=k|5=Ow4K^&-C0FV>_-RWz1?W3#YK~nSE z-t3j1>Uo9bP+#UxU+=NF>xYu=qpRm#Z1T;~P5l6&d>EjK9|B#c4*LH5?v~Dk^K7ez9^s)AH z-4h1RMG~GstA9RU==g&K&{$kbNDxbygiwT0MuI4V%7W;L?qNW86ommrhy>Cv14&+L z!zhSVeaX*)cqQmcLh}=#j=`IC*(eD=)X>;^a@Ki*WJPJ+$knqVAFI^T2UIZ1_R7cw zm{J}fbM*HDNR>ONqckV`YM{E#8PrqS9DoV{Rn8y-J%2p_m17K?LF4GON0ot`L7IYg zhE3XuW1K;pPBNWZ&6j>odhR~_md;|8Ept$-4PBo3BwN!1`2`Zx9&u__avu;W`aO&& zA+6dA1SrkkD0MRhi8+IoSP!|a4HJ|xqf0I)pFW^Zz28vTim6S`pq$eAV|X=3pJM?~ z%xp~k%YSVp&g7_I-?3ru1Lu{aqIbxn+wkXXH%F}`ZR?q%yxzD046z=w->A93#@1}M z0zn#|a^sUDwpzZVQfgT<{c_ZfE1}#3sjPf+B&T}%lFP-^OOTjyZ}#x@l3-P3)=?6J zSB}_Wjt0LR6?&heC2Pr+eJ*$# diff --git a/plugins/woocommerce/changelog/update-payfast b/plugins/woocommerce/changelog/update-payfast new file mode 100644 index 00000000000..f0568c41ad4 --- /dev/null +++ b/plugins/woocommerce/changelog/update-payfast @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Update Payfast's title and logo diff --git a/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php b/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php index 9f96721ec96..da401f9099c 100644 --- a/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php +++ b/plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/DefaultPaymentGateways.php @@ -317,8 +317,8 @@ class DefaultPaymentGateways { ), array( 'id' => 'payfast', - 'title' => __( 'PayFast', 'woocommerce' ), - 'content' => __( 'The PayFast extension for WooCommerce enables you to accept payments by Credit Card and EFT via one of South Africa’s most popular payment gateways. No setup fees or monthly subscription costs. Selecting this extension will configure your store to use South African rands as the selected currency.', 'woocommerce' ), + 'title' => __( 'Payfast', 'woocommerce' ), + 'content' => __( 'The Payfast extension for WooCommerce enables you to accept payments by Credit Card and EFT via one of South Africa’s most popular payment gateways. No setup fees or monthly subscription costs. Selecting this extension will configure your store to use South African rands as the selected currency.', 'woocommerce' ), 'image' => WC_ADMIN_IMAGES_FOLDER_URL . '/payfast.png', 'image_72x72' => WC_ADMIN_IMAGES_FOLDER_URL . '/payment_methods/72x72/payfast.png', 'plugins' => array( 'woocommerce-payfast-gateway' ), From ce07458752dd525c7ec0d913225f7eb88b508c2e Mon Sep 17 00:00:00 2001 From: louwie17 Date: Fri, 5 May 2023 04:45:26 -0300 Subject: [PATCH 041/249] Update disable drag and drop within images block (#38045) * Allow disabling of drag and drop within ImageGallery component * Add changelogs * Fix onReplace logic for images block * Fixing linting error --------- Co-authored-by: Joel --- ...e-37955_disable_drag_and_drop_images_block | 4 ++ .../image-gallery/image-gallery-toolbar.tsx | 16 +++--- .../image-gallery/image-gallery-wrapper.tsx | 52 +++++++++++++++++++ .../src/image-gallery/image-gallery.scss | 2 +- .../src/image-gallery/image-gallery.tsx | 16 +++--- ...e-37955_disable_drag_and_drop_images_block | 4 ++ .../product-editor/src/blocks/images/edit.tsx | 6 ++- 7 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 packages/js/components/changelog/update-37955_disable_drag_and_drop_images_block create mode 100644 packages/js/components/src/image-gallery/image-gallery-wrapper.tsx create mode 100644 packages/js/product-editor/changelog/update-37955_disable_drag_and_drop_images_block diff --git a/packages/js/components/changelog/update-37955_disable_drag_and_drop_images_block b/packages/js/components/changelog/update-37955_disable_drag_and_drop_images_block new file mode 100644 index 00000000000..436e516160c --- /dev/null +++ b/packages/js/components/changelog/update-37955_disable_drag_and_drop_images_block @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add allowDragging option to ImageGallery to support disabling drag and drop of images. diff --git a/packages/js/components/src/image-gallery/image-gallery-toolbar.tsx b/packages/js/components/src/image-gallery/image-gallery-toolbar.tsx index 8a325f157a5..325b0c4f07c 100644 --- a/packages/js/components/src/image-gallery/image-gallery-toolbar.tsx +++ b/packages/js/components/src/image-gallery/image-gallery-toolbar.tsx @@ -16,6 +16,7 @@ import { MediaUploadComponentType } from './types'; export type ImageGalleryToolbarProps = { childIndex: number; + allowDragging?: boolean; moveItem: ( fromIndex: number, toIndex: number ) => void; removeItem: ( removeIndex: number ) => void; replaceItem: ( @@ -29,6 +30,7 @@ export type ImageGalleryToolbarProps = { export const ImageGalleryToolbar: React.FC< ImageGalleryToolbarProps > = ( { childIndex, + allowDragging = true, moveItem, removeItem, replaceItem, @@ -60,12 +62,14 @@ export const ImageGalleryToolbar: React.FC< ImageGalleryToolbarProps > = ( { > { ! isCoverItem && ( - ( - - ) } - label={ __( 'Drag to reorder', 'woocommerce' ) } - /> + { allowDragging && ( + ( + + ) } + label={ __( 'Drag to reorder', 'woocommerce' ) } + /> + ) } movePrevious() } diff --git a/packages/js/components/src/image-gallery/image-gallery-wrapper.tsx b/packages/js/components/src/image-gallery/image-gallery-wrapper.tsx new file mode 100644 index 00000000000..faf2df092e4 --- /dev/null +++ b/packages/js/components/src/image-gallery/image-gallery-wrapper.tsx @@ -0,0 +1,52 @@ +/** + * External dependencies + */ +import { createElement } from '@wordpress/element'; +import { DragEventHandler } from 'react'; + +/** + * Internal dependencies + */ +import { Sortable } from '../sortable'; +import { ImageGalleryChild } from './types'; + +export type ImageGalleryWrapperProps = { + children: JSX.Element[]; + allowDragging?: boolean; + onDragStart?: DragEventHandler< HTMLDivElement >; + onDragEnd?: DragEventHandler< HTMLDivElement >; + onDragOver?: DragEventHandler< HTMLLIElement >; + updateOrderedChildren?: ( items: ImageGalleryChild[] ) => void; +}; + +export const ImageGalleryWrapper: React.FC< ImageGalleryWrapperProps > = ( { + children, + allowDragging = true, + onDragStart = () => null, + onDragEnd = () => null, + onDragOver = () => null, + updateOrderedChildren = () => null, +} ) => { + if ( allowDragging ) { + return ( + { + updateOrderedChildren( items ); + } } + onDragStart={ ( event ) => { + onDragStart( event ); + } } + onDragEnd={ ( event ) => { + onDragEnd( event ); + } } + onDragOver={ onDragOver } + > + { children } + + ); + } + return ( +
{ children }
+ ); +}; diff --git a/packages/js/components/src/image-gallery/image-gallery.scss b/packages/js/components/src/image-gallery/image-gallery.scss index 07d8a2c8f6c..fc4929baa77 100644 --- a/packages/js/components/src/image-gallery/image-gallery.scss +++ b/packages/js/components/src/image-gallery/image-gallery.scss @@ -3,7 +3,7 @@ display: block; } - .woocommerce-sortable { + .woocommerce-sortable, &__wrapper { display: grid; grid-template-columns: inherit; grid-gap: $gap; diff --git a/packages/js/components/src/image-gallery/image-gallery.tsx b/packages/js/components/src/image-gallery/image-gallery.tsx index a8630591e34..c33d87ae43d 100644 --- a/packages/js/components/src/image-gallery/image-gallery.tsx +++ b/packages/js/components/src/image-gallery/image-gallery.tsx @@ -14,10 +14,11 @@ import { MediaItem, MediaUpload } from '@wordpress/media-utils'; /** * Internal dependencies */ -import { Sortable, moveIndex } from '../sortable'; +import { moveIndex } from '../sortable'; import { ImageGalleryToolbar } from './index'; import { ImageGalleryChild, MediaUploadComponentType } from './types'; import { removeItem, replaceItem } from './utils'; +import { ImageGalleryWrapper } from './image-gallery-wrapper'; export type ImageGalleryProps = { children: ImageGalleryChild | ImageGalleryChild[]; @@ -30,6 +31,7 @@ export type ImageGalleryProps = { replaceIndex: number; media: { id: number } & MediaItem; } ) => void; + allowDragging?: boolean; onSelectAsCover?: ( itemId: string | null ) => void; onOrderChange?: ( items: ImageGalleryChild[] ) => void; MediaUploadComponent?: MediaUploadComponentType; @@ -41,6 +43,7 @@ export type ImageGalleryProps = { export const ImageGallery: React.FC< ImageGalleryProps > = ( { children, columns = 4, + allowDragging = true, onSelectAsCover = () => null, onOrderChange = () => null, onRemove = () => null, @@ -82,11 +85,9 @@ export const ImageGallery: React.FC< ImageGalleryProps > = ( { gridTemplateColumns: 'min-content '.repeat( columns ), } } > - { - updateOrderedChildren( items ); - } } + { setIsDragging( true ); onDragStart( event ); @@ -137,6 +138,7 @@ export const ImageGallery: React.FC< ImageGalleryProps > = ( { }, isToolbarVisible ? ( = ( { ) : null ); } ) } - + ); }; diff --git a/packages/js/product-editor/changelog/update-37955_disable_drag_and_drop_images_block b/packages/js/product-editor/changelog/update-37955_disable_drag_and_drop_images_block new file mode 100644 index 00000000000..d80356e5bbb --- /dev/null +++ b/packages/js/product-editor/changelog/update-37955_disable_drag_and_drop_images_block @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Disable dragging and dropping of images within Product Images block. diff --git a/packages/js/product-editor/src/blocks/images/edit.tsx b/packages/js/product-editor/src/blocks/images/edit.tsx index 16ee7e69385..07a6975093a 100644 --- a/packages/js/product-editor/src/blocks/images/edit.tsx +++ b/packages/js/product-editor/src/blocks/images/edit.tsx @@ -114,6 +114,7 @@ export function Edit() { ) } { const { id: imageId, dataset } = event.target as HTMLElement; @@ -150,11 +151,12 @@ export function Edit() { images.find( ( img ) => media.id === img.id ) === undefined ) { - images[ replaceIndex ] = media as MediaItem; + const newImages = [ ...images ]; + newImages[ replaceIndex ] = media as MediaItem; recordEvent( 'product_images_replace_image_button_click' ); - setImages( images ); + setImages( newImages ); } } } onSelectAsCover={ () => From 4deb5b3f84cabdf72699f56480347acd9b0352e3 Mon Sep 17 00:00:00 2001 From: Joshua T Flowers Date: Fri, 5 May 2023 00:55:57 -0700 Subject: [PATCH 042/249] Remove drag and drop handle in product blocks editor (#38127) * Remove drag and drop handle in product blocks editor * Add changelog entry --- .../js/product-editor/changelog/update-38117 | 4 +++ .../src/blocks/attributes/editor.scss | 29 +++++++++---------- .../js/product-editor/src/blocks/style.scss | 1 + .../attribute-control/attribute-field.scss | 14 --------- 4 files changed, 18 insertions(+), 30 deletions(-) create mode 100644 packages/js/product-editor/changelog/update-38117 diff --git a/packages/js/product-editor/changelog/update-38117 b/packages/js/product-editor/changelog/update-38117 new file mode 100644 index 00000000000..a4b7eb7f667 --- /dev/null +++ b/packages/js/product-editor/changelog/update-38117 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Remove drag and drop handle in product blocks editor diff --git a/packages/js/product-editor/src/blocks/attributes/editor.scss b/packages/js/product-editor/src/blocks/attributes/editor.scss index 4bb5af8a006..199ada5b2d3 100644 --- a/packages/js/product-editor/src/blocks/attributes/editor.scss +++ b/packages/js/product-editor/src/blocks/attributes/editor.scss @@ -1,21 +1,18 @@ -.wp-block-woocommerce-product-images-field { - .woocommerce-image-gallery { - margin-top: $gap-largest; +.wp-block-woocommerce-product-attributes-field { + .woocommerce-sortable { + padding: 0; } - .woocommerce-media-uploader { - text-align: left; - } - .woocommerce-media-uploader__label { + + .woocommerce-list-item { + background: none; + border: none; + border-bottom: 1px solid $gray-200; + padding-left: 0; + grid-template-columns: 26% auto 90px; + } + + .woocommerce-sortable__handle { display: none; } - .woocommerce-sortable { - margin-top: 0; - padding: 0; - } - &:not(.has-images) { - .woocommerce-sortable { - display: none; - } - } } diff --git a/packages/js/product-editor/src/blocks/style.scss b/packages/js/product-editor/src/blocks/style.scss index ea81340017d..16869c3e0f4 100644 --- a/packages/js/product-editor/src/blocks/style.scss +++ b/packages/js/product-editor/src/blocks/style.scss @@ -1,3 +1,4 @@ +@import 'attributes/editor.scss'; @import 'category/editor.scss'; @import 'checkbox/editor.scss'; @import 'images/editor.scss'; diff --git a/packages/js/product-editor/src/components/attribute-control/attribute-field.scss b/packages/js/product-editor/src/components/attribute-control/attribute-field.scss index cfd62fa466d..9e5244c5cb2 100644 --- a/packages/js/product-editor/src/components/attribute-control/attribute-field.scss +++ b/packages/js/product-editor/src/components/attribute-control/attribute-field.scss @@ -19,17 +19,3 @@ } } - -.wp-block-woocommerce-product-attributes-field { - - .woocommerce-sortable { - padding: 0; - } - - .woocommerce-list-item { - background: none; - border: none; - border-bottom: 1px solid $gray-200; - padding-left: 0; - } -} From fde7290e48263ff3b0f942dc94a681aa7d165514 Mon Sep 17 00:00:00 2001 From: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com> Date: Fri, 5 May 2023 16:10:26 +0800 Subject: [PATCH 043/249] Add "SlotFill Examples" Feature to Beta Tester Plugin (#38113) * Update WCA Test Helper JS script dependencies Add the WooCommerce Admin app script as a dependency to ensure it loads before WCA Test Helper. This enables WCA Test Helper scripts to check available features. * Add experimental_woocommerce_wcpay_feature fill * Add beta-tester-slotfill-examples feature * Fix a bug * Fix lint issues * Add changelog --- .../changelog/add-example-slotfills | 4 +++ plugins/woocommerce-beta-tester/plugin.php | 1 + .../experimental-woocommerce-wcpay-feature.js | 27 +++++++++++++++++++ plugins/woocommerce-beta-tester/src/index.js | 1 + .../woocommerce-beta-tester.php | 2 ++ 5 files changed, 35 insertions(+) create mode 100644 plugins/woocommerce-beta-tester/changelog/add-example-slotfills create mode 100644 plugins/woocommerce-beta-tester/src/example-fills/experimental-woocommerce-wcpay-feature.js diff --git a/plugins/woocommerce-beta-tester/changelog/add-example-slotfills b/plugins/woocommerce-beta-tester/changelog/add-example-slotfills new file mode 100644 index 00000000000..1b8154383fc --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/add-example-slotfills @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add SlotFill Examples feature diff --git a/plugins/woocommerce-beta-tester/plugin.php b/plugins/woocommerce-beta-tester/plugin.php index 0d01e8f77d8..810c1bfb1cd 100644 --- a/plugins/woocommerce-beta-tester/plugin.php +++ b/plugins/woocommerce-beta-tester/plugin.php @@ -16,6 +16,7 @@ add_action( 'wp_loaded', function() { } ); add_filter( 'woocommerce_admin_get_feature_config', function( $feature_config ) { + $feature_config['beta-tester-slotfill-examples'] = false; $custom_feature_values = get_option( 'wc_admin_helper_feature_values', array() ); foreach ( $custom_feature_values as $feature => $value ) { if ( isset( $feature_config[$feature] ) ) { diff --git a/plugins/woocommerce-beta-tester/src/example-fills/experimental-woocommerce-wcpay-feature.js b/plugins/woocommerce-beta-tester/src/example-fills/experimental-woocommerce-wcpay-feature.js new file mode 100644 index 00000000000..369a4a5101f --- /dev/null +++ b/plugins/woocommerce-beta-tester/src/example-fills/experimental-woocommerce-wcpay-feature.js @@ -0,0 +1,27 @@ +/** + * External dependencies + */ +import { registerPlugin } from '@wordpress/plugins'; +import { Fill } from '@wordpress/components'; + +const MyFill = () => ( + +
+
+ Slotfill goes in here! +
+
+
+); + +if ( window.wcAdminFeatures && window.wcAdminFeatures[ 'beta-tester-slotfill-examples' ] ) { + registerPlugin( + 'beta-tester-woocommerce-experiments-placeholder-slotfill-example', + { + render: MyFill, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + scope: 'woocommerce-admin', + } + ); +} diff --git a/plugins/woocommerce-beta-tester/src/index.js b/plugins/woocommerce-beta-tester/src/index.js index 503716ad4fc..0a5f2adc922 100644 --- a/plugins/woocommerce-beta-tester/src/index.js +++ b/plugins/woocommerce-beta-tester/src/index.js @@ -8,6 +8,7 @@ import { render } from '@wordpress/element'; */ import { App } from './app'; import './index.scss'; +import './example-fills/experimental-woocommerce-wcpay-feature'; const appRoot = document.getElementById( 'woocommerce-admin-test-helper-app-root' diff --git a/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php b/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php index 413d573e352..3f8f9d7d8f1 100644 --- a/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php +++ b/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php @@ -88,6 +88,8 @@ function add_extension_register_script() { ); $script_url = plugins_url( $script_path, __FILE__ ); + $script_asset['dependencies'][] = WC_ADMIN_APP; // Add WCA as a dependency to ensure it loads first. + wp_register_script( 'woocommerce-admin-test-helper', $script_url, From 112c4a03c39e8401a2742d8d020783ea0f531a41 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 May 2023 20:15:59 +1200 Subject: [PATCH 044/249] Delete changelog files based on PR 37753 (#37960) Delete changelog files for 37753 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/add-wccom-installer-version-2 | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/add-wccom-installer-version-2 diff --git a/plugins/woocommerce/changelog/add-wccom-installer-version-2 b/plugins/woocommerce/changelog/add-wccom-installer-version-2 deleted file mode 100644 index 72aef2f644f..00000000000 --- a/plugins/woocommerce/changelog/add-wccom-installer-version-2 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: add - -Add plugin installer version independent of WP cron. \ No newline at end of file From 6cd8695407bf1ea18598e53fa903731a7e405d5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 May 2023 20:16:17 +1200 Subject: [PATCH 045/249] Delete changelog files based on PR 37907 (#37963) Delete changelog files for 37907 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/2023-04-20-20-32-58-372082 | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/2023-04-20-20-32-58-372082 diff --git a/plugins/woocommerce/changelog/2023-04-20-20-32-58-372082 b/plugins/woocommerce/changelog/2023-04-20-20-32-58-372082 deleted file mode 100644 index 0cf26c7f83d..00000000000 --- a/plugins/woocommerce/changelog/2023-04-20-20-32-58-372082 +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fix - -Handle updating customer when user_registered is 0000-00-00 00:00:00. From cabe966291209ebb172e7fb1abc6f11dd2692baf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 May 2023 20:16:28 +1200 Subject: [PATCH 046/249] Delete changelog files based on PR 37783 (#37965) Delete changelog files for 37783 Co-authored-by: WooCommerce Bot --- plugins/woocommerce/changelog/e2e-release-fix-upload-test | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 plugins/woocommerce/changelog/e2e-release-fix-upload-test diff --git a/plugins/woocommerce/changelog/e2e-release-fix-upload-test b/plugins/woocommerce/changelog/e2e-release-fix-upload-test deleted file mode 100644 index 571ed84a0f9..00000000000 --- a/plugins/woocommerce/changelog/e2e-release-fix-upload-test +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: dev - -Fix recent failures in "Smoke test release" workflow. From 208ac81ba32778014e76c367df1867db241b51e6 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Fri, 5 May 2023 17:48:10 +0800 Subject: [PATCH 047/249] Fix tasklist completion message when no tasks are completed (#38092) * Fix task list progress title * Add changelog --- .../progress-title/default-progress-title.tsx | 2 +- .../test/default-progress-title.test.tsx | 110 ++++++++++++++++++ .../changelog/fix-tasklist-completion-message | 4 + 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce-admin/client/task-lists/progress-title/test/default-progress-title.test.tsx create mode 100644 plugins/woocommerce/changelog/fix-tasklist-completion-message diff --git a/plugins/woocommerce-admin/client/task-lists/progress-title/default-progress-title.tsx b/plugins/woocommerce-admin/client/task-lists/progress-title/default-progress-title.tsx index 2ff0496b65b..af99e652f40 100644 --- a/plugins/woocommerce-admin/client/task-lists/progress-title/default-progress-title.tsx +++ b/plugins/woocommerce-admin/client/task-lists/progress-title/default-progress-title.tsx @@ -55,7 +55,7 @@ export const DefaultProgressTitle: React.FC< DefaultProgressTitleProps > = ( { ) : __( 'Welcome to your store', 'woocommerce' ); } - if ( completedCount > 0 && completedCount < 4 ) { + if ( completedCount <= 3 ) { return __( "Let's get you started", 'woocommerce' ) + ' 🚀'; } if ( completedCount > 3 && completedCount < 6 ) { diff --git a/plugins/woocommerce-admin/client/task-lists/progress-title/test/default-progress-title.test.tsx b/plugins/woocommerce-admin/client/task-lists/progress-title/test/default-progress-title.test.tsx new file mode 100644 index 00000000000..be4dcce3081 --- /dev/null +++ b/plugins/woocommerce-admin/client/task-lists/progress-title/test/default-progress-title.test.tsx @@ -0,0 +1,110 @@ +/** + * External dependencies + */ +import { render, screen } from '@testing-library/react'; +import { useSelect } from '@wordpress/data'; + +/** + * Internal dependencies + */ +import { DefaultProgressTitle } from '../default-progress-title'; + +jest.mock( '@wordpress/data', () => ( { + ...jest.requireActual( '@wordpress/data' ), + useSelect: jest.fn(), +} ) ); + +describe( 'default-progress-title', () => { + ( useSelect as jest.Mock ).mockImplementation( ( fn ) => + fn( () => ( { + getTaskList: () => ( { + tasks: [], + } ), + hasFinishedResolution: () => true, + } ) ) + ); + + it( 'should render "Welcome to your store" when no tasks are completed and visited', () => { + render( ); + expect( + screen.getByText( 'Welcome to your store' ) + ).toBeInTheDocument(); + } ); + + it( 'should render "Welcome to your store" when all tasks are completed', () => { + ( useSelect as jest.Mock ).mockImplementation( ( fn ) => + fn( () => ( { + getTaskList: () => ( { + tasks: [ + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + ], + } ), + hasFinishedResolution: () => true, + } ) ) + ); + render( ); + expect( + screen.getByText( 'Welcome to your store' ) + ).toBeInTheDocument(); + } ); + + it( 'should render "Let\'s get you started" when has task visited and task completed count <= 3', () => { + ( useSelect as jest.Mock ).mockImplementation( ( fn ) => + fn( () => ( { + getTaskList: () => ( { + tasks: [ { isVisited: true, isComplete: false } ], + } ), + hasFinishedResolution: () => true, + } ) ) + ); + render( ); + expect( + screen.getByText( "Let's get you started", { exact: false } ) + ).toBeInTheDocument(); + } ); + + it( 'should render "You are on the right track" when has task visited and task completed count > 3', () => { + ( useSelect as jest.Mock ).mockImplementation( ( fn ) => + fn( () => ( { + getTaskList: () => ( { + tasks: [ + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: false }, + ], + } ), + hasFinishedResolution: () => true, + } ) ) + ); + render( ); + expect( + screen.getByText( 'You are on the right track', { exact: false } ) + ).toBeInTheDocument(); + } ); + + it( 'should render "You are almost there" when has task visited and task completed count > 5', () => { + ( useSelect as jest.Mock ).mockImplementation( ( fn ) => + fn( () => ( { + getTaskList: () => ( { + tasks: [ + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: true }, + { isVisited: true, isComplete: false }, + ], + } ), + hasFinishedResolution: () => true, + } ) ) + ); + render( ); + expect( + screen.getByText( 'You are almost there', { exact: false } ) + ).toBeInTheDocument(); + } ); +} ); diff --git a/plugins/woocommerce/changelog/fix-tasklist-completion-message b/plugins/woocommerce/changelog/fix-tasklist-completion-message new file mode 100644 index 00000000000..bd50f58368e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-tasklist-completion-message @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix task list progress title when no tasks are completed From 7ba4c8b5caa55ee7568495ce073e8204b6793c34 Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Fri, 5 May 2023 14:07:38 +0200 Subject: [PATCH 048/249] Update WooCommerce blocks package to 10.0.4 (#38135) --- .../changelog/update-woocommerce-blocks-10.0.4 | 4 ++++ plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 14 +++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-woocommerce-blocks-10.0.4 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-10.0.4 b/plugins/woocommerce/changelog/update-woocommerce-blocks-10.0.4 new file mode 100644 index 00000000000..be096406d18 --- /dev/null +++ b/plugins/woocommerce/changelog/update-woocommerce-blocks-10.0.4 @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Woo Blocks 10.0.4 diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 04d18869ae1..c699924ecaa 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "maxmind-db/reader": "^1.11", "pelago/emogrifier": "^6.0", "woocommerce/action-scheduler": "3.5.4", - "woocommerce/woocommerce-blocks": "10.0.2" + "woocommerce/woocommerce-blocks": "10.0.4" }, "require-dev": { "automattic/jetpack-changelogger": "^3.3.0", diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index d3bbd03fb77..361bcf61d82 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": "9b9f6dff1c579d1d1e86436b8e1fb6a7", + "content-hash": "e2c19d28d8b778a3b73522796391eb88", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -628,16 +628,16 @@ }, { "name": "woocommerce/woocommerce-blocks", - "version": "10.0.2", + "version": "10.0.4", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-blocks.git", - "reference": "d7275884591bc05f7e780c8cd7919d50b79b9ffa" + "reference": "1717e5f237b308982870da919bdd52618955c365" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/d7275884591bc05f7e780c8cd7919d50b79b9ffa", - "reference": "d7275884591bc05f7e780c8cd7919d50b79b9ffa", + "url": "https://api.github.com/repos/woocommerce/woocommerce-blocks/zipball/1717e5f237b308982870da919bdd52618955c365", + "reference": "1717e5f237b308982870da919bdd52618955c365", "shasum": "" }, "require": { @@ -683,9 +683,9 @@ ], "support": { "issues": "https://github.com/woocommerce/woocommerce-blocks/issues", - "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v10.0.2" + "source": "https://github.com/woocommerce/woocommerce-blocks/tree/v10.0.4" }, - "time": "2023-04-19T08:04:13+00:00" + "time": "2023-05-05T09:32:30+00:00" } ], "packages-dev": [ From 24a59c8d59eb9deecd4eb27b2b5752293c356997 Mon Sep 17 00:00:00 2001 From: aezazs-multidots <72435501+aezazs-multidots@users.noreply.github.com> Date: Fri, 5 May 2023 17:40:58 +0530 Subject: [PATCH 049/249] updated product description tips text (#38070) * updated product description tips text * Add Description in changelog --- .../client/guided-tours/add-product-tour/index.tsx | 2 +- plugins/woocommerce/changelog/2023-05-02-09-36-02-782439 | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/2023-05-02-09-36-02-782439 diff --git a/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx b/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx index d487cb93141..ec2d7b8de5d 100644 --- a/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx +++ b/plugins/woocommerce-admin/client/guided-tours/add-product-tour/index.tsx @@ -114,7 +114,7 @@ const getTourConfig = ( { ), descriptions: { desktop: __( - 'Start typing your new product name here. Add your full product description here. Describe your product in detail.', + 'Add your full product description here. Describe your product in detail.', 'woocommerce' ), }, diff --git a/plugins/woocommerce/changelog/2023-05-02-09-36-02-782439 b/plugins/woocommerce/changelog/2023-05-02-09-36-02-782439 new file mode 100644 index 00000000000..2d86c3ccd8b --- /dev/null +++ b/plugins/woocommerce/changelog/2023-05-02-09-36-02-782439 @@ -0,0 +1,5 @@ +Significance: patch +Type: update + +Updated product description tips text. + From 95ca53675f2817753d484583c96ca9ab9f725172 Mon Sep 17 00:00:00 2001 From: Nathan Silveira Date: Fri, 5 May 2023 09:21:32 -0300 Subject: [PATCH 050/249] Fix TreeControl bugs in single selection mode (#38079) * Add onFirstTreeItemBack hook * Fix item not being selected on single mode when it had children * Remove if statement that prevented items with children from being selected in single mode * Add storybook example with onFirstTreeItemBack * Remove onFirstTreeItemBack * Replace radio button with checkbox * Update changelog --- packages/js/components/changelog/update-tree-item | 4 ++++ .../src/experimental-tree-control/hooks/use-selection.ts | 2 -- .../src/experimental-tree-control/tree-item.scss | 8 ++++---- .../src/experimental-tree-control/tree-item.tsx | 8 +++----- 4 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 packages/js/components/changelog/update-tree-item diff --git a/packages/js/components/changelog/update-tree-item b/packages/js/components/changelog/update-tree-item new file mode 100644 index 00000000000..9473f708688 --- /dev/null +++ b/packages/js/components/changelog/update-tree-item @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +TreeControl: Fix a bug where items with children were not selected in single mode and fix a bug where navigation between items with tab was not working properly. diff --git a/packages/js/components/src/experimental-tree-control/hooks/use-selection.ts b/packages/js/components/src/experimental-tree-control/hooks/use-selection.ts index 79e47bfc9ec..6ad08a558a5 100644 --- a/packages/js/components/src/experimental-tree-control/hooks/use-selection.ts +++ b/packages/js/components/src/experimental-tree-control/hooks/use-selection.ts @@ -122,8 +122,6 @@ export function useSelection( { if ( item.children.length && ! shouldNotRecursivelySelect ) { value.push( ...getDeepChildren( item ) ); } - } else if ( item.children?.length ) { - return; } if ( checked ) { diff --git a/packages/js/components/src/experimental-tree-control/tree-item.scss b/packages/js/components/src/experimental-tree-control/tree-item.scss index c3f51d28813..4f849e68fd1 100644 --- a/packages/js/components/src/experimental-tree-control/tree-item.scss +++ b/packages/js/components/src/experimental-tree-control/tree-item.scss @@ -45,10 +45,6 @@ $control-size: $gap-large; margin: 0; } - .components-radio-control__input { - @include screen-reader-only(); - } - .components-checkbox-control__label { display: none; } @@ -86,4 +82,8 @@ $control-size: $gap-large; min-width: $control-size; } } + + &__checkbox { + @include screen-reader-only(); + } } diff --git a/packages/js/components/src/experimental-tree-control/tree-item.tsx b/packages/js/components/src/experimental-tree-control/tree-item.tsx index e7e487d7992..6f87e716b90 100644 --- a/packages/js/components/src/experimental-tree-control/tree-item.tsx +++ b/packages/js/components/src/experimental-tree-control/tree-item.tsx @@ -60,13 +60,11 @@ export const TreeItem = forwardRef( function ForwardedTreeItem( /> ) : ( - selection.onSelectChild( - event.currentTarget.checked - ) + selection.onSelectChild( event.target.checked ) } /> ) } From dab5f98aea17a874e0d8b26742e604f66844d11a Mon Sep 17 00:00:00 2001 From: Chris Lilitsas Date: Fri, 5 May 2023 15:36:08 +0300 Subject: [PATCH 051/249] Fix typo for echoing the class name Co-authored-by: Corey McKrill <916023+coreymckrill@users.noreply.github.com> --- plugins/woocommerce/templates/order/order-again.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/templates/order/order-again.php b/plugins/woocommerce/templates/order/order-again.php index 78cc5018088..7fa898c63c4 100644 --- a/plugins/woocommerce/templates/order/order-again.php +++ b/plugins/woocommerce/templates/order/order-again.php @@ -19,5 +19,5 @@ defined( 'ABSPATH' ) || exit; ?>

- +

From 14ed88cd1f6f8951561653fd4b41fa4446c735f6 Mon Sep 17 00:00:00 2001 From: Joshua T Flowers Date: Fri, 5 May 2023 09:15:07 -0700 Subject: [PATCH 052/249] Prevent double debouncing of iframe editor callback (#38087) * Prevent double debouncing of iframe editor callback * Add changelog entry --- .../js/product-editor/changelog/fix-38020 | 4 +++ .../iframe-editor/iframe-editor.tsx | 28 +++++++------------ 2 files changed, 14 insertions(+), 18 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-38020 diff --git a/packages/js/product-editor/changelog/fix-38020 b/packages/js/product-editor/changelog/fix-38020 new file mode 100644 index 00000000000..d45ce96e163 --- /dev/null +++ b/packages/js/product-editor/changelog/fix-38020 @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Prevent double debouncing of iframe editor callback diff --git a/packages/js/product-editor/src/components/iframe-editor/iframe-editor.tsx b/packages/js/product-editor/src/components/iframe-editor/iframe-editor.tsx index 2bf508964d0..3f546bfe805 100644 --- a/packages/js/product-editor/src/components/iframe-editor/iframe-editor.tsx +++ b/packages/js/product-editor/src/components/iframe-editor/iframe-editor.tsx @@ -4,13 +4,8 @@ import { BlockInstance } from '@wordpress/blocks'; import { Popover } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; -import { - createElement, - useCallback, - useEffect, - useState, -} from '@wordpress/element'; -import { useDebounce, useResizeObserver } from '@wordpress/compose'; +import { createElement, useEffect, useState } from '@wordpress/element'; +import { useResizeObserver } from '@wordpress/compose'; import { BlockEditorProvider, BlockInspector, @@ -66,15 +61,6 @@ export function IframeEditor( { updateSettings( productBlockEditorSettings ); }, [] ); - const handleChange = useCallback( - ( updatedBlocks: BlockInstance[] ) => { - onChange( updatedBlocks ); - }, - [ onChange ] - ); - - const debouncedOnChange = useDebounce( handleChange, 200 ); - return (
{ setBlocks( updatedBlocks ); - debouncedOnChange( updatedBlocks ); + onChange( updatedBlocks ); } } useSubRegistry={ true } > @@ -104,7 +90,13 @@ export function IframeEditor( { { /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */ } { /* @ts-ignore */ } - { onClose && } + { onClose && ( + { + setTimeout( onClose, 550 ); + } } + /> + ) } Date: Fri, 5 May 2023 09:15:35 -0700 Subject: [PATCH 053/249] Update shipping dimensions image in new product blocks editor (#38101) * Update shipping dimensions image SVG * Allow labels in shipping dimension SVG * Add changelog entry --- .../js/product-editor/changelog/update-38043 | 4 + .../src/blocks/shipping-dimensions/edit.tsx | 11 ++ .../blocks/shipping-dimensions/editor.scss | 1 + .../shipping-dimensions-image.tsx | 147 ++++++++++-------- .../shipping-dimensions-image/types.ts | 5 + 5 files changed, 105 insertions(+), 63 deletions(-) create mode 100644 packages/js/product-editor/changelog/update-38043 diff --git a/packages/js/product-editor/changelog/update-38043 b/packages/js/product-editor/changelog/update-38043 new file mode 100644 index 00000000000..1a5161be088 --- /dev/null +++ b/packages/js/product-editor/changelog/update-38043 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update shipping dimensions image in new product blocks editor diff --git a/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx b/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx index c162f637a74..80f09571c95 100644 --- a/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx +++ b/packages/js/product-editor/src/blocks/shipping-dimensions/edit.tsx @@ -205,6 +205,17 @@ export function Edit( {}: BlockEditProps< ShippingDimensionsBlockAttributes > )
diff --git a/packages/js/product-editor/src/blocks/shipping-dimensions/editor.scss b/packages/js/product-editor/src/blocks/shipping-dimensions/editor.scss index 38bd27dc95e..668f03a6f9e 100644 --- a/packages/js/product-editor/src/blocks/shipping-dimensions/editor.scss +++ b/packages/js/product-editor/src/blocks/shipping-dimensions/editor.scss @@ -18,5 +18,6 @@ width: 100%; height: 100%; padding: $gap; + overflow: visible; } } diff --git a/packages/js/product-editor/src/components/shipping-dimensions-image/shipping-dimensions-image.tsx b/packages/js/product-editor/src/components/shipping-dimensions-image/shipping-dimensions-image.tsx index f9ac4c98739..39b07afd003 100644 --- a/packages/js/product-editor/src/components/shipping-dimensions-image/shipping-dimensions-image.tsx +++ b/packages/js/product-editor/src/components/shipping-dimensions-image/shipping-dimensions-image.tsx @@ -10,90 +10,111 @@ import { ShippingDimensionsImageProps } from './types'; export function ShippingDimensionsImage( { highlight, + labels = {}, ...props }: ShippingDimensionsImageProps ) { return ( { /* Side A */ } + { /* Line A */ } - { /* Side B */ } + { /* Line C */ } + + { /* Line B */ } + - + { /* Label C */ } + { labels.C ? ( + + { labels.C } + + ) : ( + + ) } - { /* Arrow A */ } - - { /* Arrow B */ } - - { /* Arrow C */ } - + { /* Label B */ } + { labels.B ? ( + + { labels.B } + + ) : ( + + ) } - { /* Letter A */ } - - { /* Letter B */ } - - { /* Letter C */ } - + { /* Label A */ } + { labels.A ? ( + + { labels.A } + + ) : ( + + ) } ); } diff --git a/packages/js/product-editor/src/components/shipping-dimensions-image/types.ts b/packages/js/product-editor/src/components/shipping-dimensions-image/types.ts index 8824a9c248f..119c9cf5c4e 100644 --- a/packages/js/product-editor/src/components/shipping-dimensions-image/types.ts +++ b/packages/js/product-editor/src/components/shipping-dimensions-image/types.ts @@ -2,4 +2,9 @@ export type HighlightSides = 'A' | 'B' | 'C'; export type ShippingDimensionsImageProps = React.SVGProps< SVGSVGElement > & { highlight?: HighlightSides; + labels?: { + A?: string | number; + B?: string | number; + C?: string | number; + }; }; From f1db682cc6b42366e8c01cabe1d93fe45a866232 Mon Sep 17 00:00:00 2001 From: Joshua T Flowers Date: Fri, 5 May 2023 11:52:12 -0700 Subject: [PATCH 054/249] Fix summary toolbar positioning and selection on blur (#38086) * Remove block selection on summary input blur * Move block props to wrapper around rich text * Fix content ID and for label * Add changelog entry * Use useInstanceId instead of lodash uniqueId --- .../js/product-editor/changelog/fix-37956 | 4 ++ .../src/blocks/summary/edit.tsx | 66 +++++++++++++------ 2 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-37956 diff --git a/packages/js/product-editor/changelog/fix-37956 b/packages/js/product-editor/changelog/fix-37956 new file mode 100644 index 00000000000..57e418f138f --- /dev/null +++ b/packages/js/product-editor/changelog/fix-37956 @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Fix summary toolbar positioning and selection on blur diff --git a/packages/js/product-editor/src/blocks/summary/edit.tsx b/packages/js/product-editor/src/blocks/summary/edit.tsx index f9d07c81c45..802a9898d47 100644 --- a/packages/js/product-editor/src/blocks/summary/edit.tsx +++ b/packages/js/product-editor/src/blocks/summary/edit.tsx @@ -5,8 +5,9 @@ import { __ } from '@wordpress/i18n'; import { createElement } from '@wordpress/element'; import { BlockEditProps } from '@wordpress/blocks'; import { BaseControl } from '@wordpress/components'; +import { useDispatch } from '@wordpress/data'; import { useEntityProp } from '@wordpress/core-data'; -import uniqueId from 'lodash/uniqueId'; +import { useInstanceId } from '@wordpress/compose'; import classNames from 'classnames'; import { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -14,6 +15,7 @@ import { AlignmentControl, BlockControls, RichText, + store as blockEditorStore, useBlockProps, } from '@wordpress/block-editor'; @@ -32,12 +34,18 @@ export function Edit( { const blockProps = useBlockProps( { style: { direction }, } ); - const id = uniqueId(); + const contentId = useInstanceId( + Edit, + 'wp-block-woocommerce-product-summary-field__content' + ); const [ summary, setSummary ] = useEntityProp< string >( 'postType', 'product', 'short_description' ); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore No types for this exist yet. + const { clearSelectedBlock } = useDispatch( blockEditorStore ); function handleAlignmentChange( value: SummaryAttributes[ 'align' ] ) { setAttributes( { align: value } ); @@ -47,8 +55,21 @@ export function Edit( { setAttributes( { direction: value } ); } + function handleBlur( event: React.FocusEvent< 'p', Element > ) { + const isToolbar = event.relatedTarget?.closest( + '.block-editor-block-contextual-toolbar' + ); + if ( ! isToolbar ) { + clearSelectedBlock(); + } + } + return ( -
+
{ /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */ } { /* @ts-ignore No types for this exist yet. */ } @@ -65,26 +86,29 @@ export function Edit( { - +
+ +
); From 73829979fc2f34a7d9f2d5de3615bc8aae574f43 Mon Sep 17 00:00:00 2001 From: Emran Ahmed Date: Sat, 20 Jun 2020 22:59:45 +0600 Subject: [PATCH 055/249] When triggering handlers for `checkout_place_order[_*]` events, supply extraParameters. Adding `extraParameters` to `triggerHandler` to gateways manipulate the checkout if needed with more data --- plugins/woocommerce/client/legacy/js/frontend/checkout.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/client/legacy/js/frontend/checkout.js b/plugins/woocommerce/client/legacy/js/frontend/checkout.js index 91a33b69329..76c910a265c 100644 --- a/plugins/woocommerce/client/legacy/js/frontend/checkout.js +++ b/plugins/woocommerce/client/legacy/js/frontend/checkout.js @@ -477,7 +477,7 @@ jQuery( function( $ ) { // Trigger a handler to let gateways manipulate the checkout if needed // eslint-disable-next-line max-len - if ( $form.triggerHandler( 'checkout_place_order' ) !== false && $form.triggerHandler( 'checkout_place_order_' + wc_checkout_form.get_payment_method() ) !== false ) { + if ( $form.triggerHandler( 'checkout_place_order', [wc_checkout_form] ) !== false && $form.triggerHandler( 'checkout_place_order_' + wc_checkout_form.get_payment_method(), [wc_checkout_form] ) !== false ) { $form.addClass( 'processing' ); @@ -525,7 +525,7 @@ jQuery( function( $ ) { wc_checkout_form.detachUnloadEventsOnSubmit(); try { - if ( 'success' === result.result && $form.triggerHandler( 'checkout_place_order_success', result ) !== false ) { + if ( 'success' === result.result && $form.triggerHandler( 'checkout_place_order_success', [result, wc_checkout_form] ) !== false ) { if ( -1 === result.redirect.indexOf( 'https://' ) || -1 === result.redirect.indexOf( 'http://' ) ) { window.location = result.redirect; } else { From 74493295994449c8369e8555657ffce7141a8e31 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 5 May 2023 12:26:31 -0700 Subject: [PATCH 056/249] Changelog. --- .../woocommerce/changelog/26827-checkout-place-order-events | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/26827-checkout-place-order-events diff --git a/plugins/woocommerce/changelog/26827-checkout-place-order-events b/plugins/woocommerce/changelog/26827-checkout-place-order-events new file mode 100644 index 00000000000..39538af1f4c --- /dev/null +++ b/plugins/woocommerce/changelog/26827-checkout-place-order-events @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Makes more information available to handlers for the `checkout_place_order` (and related) events. From ce23ac81af7327de163a6c86c536d7604e13b424 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 5 May 2023 12:28:29 -0700 Subject: [PATCH 057/249] Whitespace/formatting. --- plugins/woocommerce/client/legacy/js/frontend/checkout.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/client/legacy/js/frontend/checkout.js b/plugins/woocommerce/client/legacy/js/frontend/checkout.js index 76c910a265c..02f31aa3eb8 100644 --- a/plugins/woocommerce/client/legacy/js/frontend/checkout.js +++ b/plugins/woocommerce/client/legacy/js/frontend/checkout.js @@ -477,7 +477,7 @@ jQuery( function( $ ) { // Trigger a handler to let gateways manipulate the checkout if needed // eslint-disable-next-line max-len - if ( $form.triggerHandler( 'checkout_place_order', [wc_checkout_form] ) !== false && $form.triggerHandler( 'checkout_place_order_' + wc_checkout_form.get_payment_method(), [wc_checkout_form] ) !== false ) { + if ( $form.triggerHandler( 'checkout_place_order', [ wc_checkout_form ] ) !== false && $form.triggerHandler( 'checkout_place_order_' + wc_checkout_form.get_payment_method(), [ wc_checkout_form ] ) !== false ) { $form.addClass( 'processing' ); @@ -525,7 +525,7 @@ jQuery( function( $ ) { wc_checkout_form.detachUnloadEventsOnSubmit(); try { - if ( 'success' === result.result && $form.triggerHandler( 'checkout_place_order_success', [result, wc_checkout_form] ) !== false ) { + if ( 'success' === result.result && $form.triggerHandler( 'checkout_place_order_success', [ result, wc_checkout_form ] ) !== false ) { if ( -1 === result.redirect.indexOf( 'https://' ) || -1 === result.redirect.indexOf( 'http://' ) ) { window.location = result.redirect; } else { From e7d67710fdbee8d0126adc6235d5fa4574ac7310 Mon Sep 17 00:00:00 2001 From: Joel Thiessen <444632+joelclimbsthings@users.noreply.github.com> Date: Fri, 5 May 2023 12:39:39 -0700 Subject: [PATCH 058/249] Restoring standard tabbing behavior in product block editor (#38105) --- .../product-editor/changelog/fix-tabbed-navigation-37932 | 4 ++++ .../src/components/block-editor/block-editor.tsx | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-tabbed-navigation-37932 diff --git a/packages/js/product-editor/changelog/fix-tabbed-navigation-37932 b/packages/js/product-editor/changelog/fix-tabbed-navigation-37932 new file mode 100644 index 00000000000..b71572676df --- /dev/null +++ b/packages/js/product-editor/changelog/fix-tabbed-navigation-37932 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Removing WritingFlow component which was suppressing tabbing behavior in form. diff --git a/packages/js/product-editor/src/components/block-editor/block-editor.tsx b/packages/js/product-editor/src/components/block-editor/block-editor.tsx index 2c011c4ed7a..a53e7ca52ad 100644 --- a/packages/js/product-editor/src/components/block-editor/block-editor.tsx +++ b/packages/js/product-editor/src/components/block-editor/block-editor.tsx @@ -18,7 +18,6 @@ import { BlockTools, EditorSettings, EditorBlockListSettings, - WritingFlow, ObserveTyping, } from '@wordpress/block-editor'; // It doesn't seem to notice the External dependency block whn @ts-ignore is added. @@ -106,11 +105,9 @@ export function BlockEditor( { { /* @ts-ignore No types for this exist yet. */ } - - - - - + + +
From 6fdddd25f0f95f918d9a6c5525ec7b2bc5574023 Mon Sep 17 00:00:00 2001 From: Ben Meredith Date: Fri, 5 May 2023 16:50:07 -0400 Subject: [PATCH 059/249] Fix typo (#35232) * Fix typo "Log out" is a verb "logout" is a noun. This link should be an action. So it's the verb form. * Add changelog file * update E2E tests for text change * update unit test for text change --------- Co-authored-by: Ron Rennick Co-authored-by: Ron Rennick --- plugins/woocommerce/changelog/pr-35232 | 4 ++++ plugins/woocommerce/includes/wc-account-functions.php | 2 +- .../e2e-pw/tests/shopper/checkout-create-account.spec.js | 2 +- .../e2e-pw/tests/shopper/my-account-create-account.spec.js | 2 +- .../woocommerce/tests/e2e-pw/tests/shopper/my-account.spec.js | 2 +- .../woocommerce/tests/legacy/unit-tests/account/functions.php | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 plugins/woocommerce/changelog/pr-35232 diff --git a/plugins/woocommerce/changelog/pr-35232 b/plugins/woocommerce/changelog/pr-35232 new file mode 100644 index 00000000000..de028255c9e --- /dev/null +++ b/plugins/woocommerce/changelog/pr-35232 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +fix logout vs log out typo \ No newline at end of file diff --git a/plugins/woocommerce/includes/wc-account-functions.php b/plugins/woocommerce/includes/wc-account-functions.php index 531176e7279..7cefe49d9eb 100644 --- a/plugins/woocommerce/includes/wc-account-functions.php +++ b/plugins/woocommerce/includes/wc-account-functions.php @@ -102,7 +102,7 @@ function wc_get_account_menu_items() { 'edit-address' => _n( 'Address', 'Addresses', ( 1 + (int) wc_shipping_enabled() ), 'woocommerce' ), 'payment-methods' => __( 'Payment methods', 'woocommerce' ), 'edit-account' => __( 'Account details', 'woocommerce' ), - 'customer-logout' => __( 'Logout', 'woocommerce' ), + 'customer-logout' => __( 'Log out', 'woocommerce' ), ); // Remove missing endpoints. diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/checkout-create-account.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/checkout-create-account.spec.js index 856f528a112..69f6c765faf 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/shopper/checkout-create-account.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/checkout-create-account.spec.js @@ -169,7 +169,7 @@ test.describe( 'Shopper Checkout Create Account', () => { await expect( page.locator( 'h1.entry-title' ) ).toContainText( 'My account' ); - await page.click( 'text=Logout' ); + await page.click( 'text=Log out' ); // sign in as admin to confirm account creation await page.fill( '#username', admin.username ); await page.fill( '#password', admin.password ); diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account-create-account.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account-create-account.spec.js index 8364bd746bc..0da54a72912 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account-create-account.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account-create-account.spec.js @@ -78,7 +78,7 @@ test.describe( 'Shopper My Account Create Account', () => { await expect( page.locator( 'h1.entry-title' ) ).toContainText( 'My account' ); - await expect( page.locator( 'text=Logout' ) ).toBeVisible(); + await expect( page.locator( 'text=Log out' ).first() ).toBeVisible(); await page.goto( 'my-account/edit-account/' ); await expect( page.locator( '#account_email' ) ).toHaveValue( diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account.spec.js index 85598a8287f..611b771300a 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/my-account.spec.js @@ -45,7 +45,7 @@ test.describe( 'My account page', () => { page.locator( '.woocommerce-MyAccount-navigation-link--customer-logout' ) - ).toContainText( 'Logout' ); + ).toContainText( 'Log out' ); } ); for ( let i = 0; i < pages.length; i++ ) { diff --git a/plugins/woocommerce/tests/legacy/unit-tests/account/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/account/functions.php index 98c644c5e9d..b3305063794 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/account/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/account/functions.php @@ -52,7 +52,7 @@ class WC_Tests_Account_Functions extends WC_Unit_Test_Case { 'downloads' => 'Downloads', 'edit-address' => 'Addresses', 'edit-account' => 'Account details', - 'customer-logout' => 'Logout', + 'customer-logout' => 'Log out', ), wc_get_account_menu_items() ); From 29ea9b0b657c09e0e78616fb37e69fe7dc552f86 Mon Sep 17 00:00:00 2001 From: minaldiwan <77973388+minaldiwan@users.noreply.github.com> Date: Fri, 4 Nov 2022 12:45:46 +0530 Subject: [PATCH 060/249] fixed spacing issue of thumb image --- plugins/woocommerce/client/legacy/css/twenty-twenty.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/client/legacy/css/twenty-twenty.scss b/plugins/woocommerce/client/legacy/css/twenty-twenty.scss index 6f91033da6c..b30ad604555 100644 --- a/plugins/woocommerce/client/legacy/css/twenty-twenty.scss +++ b/plugins/woocommerce/client/legacy/css/twenty-twenty.scss @@ -591,7 +591,7 @@ a.reset_variations { .flex-control-thumbs li { width: 14.2857142857%; - margin: 0 14.2857142857% 1.6em 0; + margin: 0 1em 1.6em 0; } .flex-control-thumbs li:nth-child(4n) { From 7743fa41b6ed625298da92b0dff6edc6131f421f Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 5 May 2023 13:58:27 -0700 Subject: [PATCH 061/249] Changelog. --- plugins/woocommerce/changelog/woocommer-thumb-issue | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/woocommer-thumb-issue diff --git a/plugins/woocommerce/changelog/woocommer-thumb-issue b/plugins/woocommerce/changelog/woocommer-thumb-issue new file mode 100644 index 00000000000..869f0e8781e --- /dev/null +++ b/plugins/woocommerce/changelog/woocommer-thumb-issue @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Improve spacing of product gallery thumbs when using the Twenty Twenty-Two theme. From 2a87e4d21c5eb696c37339b55ceb1ee8a58e35ea Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 8 May 2023 12:18:27 +0800 Subject: [PATCH 062/249] Migrate select control component to TS (#37751) * Migrate select control to TS * Add changelog * Migrate test to TS * Change value type to be optional * Fix missing prop --- .../dev-migrate-select-control-to-ts | 4 + .../{control.js => control.tsx} | 249 ++++++---- .../select-control/{index.js => index.tsx} | 462 ++++++++++-------- .../src/select-control/{list.js => list.tsx} | 160 +++--- .../stories/{index.js => index.tsx} | 8 +- .../src/select-control/{tags.js => tags.tsx} | 61 ++- .../test/{index.js => index.tsx} | 38 +- .../js/components/src/select-control/types.ts | 9 + 8 files changed, 579 insertions(+), 412 deletions(-) create mode 100644 packages/js/components/changelog/dev-migrate-select-control-to-ts rename packages/js/components/src/select-control/{control.js => control.tsx} (69%) rename packages/js/components/src/select-control/{index.js => index.tsx} (69%) rename packages/js/components/src/select-control/{list.js => list.tsx} (68%) rename packages/js/components/src/select-control/stories/{index.js => index.tsx} (95%) rename packages/js/components/src/select-control/{tags.js => tags.tsx} (80%) rename packages/js/components/src/select-control/test/{index.js => index.tsx} (95%) create mode 100644 packages/js/components/src/select-control/types.ts diff --git a/packages/js/components/changelog/dev-migrate-select-control-to-ts b/packages/js/components/changelog/dev-migrate-select-control-to-ts new file mode 100644 index 00000000000..475884bfaa6 --- /dev/null +++ b/packages/js/components/changelog/dev-migrate-select-control-to-ts @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Migrate select control component to TS diff --git a/packages/js/components/src/select-control/control.js b/packages/js/components/src/select-control/control.tsx similarity index 69% rename from packages/js/components/src/select-control/control.js rename to packages/js/components/src/select-control/control.tsx index 931a4e425a2..a1864674663 100644 --- a/packages/js/components/src/select-control/control.js +++ b/packages/js/components/src/select-control/control.tsx @@ -6,18 +6,149 @@ import { BACKSPACE, DOWN, UP } from '@wordpress/keycodes'; import { createElement, Component, createRef } from '@wordpress/element'; import { Icon, search } from '@wordpress/icons'; import classnames from 'classnames'; -import PropTypes from 'prop-types'; +import { isArray } from 'lodash'; +import { + RefObject, + ChangeEvent, + FocusEvent, + KeyboardEvent, + InputHTMLAttributes, +} from 'react'; /** * Internal dependencies */ import Tags from './tags'; +import { Selected, Option } from './types'; + +type Props = { + /** + * Bool to determine if tags should be rendered. + */ + hasTags?: boolean; + /** + * Help text to be appended beneath the input. + */ + help?: string | JSX.Element; + /** + * Render tags inside input, otherwise render below input. + */ + inlineTags?: boolean; + /** + * Allow the select options to be filtered by search input. + */ + isSearchable?: boolean; + /** + * ID of the main SelectControl instance. + */ + instanceId?: number; + /** + * A label to use for the main input. + */ + label?: string; + /** + * ID used for a11y in the listbox. + */ + listboxId?: string; + /** + * Function called when the input is blurred. + */ + onBlur?: () => void; + /** + * Function called when selected results change, passed result list. + */ + onChange: ( selected: Option[] ) => void; + /** + * Function called when input field is changed or focused. + */ + onSearch: ( query: string ) => void; + /** + * A placeholder for the search input. + */ + placeholder?: string; + /** + * Search query entered by user. + */ + query?: string | null; + /** + * An array of objects describing selected values. If the label of the selected + * value is omitted, the Tag of that value will not be rendered inside the + * search box. + */ + selected?: Selected; + /** + * Show all options on focusing, even if a query exists. + */ + showAllOnFocus?: boolean; + /** + * Control input autocomplete field, defaults: off. + */ + autoComplete?: string; + /** + * Function to execute when the control should be expanded or collapsed. + */ + setExpanded: ( expanded: boolean ) => void; + /** + * Function to execute when the search value changes. + */ + updateSearchOptions: ( query: string ) => void; + /** + * Function to execute when keyboard navigation should decrement the selected index. + */ + decrementSelectedIndex: () => void; + /** + * Function to execute when keyboard navigation should increment the selected index. + */ + incrementSelectedIndex: () => void; + /** + * Multi-select mode allows multiple options to be selected. + */ + multiple?: boolean; + /** + * Is the control currently focused. + */ + isFocused?: boolean; + /** + * ID for accessibility purposes. aria-activedescendant will be set to this value. + */ + activeId?: string; + /** + * Disable the control. + */ + disabled?: boolean; + /** + * Is the control currently expanded. This is for accessibility purposes. + */ + isExpanded?: boolean; + /** + * The type of input to use for the search field. + */ + searchInputType?: InputHTMLAttributes< HTMLInputElement >[ 'type' ]; + /** + * The aria label for the search input. + */ + ariaLabel?: string; + /** + * Class name to be added to the input. + */ + className?: string; + /** + * Show the clear button. + */ + showClearButton?: boolean; +}; + +type State = { + isActive: boolean; +}; /** * A search control to allow user input to filter the options. */ -class Control extends Component { - constructor( props ) { +class Control extends Component< Props, State > { + input: RefObject< HTMLInputElement >; + + constructor( props: Props ) { super( props ); this.state = { isActive: false, @@ -31,13 +162,13 @@ class Control extends Component { this.onKeyDown = this.onKeyDown.bind( this ); } - updateSearch( onSearch ) { - return ( event ) => { + updateSearch( onSearch: ( query: string ) => void ) { + return ( event: ChangeEvent< HTMLInputElement > ) => { onSearch( event.target.value ); }; } - onFocus( onSearch ) { + onFocus( onSearch: ( query: string ) => void ) { const { isSearchable, setExpanded, @@ -45,7 +176,7 @@ class Control extends Component { updateSearchOptions, } = this.props; - return ( event ) => { + return ( event: FocusEvent< HTMLInputElement > ) => { this.setState( { isActive: true } ); if ( isSearchable && showAllOnFocus ) { event.target.select(); @@ -68,7 +199,7 @@ class Control extends Component { this.setState( { isActive: false } ); } - onKeyDown( event ) { + onKeyDown( event: KeyboardEvent< HTMLInputElement > ) { const { decrementSelectedIndex, incrementSelectedIndex, @@ -78,7 +209,12 @@ class Control extends Component { setExpanded, } = this.props; - if ( BACKSPACE === event.keyCode && ! query && selected.length ) { + if ( + BACKSPACE === event.keyCode && + ! query && + isArray( selected ) && + selected.length + ) { onChange( [ ...selected.slice( 0, -1 ) ] ); } @@ -100,7 +236,7 @@ class Control extends Component { renderButton() { const { multiple, selected } = this.props; - if ( multiple || ! selected.length ) { + if ( multiple || ! isArray( selected ) || ! selected.length ) { return null; } @@ -151,7 +287,7 @@ class Control extends Component { aria-describedby={ hasTags && inlineTags ? `search-inline-input-${ instanceId }` - : null + : undefined } disabled={ disabled } aria-label={ this.props.ariaLabel ?? this.props.label } @@ -168,7 +304,8 @@ class Control extends Component { query, selected, } = this.props; - const selectedValue = selected.length ? selected[ 0 ].label : ''; + const selectedValue = + isArray( selected ) && selected.length ? selected[ 0 ].label : ''; // Show the selected value for simple select dropdowns. if ( ! multiple && ! isFocused && ! inlineTags ) { @@ -194,6 +331,8 @@ class Control extends Component { isSearchable, label, query, + onChange, + showClearButton, } = this.props; const { isActive } = this.state; @@ -213,7 +352,7 @@ class Control extends Component { empty: ! query || query.length === 0, 'is-active': isActive, 'has-tags': inlineTags && hasTags, - 'with-value': this.getInputValue().length, + 'with-value': this.getInputValue()?.length, 'has-error': !! help, 'is-disabled': disabled, } @@ -221,8 +360,11 @@ class Control extends Component { onClick={ ( event ) => { // Don't focus the input if the click event is from the error message. if ( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore - event.target.className is not in the type definition. event.target.className !== - 'components-base-control__help' + 'components-base-control__help' && + this.input.current ) { this.input.current.focus(); } @@ -234,7 +376,13 @@ class Control extends Component { icon={ search } /> ) } - { inlineTags && } + { inlineTags && ( + + ) }
{ !! label && ( @@ -272,75 +420,4 @@ class Control extends Component { } } -Control.propTypes = { - /** - * Bool to determine if tags should be rendered. - */ - hasTags: PropTypes.bool, - /** - * Help text to be appended beneath the input. - */ - help: PropTypes.oneOfType( [ PropTypes.string, PropTypes.node ] ), - /** - * Render tags inside input, otherwise render below input. - */ - inlineTags: PropTypes.bool, - /** - * Allow the select options to be filtered by search input. - */ - isSearchable: PropTypes.bool, - /** - * ID of the main SelectControl instance. - */ - instanceId: PropTypes.number, - /** - * A label to use for the main input. - */ - label: PropTypes.string, - /** - * ID used for a11y in the listbox. - */ - listboxId: PropTypes.string, - /** - * Function called when the input is blurred. - */ - onBlur: PropTypes.func, - /** - * Function called when selected results change, passed result list. - */ - onChange: PropTypes.func, - /** - * Function called when input field is changed or focused. - */ - onSearch: PropTypes.func, - /** - * A placeholder for the search input. - */ - placeholder: PropTypes.string, - /** - * Search query entered by user. - */ - query: PropTypes.string, - /** - * An array of objects describing selected values. If the label of the selected - * value is omitted, the Tag of that value will not be rendered inside the - * search box. - */ - selected: PropTypes.arrayOf( - PropTypes.shape( { - key: PropTypes.oneOfType( [ PropTypes.number, PropTypes.string ] ) - .isRequired, - label: PropTypes.string, - } ) - ), - /** - * Show all options on focusing, even if a query exists. - */ - showAllOnFocus: PropTypes.bool, - /** - * Control input autocomplete field, defaults: off. - */ - autoComplete: PropTypes.string, -}; - export default Control; diff --git a/packages/js/components/src/select-control/index.js b/packages/js/components/src/select-control/index.tsx similarity index 69% rename from packages/js/components/src/select-control/index.js rename to packages/js/components/src/select-control/index.tsx index 2432af33a9a..c3110eaa272 100644 --- a/packages/js/components/src/select-control/index.js +++ b/packages/js/components/src/select-control/index.tsx @@ -4,26 +4,205 @@ import { __, _n, sprintf } from '@wordpress/i18n'; import classnames from 'classnames'; import { Component, createElement } from '@wordpress/element'; -import { debounce, escapeRegExp, identity, noop } from 'lodash'; -import PropTypes from 'prop-types'; +import { + debounce, + escapeRegExp, + identity, + isArray, + isNumber, + noop, +} from 'lodash'; import { withFocusOutside, withSpokenMessages } from '@wordpress/components'; import { withInstanceId, compose } from '@wordpress/compose'; +import { ChangeEvent, InputHTMLAttributes } from 'react'; /** * Internal dependencies */ +import { Option, Selected } from './types'; import List from './list'; import Tags from './tags'; import Control from './control'; -const initialState = { isExpanded: false, isFocused: false, query: '' }; +type Props = { + /** + * Name to use for the autofill field, not used if no string is passed. + */ + autofill?: string; + /** + * A renderable component (or string) which will be displayed before the `Control` of this component. + */ + children?: React.ReactNode; + /** + * Class name applied to parent div. + */ + className?: string; + /** + * Class name applied to control wrapper. + */ + controlClassName?: string; + /** + * Allow the select options to be disabled. + */ + disabled?: boolean; + /** + * Exclude already selected options from the options list. + */ + excludeSelectedOptions?: boolean; + /** + * Add or remove items to the list of options after filtering, + * passed the array of filtered options and should return an array of options. + */ + onFilter?: ( + options: Array< Option >, + query: string | null + ) => Array< Option >; + /** + * Function to add regex expression to the filter the results, passed the search query. + */ + getSearchExpression?: ( query: string ) => RegExp; + /** + * Help text to be appended beneath the input. + */ + help?: string | JSX.Element; + /** + * Render tags inside input, otherwise render below input. + */ + inlineTags?: boolean; + /** + * Allow the select options to be filtered by search input. + */ + isSearchable?: boolean; + /** + * A label to use for the main input. + */ + label?: string; + /** + * Function called when selected results change, passed result list. + */ + onChange?: ( selected: string | Option[], query?: string | null ) => void; + /** + * Function run after search query is updated, passed previousOptions and query, + * should return a promise with an array of updated options. + */ + onSearch?: ( + previousOptions: Array< Option >, + query: string | null + ) => Promise< Array< Option > >; + /** + * An array of objects for the options list. The option along with its key, label and + * value will be returned in the onChange event. + */ + options: Option[]; + /** + * A placeholder for the search input. + */ + placeholder?: string; + /** + * Time in milliseconds to debounce the search function after typing. + */ + searchDebounceTime?: number; + /** + * An array of objects describing selected values or optionally a string for a single value. + * If the label of the selected value is omitted, the Tag of that value will not + * be rendered inside the search box. + */ + selected?: Selected; + /** + * A limit for the number of results shown in the options menu. Set to 0 for no limit. + */ + maxResults?: number; + /** + * Allow multiple option selections. + */ + multiple?: boolean; + /** + * Render a 'Clear' button next to the input box to remove its contents. + */ + showClearButton?: boolean; + /** + * The input type for the search box control. + */ + searchInputType?: InputHTMLAttributes< HTMLInputElement >[ 'type' ]; + /** + * Only show list options after typing a search query. + */ + hideBeforeSearch?: boolean; + /** + * Show all options on focusing, even if a query exists. + */ + showAllOnFocus?: boolean; + /** + * Render results list positioned statically instead of absolutely. + */ + staticList?: boolean; + /** + * autocomplete prop for the Control input field. + */ + autoComplete?: string; + /** + * Instance ID for the component. + */ + instanceId?: number; + /** + * From withSpokenMessages + */ + debouncedSpeak?: ( message: string, assertive?: string ) => void; + /** + * aria-label for the search input. + */ + ariaLabel?: string; + /** + * On Blur callback. + */ + onBlur?: () => void; +}; + +type State = { + isExpanded: boolean; + isFocused: boolean; + query: string | null; + searchOptions: Option[]; + selectedIndex?: number | null; +}; + +const initialState: State = { + isExpanded: false, + isFocused: false, + query: '', + searchOptions: [], +}; /** * A search box which filters options while typing, * allowing a user to select from an option from a filtered list. */ -export class SelectControl extends Component { - constructor( props ) { +export class SelectControl extends Component< Props, State > { + static defaultProps: Partial< Props > = { + excludeSelectedOptions: true, + getSearchExpression: identity, + inlineTags: false, + isSearchable: false, + onChange: noop, + onFilter: identity, + onSearch: ( options: Option[] ) => Promise.resolve( options ), + maxResults: 0, + multiple: false, + searchDebounceTime: 0, + searchInputType: 'search', + selected: [], + showAllOnFocus: false, + showClearButton: false, + hideBeforeSearch: false, + staticList: false, + autoComplete: 'off', + }; + + node: HTMLDivElement | null = null; + activePromise: Promise< void | Option[] > | null = null; + cacheSearchOptions: Option[] = []; + + constructor( props: Props ) { super( props ); const { selected, options, excludeSelectedOptions } = props; @@ -50,7 +229,7 @@ export class SelectControl extends Component { this.setNewValue = this.setNewValue.bind( this ); } - bindNode( node ) { + bindNode( node: HTMLDivElement ) { this.node = node; } @@ -58,7 +237,12 @@ export class SelectControl extends Component { const { multiple, excludeSelectedOptions } = this.props; const newState = { ...initialState }; // Reset selectedIndex if single selection. - if ( ! multiple && selected.length && selected[ 0 ].key ) { + if ( + ! multiple && + isArray( selected ) && + selected.length && + selected[ 0 ].key + ) { newState.selectedIndex = ! excludeSelectedOptions ? this.props.options.findIndex( ( i ) => i.key === selected[ 0 ].key @@ -101,9 +285,12 @@ export class SelectControl extends Component { return selectedOption ? [ selectedOption ] : []; } - selectOption( option ) { + selectOption( option: Option ) { const { multiple, selected } = this.props; - const newSelected = multiple ? [ ...selected, option ] : [ option ]; + const newSelected = + multiple && isArray( selected ) + ? [ ...selected, option ] + : [ option ]; this.reset( newSelected ); @@ -129,25 +316,24 @@ export class SelectControl extends Component { } ); } - setNewValue( newValue ) { + setNewValue( newValue: Option[] ) { const { onChange, selected, multiple } = this.props; const { query } = this.state; // Trigger a change if the selected value is different and pass back // an array or string depending on the original value. if ( multiple || Array.isArray( selected ) ) { - onChange( newValue, query ); + onChange!( newValue, query ); } else { - onChange( newValue.length > 0 ? newValue[ 0 ].key : '', query ); + onChange!( newValue.length > 0 ? newValue[ 0 ].key : '', query ); } } decrementSelectedIndex() { const { selectedIndex } = this.state; const options = this.getOptions(); - const nextSelectedIndex = - selectedIndex !== null - ? ( selectedIndex === 0 ? options.length : selectedIndex ) - 1 - : options.length - 1; + const nextSelectedIndex = isNumber( selectedIndex ) + ? ( selectedIndex === 0 ? options.length : selectedIndex ) - 1 + : options.length - 1; this.setState( { selectedIndex: nextSelectedIndex } ); } @@ -155,13 +341,14 @@ export class SelectControl extends Component { incrementSelectedIndex() { const { selectedIndex } = this.state; const options = this.getOptions(); - const nextSelectedIndex = - selectedIndex !== null ? ( selectedIndex + 1 ) % options.length : 0; + const nextSelectedIndex = isNumber( selectedIndex ) + ? ( selectedIndex + 1 ) % options.length + : 0; this.setState( { selectedIndex: nextSelectedIndex } ); } - announce( searchOptions ) { + announce( searchOptions: Option[] ) { const { debouncedSpeak } = this.props; if ( ! debouncedSpeak ) { return; @@ -169,6 +356,7 @@ export class SelectControl extends Component { if ( !! searchOptions.length ) { debouncedSpeak( sprintf( + // translators: %d: number of results. _n( '%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', @@ -187,23 +375,26 @@ export class SelectControl extends Component { getOptions() { const { isSearchable, options, excludeSelectedOptions } = this.props; const { searchOptions } = this.state; - const selectedKeys = this.getSelected().map( ( option ) => option.key ); + const selected = this.getSelected(); + const selectedKeys = isArray( selected ) + ? selected.map( ( option ) => option.key ) + : []; const shownOptions = isSearchable ? searchOptions : options; if ( excludeSelectedOptions ) { - return shownOptions.filter( + return shownOptions?.filter( ( option ) => ! selectedKeys.includes( option.key ) ); } return shownOptions; } - getOptionsByQuery( options, query ) { + getOptionsByQuery( options: Option[], query: string | null ) { const { getSearchExpression, maxResults, onFilter } = this.props; const filtered = []; // Create a regular expression to filter the options. - const expression = getSearchExpression( + const expression = getSearchExpression!( escapeRegExp( query ? query.trim() : '' ) ); const search = expression ? new RegExp( expression, 'i' ) : /^$/; @@ -232,14 +423,14 @@ export class SelectControl extends Component { } } - return onFilter( filtered, query ); + return onFilter!( filtered, query ); } - setExpanded( value ) { + setExpanded( value: boolean ) { this.setState( { isExpanded: value } ); } - search( query ) { + search( query: string | null ) { const cacheSearchOptions = this.cacheSearchOptions || []; const searchOptions = query !== null && ! query.length && ! this.props.hideBeforeSearch @@ -252,11 +443,13 @@ export class SelectControl extends Component { isFocused: true, searchOptions, selectedIndex: - query?.length > 0 ? null : this.state.selectedIndex, // Only reset selectedIndex if we're actually searching. + query && query?.length > 0 + ? null + : this.state.selectedIndex, // Only reset selectedIndex if we're actually searching. }, () => { this.setState( { - isExpanded: Boolean( this.getOptions().length ), + isExpanded: Boolean( this.getOptions()?.length ), } ); } ); @@ -264,11 +457,11 @@ export class SelectControl extends Component { this.updateSearchOptions( query ); } - updateSearchOptions( query ) { + updateSearchOptions( query: string | null ) { const { hideBeforeSearch, options, onSearch } = this.props; const promise = ( this.activePromise = Promise.resolve( - onSearch( options, query ) + onSearch!( options, query ) ).then( ( promiseOptions ) => { if ( promise !== this.activePromise ) { // Another promise has become active since this one was asked to resolve, so do nothing, @@ -288,7 +481,9 @@ export class SelectControl extends Component { { searchOptions, selectedIndex: - query?.length > 0 ? null : this.state.selectedIndex, // Only reset selectedIndex if we're actually searching. + query && query?.length > 0 + ? null + : this.state.selectedIndex, // Only reset selectedIndex if we're actually searching. }, () => { this.setState( { @@ -300,7 +495,7 @@ export class SelectControl extends Component { } ) ); } - onAutofillChange( event ) { + onAutofillChange( event: ChangeEvent< HTMLInputElement > ) { const { options } = this.props; const searchOptions = this.getOptionsByQuery( options, @@ -327,13 +522,14 @@ export class SelectControl extends Component { const { isExpanded, isFocused, selectedIndex } = this.state; const hasMultiple = this.hasMultiple(); - const { key: selectedKey = '' } = options[ selectedIndex ] || {}; + const { key: selectedKey = '' } = + ( isNumber( selectedIndex ) && options[ selectedIndex ] ) || {}; const listboxId = isExpanded ? `woocommerce-select-control__listbox-${ instanceId }` - : null; + : undefined; const activeId = isExpanded ? `woocommerce-select-control__option-${ instanceId }-${ selectedKey }` - : null; + : undefined; return (
) } { children } { ! inlineTags && hasMultiple && ( - + ) } { isExpanded && ( Promise.resolve( options ), - maxResults: 0, - multiple: false, - searchDebounceTime: 0, - searchInputType: 'search', - selected: [], - showAllOnFocus: false, - showClearButton: false, - hideBeforeSearch: false, - staticList: false, - autoComplete: 'off', -}; - export default compose( withSpokenMessages, withInstanceId, diff --git a/packages/js/components/src/select-control/list.js b/packages/js/components/src/select-control/list.tsx similarity index 68% rename from packages/js/components/src/select-control/list.js rename to packages/js/components/src/select-control/list.tsx index 1ebaf9f829a..eabb1985b40 100644 --- a/packages/js/components/src/select-control/list.js +++ b/packages/js/components/src/select-control/list.tsx @@ -2,18 +2,73 @@ * External dependencies */ import { Button } from '@wordpress/components'; +import { RefObject } from 'react'; import classnames from 'classnames'; import { createElement, Component, createRef } from '@wordpress/element'; -import { isEqual } from 'lodash'; +import { isEqual, isNumber } from 'lodash'; import { ENTER, ESCAPE, UP, DOWN, LEFT, RIGHT, TAB } from '@wordpress/keycodes'; -import PropTypes from 'prop-types'; + +/** + * Internal dependencies + */ +import { Option } from './types'; + +type Props = { + /** + * ID of the main SelectControl instance. + */ + listboxId?: string; + /** + * ID used for a11y in the listbox. + */ + instanceId: number; + /** + * Parent node to bind keyboard events to. + */ + node: HTMLElement | null; + /** + * Function to execute when an option is selected. + */ + onSelect: ( option: Option ) => void; + /** + * Array of options to display. + */ + options: Array< Option >; + /** + * Integer for the currently selected item. + */ + selectedIndex: number | null | undefined; + /** + * Bool to determine if the list should be positioned absolutely or staticly. + */ + staticList: boolean; + /** + * Function to execute when keyboard navigation should decrement the selected index. + */ + decrementSelectedIndex: () => void; + /** + * Function to execute when keyboard navigation should increment the selected index. + */ + incrementSelectedIndex: () => void; + /** + * Function to execute when the search value changes. + */ + onSearch: ( option: string | null ) => void; + /** + * Function to execute when the list should be expanded or collapsed. + */ + setExpanded: ( expanded: boolean ) => void; +}; /** * A list box that displays filtered options after search. */ -class List extends Component { - constructor() { - super( ...arguments ); +class List extends Component< Props > { + optionRefs: { [ key: number ]: RefObject< HTMLButtonElement > }; + listbox: RefObject< HTMLDivElement >; + + constructor( props: Props ) { + super( props ); this.handleKeyDown = this.handleKeyDown.bind( this ); this.select = this.select.bind( this ); @@ -21,7 +76,7 @@ class List extends Component { this.listbox = createRef(); } - componentDidUpdate( prevProps ) { + componentDidUpdate( prevProps: Props ) { const { options, selectedIndex } = this.props; // Remove old option refs to avoid memory leaks. @@ -29,12 +84,15 @@ class List extends Component { this.optionRefs = {}; } - if ( selectedIndex !== prevProps.selectedIndex ) { + if ( + selectedIndex !== prevProps.selectedIndex && + isNumber( selectedIndex ) + ) { this.scrollToOption( selectedIndex ); } } - getOptionRef( index ) { + getOptionRef( index: number ) { if ( ! this.optionRefs.hasOwnProperty( index ) ) { this.optionRefs[ index ] = createRef(); } @@ -42,7 +100,7 @@ class List extends Component { return this.optionRefs[ index ]; } - select( option ) { + select( option: Option ) { const { onSelect } = this.props; if ( option.isDisabled ) { @@ -52,9 +110,13 @@ class List extends Component { onSelect( option ); } - scrollToOption( index ) { + scrollToOption( index: number ) { const listbox = this.listbox.current; + if ( ! listbox ) { + return; + } + if ( listbox.scrollHeight <= listbox.clientHeight ) { return; } @@ -64,6 +126,12 @@ class List extends Component { } const option = this.optionRefs[ index ].current; + if ( ! option ) { + // eslint-disable-next-line no-console + console.warn( 'Option not found, index:', index ); + return; + } + const scrollBottom = listbox.clientHeight + listbox.scrollTop; const elementBottom = option.offsetTop + option.offsetHeight; if ( elementBottom > scrollBottom ) { @@ -73,7 +141,7 @@ class List extends Component { } } - handleKeyDown( event ) { + handleKeyDown( event: KeyboardEvent ) { const { decrementSelectedIndex, incrementSelectedIndex, @@ -100,7 +168,7 @@ class List extends Component { break; case ENTER: - if ( options[ selectedIndex ] ) { + if ( isNumber( selectedIndex ) && options[ selectedIndex ] ) { this.select( options[ selectedIndex ] ); } event.preventDefault(); @@ -118,7 +186,7 @@ class List extends Component { return; case TAB: - if ( options[ selectedIndex ] ) { + if ( isNumber( selectedIndex ) && options[ selectedIndex ] ) { this.select( options[ selectedIndex ] ); } setExpanded( false ); @@ -128,8 +196,14 @@ class List extends Component { } } - toggleKeyEvents( isListening ) { + toggleKeyEvents( isListening: boolean ) { const { node } = this.props; + if ( ! node ) { + // eslint-disable-next-line no-console + console.warn( 'No node to bind events to.' ); + return; + } + // This exists because we must capture ENTER key presses before RichText. // It seems that react fires the simulated capturing events after the // native browser event has already bubbled so we can't stopPropagation @@ -138,12 +212,16 @@ class List extends Component { const handler = isListening ? 'addEventListener' : 'removeEventListener'; - node[ handler ]( 'keydown', this.handleKeyDown, true ); + node[ handler ]( + 'keydown', + this.handleKeyDown as ( e: Event ) => void, + true + ); } componentDidMount() { const { selectedIndex } = this.props; - if ( selectedIndex > -1 ) { + if ( isNumber( selectedIndex ) && selectedIndex > -1 ) { this.scrollToOption( selectedIndex ); } this.toggleKeyEvents( true ); @@ -169,7 +247,7 @@ class List extends Component { id={ listboxId } role="listbox" className={ listboxClasses } - tabIndex="-1" + tabIndex={ -1 } > { options.map( ( option, index ) => ( @@ -196,50 +274,4 @@ class List extends Component { } } -List.propTypes = { - /** - * ID of the main SelectControl instance. - */ - instanceId: PropTypes.number, - /** - * ID used for a11y in the listbox. - */ - listboxId: PropTypes.string, - /** - * Parent node to bind keyboard events to. - */ - // eslint-disable-next-line no-undef - node: PropTypes.instanceOf( Element ).isRequired, - /** - * Function to execute when an option is selected. - */ - onSelect: PropTypes.func, - /** - * Array of options to display. - */ - options: PropTypes.arrayOf( - PropTypes.shape( { - isDisabled: PropTypes.bool, - key: PropTypes.oneOfType( [ PropTypes.number, PropTypes.string ] ) - .isRequired, - keywords: PropTypes.arrayOf( - PropTypes.oneOfType( [ PropTypes.string, PropTypes.number ] ) - ), - label: PropTypes.oneOfType( [ - PropTypes.string, - PropTypes.object, - ] ), - value: PropTypes.any, - } ) - ).isRequired, - /** - * Integer for the currently selected item. - */ - selectedIndex: PropTypes.number, - /** - * Bool to determine if the list should be positioned absolutely or staticly. - */ - staticList: PropTypes.bool, -}; - export default List; diff --git a/packages/js/components/src/select-control/stories/index.js b/packages/js/components/src/select-control/stories/index.tsx similarity index 95% rename from packages/js/components/src/select-control/stories/index.js rename to packages/js/components/src/select-control/stories/index.tsx index 9e0d5b0107f..292fb08f5a1 100644 --- a/packages/js/components/src/select-control/stories/index.js +++ b/packages/js/components/src/select-control/stories/index.tsx @@ -1,8 +1,12 @@ /** * External dependencies */ -import { SelectControl } from '@woocommerce/components'; -import { useState } from '@wordpress/element'; +import React from 'react'; +import { createElement, useState } from '@wordpress/element'; +/** + * Internal dependencies + */ +import SelectControl from '../'; const options = [ { diff --git a/packages/js/components/src/select-control/tags.js b/packages/js/components/src/select-control/tags.tsx similarity index 80% rename from packages/js/components/src/select-control/tags.js rename to packages/js/components/src/select-control/tags.tsx index 296e27bd4b2..e1d33a5b247 100644 --- a/packages/js/components/src/select-control/tags.js +++ b/packages/js/components/src/select-control/tags.tsx @@ -5,19 +5,36 @@ import { __, sprintf } from '@wordpress/i18n'; import { Button } from '@wordpress/components'; import { Icon, cancelCircleFilled } from '@wordpress/icons'; import { createElement, Component, Fragment } from '@wordpress/element'; -import { findIndex } from 'lodash'; -import PropTypes from 'prop-types'; +import { findIndex, isArray } from 'lodash'; /** * Internal dependencies */ import Tag from '../tag'; +import { Option, Selected } from './types'; + +type Props = { + /** + * Function called when selected results change, passed result list. + */ + onChange: ( selected: Option[] ) => void; + /** + * An array of objects describing selected values. If the label of the selected + * value is omitted, the Tag of that value will not be rendered inside the + * search box. + */ + selected?: Selected; + /** + * Render a 'Clear' button next to the input box to remove its contents. + */ + showClearButton?: boolean; +}; /** * A list of tags to display selected items. */ -class Tags extends Component { - constructor( props ) { +class Tags extends Component< Props > { + constructor( props: Props ) { super( props ); this.removeAll = this.removeAll.bind( this ); this.removeResult = this.removeResult.bind( this ); @@ -28,9 +45,13 @@ class Tags extends Component { onChange( [] ); } - removeResult( key ) { + removeResult( key: string | undefined ) { return () => { const { selected, onChange } = this.props; + if ( ! isArray( selected ) ) { + return; + } + const i = findIndex( selected, { key } ); onChange( [ ...selected.slice( 0, i ), @@ -41,7 +62,7 @@ class Tags extends Component { render() { const { selected, showClearButton } = this.props; - if ( ! selected.length ) { + if ( ! isArray( selected ) || ! selected.length ) { return null; } @@ -63,6 +84,7 @@ class Tags extends Component { key={ item.key } id={ item.key } label={ item.label } + // @ts-expect-error key is a string or undefined here remove={ this.removeResult } screenReaderLabel={ screenReaderLabel } /> @@ -89,31 +111,4 @@ class Tags extends Component { } } -Tags.propTypes = { - /** - * Function called when selected results change, passed result list. - */ - onChange: PropTypes.func, - /** - * Function to execute when an option is selected. - */ - onSelect: PropTypes.func, - /** - * An array of objects describing selected values. If the label of the selected - * value is omitted, the Tag of that value will not be rendered inside the - * search box. - */ - selected: PropTypes.arrayOf( - PropTypes.shape( { - key: PropTypes.oneOfType( [ PropTypes.number, PropTypes.string ] ) - .isRequired, - label: PropTypes.string, - } ) - ), - /** - * Render a 'Clear' button next to the input box to remove its contents. - */ - showClearButton: PropTypes.bool, -}; - export default Tags; diff --git a/packages/js/components/src/select-control/test/index.js b/packages/js/components/src/select-control/test/index.tsx similarity index 95% rename from packages/js/components/src/select-control/test/index.js rename to packages/js/components/src/select-control/test/index.tsx index 0cb6bfeb849..825fe0bdb1e 100644 --- a/packages/js/components/src/select-control/test/index.js +++ b/packages/js/components/src/select-control/test/index.tsx @@ -1,6 +1,7 @@ /** * External dependencies */ +import React from 'react'; import { render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { createElement } from '@wordpress/element'; @@ -9,10 +10,11 @@ import { createElement } from '@wordpress/element'; * Internal dependencies */ import { SelectControl } from '../index'; +import { Option } from '../types'; describe( 'SelectControl', () => { const query = 'lorem'; - const options = [ + const options: Option[] = [ { key: '1', label: 'lorem 1', value: { id: '1' } }, { key: '2', label: 'lorem 2', value: { id: '2' } }, { key: '3', label: 'bar', value: { id: '3' } }, @@ -168,9 +170,9 @@ describe( 'SelectControl', () => { } ); it( 'changes the options on search', async () => { - const queriedOptions = []; + const queriedOptions: Option[] = []; // eslint-disable-next-line @typescript-eslint/no-shadow - const queryOptions = ( options, searchedQuery ) => { + const queryOptions = async ( options: Option[], searchedQuery: string | null ) => { if ( searchedQuery === 'test' ) { queriedOptions.push( { key: 'test-option', @@ -209,7 +211,7 @@ describe( 'SelectControl', () => { isSearchable showAllOnFocus options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } /> @@ -229,7 +231,7 @@ describe( 'SelectControl', () => { isSearchable selected={ [ { ...options[ 0 ] } ] } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } /> @@ -258,7 +260,7 @@ describe( 'SelectControl', () => { isSearchable selected={ options[ 0 ].key } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } /> @@ -289,7 +291,7 @@ describe( 'SelectControl', () => { showAllOnFocus selected={ options[ 2 ].key } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } excludeSelectedOptions={ false } @@ -316,7 +318,7 @@ describe( 'SelectControl', () => { showAllOnFocus selected={ options[ 2 ].key } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } excludeSelectedOptions={ false } @@ -364,7 +366,7 @@ describe( 'SelectControl', () => { isSearchable selected={ [ { ...options[ 0 ] } ] } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } /> @@ -383,7 +385,7 @@ describe( 'SelectControl', () => { isSearchable selected={ options[ 0 ].key } options={ options } - onSearch={ () => options } + onSearch={ async () => options } onFilter={ () => options } onChange={ onChangeMock } /> @@ -416,9 +418,8 @@ describe( 'SelectControl', () => { const { getByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } - selected={ null } /> ); @@ -440,7 +441,7 @@ describe( 'SelectControl', () => { const { getByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } selected={ options[ 1 ].key } excludeSelectedOptions={ false } @@ -465,7 +466,7 @@ describe( 'SelectControl', () => { const { getByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } selected={ options[ options.length - 1 ].key } excludeSelectedOptions={ false } @@ -490,9 +491,8 @@ describe( 'SelectControl', () => { const { getByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } - selected={ null } /> ); @@ -514,9 +514,8 @@ describe( 'SelectControl', () => { const { getByRole, queryByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } - selected={ null } /> ); @@ -537,9 +536,8 @@ describe( 'SelectControl', () => { const { getByRole } = render( options } + onSearch={ async () => options } onFilter={ () => options } - selected={ null } excludeSelectedOptions={ false } onChange={ onChangeMock } /> diff --git a/packages/js/components/src/select-control/types.ts b/packages/js/components/src/select-control/types.ts new file mode 100644 index 00000000000..6744615cdf6 --- /dev/null +++ b/packages/js/components/src/select-control/types.ts @@ -0,0 +1,9 @@ +export type Option = { + key: string; + label: string; + isDisabled?: boolean; + keywords?: Array< string >; + value?: unknown; +}; + +export type Selected = string | Option[]; From 3f0219b1bcf21efb3b84c10c5659b1642a9e6554 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 8 May 2023 12:19:55 +0800 Subject: [PATCH 063/249] Fix misaligned loading sample product's progress message (#38107) * Fix misaligned loading sample products modal * Add changelog * Fix misaligned loading sample product confirm modal --- .../load-sample-product-confirm-modal.scss | 14 ++++++++++++++ .../load-sample-product-confirm-modal.tsx | 1 + .../components/load-sample-product-modal.scss | 3 ++- .../changelog/fix-load-sample-product-modal | 4 ++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/fix-load-sample-product-modal diff --git a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.scss b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.scss index e5eb6043b1c..1f72e411da4 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.scss @@ -1,3 +1,17 @@ +.woocommerce-products-load-sample-product-confirm-modal-overlay { + @media (min-width: 783px ) { + & { + left: 35px; + } + } + + @include break-large { + & { + left: 160px; + } + } +} + .woocommerce-products-load-sample-product-confirm-modal { .components-truncate.components-text.woocommerce-confirmation-modal__message { color: $studio-gray-60; diff --git a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.tsx b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.tsx index 4d0cc29299d..3606be4142c 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-confirm-modal.tsx @@ -22,6 +22,7 @@ export const LoadSampleProductConfirmModal: React.VFC< Props > = ( { return ( diff --git a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-modal.scss b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-modal.scss index ee3776206b7..0bd8f516962 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-modal.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/components/load-sample-product-modal.scss @@ -25,7 +25,8 @@ display: none; } - .components-modal__content { + .components-modal__content, + .components-modal__header + div { display: flex; flex-direction: column; align-items: center; diff --git a/plugins/woocommerce/changelog/fix-load-sample-product-modal b/plugins/woocommerce/changelog/fix-load-sample-product-modal new file mode 100644 index 00000000000..c0f718c3c16 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-load-sample-product-modal @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix loading sample product's progress message is misaligned if Gutenberg plugin is enabled From c4806c3ac83d68bc2452c0803d76ba67a1fe27ae Mon Sep 17 00:00:00 2001 From: Joshua T Flowers Date: Mon, 8 May 2023 00:17:52 -0700 Subject: [PATCH 064/249] Show comma separated list in ready only mode of select tree control (#38052) * Add read-only state to selected items in select control * Only close menu on focus outside of select control * Add changelog entry * Remove errant comment out of onBlur line * Fix regression of input focus behavior * Hide input when in read only mode * Turn off read only mode when focused * Show select control input on single item dropdowns and when no selections have been made in multiple dropdowns * Prevent focus loss when removing an item * Prevent loss of field focus when clicking on selected item tags * Fix broken assertion with comma separated list * Add product editor changelog entry --- packages/js/components/changelog/update-37727 | 4 +++ .../experimental-select-control/combo-box.tsx | 2 +- .../select-control.scss | 12 +++++++ .../select-control.tsx | 28 +++++++++++++-- .../selected-items.scss | 6 ++++ .../selected-items.tsx | 31 ++++++++++++++-- .../select-tree-menu.tsx | 8 +++-- .../select-tree.tsx | 35 ++++++++++++------- .../js/product-editor/changelog/update-37727 | 4 +++ .../test/category-field.test.tsx | 3 +- 10 files changed, 110 insertions(+), 23 deletions(-) create mode 100644 packages/js/components/changelog/update-37727 create mode 100644 packages/js/product-editor/changelog/update-37727 diff --git a/packages/js/components/changelog/update-37727 b/packages/js/components/changelog/update-37727 new file mode 100644 index 00000000000..9b6f5259944 --- /dev/null +++ b/packages/js/components/changelog/update-37727 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Show comma separated list in ready only mode of select tree control diff --git a/packages/js/components/src/experimental-select-control/combo-box.tsx b/packages/js/components/src/experimental-select-control/combo-box.tsx index a71a323ff94..9bbbea87778 100644 --- a/packages/js/components/src/experimental-select-control/combo-box.tsx +++ b/packages/js/components/src/experimental-select-control/combo-box.tsx @@ -75,8 +75,8 @@ export const ComboBox = ( { { + inputRef.current = node; if ( typeof inputProps.ref === 'function' ) { - inputRef.current = node; ( inputProps.ref as unknown as ( node: HTMLInputElement | null diff --git a/packages/js/components/src/experimental-select-control/select-control.scss b/packages/js/components/src/experimental-select-control/select-control.scss index cf71dadd8cd..0ec18150b59 100644 --- a/packages/js/components/src/experimental-select-control/select-control.scss +++ b/packages/js/components/src/experimental-select-control/select-control.scss @@ -12,6 +12,18 @@ border-color: var( --wp-admin-theme-color ); } + &.is-read-only.is-multiple.has-selected-items { + .woocommerce-experimental-select-control__combo-box-wrapper { + cursor: default; + } + + .woocommerce-experimental-select-control__input { + opacity: 0; + width: 0; + height: 0; + } + } + &__label { display: inline-block; margin-bottom: $gap-smaller; diff --git a/packages/js/components/src/experimental-select-control/select-control.tsx b/packages/js/components/src/experimental-select-control/select-control.tsx index 7957e980d55..ccab1447611 100644 --- a/packages/js/components/src/experimental-select-control/select-control.tsx +++ b/packages/js/components/src/experimental-select-control/select-control.tsx @@ -9,13 +9,14 @@ import { useMultipleSelection, GetInputPropsOptions, } from 'downshift'; +import { useInstanceId } from '@wordpress/compose'; import { useState, useEffect, createElement, Fragment, } from '@wordpress/element'; -import { search } from '@wordpress/icons'; +import { chevronDown } from '@wordpress/icons'; /** * Internal dependencies @@ -123,12 +124,16 @@ function SelectControl< ItemType = DefaultItemType >( { className, disabled, inputProps = {}, - suffix = , + suffix = , showToggleButton = false, __experimentalOpenMenuOnFocus = false, }: SelectControlProps< ItemType > ) { const [ isFocused, setIsFocused ] = useState( false ); const [ inputValue, setInputValue ] = useState( '' ); + const instanceId = useInstanceId( + SelectControl, + 'woocommerce-experimental-select-control' + ); let selectedItems = selected === null ? [] : selected; selectedItems = Array.isArray( selectedItems ) @@ -230,15 +235,24 @@ function SelectControl< ItemType = DefaultItemType >( { }, } ); + const isEventOutside = ( event: React.FocusEvent ) => { + return ! document + .querySelector( '.' + instanceId ) + ?.contains( event.relatedTarget ); + }; + const onRemoveItem = ( item: ItemType ) => { selectItem( null ); removeSelectedItem( item ); onRemove( item ); }; + const isReadOnly = ! isOpen && ! isFocused; + const selectedItemTags = multiple ? ( ( { className={ classnames( 'woocommerce-experimental-select-control', className, + instanceId, { + 'is-read-only': isReadOnly, 'is-focused': isFocused, + 'is-multiple': multiple, + 'has-selected-items': selectedItems.length, } ) } > @@ -282,7 +300,11 @@ function SelectControl< ItemType = DefaultItemType >( { openMenu(); } }, - onBlur: () => setIsFocused( false ), + onBlur: ( event: React.FocusEvent ) => { + if ( isEventOutside( event ) ) { + setIsFocused( false ); + } + }, placeholder, disabled, ...inputProps, diff --git a/packages/js/components/src/experimental-select-control/selected-items.scss b/packages/js/components/src/experimental-select-control/selected-items.scss index 8f7c223483a..e9565582172 100644 --- a/packages/js/components/src/experimental-select-control/selected-items.scss +++ b/packages/js/components/src/experimental-select-control/selected-items.scss @@ -1,3 +1,9 @@ +.woocommerce-experimental-select-control__selected-items.is-read-only { + font-size: 13px; + color: $gray-900; + font-family: var(--wp--preset--font-family--system-font); +} + .woocommerce-experimental-select-control__selected-item { margin-right: $gap-smallest; margin-top: 2px; diff --git a/packages/js/components/src/experimental-select-control/selected-items.tsx b/packages/js/components/src/experimental-select-control/selected-items.tsx index 65aab895f76..6f82039e640 100644 --- a/packages/js/components/src/experimental-select-control/selected-items.tsx +++ b/packages/js/components/src/experimental-select-control/selected-items.tsx @@ -1,7 +1,8 @@ /** * External dependencies */ -import { createElement, Fragment } from '@wordpress/element'; +import classnames from 'classnames'; +import { createElement } from '@wordpress/element'; /** * Internal dependencies @@ -10,6 +11,7 @@ import Tag from '../tag'; import { getItemLabelType, getItemValueType } from './types'; type SelectedItemsProps< ItemType > = { + isReadOnly: boolean; items: ItemType[]; getItemLabel: getItemLabelType< ItemType >; getItemValue: getItemValueType< ItemType >; @@ -22,14 +24,34 @@ type SelectedItemsProps< ItemType > = { }; export const SelectedItems = < ItemType, >( { + isReadOnly, items, getItemLabel, getItemValue, getSelectedItemProps, onRemove, }: SelectedItemsProps< ItemType > ) => { + const classes = classnames( + 'woocommerce-experimental-select-control__selected-items', + { + 'is-read-only': isReadOnly, + } + ); + + if ( isReadOnly ) { + return ( +
+ { items + .map( ( item ) => { + return getItemLabel( item ); + } ) + .join( ', ' ) } +
+ ); + } + return ( - <> +
{ items.map( ( item, index ) => { return ( // Disable reason: We prevent the default action to keep the input focused on click. @@ -42,6 +64,9 @@ export const SelectedItems = < ItemType, >( { selectedItem: item, index, } ) } + onMouseDown={ ( event ) => { + event.preventDefault(); + } } onClick={ ( event ) => { event.preventDefault(); } } @@ -56,6 +81,6 @@ export const SelectedItems = < ItemType, >( {
); } ) } - +
); }; diff --git a/packages/js/components/src/experimental-select-tree-control/select-tree-menu.tsx b/packages/js/components/src/experimental-select-tree-control/select-tree-menu.tsx index 294ceafef60..fe26480d94b 100644 --- a/packages/js/components/src/experimental-select-tree-control/select-tree-menu.tsx +++ b/packages/js/components/src/experimental-select-tree-control/select-tree-menu.tsx @@ -22,6 +22,7 @@ import { } from '../experimental-tree-control'; type MenuProps = { + isEventOutside: ( event: React.FocusEvent ) => boolean; isOpen: boolean; isLoading?: boolean; position?: Popover.Position; @@ -32,6 +33,7 @@ type MenuProps = { } & Omit< TreeControlProps, 'items' >; export const SelectTreeMenu = ( { + isEventOutside, isLoading, isOpen, className, @@ -103,8 +105,10 @@ export const SelectTreeMenu = ( { ) } position={ position } animate={ false } - onFocusOutside={ () => { - onClose(); + onFocusOutside={ ( event ) => { + if ( isEventOutside( event ) ) { + onClose(); + } } } > { isOpen && ( diff --git a/packages/js/components/src/experimental-select-tree-control/select-tree.tsx b/packages/js/components/src/experimental-select-tree-control/select-tree.tsx index 5c276342cc8..2fe7e5e4fad 100644 --- a/packages/js/components/src/experimental-select-tree-control/select-tree.tsx +++ b/packages/js/components/src/experimental-select-tree-control/select-tree.tsx @@ -2,9 +2,9 @@ /** * External dependencies */ -import { createElement, useState } from '@wordpress/element'; +import { chevronDown } from '@wordpress/icons'; import classNames from 'classnames'; -import { search } from '@wordpress/icons'; +import { createElement, useState } from '@wordpress/element'; import { useInstanceId } from '@wordpress/compose'; /** @@ -32,7 +32,7 @@ export const SelectTree = function SelectTree( { items, getSelectedItemProps, treeRef: ref, - suffix = , + suffix = , placeholder, isLoading, onInputChange, @@ -40,24 +40,37 @@ export const SelectTree = function SelectTree( { ...props }: SelectTreeProps ) { const linkedTree = useLinkedTree( items ); + const selectTreeInstanceId = useInstanceId( + SelectTree, + 'woocommerce-experimental-select-tree-control__dropdown' + ); const menuInstanceId = useInstanceId( SelectTree, 'woocommerce-select-tree-control__menu' ); + const isEventOutside = ( event: React.FocusEvent ) => { + return ! document + .querySelector( '.' + selectTreeInstanceId ) + ?.contains( event.relatedTarget ); + }; const [ isFocused, setIsFocused ] = useState( false ); const [ isOpen, setIsOpen ] = useState( false ); + const isReadOnly = ! isOpen && ! isFocused; return (
@@ -93,12 +106,7 @@ export const SelectTree = function SelectTree( { }, onBlur: ( event ) => { // if blurring to an element inside the dropdown, don't close it - if ( - isOpen && - ! document - .querySelector( '.' + menuInstanceId ) - ?.contains( event.relatedTarget ) - ) { + if ( isEventOutside( event ) ) { setIsOpen( false ); } setIsFocused( false ); @@ -126,13 +134,13 @@ export const SelectTree = function SelectTree( { suffix={ suffix } > item?.label || '' } getItemValue={ ( item ) => item?.value || '' } onRemove={ ( item ) => { if ( ! Array.isArray( item ) && props.onRemove ) { props.onRemove( item ); - setIsOpen( false ); } } } getSelectedItemProps={ () => ( {} ) } @@ -144,10 +152,13 @@ export const SelectTree = function SelectTree( { id={ `${ props.id }-menu` } className={ menuInstanceId.toString() } ref={ ref } + isEventOutside={ isEventOutside } isOpen={ isOpen } items={ linkedTree } shouldShowCreateButton={ shouldShowCreateButton } - onClose={ () => setIsOpen( false ) } + onClose={ () => { + setIsOpen( false ); + } } />
); diff --git a/packages/js/product-editor/changelog/update-37727 b/packages/js/product-editor/changelog/update-37727 new file mode 100644 index 00000000000..4068fbbe7cc --- /dev/null +++ b/packages/js/product-editor/changelog/update-37727 @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Fix broken assertion with comma separated list in category select control diff --git a/packages/js/product-editor/src/components/details-categories-field/test/category-field.test.tsx b/packages/js/product-editor/src/components/details-categories-field/test/category-field.test.tsx index d0616672c2e..8f5b6a416e2 100644 --- a/packages/js/product-editor/src/components/details-categories-field/test/category-field.test.tsx +++ b/packages/js/product-editor/src/components/details-categories-field/test/category-field.test.tsx @@ -74,7 +74,6 @@ describe( 'CategoryField', () => { ); queryByPlaceholderText( 'Search or create category…' )?.focus(); - expect( queryAllByText( 'Test' ) ).toHaveLength( 2 ); - expect( queryAllByText( 'Clothing' ) ).toHaveLength( 2 ); + expect( queryAllByText( 'Test, Clothing' ) ).toHaveLength( 1 ); } ); } ); From 934ef5209255c5032cdeb30f0157edc86664f729 Mon Sep 17 00:00:00 2001 From: William Staley Date: Mon, 8 May 2023 03:41:51 -0400 Subject: [PATCH 065/249] Add Feature Requests option (#38029) This adds a new section to the new issue creation page in GH that links a user to the feature request board on wccom. --- .github/ISSUE_TEMPLATE/2-enhancement.yml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/2-enhancement.yml b/.github/ISSUE_TEMPLATE/2-enhancement.yml index 3c7637cea8c..19383e15c27 100644 --- a/.github/ISSUE_TEMPLATE/2-enhancement.yml +++ b/.github/ISSUE_TEMPLATE/2-enhancement.yml @@ -1,5 +1,5 @@ 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! +description: If you have an idea to improve existing functionality in core or need something for development (such as a new hook) please let us know or submit a Pull Request! title: "[Enhancement]: " labels: ["type: enhancement", "status: awaiting triage"] body: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index dae2134fb39..f8f1bcc6e24 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,8 @@ blank_issues_enabled: true contact_links: + - name: Feature Requests + url: https://woocommerce.com/feature-requests/woocommerce/ + about: If you have an idea for a new feature that you wished existed in WooCommerce, take a look at our Feature Requests and vote, or open a new Feature Request yourself! - 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). From df0583f9b816989d548d2d1809095a31e31b836d Mon Sep 17 00:00:00 2001 From: Jeffrey Paul Date: Mon, 8 May 2023 07:55:09 +0000 Subject: [PATCH 066/249] Fix/37502: Correct spelling errors. (#37887) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * change reference of Catpure to Capture Co-Authored-By: Vikram <93216400+vikrampm1@users.noreply.github.com> * change reference of expicitly to explicitly Co-Authored-By: Vikram <93216400+vikrampm1@users.noreply.github.com> * change reference 'cutted' to 'cut' * change reference 'determening' to 'determining' * change reference 'retreive' to 'retrieve' * change reference 'neccessary' to 'necessary' * change reference 'Fitler' to 'Filter' * change reference of "seperate" to "separate" Co-Authored-By: Ankit K Gupta * change reference of "wether" to "whether" Co-Authored-By: Sumit Bagthariya <67687255+qasumitbagthariya@users.noreply.github.com> * change reference of "staus" to "status" * change reference of "retrive" to "retrieve" * change references of "gatways" to "gateways" * change references of "existant" to "existent" * change reference of "requries" to "requires" * change reference of "configuation" to "configuration" * change reference of "processsing" to "processing" * change reference of "represenation" to "representation" * change reference of "dimentions" to "dimensions" * change references of "reigster" to "register" * change reference of "colum" to "column" * change reference of "transtions" to "transitions" * change references of "intially" to "initially" * change references of "orignal" to "original" * change references of "deprected" to "deprecated" * change references of "paramter" to "parameter" * change reference of "intance" to "instance" * change reference of "elemets" to "elements" * change references of "funcitons" to "functions" * change reference of "specificed" to "specified" * change references of "atributes" to "attributes" * change reference of "tast" to "task" * change reference of "chaning" to "changing" * change reference of "retreiving" to "retrieving" * change reference of "caluclation" to "calculation" * change references of "Invaid" to "Invalid" * change references of "paramaters" to "parameters" * change reference of "Additonal" to "Additional" * change reference of "teh" to "the" * change reference of "evalutes" to "evaluates" * change reference of "addedd" to "added" * change reference of "excempt" to "exempt" * change reference of "sequencially" to "sequentially" * change reference of "previos" to "previous" * change reference of "elegible" to "eligible" * change references of "Boostrap" to "Bootstrap" * change references of "compability" to "compatibility" * change reference of "heirarchy" to "hierarchy" * change references of "visibilty" to "visibility" * change reference of "comparsion" to "comparison" * change reference of "capabilties" to "capabilities" * change reference of "datatores" to "datastores" * change reference of "occured" to "occurred" * change reference of "coresponding" to "corresponding" * change references of "thier" to "their" * change reference of "sucessfully" to "successfully" * change reference of "insde" to "inside" * change reference of "nagivation" to "navigation" * change references of "visiblity" to "visibility" * change reference of "documentaiton" to "documentation" * change reference of "anayltics" to "analytics" * change reference of "intalling" to "installing" * change reference of "mininum" to "minimum" * change references of "intial" to "initial" * change reference of "Feld" to "Field" * change reference of "taks" to "task" * change reference of "trasnfer" to "transfer" * change reference of "respone" to "response" * change reference of "Extenstions" to "Extensions" * change reference of "detault" to "default" * change reference of "simultanious" to "simultaneous" * change reference of "overides" to "overrides" * change references of "Indvidual" to "Individual" * change reference of "refering" to "referring" * change reference of "aginst" to "against" * change reference of "execuatable" to "executable" * change reference of "repsonse" to "response" * change reference of "documention" to "documentation" * change reference of "asumed" to "assumed" * change reference of "Minium" to "Minimum" * change reference of "unqiue" to "unique" * change references of "existance" to "existence" * change reference of "compatability" to "compatibility" * change reference of "Taxnomy" to "Taxonomy" * change reference of "quering" to "querying" * change reference of "retrun" to "return" * change reference of "informations" to "information" Co-Authored-By: Viktor Szépe * Add changelog * Add changelog * Fix typo --------- Co-authored-by: Vikram <93216400+vikrampm1@users.noreply.github.com> Co-authored-by: Ankit K Gupta Co-authored-by: Sumit Bagthariya <67687255+qasumitbagthariya@users.noreply.github.com> Co-authored-by: Viktor Szépe Co-authored-by: Chi-Hsuan Huang --- .github/workflows/scripts/post-request-shared.php | 2 +- changelog.txt | 12 ++++++------ packages/js/components/changelog/fix-37502 | 4 ++++ packages/js/components/src/chart/README.md | 2 +- packages/js/components/src/chart/index.js | 2 +- packages/js/components/src/filter-picker/README.md | 4 ++-- packages/js/components/src/filter-picker/index.js | 4 ++-- .../src/rich-text-editor/editor-writing-flow.tsx | 2 +- .../src/search-list-control/test/hierarchy.js | 2 +- packages/js/components/src/sortable/sortable.tsx | 2 +- packages/js/components/src/table/README.md | 2 +- packages/js/components/src/table/types.ts | 2 +- packages/js/data/PREVIOUS_CHANGELOG.md | 2 +- packages/js/data/changelog/fix-37502 | 4 ++++ packages/js/experimental/changelog/fix-37502 | 4 ++++ .../src/experimental-list/test/index.tsx | 2 +- .../src/inbox-note/test/inbox-note.tsx | 4 ++-- .../client/activity-panel/test/index.js | 2 +- .../analytics/components/report-filters/index.js | 2 +- .../analytics/components/report-table/index.js | 4 ++-- .../client/analytics/report/README.md | 2 +- .../client/analytics/settings/README.md | 2 +- .../client/dashboard/default-sections.js | 2 +- .../components/useSendMagicLink.tsx | 2 +- .../woocommerce-admin/client/layout/controller.js | 2 +- .../client/navigation/components/Item/index.js | 2 +- .../woocommerce-admin/client/navigation/utils.ts | 2 +- .../client/products/edit-product-page.tsx | 2 +- .../profile-wizard/steps/store-details/index.js | 2 +- .../client/stylesheets/shared/_reset.scss | 2 +- .../client/tasks/fills/appearance.js | 2 +- .../client/wp-admin-scripts/README.md | 2 +- ...-payment-gateway-suggestions-mock-installer.php | 2 +- .../woocommerce-admin/docs/features/navigation.md | 2 +- .../docs/features/onboarding-tasks.md | 4 ++-- .../woocommerce-admin/docs/features/onboarding.md | 2 +- .../docs/features/payment-gateway-suggestions.md | 4 ++-- .../docs/woocommerce.com/README.md | 2 +- .../docs/woocommerce.com/activity-panels.md | 2 +- .../docs/woocommerce.com/analytics-basics.md | 8 ++++---- .../docs/woocommerce.com/analytics-settings.md | 2 +- .../woocommerce-beta-tester/changelog/fix-37502 | 4 ++++ .../woocommerce-beta-tester.php | 2 +- plugins/woocommerce/changelog/fix-37502 | 4 ++++ .../woocommerce/changelog/fix-k6-api-40X-errors | 2 +- .../client/legacy/js/frontend/woocommerce.js | 2 +- .../includes/abstracts/abstract-wc-order.php | 2 +- .../includes/abstracts/abstract-wc-product.php | 2 +- .../includes/admin/class-wc-admin-addons.php | 2 +- .../includes/admin/class-wc-admin-status.php | 2 +- .../admin/helper/class-wc-helper-updater.php | 4 ++-- .../admin/settings/class-wc-settings-products.php | 2 +- .../admin/views/html-notice-base-table-missing.php | 4 ++-- .../woocommerce/includes/class-wc-countries.php | 2 +- plugins/woocommerce/includes/class-wc-coupon.php | 2 +- .../includes/class-wc-frontend-scripts.php | 2 +- plugins/woocommerce/includes/class-wc-query.php | 2 +- .../includes/class-wc-regenerate-images.php | 2 +- .../abstract-wc-order-data-store-cpt.php | 2 +- .../class-wc-product-data-store-cpt.php | 2 +- .../export/class-wc-product-csv-exporter.php | 2 +- .../shortcodes/class-wc-shortcode-products.php | 2 +- .../woocommerce/includes/wc-product-functions.php | 2 +- .../woocommerce/includes/wc-template-functions.php | 4 ++-- plugins/woocommerce/includes/wc-term-functions.php | 4 ++-- .../woocommerce/includes/wc-update-functions.php | 2 +- plugins/woocommerce/src/Admin/API/Init.php | 2 +- .../src/Admin/API/ProductVariations.php | 2 +- plugins/woocommerce/src/Admin/API/Products.php | 2 +- .../OnboardingTasks/DeprecatedExtendedTask.php | 2 +- .../Admin/Features/OnboardingTasks/TaskLists.php | 2 +- plugins/woocommerce/src/Internal/Admin/Loader.php | 2 +- .../woocommerce/src/Internal/Admin/Settings.php | 2 +- .../src/Internal/Admin/WCAdminAssets.php | 2 +- .../woocommerce/src/Internal/Admin/WCAdminUser.php | 2 +- .../tests/Tools/CodeHacking/CodeHacker.php | 2 +- .../CodeHacking/Hacks/FunctionsMockerHack.php | 2 +- .../Tools/CodeHacking/Hacks/StaticMockerHack.php | 2 +- .../woocommerce/tests/Tools/CodeHacking/README.md | 2 +- .../payment-gateways/payment-gateways-crud.test.js | 6 +++--- .../tests/products/products-crud.test.js | 2 +- .../tests/settings/settings-crud.test.js | 2 +- .../tests/shipping/shipping-zones.test.js | 6 +++--- .../tests/system-status/system-status-crud.test.js | 2 +- plugins/woocommerce/tests/e2e-pw/README.md | 4 ++-- .../tests/e2e-pw/tests/merchant/page-loads.spec.js | 2 +- .../tests/shopper/variable-product-updates.spec.js | 2 +- .../tests/legacy/unit-tests/cart/cart.php | 2 +- .../tests/legacy/unit-tests/coupon/data.php | 2 +- .../tests/legacy/unit-tests/customer/crud.php | 2 +- .../tests/legacy/unit-tests/email/emails.php | 2 +- .../libraries/class-wc-mock-background-process.php | 2 +- .../unit-tests/order/class-wc-tests-orders.php | 2 +- .../tests/legacy/unit-tests/order/coupons.php | 2 +- .../tests/legacy/unit-tests/product/data-store.php | 2 +- .../rest-api/Tests/Version3/payment-gateways.php | 2 +- .../tests/legacy/unit-tests/tax/tax.php | 2 +- .../legacy/unit-tests/templates/functions.php | 2 +- .../unit-tests/util/conditional-functions.php | 2 +- .../unit-tests/widgets/class-wc-tests-widget.php | 2 +- .../unit-tests/woocommerce-admin/api-init.php | 2 +- .../woocommerce-admin/api/reports-import.php | 2 +- .../woocommerce-admin/api/reports-orders.php | 4 ++-- ...c-tests-shipping-label-banner-display-rules.php | 2 +- .../features/onboarding-tasks/task-list.php | 2 +- .../features/onboarding-tasks/task.php | 2 +- .../features/onboarding-tasks/test-task.php | 2 +- .../evaluate-suggestion.php | 2 +- .../reports/class-wc-tests-reports-customers.php | 2 +- .../woocommerce-admin/wc-admin-assets.php | 2 +- plugins/woocommerce/tests/performance/README.md | 14 +++++++------- .../admin/class-wc-admin-functions-test.php | 2 +- .../includes/admin/helper/class-wc-helper-test.php | 2 +- .../php/includes/wc-stock-functions-tests.php | 2 +- .../Admin/ProductReviews/ReviewsListTableTest.php | 2 +- .../php/src/Proxies/MockableLegacyProxyTest.php | 2 +- tools/changelogger/class-package-formatter.php | 2 +- .../src/commands/transfer-issues/index.ts | 2 +- tools/storybook/wordpress/css/about-rtl.css | 2 +- tools/storybook/wordpress/css/about.css | 2 +- tools/storybook/wordpress/css/list-tables-rtl.css | 2 +- tools/storybook/wordpress/css/list-tables.css | 2 +- 122 files changed, 167 insertions(+), 147 deletions(-) create mode 100644 packages/js/components/changelog/fix-37502 create mode 100644 packages/js/data/changelog/fix-37502 create mode 100644 packages/js/experimental/changelog/fix-37502 create mode 100644 plugins/woocommerce-beta-tester/changelog/fix-37502 create mode 100644 plugins/woocommerce/changelog/fix-37502 diff --git a/.github/workflows/scripts/post-request-shared.php b/.github/workflows/scripts/post-request-shared.php index 67a6794feef..8d4bc442147 100644 --- a/.github/workflows/scripts/post-request-shared.php +++ b/.github/workflows/scripts/post-request-shared.php @@ -135,7 +135,7 @@ function get_latest_version_with_release() { } /** - * Function to retreive the sha1 reference for a given branch name. + * Function to retrieve the sha1 reference for a given branch name. * * @param string $branch The name of the branch. * @return string Returns the name of the branch, or a falsey value on error. diff --git a/changelog.txt b/changelog.txt index 6005a873509..c764986089e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -54,7 +54,7 @@ * Fix - Prevent possible warning arising from use of woocommerce_wp_* family of functions. [#37026](https://github.com/woocommerce/woocommerce/pull/37026) * Fix - Record values for toggled checkboxes/features in settings [#37242](https://github.com/woocommerce/woocommerce/pull/37242) * Fix - Restore the sort order when orders are cached. [#36650](https://github.com/woocommerce/woocommerce/pull/36650) -* Fix - Treat order as seperate resource when validating for webhook since it's not necessarily a CPT anymore. [#36650](https://github.com/woocommerce/woocommerce/pull/36650) +* Fix - Treat order as separate resource when validating for webhook since it's not necessarily a CPT anymore. [#36650](https://github.com/woocommerce/woocommerce/pull/36650) * Fix - Update Customers report with latest user data after editing user. [#37237](https://github.com/woocommerce/woocommerce/pull/37237) * Add - Add "Create a new campaign" modal in Campaigns card in Multichannel Marketing page. [#37044](https://github.com/woocommerce/woocommerce/pull/37044) * Add - Add a cache for orders, to use when custom order tables are enabled [#35014](https://github.com/woocommerce/woocommerce/pull/35014) @@ -432,7 +432,7 @@ * Tweak - Resolve an error in the product tracking code by testing to see if the `post_type` query var is set before checking its value. [#34501](https://github.com/woocommerce/woocommerce/pull/34501) * Tweak - Simplify wording within the customer emails for on-hold orders. [#31886](https://github.com/woocommerce/woocommerce/pull/31886) * Tweak - WooCommerce has now been tested up to WordPress 6.1.x. [#35985](https://github.com/woocommerce/woocommerce/pull/35985) -* Performance - Split CALC_FOUND_ROW query into seperate count query for better performance. [#35468](https://github.com/woocommerce/woocommerce/pull/35468) +* Performance - Split CALC_FOUND_ROW query into separate count query for better performance. [#35468](https://github.com/woocommerce/woocommerce/pull/35468) * Enhancement - Add a bottom padding to the whole form [#35721](https://github.com/woocommerce/woocommerce/pull/35721) * Enhancement - Add a confirmation modal when the user tries to navigate away with unsaved changes [#35625](https://github.com/woocommerce/woocommerce/pull/35625) * Enhancement - Add a default placeholder title for newly added attributes and always show remove button for attributes [#35904](https://github.com/woocommerce/woocommerce/pull/35904) @@ -3371,7 +3371,7 @@ * Fix - Add protection around func_get_args_call for backwards compatibility. #28677 * Fix - Restore stock_status in REST API V3 response. #28731 * Fix - Revert some of the changes related to perf enhancements (27735) as it was breaking stock_status filter. #28745 -* Dev - Hook for intializing price slider in frontend. #28014 +* Dev - Hook for initializing price slider in frontend. #28014 * Dev - Add support for running a custom initialization script for tests. #28041 * Dev - Use the coenjacobs/mozart package to renamespace vendor packages. #28147 * Dev - Documentation for `wc_get_container`. #28269 @@ -5290,7 +5290,7 @@ * Fix - Fix edge case where `get_plugins` would not have the custom WooCommerce plugin headers if `get_plugins` was called early. #21669 * Fix - Prevent PHP warning when deprecated user meta starts with uppercase. #21943 * Fix - Fixed support for multiple query parameters translated to meta queries via REST API requests. #22108 -* Fix - Prevent PHP errors when trying to access non-existant report tabs. #22183 +* Fix - Prevent PHP errors when trying to access non-existent report tabs. #22183 * Fix - Filter by attributes dropdown placeholder text should not be wrapped in quotes. #22185 * Fix - Apply sale price until end of closing sale date. #22189 * Fix - Allow empty schema again when registering a custom field for the API. #22204 @@ -6612,7 +6612,7 @@ * Removed internal scroll from log viewer. * Add reply-to to admin emails. * Improved the zone setup flow. -* Made wc_get_wildcard_postcodes return the orignal postcode plus * since wildcards should match empty strings too. +* Made wc_get_wildcard_postcodes return the original postcode plus * since wildcards should match empty strings too. * Use all paid statuses in $customer->get_total_spent(). * Move location of billing email field to work with password managers. * Option to restrict selling locations by country. @@ -8122,7 +8122,7 @@ * Tweak - Flat rate shipping support for percentage factor of additional costs. * Tweak - local delivery _ pattern matching for postcodes. e.g. NG1___ would match NG1 1AA but not NG10 1AA. * Tweak - Improved layered nav OR count logic -* Tweak - Make shipping methods check if taxable, so when customer is VAT excempt taxes are not included in price. +* Tweak - Make shipping methods check if taxable, so when customer is VAT exempt taxes are not included in price. * Tweak - Coupon in admin bar new menu #3974 * Tweak - Shortcode tag filters + updated menu names to make white labelling easier. * Tweak - Removed placeholder polyfill. Use this plugin to replace functionality if required: https://wordpress.org/plugins/html5-placeholder-polyfill/ diff --git a/packages/js/components/changelog/fix-37502 b/packages/js/components/changelog/fix-37502 new file mode 100644 index 00000000000..115429c4b01 --- /dev/null +++ b/packages/js/components/changelog/fix-37502 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Correct spelling errors diff --git a/packages/js/components/src/chart/README.md b/packages/js/components/src/chart/README.md index 28082ca574a..a8a4474a6cb 100644 --- a/packages/js/components/src/chart/README.md +++ b/packages/js/components/src/chart/README.md @@ -94,7 +94,7 @@ Name | Type | Default | Description `legendPosition` | One of: 'bottom', 'side', 'top', 'hidden' | `null` | Position the legend must be displayed in. If it's not defined, it's calculated depending on the viewport width and the mode `legendTotals` | Object | `null` | Values to overwrite the legend totals. If not defined, the sum of all line values will be used `screenReaderFormat` | One of type: string, func | `'%B %-d, %Y'` | A datetime formatting string or overriding function to format the screen reader labels -`showHeaderControls` | Boolean | `true` | Wether header UI controls must be displayed +`showHeaderControls` | Boolean | `true` | Whether header UI controls must be displayed `title` | String | `null` | A title describing this chart `tooltipLabelFormat` | One of type: string, func | `'%B %-d, %Y'` | A datetime formatting string or overriding function to format the tooltip label `tooltipValueFormat` | One of type: string, func | `','` | A number formatting string or function to format the value displayed in the tooltips diff --git a/packages/js/components/src/chart/index.js b/packages/js/components/src/chart/index.js index c5afe925f08..101753f08bd 100644 --- a/packages/js/components/src/chart/index.js +++ b/packages/js/components/src/chart/index.js @@ -577,7 +577,7 @@ Chart.propTypes = { PropTypes.func, ] ), /** - * Wether header UI controls must be displayed. + * Whether header UI controls must be displayed. */ showHeaderControls: PropTypes.bool, /** diff --git a/packages/js/components/src/filter-picker/README.md b/packages/js/components/src/filter-picker/README.md index 6e29b59e69c..080d7435855 100644 --- a/packages/js/components/src/filter-picker/README.md +++ b/packages/js/components/src/filter-picker/README.md @@ -65,8 +65,8 @@ The `config` prop has the following structure: - `label`: String - A label above the filter selector. - `staticParams`: Array - Url parameters to persist when selecting a new filter. -- `param`: String - The url paramter this filter will modify. -- `defaultValue`: String - The default paramter value to use instead of 'all'. +- `param`: String - The url parameter this filter will modify. +- `defaultValue`: String - The default parameter value to use instead of 'all'. - `showFilters`: Function - Determine if the filter should be shown. Supply a function with the query object as an argument returning a boolean. - `filters`: Array - Array of filter objects. diff --git a/packages/js/components/src/filter-picker/index.js b/packages/js/components/src/filter-picker/index.js index 7fb1652c377..a88f5e91427 100644 --- a/packages/js/components/src/filter-picker/index.js +++ b/packages/js/components/src/filter-picker/index.js @@ -374,11 +374,11 @@ FilterPicker.propTypes = { */ staticParams: PropTypes.array.isRequired, /** - * The url paramter this filter will modify. + * The url parameter this filter will modify. */ param: PropTypes.string.isRequired, /** - * The default paramter value to use instead of 'all'. + * The default parameter value to use instead of 'all'. */ defaultValue: PropTypes.string, /** diff --git a/packages/js/components/src/rich-text-editor/editor-writing-flow.tsx b/packages/js/components/src/rich-text-editor/editor-writing-flow.tsx index 5ee9e57dbdf..2726dc0cee8 100644 --- a/packages/js/components/src/rich-text-editor/editor-writing-flow.tsx +++ b/packages/js/components/src/rich-text-editor/editor-writing-flow.tsx @@ -45,7 +45,7 @@ export const EditorWritingFlow = ( { }; } ); - // This is a workaround to prevent focusing the block on intialization. + // This is a workaround to prevent focusing the block on initialization. // Changing to a mode other than "edit" ensures that no initial position // is found and no element gets subsequently focused. // See https://github.com/WordPress/gutenberg/blob/411b6eee8376e31bf9db4c15c92a80524ae38e9b/packages/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js#L42 diff --git a/packages/js/components/src/search-list-control/test/hierarchy.js b/packages/js/components/src/search-list-control/test/hierarchy.js index b5d53216619..1a04d6abc69 100644 --- a/packages/js/components/src/search-list-control/test/hierarchy.js +++ b/packages/js/components/src/search-list-control/test/hierarchy.js @@ -153,7 +153,7 @@ describe( 'buildTermsTree', () => { ] ); } ); - test( 'should return a tree of items, with orphan categories appended to the end, with children of thier own', () => { + test( 'should return a tree of items, with orphan categories appended to the end, with children of their own', () => { const filteredList = [ { id: 1, name: 'Apricots', parent: 0 }, { id: 3, name: 'Elderberry', parent: 2 }, diff --git a/packages/js/components/src/sortable/sortable.tsx b/packages/js/components/src/sortable/sortable.tsx index c1e1f4e78f6..fbc175d45e5 100644 --- a/packages/js/components/src/sortable/sortable.tsx +++ b/packages/js/components/src/sortable/sortable.tsx @@ -110,7 +110,7 @@ export const Sortable = ( { // Items before the current item cause a one off error when // removed from the old array and spliced into the new array. - // TODO: Issue with dragging into same position having to do with isBefore returning true intially. + // TODO: Issue with dragging into same position having to do with isBefore returning true initially. let targetIndex = dragIndex < index ? index : index + 1; if ( isBefore( event, isHorizontal ) ) { targetIndex--; diff --git a/packages/js/components/src/table/README.md b/packages/js/components/src/table/README.md index 54378b6dd25..2048d89a3b6 100644 --- a/packages/js/components/src/table/README.md +++ b/packages/js/components/src/table/README.md @@ -61,7 +61,7 @@ Name | Type | Default | Description `ids` | Array | `null` | A list of IDs, matching to the row list so that ids[ 0 ] contains the object ID for the object displayed in row[ 0 ] `isLoading` | Boolean | `false` | Defines if the table contents are loading. It will display `TablePlaceholder` component instead of `Table` if that's the case `onQueryChange` | Function | `noop` | A function which returns a callback function to update the query string for a given `param` -`onColumnsChange` | Function | `noop` | A function which returns a callback function which is called upon the user changing the visiblity of columns +`onColumnsChange` | Function | `noop` | A function which returns a callback function which is called upon the user changing the visibility of columns `onSearch` | Function | `noop` | A function which is called upon the user searching in the table header `onSort` | Function | `undefined` | A function which is called upon the user changing the sorting of the table `downloadable` | Boolean | `false` | Whether the table must be downloadable. If true, the download button will appear diff --git a/packages/js/components/src/table/types.ts b/packages/js/components/src/table/types.ts index 79b61e92a3d..6bd3b086894 100644 --- a/packages/js/components/src/table/types.ts +++ b/packages/js/components/src/table/types.ts @@ -158,7 +158,7 @@ export type TableCardProps = CommonTableProps & { // eslint-disable-next-line @typescript-eslint/no-explicit-any onQueryChange?: ( param: string ) => ( ...props: any ) => void; /** - * A function which returns a callback function which is called upon the user changing the visiblity of columns. + * A function which returns a callback function which is called upon the user changing the visibility of columns. */ onColumnsChange?: ( showCols: Array< string >, key?: string ) => void; /** diff --git a/packages/js/data/PREVIOUS_CHANGELOG.md b/packages/js/data/PREVIOUS_CHANGELOG.md index 2bb5eb68baf..e0886007ce1 100644 --- a/packages/js/data/PREVIOUS_CHANGELOG.md +++ b/packages/js/data/PREVIOUS_CHANGELOG.md @@ -22,7 +22,7 @@ ## Breaking changes - Fix the batch fetch logic for the options data store. #7587 -- Add backwards compability for old function format. #7688 +- Add backwards compatibility for old function format. #7688 - Add console warning for inbox note contents exceeding 320 characters and add dompurify dependency. #7869 - Fix race condition in data package's options module. #7947 - Remove dev dependency `@woocommerce/wc-admin-settings`. #8057 diff --git a/packages/js/data/changelog/fix-37502 b/packages/js/data/changelog/fix-37502 new file mode 100644 index 00000000000..115429c4b01 --- /dev/null +++ b/packages/js/data/changelog/fix-37502 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Correct spelling errors diff --git a/packages/js/experimental/changelog/fix-37502 b/packages/js/experimental/changelog/fix-37502 new file mode 100644 index 00000000000..115429c4b01 --- /dev/null +++ b/packages/js/experimental/changelog/fix-37502 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Correct spelling errors diff --git a/packages/js/experimental/src/experimental-list/test/index.tsx b/packages/js/experimental/src/experimental-list/test/index.tsx index c37e714bc76..89e8f6889a7 100644 --- a/packages/js/experimental/src/experimental-list/test/index.tsx +++ b/packages/js/experimental/src/experimental-list/test/index.tsx @@ -163,7 +163,7 @@ describe( 'Experimental List', () => { } ); describe( 'ExperimentalListItemCollapse', () => { - it( 'should not render its children intially, but an extra list footer with show text', () => { + it( 'should not render its children initially, but an extra list footer with show text', () => { const { container } = render( { ); } ); - it( 'should call onVisible when visiblity sensor calls it', () => { + it( 'should call onVisible when visibility sensor calls it', () => { const onVisible = jest.fn(); const { getByText } = render( { expect( onVisible ).toHaveBeenCalledWith( note ); } ); - it( 'should call onVisible when visiblity sensor calls it, but only once', () => { + it( 'should call onVisible when visibility sensor calls it, but only once', () => { const onVisible = jest.fn(); const { getByText } = render( { expect( getByText( 'Finish setup' ) ).toBeInTheDocument(); } ); - it( 'should not render the finish setup link when a user does not have capabilties', () => { + it( 'should not render the finish setup link when a user does not have capabilities', () => { useUser.mockImplementation( () => ( { currentUserCan: () => false, } ) ); diff --git a/plugins/woocommerce-admin/client/analytics/components/report-filters/index.js b/plugins/woocommerce-admin/client/analytics/components/report-filters/index.js index c2313f1b4a6..03ff9dad74a 100644 --- a/plugins/woocommerce-admin/client/analytics/components/report-filters/index.js +++ b/plugins/woocommerce-admin/client/analytics/components/report-filters/index.js @@ -45,7 +45,7 @@ class ReportFilters extends Component { // This event gets triggered in the following cases. // 1. Select "Single product" and choose a product. // 2. Select "Comparison" or any other filter types. - // The comparsion and other filter types require a user to click + // The comparison and other filter types require a user to click // a button to execute a query, so this is not a good place to // trigger a CES survey for those. const triggerCesFor = [ diff --git a/plugins/woocommerce-admin/client/analytics/components/report-table/index.js b/plugins/woocommerce-admin/client/analytics/components/report-table/index.js index 22b5dbe4803..89f020645ce 100644 --- a/plugins/woocommerce-admin/client/analytics/components/report-table/index.js +++ b/plugins/woocommerce-admin/client/analytics/components/report-table/index.js @@ -138,7 +138,7 @@ const ReportTable = ( props ) => { }; const filterShownHeaders = ( headers, hiddenKeys ) => { - // If no user preferences, set visibilty based on column default. + // If no user preferences, set visibility based on column default. if ( ! hiddenKeys ) { return headers.map( ( header ) => ( { ...header, @@ -146,7 +146,7 @@ const ReportTable = ( props ) => { } ) ); } - // Set visibilty based on user preferences. + // Set visibility based on user preferences. return headers.map( ( header ) => ( { ...header, visible: header.required || ! hiddenKeys.includes( header.key ), diff --git a/plugins/woocommerce-admin/client/analytics/report/README.md b/plugins/woocommerce-admin/client/analytics/report/README.md index 21ddb7163db..fd7261eada2 100644 --- a/plugins/woocommerce-admin/client/analytics/report/README.md +++ b/plugins/woocommerce-admin/client/analytics/report/README.md @@ -24,7 +24,7 @@ Each menu item is defined by an array containing `id`, `title`, `parent`, and `p - `report` (string): The report's id. - `title` (string): The title shown in the sidebar. -- `parent` (string): The item's parent in the navigational heirarchy. +- `parent` (string): The item's parent in the navigational hierarchy. - `path` (string): The report's relative path. Next, hook into the JavaScript reports filter, `woocommerce_admin_reports_list`, to add a report component. diff --git a/plugins/woocommerce-admin/client/analytics/settings/README.md b/plugins/woocommerce-admin/client/analytics/settings/README.md index ddc4f7d6a53..aab2d248178 100644 --- a/plugins/woocommerce-admin/client/analytics/settings/README.md +++ b/plugins/woocommerce-admin/client/analytics/settings/README.md @@ -1,7 +1,7 @@ Settings ======= -The settings used to modify the way data is retreived or displayed in WooCommerce reports. +The settings used to modify the way data is retrieved or displayed in WooCommerce reports. ## Extending Settings diff --git a/plugins/woocommerce-admin/client/dashboard/default-sections.js b/plugins/woocommerce-admin/client/dashboard/default-sections.js index 4f01bbbb1ab..b7176e586ff 100644 --- a/plugins/woocommerce-admin/client/dashboard/default-sections.js +++ b/plugins/woocommerce-admin/client/dashboard/default-sections.js @@ -48,7 +48,7 @@ const DEFAULT_SECTIONS_FILTER = 'woocommerce_dashboard_default_sections'; * @property {string} key Unique identifying string. * @property {Node} component React component to render. * @property {string} title Title. - * @property {boolean} isVisible The default visibilty. + * @property {boolean} isVisible The default visibility. * @property {Node} icon Section icon. * @property {Array.} hiddenBlocks Blocks that are hidden by default. */ diff --git a/plugins/woocommerce-admin/client/homescreen/mobile-app-modal/components/useSendMagicLink.tsx b/plugins/woocommerce-admin/client/homescreen/mobile-app-modal/components/useSendMagicLink.tsx index 01671226428..5eebbdb4964 100644 --- a/plugins/woocommerce-admin/client/homescreen/mobile-app-modal/components/useSendMagicLink.tsx +++ b/plugins/woocommerce-admin/client/homescreen/mobile-app-modal/components/useSendMagicLink.tsx @@ -47,7 +47,7 @@ export const useSendMagicLink = () => { setRequestState( SendMagicLinkStates.ERROR ); createNotice( 'error', - __( 'Sorry, an unknown error occured.', 'woocommerce' ) + __( 'Sorry, an unknown error occurred.', 'woocommerce' ) ); } } ) diff --git a/plugins/woocommerce-admin/client/layout/controller.js b/plugins/woocommerce-admin/client/layout/controller.js index 951ca12b227..68536a68837 100644 --- a/plugins/woocommerce-admin/client/layout/controller.js +++ b/plugins/woocommerce-admin/client/layout/controller.js @@ -289,7 +289,7 @@ export const getPages = () => { container: SettingsGroup, path: '/settings/:page', breadcrumbs: ( { match } ) => { - // @todo This might need to be refactored to retreive groups via data store. + // @todo This might need to be refactored to retrieve groups via data store. const settingsPages = getAdminSetting( 'settingsPages' ); const page = settingsPages[ match.params.page ]; if ( ! page ) { diff --git a/plugins/woocommerce-admin/client/navigation/components/Item/index.js b/plugins/woocommerce-admin/client/navigation/components/Item/index.js index 07771664514..c08888e8b72 100644 --- a/plugins/woocommerce-admin/client/navigation/components/Item/index.js +++ b/plugins/woocommerce-admin/client/navigation/components/Item/index.js @@ -19,7 +19,7 @@ const Item = ( { item } ) => { // and should not be a tabbable element. /* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */ - // Only render a slot if a coresponding Fill exists and the item is not a category + // Only render a slot if a corresponding Fill exists and the item is not a category if ( hasFills && ! item.isCategory ) { return ( diff --git a/plugins/woocommerce-admin/client/navigation/utils.ts b/plugins/woocommerce-admin/client/navigation/utils.ts index 446f0b4f2bb..04c1bc4b1ac 100644 --- a/plugins/woocommerce-admin/client/navigation/utils.ts +++ b/plugins/woocommerce-admin/client/navigation/utils.ts @@ -190,7 +190,7 @@ export const sortMenuItems = ( menuItems: Item[] ): Item[] => { }; /** - * Get a flat tree structure of all Categories and thier children grouped by menuId + * Get a flat tree structure of all Categories and their children grouped by menuId * * @param {Array} menuItems Array of menu items. * @param {Function} currentUserCan Callback method passed the capability to determine if a menu item is visible. diff --git a/plugins/woocommerce-admin/client/products/edit-product-page.tsx b/plugins/woocommerce-admin/client/products/edit-product-page.tsx index 88ee6656876..3fbfffd31d2 100644 --- a/plugins/woocommerce-admin/client/products/edit-product-page.tsx +++ b/plugins/woocommerce-admin/client/products/edit-product-page.tsx @@ -94,7 +94,7 @@ const EditProductPage: React.FC = () => { ); useEffect( () => { - // used for determening the wasDeletedUsingAction condition. + // used for determining the wasDeletedUsingAction condition. if ( previousProductRef.current && product && diff --git a/plugins/woocommerce-admin/client/profile-wizard/steps/store-details/index.js b/plugins/woocommerce-admin/client/profile-wizard/steps/store-details/index.js index cfd148cab43..c2e0017ed5e 100644 --- a/plugins/woocommerce-admin/client/profile-wizard/steps/store-details/index.js +++ b/plugins/woocommerce-admin/client/profile-wizard/steps/store-details/index.js @@ -181,7 +181,7 @@ export class StoreDetails extends Component { * `await` and performs an update aysnchronously. This means the following * screen may not be initialized with correct profile settings. * - * This comment may be removed when a refactor to wp.data datatores is complete. + * This comment may be removed when a refactor to wp.data datastores is complete. */ if ( region !== 'US' && diff --git a/plugins/woocommerce-admin/client/stylesheets/shared/_reset.scss b/plugins/woocommerce-admin/client/stylesheets/shared/_reset.scss index 6ef60842cd2..57435876631 100644 --- a/plugins/woocommerce-admin/client/stylesheets/shared/_reset.scss +++ b/plugins/woocommerce-admin/client/stylesheets/shared/_reset.scss @@ -71,7 +71,7 @@ } } -// Temporary fix for compability with the Jetpack masterbar +// Temporary fix for compatibility with the Jetpack masterbar // See https://github.com/Automattic/jetpack/issues/9608 @include breakpoint( '<782px' ) { .jetpack-masterbar { diff --git a/plugins/woocommerce-admin/client/tasks/fills/appearance.js b/plugins/woocommerce-admin/client/tasks/fills/appearance.js index cf89d248ba4..87955209b89 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/appearance.js +++ b/plugins/woocommerce-admin/client/tasks/fills/appearance.js @@ -210,7 +210,7 @@ class Appearance extends Component { this.setState( { isUpdatingLogo: false } ); createNotice( 'success', - __( 'Store logo updated sucessfully', 'woocommerce' ) + __( 'Store logo updated successfully', 'woocommerce' ) ); this.completeStep(); } else { diff --git a/plugins/woocommerce-admin/client/wp-admin-scripts/README.md b/plugins/woocommerce-admin/client/wp-admin-scripts/README.md index eb3ca08feb1..e3fd58aeb88 100644 --- a/plugins/woocommerce-admin/client/wp-admin-scripts/README.md +++ b/plugins/woocommerce-admin/client/wp-admin-scripts/README.md @@ -1,5 +1,5 @@ Scripts located in this directory are meant to be loaded on wp-admin pages outside the context of WooCommerce Admin, such as the post editor. Adding the script name to `wpAdminScripts` in the Webpack config will automatically build these scripts. -Scripts must be manually enqueued with any neccessary dependencies. For example, `onboarding-homepage-notice` uses the WooCommerce navigation package: +Scripts must be manually enqueued with any necessary dependencies. For example, `onboarding-homepage-notice` uses the WooCommerce navigation package: `wp_enqueue_script( 'onboarding-homepage-notice', Loader::get_url( 'wp-scripts/onboarding-homepage-notice.js' ), array( 'wc-navigation' ) );` \ No newline at end of file diff --git a/plugins/woocommerce-admin/docs/examples/extensions/payment-gateway-suggestions/woocommerce-admin-payment-gateway-suggestions-mock-installer.php b/plugins/woocommerce-admin/docs/examples/extensions/payment-gateway-suggestions/woocommerce-admin-payment-gateway-suggestions-mock-installer.php index abfe2926fbd..245a3009645 100644 --- a/plugins/woocommerce-admin/docs/examples/extensions/payment-gateway-suggestions/woocommerce-admin-payment-gateway-suggestions-mock-installer.php +++ b/plugins/woocommerce-admin/docs/examples/extensions/payment-gateway-suggestions/woocommerce-admin-payment-gateway-suggestions-mock-installer.php @@ -6,7 +6,7 @@ */ /** - * This is a workaround to bypass intalling the gateway plugins from WP.org. + * This is a workaround to bypass installing the gateway plugins from WP.org. * This is not necessary provided your suggestion is a valid WP.org plugin. * * @param array $response Response data. diff --git a/plugins/woocommerce-admin/docs/features/navigation.md b/plugins/woocommerce-admin/docs/features/navigation.md index 0d56e6bfe5c..bf68adc4d5f 100644 --- a/plugins/woocommerce-admin/docs/features/navigation.md +++ b/plugins/woocommerce-admin/docs/features/navigation.md @@ -12,7 +12,7 @@ The fastest way to get started is by creating an example plugin from WooCommerce `WC_EXT=add-navigation-items pnpm example --filter=woocommerce/client/admin` -This will create a new plugin that covers various features of the navigation and helps to register some intial items and categories within the new navigation menu. After running the command above, you can make edits directly to the files at `docs/examples/extensions/add-navigation-items` and they will be built and copied to your `wp-content/add-navigation-items` folder on save. +This will create a new plugin that covers various features of the navigation and helps to register some initial items and categories within the new navigation menu. After running the command above, you can make edits directly to the files at `docs/examples/extensions/add-navigation-items` and they will be built and copied to your `wp-content/add-navigation-items` folder on save. If you need to enable the WP Toolbar for debugging purposes in the new navigation, you can add the following filter to do so: diff --git a/plugins/woocommerce-admin/docs/features/onboarding-tasks.md b/plugins/woocommerce-admin/docs/features/onboarding-tasks.md index c8bdf815de9..c7748cbb694 100644 --- a/plugins/woocommerce-admin/docs/features/onboarding-tasks.md +++ b/plugins/woocommerce-admin/docs/features/onboarding-tasks.md @@ -32,8 +32,8 @@ $args = array( 'can_view' => 'US:CA' === wc_get_base_location(), 'level' => 3, // Priority level shown for extended tasks. 'time' => __( '2 minutes', 'plugin-text-domain' ), // Time string for time to complete the task. - 'is_dismissable' => false, // Determine if the taks is dismissable. - 'is_snoozeable' => true, // Determine if the taks is snoozeable. + 'is_dismissable' => false, // Determine if the task is dismissable. + 'is_snoozeable' => true, // Determine if the task is snoozeable. 'additional_info' => array( 'apples', 'oranges', 'bananas' ), // Additional info passed to the task. ) $task = new Task( $args ); diff --git a/plugins/woocommerce-admin/docs/features/onboarding.md b/plugins/woocommerce-admin/docs/features/onboarding.md index 4328d8aaf74..c2ae884fa93 100644 --- a/plugins/woocommerce-admin/docs/features/onboarding.md +++ b/plugins/woocommerce-admin/docs/features/onboarding.md @@ -70,7 +70,7 @@ To disconnect from WooCommerce.com, go to `WooCommerce > Extensions > WooCommerc ## Jetpack Connection -Using Jetpack & WooCommerce Shipping & Tax allows us to offer additional features to new WooCommerce users as well as simplify parts of the setup process. For example, we can do automated tax calculations for certain countries, significantly simplifying the tax task. To make this work, the user needs to be connected to a WordPress.com account. This also means development and testing of these features needs to be done on a Jetpack connected site. Search the MGS & the Feld Guide for additional resources on testing Jetpack with local setups. +Using Jetpack & WooCommerce Shipping & Tax allows us to offer additional features to new WooCommerce users as well as simplify parts of the setup process. For example, we can do automated tax calculations for certain countries, significantly simplifying the tax task. To make this work, the user needs to be connected to a WordPress.com account. This also means development and testing of these features needs to be done on a Jetpack connected site. Search the MGS & the Field Guide for additional resources on testing Jetpack with local setups. We have a special Jetpack connection flow designed specifically for WooCommerce onboarding, so that the user feels that they are connecting as part of a cohesive experience. To access this flow, we have a custom Jetpack connection endpoint [/wc-admin/plugins/connect-jetpack](https://github.com/woocommerce/woocommerce/blob/feba6a8dcd55d4f5c7edc05478369c76df082293/plugins/woocommerce/src/Admin/API/Plugins.php#L395-L417). diff --git a/plugins/woocommerce-admin/docs/features/payment-gateway-suggestions.md b/plugins/woocommerce-admin/docs/features/payment-gateway-suggestions.md index d65ce68127b..b8ea6752f42 100644 --- a/plugins/woocommerce-admin/docs/features/payment-gateway-suggestions.md +++ b/plugins/woocommerce-admin/docs/features/payment-gateway-suggestions.md @@ -6,7 +6,7 @@ After merchants click on a recommendation, plugins from this source will then wa ### Quick start -Gateway suggestions are retreived from a REST API and can be added via a remote JSON data source or filtered with the `woocommerce_admin_payment_gateway_suggestion_specs` filter. +Gateway suggestions are retrieved from a REST API and can be added via a remote JSON data source or filtered with the `woocommerce_admin_payment_gateway_suggestion_specs` filter. To quickly get started with an example plugin, run the following: @@ -22,7 +22,7 @@ If a user is not opted into marketplace suggestions or polling fails, the gatewa ## Remote Data Source Schema -The data source schema defines the recommended payment gateways and required plugins to kick of the setup process. The goal of this config is to provide the mininum amount of information possible to show a list of gateways and allow the gateways themselves to define specifics around configuration. +The data source schema defines the recommended payment gateways and required plugins to kick of the setup process. The goal of this config is to provide the minimum amount of information possible to show a list of gateways and allow the gateways themselves to define specifics around configuration. ```json [ diff --git a/plugins/woocommerce-admin/docs/woocommerce.com/README.md b/plugins/woocommerce-admin/docs/woocommerce.com/README.md index 2ed099f6070..06a17b6f40b 100644 --- a/plugins/woocommerce-admin/docs/woocommerce.com/README.md +++ b/plugins/woocommerce-admin/docs/woocommerce.com/README.md @@ -10,7 +10,7 @@ Currently, development efforts have been focused on two primary areas: ## Analytics -With WooCommerce installed, a new Analytics menu item is created in the wp-admin menu system. This menu item, and the reports contained insde of it are available to all wp-admin users that have the `view_woocommerce_reports` capability, so per a standard WooCommerce install this would give `shop_manager`s and `administrator`s access to the reports. +With WooCommerce installed, a new Analytics menu item is created in the wp-admin menu system. This menu item, and the reports contained inside of it are available to all wp-admin users that have the `view_woocommerce_reports` capability, so per a standard WooCommerce install this would give `shop_manager`s and `administrator`s access to the reports. Each report is quite unique with its own set of filtering options and chart types. To learn more about each individual report, please view the pages below: diff --git a/plugins/woocommerce-admin/docs/woocommerce.com/activity-panels.md b/plugins/woocommerce-admin/docs/woocommerce.com/activity-panels.md index 0b68f783f1a..58f83536679 100644 --- a/plugins/woocommerce-admin/docs/woocommerce.com/activity-panels.md +++ b/plugins/woocommerce-admin/docs/woocommerce.com/activity-panels.md @@ -2,7 +2,7 @@ The Activity Panel aims to be a "one stop shop" for managing your store - fulfill new orders, manage product inventory, moderate reviews, and get information about running your store. -Activity Panels can be accessed wherever the WooCommerce Admin nagivation bar is shown. +Activity Panels can be accessed wherever the WooCommerce Admin navigation bar is shown. ![Activity Panels Tabs Overview](images/activity-panels-tabs.png) diff --git a/plugins/woocommerce-admin/docs/woocommerce.com/analytics-basics.md b/plugins/woocommerce-admin/docs/woocommerce.com/analytics-basics.md index f846c5f7e28..1cb3b7e38f8 100644 --- a/plugins/woocommerce-admin/docs/woocommerce.com/analytics-basics.md +++ b/plugins/woocommerce-admin/docs/woocommerce.com/analytics-basics.md @@ -46,7 +46,7 @@ The _Summary Number_ tab gives you a quick view at the total figure for that met ### Chart ![Analytics Chart](analytics-basics-chart.png) -The charts on report pages offer quite a few options to customize the visualiztion of data. The data legend ( labeled A ) allows you to toggle the visiblity of the different data set periods. The _Interval Selector_ ( labeled B ) allows you to adjust the interval displayed in the chart. The options available here are dependent upon the length of the date range selected: +The charts on report pages offer quite a few options to customize the visualiztion of data. The data legend ( labeled A ) allows you to toggle the visibility of the different data set periods. The _Interval Selector_ ( labeled B ) allows you to adjust the interval displayed in the chart. The options available here are dependent upon the length of the date range selected: | Length of Date Range | Interval Options | |---|---| @@ -69,10 +69,10 @@ The table which displays the detailed data on Analytics reports also has a numbe Many columns in reports will allow you to click on the column header to sort the tabular data by that value, and to either sort by that value in ascending or descending order. Simply click the column header to sort by that value, and click it again to change between ascending and descending sort. -### Toggle Column Visiblity +### Toggle Column Visibility ![Analytics Table Column Sorting](analytics-table-column-visbility.png) -If a report contains a data column that you don't need to be displayed, you can adjust the visiblity of it by using the visibility menu on the right side of the table header. Click the column name in the menu to change the visibility of the column. Your visibility selections are persisted to your user preferences for each report, so on subsequent visits to that report, the columns you have previously toggled off will not be displayed. +If a report contains a data column that you don't need to be displayed, you can adjust the visibility of it by using the visibility menu on the right side of the table header. Click the column name in the menu to change the visibility of the column. Your visibility selections are persisted to your user preferences for each report, so on subsequent visits to that report, the columns you have previously toggled off will not be displayed. ### CSV Download ![Analytics Table csv Download](analytics-table-download-button.png) @@ -89,4 +89,4 @@ If your selected date range results in a data set that spans more then one page When the data displayed in the table is larger than the default single page size of 25, some pagination options will appear in the table footer area. Directional buttons, labeled `<` and `>` enable you to move backwards and forwards between pages, and a text field will allow you to jump to a specific page number. Furthermore you can change the number of rows to display per page. ### Table Search Box -On some reports, a search box is displayed in the table header area as well. For details on what the search box does on a given report, please refer to the associated documentaiton page for that report. \ No newline at end of file +On some reports, a search box is displayed in the table header area as well. For details on what the search box does on a given report, please refer to the associated documentation page for that report. \ No newline at end of file diff --git a/plugins/woocommerce-admin/docs/woocommerce.com/analytics-settings.md b/plugins/woocommerce-admin/docs/woocommerce.com/analytics-settings.md index 007c226f256..90df3b1f78b 100644 --- a/plugins/woocommerce-admin/docs/woocommerce.com/analytics-settings.md +++ b/plugins/woocommerce-admin/docs/woocommerce.com/analytics-settings.md @@ -12,7 +12,7 @@ WooCommerce Admin is pre-configured with default settings for WooCommerce Analyt ![Excluded statuses settings](images/settings-excluded-statuses.png) -In this section, statuses that are **unchecked** are **included** in anayltics reports. **Checked** statuses are **excluded**. If your store uses custom order statuses, those statuses are included in the reports by default. They will be listed in this section under `Custom Statuses` and can be excluded via the status checkbox. +In this section, statuses that are **unchecked** are **included** in analytics reports. **Checked** statuses are **excluded**. If your store uses custom order statuses, those statuses are included in the reports by default. They will be listed in this section under `Custom Statuses` and can be excluded via the status checkbox. ### Default Date Range diff --git a/plugins/woocommerce-beta-tester/changelog/fix-37502 b/plugins/woocommerce-beta-tester/changelog/fix-37502 new file mode 100644 index 00000000000..115429c4b01 --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/fix-37502 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Correct spelling errors diff --git a/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php b/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php index 3f8f9d7d8f1..9eb79c1a58f 100644 --- a/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php +++ b/plugins/woocommerce-beta-tester/woocommerce-beta-tester.php @@ -44,7 +44,7 @@ function _wc_beta_tester_load_textdomain() { add_action( 'plugins_loaded', '_wc_beta_tester_load_textdomain' ); /** - * Boostrap plugin. + * Bootstrap plugin. */ function _wc_beta_tester_bootstrap() { diff --git a/plugins/woocommerce/changelog/fix-37502 b/plugins/woocommerce/changelog/fix-37502 new file mode 100644 index 00000000000..115429c4b01 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-37502 @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +Correct spelling errors diff --git a/plugins/woocommerce/changelog/fix-k6-api-40X-errors b/plugins/woocommerce/changelog/fix-k6-api-40X-errors index ab162eedf69..a9cf0d4ef6e 100644 --- a/plugins/woocommerce/changelog/fix-k6-api-40X-errors +++ b/plugins/woocommerce/changelog/fix-k6-api-40X-errors @@ -1,4 +1,4 @@ Significance: patch Type: fix -skip k6 api order RUD tests on non-existant order when C test fails +skip k6 api order RUD tests on non-existent order when C test fails diff --git a/plugins/woocommerce/client/legacy/js/frontend/woocommerce.js b/plugins/woocommerce/client/legacy/js/frontend/woocommerce.js index b10ad50d951..734d73cced2 100644 --- a/plugins/woocommerce/client/legacy/js/frontend/woocommerce.js +++ b/plugins/woocommerce/client/legacy/js/frontend/woocommerce.js @@ -79,7 +79,7 @@ jQuery( function( $ ) { } }; - // Show password visiblity hover icon on woocommerce forms + // Show password visibility hover icon on woocommerce forms $( '.woocommerce form .woocommerce-Input[type="password"]' ).wrap( '' ); // Add 'password-input' class to the password wrapper in checkout page. $( '.woocommerce form input' ).filter(':password').parent('span').addClass('password-input'); diff --git a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php index 2bcad8535db..7ba29926df4 100644 --- a/plugins/woocommerce/includes/abstracts/abstract-wc-order.php +++ b/plugins/woocommerce/includes/abstracts/abstract-wc-order.php @@ -134,7 +134,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { /** * This method overwrites the base class's clone method to make it a no-op. In base class WC_Data, we are unsetting the meta_id to clone. * It seems like this was done to avoid conflicting the metadata when duplicating products. However, doing that does not seems necessary for orders. - * In-fact, when we do that for orders, we lose the capability to clone orders with custom meta data by caching plugins. This is because, when we clone an order object for caching, it will clone the metadata without the ID. Unfortunately, when this cached object with nulled meta ID is retreived, WC_Data will consider it as a new meta and will insert it as a new meta-data causing duplicates. + * In-fact, when we do that for orders, we lose the capability to clone orders with custom meta data by caching plugins. This is because, when we clone an order object for caching, it will clone the metadata without the ID. Unfortunately, when this cached object with nulled meta ID is retrieved, WC_Data will consider it as a new meta and will insert it as a new meta-data causing duplicates. * * Eventually, we should move away from overwriting the __clone method in base class itself, since it's easily possible to still duplicate the product without having to hook into the __clone method. * diff --git a/plugins/woocommerce/includes/abstracts/abstract-wc-product.php b/plugins/woocommerce/includes/abstracts/abstract-wc-product.php index 69e4d1f46c6..ac1eb1147ea 100644 --- a/plugins/woocommerce/includes/abstracts/abstract-wc-product.php +++ b/plugins/woocommerce/includes/abstracts/abstract-wc-product.php @@ -1110,7 +1110,7 @@ class WC_Product extends WC_Abstract_Legacy_Product { * position - integer sort order. * visible - If visible on frontend. * variation - If used for variations. - * Indexed by unqiue key to allow clearing old ones after a set. + * Indexed by unique key to allow clearing old ones after a set. * * @since 3.0.0 * @param array $raw_attributes Array of WC_Product_Attribute objects. diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-addons.php b/plugins/woocommerce/includes/admin/class-wc-admin-addons.php index 25dbc15936e..81e3a9f0b84 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-addons.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-addons.php @@ -1119,7 +1119,7 @@ class WC_Admin_Addons { /** * Install WooCommerce Payments from the Extensions screens. * - * @param string $section Optional. Extenstions tab. + * @param string $section Optional. Extensions tab. * * @return void */ diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-status.php b/plugins/woocommerce/includes/admin/class-wc-admin-status.php index 6e92ff6e4ff..0be2542485e 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-status.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-status.php @@ -362,7 +362,7 @@ class WC_Admin_Status { Check again.', 'woocommerce' ), esc_html( implode( ', ', $missing_tables ) ), wp_nonce_url( admin_url( 'admin.php?page=wc-status&tab=tools&action=verify_db_tables' ), 'debug_action' ) @@ -32,7 +32,7 @@ defined( 'ABSPATH' ) || exit; } else { echo wp_kses_post( sprintf( - /* translators: %1%s: Missing tables (seperated by ",") */ + /* translators: %1%s: Missing tables (separated by ",") */ __( 'One or more tables required for WooCommerce to function are missing, some features may not work as expected. Missing tables: %1$s.', 'woocommerce' ), esc_html( implode( ', ', $missing_tables ) ) ) diff --git a/plugins/woocommerce/includes/class-wc-countries.php b/plugins/woocommerce/includes/class-wc-countries.php index f4fa5ceab6e..7a880796eb2 100644 --- a/plugins/woocommerce/includes/class-wc-countries.php +++ b/plugins/woocommerce/includes/class-wc-countries.php @@ -1573,7 +1573,7 @@ class WC_Countries { // Default Locale Can be filtered to override fields in get_address_fields(). Countries with no specific locale will use default. $this->locale['default'] = apply_filters( 'woocommerce_get_country_locale_default', $this->get_default_address_fields() ); - // Filter default AND shop base locales to allow overides via a single function. These will be used when changing countries on the checkout. + // Filter default AND shop base locales to allow overrides via a single function. These will be used when changing countries on the checkout. if ( ! isset( $this->locale[ $this->get_base_country() ] ) ) { $this->locale[ $this->get_base_country() ] = $this->locale['default']; } diff --git a/plugins/woocommerce/includes/class-wc-coupon.php b/plugins/woocommerce/includes/class-wc-coupon.php index 646c7bf0159..48d8f75337f 100644 --- a/plugins/woocommerce/includes/class-wc-coupon.php +++ b/plugins/woocommerce/includes/class-wc-coupon.php @@ -698,7 +698,7 @@ class WC_Coupon extends WC_Legacy_Coupon { * Set the minimum spend amount. * * @since 3.0.0 - * @param float $amount Minium amount. + * @param float $amount Minimum amount. */ public function set_minimum_amount( $amount ) { $this->set_prop( 'minimum_amount', wc_format_decimal( $amount ) ); diff --git a/plugins/woocommerce/includes/class-wc-frontend-scripts.php b/plugins/woocommerce/includes/class-wc-frontend-scripts.php index 4ddbb076061..f67641a2214 100644 --- a/plugins/woocommerce/includes/class-wc-frontend-scripts.php +++ b/plugins/woocommerce/includes/class-wc-frontend-scripts.php @@ -62,7 +62,7 @@ class WC_Frontend_Scripts { * * @since 2.1.0 * @param array List of default WooCommerce styles. - * @retrun array List of styles to enqueue. + * @return array List of styles to enqueue. */ $styles = apply_filters( 'woocommerce_enqueue_styles', diff --git a/plugins/woocommerce/includes/class-wc-query.php b/plugins/woocommerce/includes/class-wc-query.php index 82d190e0ce8..fc7a9ec95a5 100644 --- a/plugins/woocommerce/includes/class-wc-query.php +++ b/plugins/woocommerce/includes/class-wc-query.php @@ -538,7 +538,7 @@ class WC_Query { // Store reference to this query. self::$product_query = $q; - // Additonal hooks to change WP Query. + // Additional hooks to change WP Query. self::add_filter( 'posts_clauses', array( $this, 'product_query_post_clauses' ), 10, 2 ); add_filter( 'the_posts', array( $this, 'handle_get_posts' ), 10, 2 ); diff --git a/plugins/woocommerce/includes/class-wc-regenerate-images.php b/plugins/woocommerce/includes/class-wc-regenerate-images.php index ca59231e7fb..35f8cde9b2e 100644 --- a/plugins/woocommerce/includes/class-wc-regenerate-images.php +++ b/plugins/woocommerce/includes/class-wc-regenerate-images.php @@ -51,7 +51,7 @@ class WC_Regenerate_Images { add_action( 'admin_init', array( __CLASS__, 'regenerating_notice' ) ); add_action( 'woocommerce_hide_regenerating_thumbnails_notice', array( __CLASS__, 'dismiss_regenerating_notice' ) ); - // Regenerate thumbnails in the background after settings changes. Not ran on multisite to avoid multiple simultanious jobs. + // Regenerate thumbnails in the background after settings changes. Not ran on multisite to avoid multiple simultaneous jobs. if ( ! is_multisite() ) { add_action( 'customize_save_after', array( __CLASS__, 'maybe_regenerate_images' ) ); add_action( 'after_switch_theme', array( __CLASS__, 'maybe_regenerate_images' ) ); diff --git a/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php b/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php index 6d29543da62..697edf02c24 100644 --- a/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php +++ b/plugins/woocommerce/includes/data-stores/abstract-wc-order-data-store-cpt.php @@ -599,7 +599,7 @@ abstract class Abstract_WC_Order_Data_Store_CPT extends WC_Data_Store_WP impleme } /** - * Helper method to update order metadata from intialized order object. + * Helper method to update order metadata from initialized order object. * * @param WC_Abstract_Order $order Order object. */ diff --git a/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php b/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php index 6e780300bd4..8eb78696f6e 100644 --- a/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php +++ b/plugins/woocommerce/includes/data-stores/class-wc-product-data-store-cpt.php @@ -1137,7 +1137,7 @@ class WC_Product_Data_Store_CPT extends WC_Data_Store_WP implements WC_Object_Da /** * Check each variation to find the one that matches the $match_attributes. * - * Note: Not all meta fields will be set which is why we check existance. + * Note: Not all meta fields will be set which is why we check existence. */ foreach ( $sorted_meta as $variation_id => $variation ) { $match = true; diff --git a/plugins/woocommerce/includes/export/class-wc-product-csv-exporter.php b/plugins/woocommerce/includes/export/class-wc-product-csv-exporter.php index a59c6f5ea8c..1c0b976dddf 100644 --- a/plugins/woocommerce/includes/export/class-wc-product-csv-exporter.php +++ b/plugins/woocommerce/includes/export/class-wc-product-csv-exporter.php @@ -182,7 +182,7 @@ class WC_Product_CSV_Exporter extends WC_CSV_Batch_Exporter { $variable_products = array(); foreach ( $products->products as $product ) { - // Check if the category is set, this means we need to fetch variations seperately as they are not tied to a category. + // Check if the category is set, this means we need to fetch variations separately as they are not tied to a category. if ( ! empty( $args['category'] ) && $product->is_type( 'variable' ) ) { $variable_products[] = $product->get_id(); } diff --git a/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-products.php b/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-products.php index 25ac8223eda..9b551b3f2e0 100644 --- a/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-products.php +++ b/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-products.php @@ -653,7 +653,7 @@ class WC_Shortcode_Products { $GLOBALS['post'] = get_post( $product_id ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited setup_postdata( $GLOBALS['post'] ); - // Set custom product visibility when quering hidden products. + // Set custom product visibility when querying hidden products. add_action( 'woocommerce_product_is_visible', array( $this, 'set_product_as_visible' ) ); // Render product template. diff --git a/plugins/woocommerce/includes/wc-product-functions.php b/plugins/woocommerce/includes/wc-product-functions.php index f27291d3ca9..da041dbb0ea 100644 --- a/plugins/woocommerce/includes/wc-product-functions.php +++ b/plugins/woocommerce/includes/wc-product-functions.php @@ -698,7 +698,7 @@ function wc_get_product_variation_attributes( $variation_id ) { $attribute = 'attribute_' . sanitize_title( $attribute_name ); $found_parent_attributes[] = $attribute; if ( ! array_key_exists( $attribute, $variation_attributes ) ) { - $variation_attributes[ $attribute ] = ''; // Add it - 'any' will be asumed. + $variation_attributes[ $attribute ] = ''; // Add it - 'any' will be assumed. } } } diff --git a/plugins/woocommerce/includes/wc-template-functions.php b/plugins/woocommerce/includes/wc-template-functions.php index 09a1c18eb34..e2162cef7b9 100644 --- a/plugins/woocommerce/includes/wc-template-functions.php +++ b/plugins/woocommerce/includes/wc-template-functions.php @@ -817,7 +817,7 @@ function wc_privacy_policy_page_id() { } /** - * See if the checkbox is enabled or not based on the existance of the terms page and checkbox text. + * See if the checkbox is enabled or not based on the existence of the terms page and checkbox text. * * @since 3.4.0 * @return bool @@ -3548,7 +3548,7 @@ function wc_display_product_attributes( $product ) { * Hook: woocommerce_display_product_attributes. * * @since 3.6.0. - * @param array $product_attributes Array of atributes to display; label, value. + * @param array $product_attributes Array of attributes to display; label, value. * @param WC_Product $product Showing attributes for this product. */ $product_attributes = apply_filters( 'woocommerce_display_product_attributes', $product_attributes, $product ); diff --git a/plugins/woocommerce/includes/wc-term-functions.php b/plugins/woocommerce/includes/wc-term-functions.php index 3cbc7032a81..fbe13b3f5f6 100644 --- a/plugins/woocommerce/includes/wc-term-functions.php +++ b/plugins/woocommerce/includes/wc-term-functions.php @@ -295,7 +295,7 @@ add_action( 'wp_upgrade', 'wc_taxonomy_metadata_migrate_data', 10, 2 ); * * @param int $the_term Term ID. * @param int $next_id The id of the next sibling element in save hierarchy level. - * @param string $taxonomy Taxnomy. + * @param string $taxonomy Taxonomy. * @param int $index Term index (default: 0). * @param mixed $terms List of terms. (default: null). * @return int @@ -594,7 +594,7 @@ function wc_clear_term_product_ids( $object_id, $terms, $tt_ids, $taxonomy, $app add_action( 'set_object_terms', 'wc_clear_term_product_ids', 10, 6 ); /** - * Get full list of product visibilty term ids. + * Get full list of product visibility term ids. * * @since 3.0.0 * @return int[] diff --git a/plugins/woocommerce/includes/wc-update-functions.php b/plugins/woocommerce/includes/wc-update-functions.php index d70a4233816..3aa0b6a0246 100644 --- a/plugins/woocommerce/includes/wc-update-functions.php +++ b/plugins/woocommerce/includes/wc-update-functions.php @@ -1902,7 +1902,7 @@ function wc_update_350_db_version() { } /** - * Drop the fk_wc_download_log_permission_id FK as we use a new one with the table and blog prefix for MS compatability. + * Drop the fk_wc_download_log_permission_id FK as we use a new one with the table and blog prefix for MS compatibility. * * @return void */ diff --git a/plugins/woocommerce/src/Admin/API/Init.php b/plugins/woocommerce/src/Admin/API/Init.php index d0e6197ec7e..338bda5277d 100644 --- a/plugins/woocommerce/src/Admin/API/Init.php +++ b/plugins/woocommerce/src/Admin/API/Init.php @@ -37,7 +37,7 @@ class Init { } /** - * Boostrap REST API. + * Bootstrap REST API. */ public function __construct() { // Hook in data stores. diff --git a/plugins/woocommerce/src/Admin/API/ProductVariations.php b/plugins/woocommerce/src/Admin/API/ProductVariations.php index a5307500a9b..aaf69ac5b2e 100644 --- a/plugins/woocommerce/src/Admin/API/ProductVariations.php +++ b/plugins/woocommerce/src/Admin/API/ProductVariations.php @@ -129,7 +129,7 @@ class ProductVariations extends \WC_REST_Product_Variations_Controller { unset( $args['s'] ); } - // Retreive variations without specifying a parent product. + // Retrieve variations without specifying a parent product. if ( "/{$this->namespace}/variations" === $request->get_route() ) { unset( $args['post_parent'] ); } diff --git a/plugins/woocommerce/src/Admin/API/Products.php b/plugins/woocommerce/src/Admin/API/Products.php index 2e9e16c7aab..e4353df76ce 100644 --- a/plugins/woocommerce/src/Admin/API/Products.php +++ b/plugins/woocommerce/src/Admin/API/Products.php @@ -142,7 +142,7 @@ class Products extends \WC_REST_Products_Controller { /** * Check whether the request is for products low in stock. * - * It matches requests with paramaters: + * It matches requests with parameters: * * low_in_stock = true * page = 1 diff --git a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/DeprecatedExtendedTask.php b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/DeprecatedExtendedTask.php index c8375dc4ab1..f2e62fc96b7 100644 --- a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/DeprecatedExtendedTask.php +++ b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/DeprecatedExtendedTask.php @@ -76,7 +76,7 @@ class DeprecatedExtendedTask extends Task { } /** - * Additonal info. + * Additional info. * * @return string */ diff --git a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php index a2510fd6ed6..e3e2f91a72a 100644 --- a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php +++ b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/TaskLists.php @@ -253,7 +253,7 @@ class TaskLists { } /** - * Temporarily store the active task to persist across page loads when neccessary. + * Temporarily store the active task to persist across page loads when necessary. * Most tasks do not need this. */ public static function set_active_task() { diff --git a/plugins/woocommerce/src/Internal/Admin/Loader.php b/plugins/woocommerce/src/Internal/Admin/Loader.php index 27758986e18..e190836b0cb 100644 --- a/plugins/woocommerce/src/Internal/Admin/Loader.php +++ b/plugins/woocommerce/src/Internal/Admin/Loader.php @@ -302,7 +302,7 @@ class Loader { } /** - * Hooks extra neccessary data into the component settings array already set in WooCommerce core. + * Hooks extra necessary data into the component settings array already set in WooCommerce core. * * @param array $settings Array of component settings. * @return array Array of component settings. diff --git a/plugins/woocommerce/src/Internal/Admin/Settings.php b/plugins/woocommerce/src/Internal/Admin/Settings.php index 516fb1f294b..27d4b721384 100644 --- a/plugins/woocommerce/src/Internal/Admin/Settings.php +++ b/plugins/woocommerce/src/Internal/Admin/Settings.php @@ -105,7 +105,7 @@ class Settings { } /** - * Hooks extra neccessary data into the component settings array already set in WooCommerce core. + * Hooks extra necessary data into the component settings array already set in WooCommerce core. * * @param array $settings Array of component settings. * @return array Array of component settings. diff --git a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php index 59f5cd9db59..0d44957db99 100644 --- a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php +++ b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php @@ -238,7 +238,7 @@ class WCAdminAssets { } /** - * Registers all the neccessary scripts and styles to show the admin experience. + * Registers all the necessary scripts and styles to show the admin experience. */ public function register_scripts() { if ( ! function_exists( 'wp_set_script_translations' ) ) { diff --git a/plugins/woocommerce/src/Internal/Admin/WCAdminUser.php b/plugins/woocommerce/src/Internal/Admin/WCAdminUser.php index 748f4b96547..76897a8cf24 100644 --- a/plugins/woocommerce/src/Internal/Admin/WCAdminUser.php +++ b/plugins/woocommerce/src/Internal/Admin/WCAdminUser.php @@ -124,7 +124,7 @@ class WCAdminUser { } /** - * Helper to retrive user data fields. + * Helper to retrieve user data fields. * * Migrates old key prefixes as well. * diff --git a/plugins/woocommerce/tests/Tools/CodeHacking/CodeHacker.php b/plugins/woocommerce/tests/Tools/CodeHacking/CodeHacker.php index 9b18bbe214c..94669c2a8e0 100644 --- a/plugins/woocommerce/tests/Tools/CodeHacking/CodeHacker.php +++ b/plugins/woocommerce/tests/Tools/CodeHacking/CodeHacker.php @@ -466,7 +466,7 @@ final class CodeHacker { } /** - * Apply the reigstered hacks to the contents of a file. + * Apply the registered hacks to the contents of a file. * * @param string $code Code content to hack. * @param string $path Path of the file being hacked. diff --git a/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/FunctionsMockerHack.php b/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/FunctionsMockerHack.php index cf3fc83c6ab..b37edc6ae77 100644 --- a/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/FunctionsMockerHack.php +++ b/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/FunctionsMockerHack.php @@ -86,7 +86,7 @@ final class FunctionsMockerHack extends CodeHack { } /** - * Hacks code by replacing elegible function invocations with an invocation to this class' static method with the same name. + * Hacks code by replacing eligible function invocations with an invocation to this class' static method with the same name. * * @param string $code The code to hack. * @param string $path The path of the file containing the code to hack. diff --git a/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/StaticMockerHack.php b/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/StaticMockerHack.php index 65b5b334aca..034eac10824 100644 --- a/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/StaticMockerHack.php +++ b/plugins/woocommerce/tests/Tools/CodeHacking/Hacks/StaticMockerHack.php @@ -72,7 +72,7 @@ final class StaticMockerHack extends CodeHack { } /** - * Hacks code by replacing elegible method invocations with an invocation a static method on this class composed from the class and the method names. + * Hacks code by replacing eligible method invocations with an invocation a static method on this class composed from the class and the method names. * * @param string $code The code to hack. * @param string $path The path of the file containing the code to hack. diff --git a/plugins/woocommerce/tests/Tools/CodeHacking/README.md b/plugins/woocommerce/tests/Tools/CodeHacking/README.md index f4beef28b68..bcb657fc1d2 100644 --- a/plugins/woocommerce/tests/Tools/CodeHacking/README.md +++ b/plugins/woocommerce/tests/Tools/CodeHacking/README.md @@ -125,7 +125,7 @@ StaticMockerHack::add_method_mocks([ Inside your test files you can create classes that extend classes marked as `final` thanks to the `BypassFinalsHack` that is registered at bootstrap time. No extra configuration is needed. -If you want to try it out, mark the `WC_Admin_Foobar` in the previos example as `final`, then add the following to the tests file: `class WC_Admin_Foobar_Subclass extends WC_Admin_Foobar {}`. Without the hack you would get a `Class WC_Admin_Foobar_Subclass may not inherit from final class (WC_Admin_Foobar)` error when trying to run the tests. +If you want to try it out, mark the `WC_Admin_Foobar` in the previous example as `final`, then add the following to the tests file: `class WC_Admin_Foobar_Subclass extends WC_Admin_Foobar {}`. Without the hack you would get a `Class WC_Admin_Foobar_Subclass may not inherit from final class (WC_Admin_Foobar)` error when trying to run the tests. ## How it works under the hood diff --git a/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js index cdc7509c080..8f5f09d45ae 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/payment-gateways/payment-gateways-crud.test.js @@ -12,7 +12,7 @@ const { */ test.describe('Payment Gateways API tests', () => { - test('can view all payment gatways', async ({ + test('can view all payment gateways', async ({ request }) => { // call API to retrieve the payment gateways @@ -167,7 +167,7 @@ test.describe('Payment Gateways API tests', () => { test('can view a payment gateway', async ({ request }) => { - // call API to retrieve a single payment gatway + // call API to retrieve a single payment gateway const response = await request.get('/wp-json/wc/v3/payment_gateways/bacs'); const responseJSON = await response.json(); expect(response.status()).toEqual(200); @@ -213,7 +213,7 @@ test.describe('Payment Gateways API tests', () => { test('can update a payment gateway', async ({ request }) => { - // call API to update a payment gatway + // call API to update a payment gateway const response = await request.put('/wp-json/wc/v3/payment_gateways/bacs', { data: { enabled: true diff --git a/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js index 00fcd5b58d7..6d3a2e8afd0 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/products/products-crud.test.js @@ -558,7 +558,7 @@ test.describe('Products API tests: CRUD', () => { const response = await request.post('wp-json/wc/v3/products/reviews', { data: { product_id: 999, - review: "A non existant product!", + review: "A non existent product!", reviewer: "John Do Not", reviewer_email: "john.do.not@example.com", rating: 5 diff --git a/plugins/woocommerce/tests/api-core-tests/tests/settings/settings-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/settings/settings-crud.test.js index f5314972d76..238a4c552c0 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/settings/settings-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/settings/settings-crud.test.js @@ -1968,7 +1968,7 @@ test.describe('Settings API tests: CRUD', () => { test.describe('List all Email Customer Processing Order settings', () => { - test('can retrieve all email customer processsing order settings', async ({ + test('can retrieve all email customer processing order settings', async ({ request }) => { // call API to retrieve all settings options diff --git a/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-zones.test.js b/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-zones.test.js index ef948dea1c4..af6cb93e4ce 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-zones.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/shipping/shipping-zones.test.js @@ -78,7 +78,7 @@ test.describe( 'Shipping zones API tests', () => { } ); test( 'can retrieve a shipping zone', async ({request}) => { - //call API to retrive the created shipping zone + //call API to retrieve the created shipping zone const response = await request.get( `/wp-json/wc/v3/shipping/zones/${shippingZone.id}`); const responseJSON = await response.json(); @@ -88,7 +88,7 @@ test.describe( 'Shipping zones API tests', () => { } ); test( 'can list all shipping zones', async ({request}) => { - //call API to retrive all the shipping zones + //call API to retrieve all the shipping zones const response = await request.get( 'wp-json/wc/v3/shipping/zones'); const responseJSON = await response.json(); @@ -119,7 +119,7 @@ test.describe( 'Shipping zones API tests', () => { test( 'can add a shipping region to a shipping zone', async ({request}) => { - //call API to retrive the locations of the last created shipping zone + //call API to retrieve the locations of the last created shipping zone const response = await request.get( `/wp-json/wc/v3/shipping/zones/${shippingZone.id}/locations`); expect( response.status() ).toEqual( 200 ); diff --git a/plugins/woocommerce/tests/api-core-tests/tests/system-status/system-status-crud.test.js b/plugins/woocommerce/tests/api-core-tests/tests/system-status/system-status-crud.test.js index 4518718914c..28f30c6f45d 100644 --- a/plugins/woocommerce/tests/api-core-tests/tests/system-status/system-status-crud.test.js +++ b/plugins/woocommerce/tests/api-core-tests/tests/system-status/system-status-crud.test.js @@ -550,7 +550,7 @@ test.describe('System Status API tests', () => { test('can retrieve a system status tool', async ({ request }) => { - // call API to retrieve a system staus tool + // call API to retrieve a system status tool const response = await request.get('/wp-json/wc/v3/system_status/tools/clear_transients'); const responseJSON = await response.json(); expect(response.status()).toEqual(200); diff --git a/plugins/woocommerce/tests/e2e-pw/README.md b/plugins/woocommerce/tests/e2e-pw/README.md index 51e62700679..93acf0a7fed 100644 --- a/plugins/woocommerce/tests/e2e-pw/README.md +++ b/plugins/woocommerce/tests/e2e-pw/README.md @@ -74,7 +74,7 @@ If you would like to customize the `PHP`, `WordPress` or `WooCommerce` versions - `WC_VERSION` - Acceptable versions can be found on the [WooCommerce Releases](https://github.com/woocommerce/woocommerce/releases) page - `PHP` - - Any PHP version you see it. Please note that WooCommerce requries a minimum of PHP 7.2. + - Any PHP version you see it. Please note that WooCommerce requires a minimum of PHP 7.2. **Example** @@ -82,7 +82,7 @@ The command below will create and environment with WordPress version 6.2, WooCom `UPDATE_WP_JSON_FILE=1 WP_VERSION=6.2 WC_TEST_VERSION=7.5.1 PHP_VERSION=8.2 pnpm run env:test` -If you'd like to run with the default configuation, simply remove the `UPDATE_WP_JSON_FILE`. +If you'd like to run with the default configuration, simply remove the `UPDATE_WP_JSON_FILE`. For more information how to configure the test environment for `wp-env`, please checkout the [documentation](https://github.com/WordPress/gutenberg/tree/trunk/packages/env) documentation. diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/page-loads.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/page-loads.spec.js index 0093cf09ed8..76ba594c319 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/merchant/page-loads.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/page-loads.spec.js @@ -1,6 +1,6 @@ const { test, expect } = require( '@playwright/test' ); -// a represenation of the menu structure for WC +// a representation of the menu structure for WC const wcPages = [ { name: 'WooCommerce', diff --git a/plugins/woocommerce/tests/e2e-pw/tests/shopper/variable-product-updates.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/shopper/variable-product-updates.spec.js index 9f31e198b8b..869d563228b 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/shopper/variable-product-updates.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/shopper/variable-product-updates.spec.js @@ -174,7 +174,7 @@ test.describe( 'Shopper > Update variable product', () => { ).toContainText( productPrice ); } ); - test( 'Shopper can change attributes to combination with dimentions and weight', async ( { + test( 'Shopper can change attributes to combination with dimensions and weight', async ( { page, } ) => { await page.goto( `product/${ slug }` ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/cart/cart.php b/plugins/woocommerce/tests/legacy/unit-tests/cart/cart.php index f0e27b38d9f..80cc91f8438 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/cart/cart.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/cart/cart.php @@ -2199,7 +2199,7 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { /** * Test that adding a variation via URL parameter succeeds when some attributes belong to the - * variation and others are specificed via URL parameter. + * variation and others are specified via URL parameter. */ public function test_add_variation_by_url_with_valid_attribute() { add_filter( 'woocommerce_add_to_cart_redirect', '__return_false' ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/coupon/data.php b/plugins/woocommerce/tests/legacy/unit-tests/coupon/data.php index 13f229b97cd..853bff061e0 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/coupon/data.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/coupon/data.php @@ -30,7 +30,7 @@ class WC_Tests_Coupon_Data extends WC_Unit_Test_Case { * @since 3.0.0 */ public function test_coupon_backwards_compat_props_use_correct_getters() { - // Accessing properties directly will throw some wanted deprected notices + // Accessing properties directly will throw some wanted deprecated notices // So we need to let PHPUnit know we are expecting them and it's fine to continue $legacy_keys = array( 'id', diff --git a/plugins/woocommerce/tests/legacy/unit-tests/customer/crud.php b/plugins/woocommerce/tests/legacy/unit-tests/customer/crud.php index 6b09a159d7d..ffc37b660ba 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/customer/crud.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/customer/crud.php @@ -118,7 +118,7 @@ class WC_Tests_CustomerCRUD extends WC_Unit_Test_Case { */ public function test_customer_backwards_compat() { // Properties. - // Accessing properties directly will throw some wanted deprected notices + // Accessing properties directly will throw some wanted deprecated notices // So we need to let PHPUnit know we are expecting them and it's fine to continue $legacy_keys = array( 'id', diff --git a/plugins/woocommerce/tests/legacy/unit-tests/email/emails.php b/plugins/woocommerce/tests/legacy/unit-tests/email/emails.php index 40a6b3a6333..80664a6944b 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/email/emails.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/email/emails.php @@ -51,7 +51,7 @@ class WC_Tests_WC_Emails extends WC_Unit_Test_Case { } /** - * Test that we remove elemets with style display none from html mails. + * Test that we remove elements with style display none from html mails. */ public function test_remove_display_none_elements() { $email = new WC_Email(); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/libraries/class-wc-mock-background-process.php b/plugins/woocommerce/tests/legacy/unit-tests/libraries/class-wc-mock-background-process.php index eab4269c3c7..2cc6da806d9 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/libraries/class-wc-mock-background-process.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/libraries/class-wc-mock-background-process.php @@ -60,7 +60,7 @@ class WC_Mock_Background_Process extends WC_Background_Process { * @return bool */ protected function task( $item ) { - // We sleep for 5 seconds to mimic a long running tast to complete some tests. + // We sleep for 5 seconds to mimic a long running task to complete some tests. sleep( 5 ); update_option( $item['mock_key'], $item['mock_value'] ); return false; diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-orders.php b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-orders.php index 9073011470f..9409e2088ed 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-orders.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order/class-wc-tests-orders.php @@ -53,7 +53,7 @@ class WC_Tests_Orders extends WC_Unit_Test_Case { } /** - * Test shipping is added and rounded correctly when addedd to total. + * Test shipping is added and rounded correctly when added to total. * * @throws WC_Data_Exception When lines cannot be added to order. */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php b/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php index a5306b1544e..4e7f5d20a70 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/order/coupons.php @@ -191,7 +191,7 @@ class WC_Tests_Order_Coupons extends WC_Unit_Test_Case { $this->assertEquals( '799.00', $order->get_total(), $order->get_total() ); /** - * Discount should be based on subtotal unless coupons apply sequencially. + * Discount should be based on subtotal unless coupons apply sequentially. * * Coupon will therefore discount 200. Compare the total without tax so we can compare the ex tax price and avoid rounding mishaps. */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php b/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php index 586392ac3a8..d6359bb91de 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/product/data-store.php @@ -681,7 +681,7 @@ class WC_Tests_Product_Data_Store extends WC_Unit_Test_Case { // Check the variation with a multiword attribute name. $this->assertEquals( 'color: Green, mounting-plate: galaxy-s6, support: one-year', $multiword_attribute_variation->get_attribute_summary() ); - // Add atributes to parent so that they are loaded correctly for variation. + // Add attributes to parent so that they are loaded correctly for variation. $attribute_1 = new WC_Product_Attribute(); $attribute_1->set_name( 'color' ); $attribute_1->set_options( array( 'Green', 'Blue' ) ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php index 1bd00c5c637..8c19b7e27a6 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/payment-gateways.php @@ -247,7 +247,7 @@ class Payment_Gateways extends WC_REST_Unit_Test_Case { $this->assertEquals( 'woo@woo.local', $paypal['settings']['email']['value'] ); $this->assertEquals( 'yes', $paypal['settings']['testmode']['value'] ); - // Test bogus paramter. + // Test bogus parameter. $request = new WP_REST_Request( 'POST', '/wc/v3/payment_gateways/paypal' ); $request->set_body_params( array( diff --git a/plugins/woocommerce/tests/legacy/unit-tests/tax/tax.php b/plugins/woocommerce/tests/legacy/unit-tests/tax/tax.php index 2f09f85235f..f0124d823d2 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/tax/tax.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/tax/tax.php @@ -1,6 +1,6 @@ queue->actions = array(); - // Force a failure by sabotaging the query run after retreiving order coupons. + // Force a failure by sabotaging the query run after retrieving order coupons. add_filter( 'query', array( $this, 'filter_order_query' ) ); // Initiate sync. diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php index b70e973b83f..b40e02390ea 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-import.php @@ -85,7 +85,7 @@ class WC_Admin_Tests_API_Reports_Import extends WC_REST_Unit_Test_Case { } /** - * Test the import paramaters. + * Test the import parameters. */ public function test_import_params() { global $wpdb; diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-orders.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-orders.php index 719bd74c02b..19478477f3a 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-orders.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/api/reports-orders.php @@ -184,8 +184,8 @@ class WC_Admin_Tests_API_Reports_Orders extends WC_REST_Unit_Test_Case { $bad_args = array( 'not an array!', // Not an array. array( 1, 2, 3 ), // Not a tuple. - array( -1, $small_term->term_id ), // Invaid attribute ID. - array( $size_attr_id, -1 ), // Invaid term ID. + array( -1, $small_term->term_id ), // Invalid attribute ID. + array( $size_attr_id, -1 ), // Invalid term ID. ); foreach ( $bad_args as $bad_arg ) { diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/class-wc-tests-shipping-label-banner-display-rules.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/class-wc-tests-shipping-label-banner-display-rules.php index 9744f57fc97..e0daecd2d80 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/class-wc-tests-shipping-label-banner-display-rules.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/class-wc-tests-shipping-label-banner-display-rules.php @@ -20,7 +20,7 @@ class WC_Admin_Tests_Shipping_Label_Banner_Display_Rules extends WC_Unit_Test_Ca private $valid_jetpack_version = '4.4'; /** - * Stores the default WordPress options stored in teh database. + * Stores the default WordPress options stored in the database. * * @var array */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php index 0d57109a7b8..a7c8e931ae5 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task-list.php @@ -409,7 +409,7 @@ class WC_Admin_Tests_OnboardingTasks_TaskList extends WC_Unit_Test_Case { } /** - * Test that the list ID is retreived. + * Test that the list ID is retrieved. */ public function test_get_list_id() { $this->assertEquals( 'setup', $this->list->get_list_id() ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task.php index bebd752a96f..6bfee646306 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/task.php @@ -296,7 +296,7 @@ class WC_Admin_Tests_OnboardingTasks_Task extends WC_Unit_Test_Case { } /** - * Test that the parent list ID is retreived. + * Test that the parent list ID is retrieved. */ public function test_get_list_id() { $task = new TestTask( diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/test-task.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/test-task.php index 262a9503305..f5c840bdb7a 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/test-task.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/test-task.php @@ -79,7 +79,7 @@ class TestTask extends Task { } /** - * Additonal info. + * Additional info. * * @return string */ diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/payment-gateway-suggestions/evaluate-suggestion.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/payment-gateway-suggestions/evaluate-suggestion.php index 89443db9cb7..25063d26ed3 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/payment-gateway-suggestions/evaluate-suggestion.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/payment-gateway-suggestions/evaluate-suggestion.php @@ -1,6 +1,6 @@ **_Note: It’s important to note to be very careful when adding load to a scenario. By accident a dangerous amount of load could be ran aginst the test environment that could effectively be like a denial-of-service attack on the test environment. Also important to consider any other consequences of running large load such as triggering of emails._** +>**_Note: It’s important to note to be very careful when adding load to a scenario. By accident a dangerous amount of load could be ran against the test environment that could effectively be like a denial-of-service attack on the test environment. Also important to consider any other consequences of running large load such as triggering of emails._** To execute a test scenario (for example `tests/simple-all-requests.js`). @@ -202,7 +202,7 @@ Create a custom Grafana dashboard using [these instructions](https://k6.io/docs/ k6 tests rely on HTTP requests in order to test the backend. They can either be constructed from scratch, by using the k6 recorder, or by converting a HAR file. -The k6 recorder is a browser extension which captures http requests generated as you perform actions in a tab. It generates a test with all the HTTP requests from your actions which can then be modified to make it execuatable. +The k6 recorder is a browser extension which captures http requests generated as you perform actions in a tab. It generates a test with all the HTTP requests from your actions which can then be modified to make it executable. Alternatively any application which captures HTTP requests can be used to figure out the requests to include in a test such as the network section within browser developer tools. @@ -246,9 +246,9 @@ Groups are used to organize common logic in the test scripts and can help with t Checks are like asserts but they don’t stop the tests if they record a failure (for example in a load test with 1000s of iterations of a request this allows for an isolated flakey iteration to not stop test execution). -All requests have had checks for at least a `200` http status repsonse added and most also have an additional check for a string contained in the response body. +All requests have had checks for at least a `200` http status response added and most also have an additional check for a string contained in the response body. --- ## Other Resources -[k6 documention](https://k6.io/docs/) is a very useful resource for test creation and execution. +[k6 documentation](https://k6.io/docs/) is a very useful resource for test creation and execution. diff --git a/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-functions-test.php b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-functions-test.php index eb194b0cc39..f90fe936abc 100644 --- a/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-functions-test.php @@ -283,7 +283,7 @@ class WC_Admin_Functions_Test extends \WC_Unit_Test_Case { $product = wc_get_product( $product->get_id() ); - // Stocks should have been increased to orignal amount minus the partially refunded stock. + // Stocks should have been increased to original amount minus the partially refunded stock. $this->assertEquals( 95, $product->get_stock_quantity() ); } diff --git a/plugins/woocommerce/tests/php/includes/admin/helper/class-wc-helper-test.php b/plugins/woocommerce/tests/php/includes/admin/helper/class-wc-helper-test.php index 7d591a49e60..a59e088cca6 100644 --- a/plugins/woocommerce/tests/php/includes/admin/helper/class-wc-helper-test.php +++ b/plugins/woocommerce/tests/php/includes/admin/helper/class-wc-helper-test.php @@ -6,7 +6,7 @@ class WC_Helper_Test extends \WC_Unit_Test_Case { /** - * Test that woo plugins are loaded correctly even if incorrect cache is intially set. + * Test that woo plugins are loaded correctly even if incorrect cache is initially set. */ public function test_get_local_woo_plugins_without_woo_header_cache() { $woocommerce_key = 'sample-woo-plugin.php'; diff --git a/plugins/woocommerce/tests/php/includes/wc-stock-functions-tests.php b/plugins/woocommerce/tests/php/includes/wc-stock-functions-tests.php index 4e04dc29d29..615e5309350 100644 --- a/plugins/woocommerce/tests/php/includes/wc-stock-functions-tests.php +++ b/plugins/woocommerce/tests/php/includes/wc-stock-functions-tests.php @@ -121,7 +121,7 @@ class WC_Stock_Functions_Tests extends \WC_Unit_Test_Case { } /** - * Test inventory count after order status transtions which restores stock to another status which reduces stock. + * Test inventory count after order status transitions which restores stock to another status which reduces stock. * Stock should not have reduced, but will reduce after transition. */ public function test_status_transition_stock_restore_to_stock_reduce() { diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsListTableTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsListTableTest.php index 264763239f8..0077d5bad8a 100644 --- a/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsListTableTest.php +++ b/plugins/woocommerce/tests/php/src/Internal/Admin/ProductReviews/ReviewsListTableTest.php @@ -89,7 +89,7 @@ class ReviewsListTableTest extends WC_Unit_Test_Case { * * @param string $review_status The review status. * @param string $column_name The current column name being output. - * @param string $primary_column The primary colum name. + * @param string $primary_column The primary column name. * @param bool $user_can_edit Whether the current user can edit reviews. * * @return void diff --git a/plugins/woocommerce/tests/php/src/Proxies/MockableLegacyProxyTest.php b/plugins/woocommerce/tests/php/src/Proxies/MockableLegacyProxyTest.php index 39d033365f7..ec0f2761a68 100644 --- a/plugins/woocommerce/tests/php/src/Proxies/MockableLegacyProxyTest.php +++ b/plugins/woocommerce/tests/php/src/Proxies/MockableLegacyProxyTest.php @@ -204,7 +204,7 @@ class MockableLegacyProxyTest extends \WC_Unit_Test_Case { } /** - * @testdox 'get_global' can be used to reigster replacements for globals. + * @testdox 'get_global' can be used to register replacements for globals. */ public function test_register_global_mocks_can_be_used_to_replace_globals() { $replacement_wpdb = new \stdClass(); diff --git a/tools/changelogger/class-package-formatter.php b/tools/changelogger/class-package-formatter.php index 03add787d82..5dd231f58de 100644 --- a/tools/changelogger/class-package-formatter.php +++ b/tools/changelogger/class-package-formatter.php @@ -48,7 +48,7 @@ class Package_Formatter extends Formatter implements FormatterPlugin { * @return string Link to the version's release. */ public function getReleaseLink( $version ) { - // Catpure anything past /woocommerce in the current working directory. + // Capture anything past /woocommerce in the current working directory. preg_match( '/\/packages\/js\/(.+)/', getcwd(), $path ); if ( ! count( $path ) ) { diff --git a/tools/monorepo-merge/src/commands/transfer-issues/index.ts b/tools/monorepo-merge/src/commands/transfer-issues/index.ts index 429789f0d0f..cee53398be1 100644 --- a/tools/monorepo-merge/src/commands/transfer-issues/index.ts +++ b/tools/monorepo-merge/src/commands/transfer-issues/index.ts @@ -76,7 +76,7 @@ export default class TransferIssues extends Command { if ( numberOfIssues === 0 ) { this.log( - 'There are no issues to trasnfer that match this query!' + 'There are no issues to transfer that match this query!' ); this.exit( 0 ); } diff --git a/tools/storybook/wordpress/css/about-rtl.css b/tools/storybook/wordpress/css/about-rtl.css index 2c5efe2afbd..39b9b1f92e6 100644 --- a/tools/storybook/wordpress/css/about-rtl.css +++ b/tools/storybook/wordpress/css/about-rtl.css @@ -287,7 +287,7 @@ grid-column-start: 4; } -/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ +/* Any columns following a section header need to be explicitly put into the second row, for IE support. */ .about__section.has-2-columns .is-section-header ~ .column, .about__section.has-3-columns .is-section-header ~ .column, .about__section.has-4-columns .is-section-header ~ .column, diff --git a/tools/storybook/wordpress/css/about.css b/tools/storybook/wordpress/css/about.css index eff4e2940cb..25cd1eb0ecc 100644 --- a/tools/storybook/wordpress/css/about.css +++ b/tools/storybook/wordpress/css/about.css @@ -286,7 +286,7 @@ grid-column-start: 4; } -/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ +/* Any columns following a section header need to be explicitly put into the second row, for IE support. */ .about__section.has-2-columns .is-section-header ~ .column, .about__section.has-3-columns .is-section-header ~ .column, .about__section.has-4-columns .is-section-header ~ .column, diff --git a/tools/storybook/wordpress/css/list-tables-rtl.css b/tools/storybook/wordpress/css/list-tables-rtl.css index 47375209462..3a0285f70e8 100644 --- a/tools/storybook/wordpress/css/list-tables-rtl.css +++ b/tools/storybook/wordpress/css/list-tables-rtl.css @@ -872,7 +872,7 @@ tr:hover .row-actions, tr.inline-edit-row td { padding: 0; - /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ + /* Prevents the focus style on .inline-edit-wrapper from being cut-off */ position: relative; } diff --git a/tools/storybook/wordpress/css/list-tables.css b/tools/storybook/wordpress/css/list-tables.css index 84e390d83eb..c95f5a283fe 100644 --- a/tools/storybook/wordpress/css/list-tables.css +++ b/tools/storybook/wordpress/css/list-tables.css @@ -871,7 +871,7 @@ tr:hover .row-actions, tr.inline-edit-row td { padding: 0; - /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ + /* Prevents the focus style on .inline-edit-wrapper from being cut-off */ position: relative; } From 880459ee9a5cea7a67fdeb9e30e784b5c0829788 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 8 May 2023 17:19:12 +0800 Subject: [PATCH 067/249] Change product-category-metabox scripts/styles enqueue logic (#38076) * Update product-category-metabox JS/style enqueue logic Change to only enqueue on product pages, not all admin pages. * Add changelog --- .../changelog/update-change-product-category-metabox-enqueue | 4 ++++ .../Admin/Features/AsyncProductEditorCategoryField/Init.php | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-change-product-category-metabox-enqueue diff --git a/plugins/woocommerce/changelog/update-change-product-category-metabox-enqueue b/plugins/woocommerce/changelog/update-change-product-category-metabox-enqueue new file mode 100644 index 00000000000..b79b4c21182 --- /dev/null +++ b/plugins/woocommerce/changelog/update-change-product-category-metabox-enqueue @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Change product-category-metabox JS/style enqueue logic diff --git a/plugins/woocommerce/src/Admin/Features/AsyncProductEditorCategoryField/Init.php b/plugins/woocommerce/src/Admin/Features/AsyncProductEditorCategoryField/Init.php index a33411d3dee..89b53f0ac00 100644 --- a/plugins/woocommerce/src/Admin/Features/AsyncProductEditorCategoryField/Init.php +++ b/plugins/woocommerce/src/Admin/Features/AsyncProductEditorCategoryField/Init.php @@ -46,9 +46,10 @@ class Init { * Enqueue scripts needed for the product form block editor. */ public function enqueue_scripts() { - if ( ! PageController::is_admin_or_embed_page() ) { + if ( ! PageController::is_embed_page() ) { return; } + WCAdminAssets::register_script( 'wp-admin-scripts', 'product-category-metabox', true ); wp_localize_script( 'wc-admin-product-category-metabox', @@ -66,7 +67,7 @@ class Init { * Enqueue styles needed for the rich text editor. */ public function enqueue_styles() { - if ( ! PageController::is_admin_or_embed_page() ) { + if ( ! PageController::is_embed_page() ) { return; } $version = Constants::get_constant( 'WC_VERSION' ); From 5ab5afcb6f77a476ba1b8108a5950b8adcd818d5 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 8 May 2023 21:06:13 +0800 Subject: [PATCH 068/249] Fix pnpm --filter path in check-changelogger error message (#38157) Fix pnpm command in check-changelogger error message --- tools/monorepo/check-changelogger-use.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/monorepo/check-changelogger-use.php b/tools/monorepo/check-changelogger-use.php index b9f07dd3c83..e298c8f91c0 100644 --- a/tools/monorepo/check-changelogger-use.php +++ b/tools/monorepo/check-changelogger-use.php @@ -216,7 +216,7 @@ foreach ( $touched_projects as $slug => $files ) { } elseif ( getenv( 'CI' ) ) { printf( "---\n" ); // Bracket message containing newlines for better visibility in GH's logs. printf( - "::error::Project %s is being changed, but no change file in %s is touched!%%0A%%0AUse `pnpm --filter=%s run changelog add` to add a change file.\n", + "::error::Project %s is being changed, but no change file in %s is touched!%%0A%%0AUse `pnpm --filter=./%s run changelog add` to add a change file.\n", $slug, "$slug/{$changelogger_projects[ $slug ]['changes-dir']}/", $slug From c265db936e05d8fe6fd7d465a96afab479ef6754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Mon, 8 May 2023 10:05:13 -0400 Subject: [PATCH 069/249] Add Sale price validation (#38078) * Create sale-price block * Create regular-price block * Add changelog files * Fix some typos in field validator names --- .../js/product-editor/changelog/add-37985 | 4 + .../js/product-editor/src/blocks/index.ts | 2 + .../src/blocks/regular-price/block.json | 29 ++++ .../src/blocks/regular-price/edit.tsx | 126 ++++++++++++++++++ .../src/blocks/regular-price/editor.scss | 11 ++ .../src/blocks/regular-price/index.ts | 28 ++++ .../src/blocks/regular-price/types.ts | 9 ++ .../src/blocks/sale-price/block.json | 29 ++++ .../src/blocks/sale-price/edit.tsx | 104 +++++++++++++++ .../src/blocks/sale-price/editor.scss | 11 ++ .../src/blocks/sale-price/index.ts | 28 ++++ .../src/blocks/sale-price/types.ts | 9 ++ .../js/product-editor/src/blocks/style.scss | 2 + plugins/woocommerce/changelog/add-37985 | 4 + .../includes/class-wc-post-types.php | 10 +- .../ProductBlockEditor/BlockRegistry.php | 2 + 16 files changed, 402 insertions(+), 6 deletions(-) create mode 100644 packages/js/product-editor/changelog/add-37985 create mode 100644 packages/js/product-editor/src/blocks/regular-price/block.json create mode 100644 packages/js/product-editor/src/blocks/regular-price/edit.tsx create mode 100644 packages/js/product-editor/src/blocks/regular-price/editor.scss create mode 100644 packages/js/product-editor/src/blocks/regular-price/index.ts create mode 100644 packages/js/product-editor/src/blocks/regular-price/types.ts create mode 100644 packages/js/product-editor/src/blocks/sale-price/block.json create mode 100644 packages/js/product-editor/src/blocks/sale-price/edit.tsx create mode 100644 packages/js/product-editor/src/blocks/sale-price/editor.scss create mode 100644 packages/js/product-editor/src/blocks/sale-price/index.ts create mode 100644 packages/js/product-editor/src/blocks/sale-price/types.ts create mode 100644 plugins/woocommerce/changelog/add-37985 diff --git a/packages/js/product-editor/changelog/add-37985 b/packages/js/product-editor/changelog/add-37985 new file mode 100644 index 00000000000..fc2c2d5017d --- /dev/null +++ b/packages/js/product-editor/changelog/add-37985 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add Sale price validation#37985 diff --git a/packages/js/product-editor/src/blocks/index.ts b/packages/js/product-editor/src/blocks/index.ts index cb3b4298c0d..97029b5a6cf 100644 --- a/packages/js/product-editor/src/blocks/index.ts +++ b/packages/js/product-editor/src/blocks/index.ts @@ -9,6 +9,8 @@ export { init as initSku } from './inventory-sku'; export { init as initName } from './name'; export { init as initPricing } from './pricing'; export { init as initRadio } from './radio'; +export { init as initRegularPrice } from './regular-price'; +export { init as initSalePrice } from './sale-price'; export { init as initScheduleSale } from './schedule-sale'; export { init as initSection } from './section'; export { init as initShippingDimensions } from './shipping-dimensions'; diff --git a/packages/js/product-editor/src/blocks/regular-price/block.json b/packages/js/product-editor/src/blocks/regular-price/block.json new file mode 100644 index 00000000000..70c3c995030 --- /dev/null +++ b/packages/js/product-editor/src/blocks/regular-price/block.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 2, + "name": "woocommerce/product-regular-price-field", + "description": "A product price block with currency display.", + "title": "Product regular price", + "category": "widgets", + "keywords": [ "products", "price" ], + "textdomain": "default", + "attributes": { + "label": { + "type": "string", + "__experimentalRole": "content" + }, + "help": { + "type": "string" + } + }, + "supports": { + "align": false, + "html": false, + "multiple": false, + "reusable": false, + "inserter": false, + "lock": false, + "__experimentalToolbar": false + }, + "editorStyle": "file:./editor.css" +} diff --git a/packages/js/product-editor/src/blocks/regular-price/edit.tsx b/packages/js/product-editor/src/blocks/regular-price/edit.tsx new file mode 100644 index 00000000000..96cfc495a60 --- /dev/null +++ b/packages/js/product-editor/src/blocks/regular-price/edit.tsx @@ -0,0 +1,126 @@ +/** + * External dependencies + */ +import classNames from 'classnames'; +import { Link } from '@woocommerce/components'; +import { CurrencyContext } from '@woocommerce/currency'; +import { getNewPath } from '@woocommerce/navigation'; +import { recordEvent } from '@woocommerce/tracks'; +import { useBlockProps } from '@wordpress/block-editor'; +import { BlockEditProps } from '@wordpress/blocks'; +import { useInstanceId } from '@wordpress/compose'; +import { useEntityProp } from '@wordpress/core-data'; +import { + createElement, + useContext, + createInterpolateElement, +} from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { + BaseControl, + // @ts-expect-error `__experimentalInputControl` does exist. + __experimentalInputControl as InputControl, +} from '@wordpress/components'; + +/** + * Internal dependencies + */ +import { useCurrencyInputProps } from '../../hooks/use-currency-input-props'; +import { formatCurrencyDisplayValue } from '../../utils'; +import { SalePriceBlockAttributes } from './types'; +import { useValidation } from '../../hooks/use-validation'; + +export function Edit( { + attributes, +}: BlockEditProps< SalePriceBlockAttributes > ) { + const blockProps = useBlockProps(); + const { label, help } = attributes; + const [ regularPrice, setRegularPrice ] = useEntityProp< string >( + 'postType', + 'product', + 'regular_price' + ); + const [ salePrice ] = useEntityProp< string >( + 'postType', + 'product', + 'sale_price' + ); + const context = useContext( CurrencyContext ); + const { getCurrencyConfig, formatAmount } = context; + const currencyConfig = getCurrencyConfig(); + const inputProps = useCurrencyInputProps( { + value: regularPrice, + setValue: setRegularPrice, + } ); + + const interpolatedHelp = help + ? createInterpolateElement( help, { + PricingTab: ( + { + recordEvent( 'product_pricing_help_click' ); + } } + /> + ), + } ) + : null; + + const regularPriceId = useInstanceId( + BaseControl, + 'wp-block-woocommerce-product-regular-price-field' + ) as string; + + const regularPriceValidationError = useValidation( + 'product/regular_price', + function regularPriceValidator() { + const listPrice = Number.parseFloat( regularPrice ); + if ( listPrice ) { + if ( listPrice < 0 ) { + return __( + 'List price must be greater than or equals to zero.', + 'woocommerce' + ); + } + if ( + salePrice && + listPrice <= Number.parseFloat( salePrice ) + ) { + return __( + 'List price must be greater than the sale price.', + 'woocommerce' + ); + } + } + } + ); + + return ( +
+ + + +
+ ); +} diff --git a/packages/js/product-editor/src/blocks/regular-price/editor.scss b/packages/js/product-editor/src/blocks/regular-price/editor.scss new file mode 100644 index 00000000000..9115cf687cd --- /dev/null +++ b/packages/js/product-editor/src/blocks/regular-price/editor.scss @@ -0,0 +1,11 @@ +.wp-block-woocommerce-product-regular-price-field { + .components-currency-control { + .components-input-control__prefix { + color: $gray-700; + } + + .components-input-control__input { + text-align: right; + } + } +} \ No newline at end of file diff --git a/packages/js/product-editor/src/blocks/regular-price/index.ts b/packages/js/product-editor/src/blocks/regular-price/index.ts new file mode 100644 index 00000000000..f838788b632 --- /dev/null +++ b/packages/js/product-editor/src/blocks/regular-price/index.ts @@ -0,0 +1,28 @@ +/** + * External dependencies + */ +import { BlockConfiguration } from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import { initBlock } from '../../utils/init-blocks'; +import blockConfiguration from './block.json'; +import { Edit } from './edit'; +import { SalePriceBlockAttributes } from './types'; + +const { name, ...metadata } = + blockConfiguration as BlockConfiguration< SalePriceBlockAttributes >; + +export { metadata, name }; + +export const settings: Partial< + BlockConfiguration< SalePriceBlockAttributes > +> = { + example: {}, + edit: Edit, +}; + +export function init() { + return initBlock( { name, metadata, settings } ); +} diff --git a/packages/js/product-editor/src/blocks/regular-price/types.ts b/packages/js/product-editor/src/blocks/regular-price/types.ts new file mode 100644 index 00000000000..99ceaa60e80 --- /dev/null +++ b/packages/js/product-editor/src/blocks/regular-price/types.ts @@ -0,0 +1,9 @@ +/** + * External dependencies + */ +import { BlockAttributes } from '@wordpress/blocks'; + +export interface SalePriceBlockAttributes extends BlockAttributes { + label: string; + help?: string; +} diff --git a/packages/js/product-editor/src/blocks/sale-price/block.json b/packages/js/product-editor/src/blocks/sale-price/block.json new file mode 100644 index 00000000000..51babacca28 --- /dev/null +++ b/packages/js/product-editor/src/blocks/sale-price/block.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 2, + "name": "woocommerce/product-sale-price-field", + "description": "A product price block with currency display.", + "title": "Product sale price", + "category": "widgets", + "keywords": [ "products", "price" ], + "textdomain": "default", + "attributes": { + "label": { + "type": "string", + "__experimentalRole": "content" + }, + "help": { + "type": "string" + } + }, + "supports": { + "align": false, + "html": false, + "multiple": false, + "reusable": false, + "inserter": false, + "lock": false, + "__experimentalToolbar": false + }, + "editorStyle": "file:./editor.css" +} diff --git a/packages/js/product-editor/src/blocks/sale-price/edit.tsx b/packages/js/product-editor/src/blocks/sale-price/edit.tsx new file mode 100644 index 00000000000..b4104aedd34 --- /dev/null +++ b/packages/js/product-editor/src/blocks/sale-price/edit.tsx @@ -0,0 +1,104 @@ +/** + * External dependencies + */ +import classNames from 'classnames'; +import { CurrencyContext } from '@woocommerce/currency'; +import { useBlockProps } from '@wordpress/block-editor'; +import { BlockEditProps } from '@wordpress/blocks'; +import { useInstanceId } from '@wordpress/compose'; +import { useEntityProp } from '@wordpress/core-data'; +import { createElement, useContext } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { + BaseControl, + // @ts-expect-error `__experimentalInputControl` does exist. + __experimentalInputControl as InputControl, +} from '@wordpress/components'; + +/** + * Internal dependencies + */ +import { useCurrencyInputProps } from '../../hooks/use-currency-input-props'; +import { formatCurrencyDisplayValue } from '../../utils'; +import { SalePriceBlockAttributes } from './types'; +import { useValidation } from '../../hooks/use-validation'; + +export function Edit( { + attributes, +}: BlockEditProps< SalePriceBlockAttributes > ) { + const blockProps = useBlockProps(); + const { label, help } = attributes; + const [ regularPrice ] = useEntityProp< string >( + 'postType', + 'product', + 'regular_price' + ); + const [ salePrice, setSalePrice ] = useEntityProp< string >( + 'postType', + 'product', + 'sale_price' + ); + const context = useContext( CurrencyContext ); + const { getCurrencyConfig, formatAmount } = context; + const currencyConfig = getCurrencyConfig(); + const inputProps = useCurrencyInputProps( { + value: salePrice, + setValue: setSalePrice, + } ); + + const salePriceId = useInstanceId( + BaseControl, + 'wp-block-woocommerce-product-sale-price-field' + ) as string; + + const salePriceValidationError = useValidation( + 'product/sale_price', + function salePriceValidator() { + if ( salePrice ) { + if ( Number.parseFloat( salePrice ) < 0 ) { + return __( + 'Sale price must be greater than or equals to zero.', + 'woocommerce' + ); + } + const listPrice = Number.parseFloat( regularPrice ); + if ( + ! listPrice || + listPrice <= Number.parseFloat( salePrice ) + ) { + return __( + 'Sale price must be lower than the list price.', + 'woocommerce' + ); + } + } + } + ); + + return ( +
+ + + +
+ ); +} diff --git a/packages/js/product-editor/src/blocks/sale-price/editor.scss b/packages/js/product-editor/src/blocks/sale-price/editor.scss new file mode 100644 index 00000000000..5d1cf4d7d84 --- /dev/null +++ b/packages/js/product-editor/src/blocks/sale-price/editor.scss @@ -0,0 +1,11 @@ +.wp-block-woocommerce-product-sale-price-field { + .components-currency-control { + .components-input-control__prefix { + color: $gray-700; + } + + .components-input-control__input { + text-align: right; + } + } +} \ No newline at end of file diff --git a/packages/js/product-editor/src/blocks/sale-price/index.ts b/packages/js/product-editor/src/blocks/sale-price/index.ts new file mode 100644 index 00000000000..f838788b632 --- /dev/null +++ b/packages/js/product-editor/src/blocks/sale-price/index.ts @@ -0,0 +1,28 @@ +/** + * External dependencies + */ +import { BlockConfiguration } from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import { initBlock } from '../../utils/init-blocks'; +import blockConfiguration from './block.json'; +import { Edit } from './edit'; +import { SalePriceBlockAttributes } from './types'; + +const { name, ...metadata } = + blockConfiguration as BlockConfiguration< SalePriceBlockAttributes >; + +export { metadata, name }; + +export const settings: Partial< + BlockConfiguration< SalePriceBlockAttributes > +> = { + example: {}, + edit: Edit, +}; + +export function init() { + return initBlock( { name, metadata, settings } ); +} diff --git a/packages/js/product-editor/src/blocks/sale-price/types.ts b/packages/js/product-editor/src/blocks/sale-price/types.ts new file mode 100644 index 00000000000..99ceaa60e80 --- /dev/null +++ b/packages/js/product-editor/src/blocks/sale-price/types.ts @@ -0,0 +1,9 @@ +/** + * External dependencies + */ +import { BlockAttributes } from '@wordpress/blocks'; + +export interface SalePriceBlockAttributes extends BlockAttributes { + label: string; + help?: string; +} diff --git a/packages/js/product-editor/src/blocks/style.scss b/packages/js/product-editor/src/blocks/style.scss index 16869c3e0f4..87bb061a386 100644 --- a/packages/js/product-editor/src/blocks/style.scss +++ b/packages/js/product-editor/src/blocks/style.scss @@ -6,6 +6,8 @@ @import 'inventory-sku/editor.scss'; @import 'name/editor.scss'; @import 'pricing/editor.scss'; +@import 'regular-price/editor.scss'; +@import 'sale-price/editor.scss'; @import 'schedule-sale/editor.scss'; @import 'section/editor.scss'; @import 'shipping-dimensions/editor.scss'; diff --git a/plugins/woocommerce/changelog/add-37985 b/plugins/woocommerce/changelog/add-37985 new file mode 100644 index 00000000000..fc2c2d5017d --- /dev/null +++ b/plugins/woocommerce/changelog/add-37985 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add Sale price validation#37985 diff --git a/plugins/woocommerce/includes/class-wc-post-types.php b/plugins/woocommerce/includes/class-wc-post-types.php index 03d0f5535ea..bb26ec91e1c 100644 --- a/plugins/woocommerce/includes/class-wc-post-types.php +++ b/plugins/woocommerce/includes/class-wc-post-types.php @@ -404,7 +404,7 @@ class WC_Post_Types { ), array( array( - 'woocommerce/product-pricing-field', + 'woocommerce/product-regular-price-field', array( 'name' => 'regular_price', 'label' => __( 'List price', 'woocommerce' ), @@ -420,9 +420,8 @@ class WC_Post_Types { ), array( array( - 'woocommerce/product-pricing-field', + 'woocommerce/product-sale-price-field', array( - 'name' => 'sale_price', 'label' => __( 'Sale price', 'woocommerce' ), ), ), @@ -541,7 +540,7 @@ class WC_Post_Types { ), array( array( - 'woocommerce/product-pricing-field', + 'woocommerce/product-regular-price-field', array( 'name' => 'regular_price', 'label' => __( 'List price', 'woocommerce' ), @@ -556,9 +555,8 @@ class WC_Post_Types { ), array( array( - 'woocommerce/product-pricing-field', + 'woocommerce/product-sale-price-field', array( - 'name' => 'sale_price', 'label' => __( 'Sale price', 'woocommerce' ), ), ), diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/BlockRegistry.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/BlockRegistry.php index e0c848166ef..3baf0db8e51 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/BlockRegistry.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/BlockRegistry.php @@ -31,6 +31,8 @@ class BlockRegistry { 'woocommerce/product-name-field', 'woocommerce/product-pricing-field', 'woocommerce/product-radio-field', + 'woocommerce/product-regular-price-field', + 'woocommerce/product-sale-price-field', 'woocommerce/product-schedule-sale-fields', 'woocommerce/product-section', 'woocommerce/product-shipping-dimensions-fields', From 7f87c7d1b780297e5691e36cce7fe9685d53e99c Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Mon, 8 May 2023 12:04:14 -0300 Subject: [PATCH 070/249] [Enhancement]: Allow dropdown options recording for WooCommerce Settings (#38035) * Add dropdown recording * Add changelog * Fix lint --- ...9_allow_dropdown_recording_for_wc_settings | 4 +++ .../events/class-wc-settings-tracking.php | 31 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/dev-37989_allow_dropdown_recording_for_wc_settings diff --git a/plugins/woocommerce/changelog/dev-37989_allow_dropdown_recording_for_wc_settings b/plugins/woocommerce/changelog/dev-37989_allow_dropdown_recording_for_wc_settings new file mode 100644 index 00000000000..82e22e14ca0 --- /dev/null +++ b/plugins/woocommerce/changelog/dev-37989_allow_dropdown_recording_for_wc_settings @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Modify 'WC_Settings_Tracking' to allow dropdown options recording for WooCommerce Settings diff --git a/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php b/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php index 46803b1d13a..970ca98f723 100644 --- a/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php +++ b/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php @@ -28,6 +28,21 @@ class WC_Settings_Tracking { */ protected $updated_options = array(); + /** + * List of option names that are dropdown menus. + * + * @var array + */ + protected $dropdown_menu_options = array(); + + + /** + * List of options that have been modified. + * + * @var array + */ + protected $modified_options = array(); + /** * Toggled options. * @@ -61,6 +76,10 @@ class WC_Settings_Tracking { public function add_option_to_list( $option ) { $this->allowed_options[] = $option['id']; + if ( isset( $option['options'] ) ) { + $this->dropdown_menu_options[] = $option['id']; + } + // Delay attaching this action since it could get fired a lot. if ( false === has_action( 'update_option', array( $this, 'track_setting_change' ) ) ) { add_action( 'update_option', array( $this, 'track_setting_change' ), 10, 3 ); @@ -91,8 +110,10 @@ class WC_Settings_Tracking { return; } - // Check and save toggled options. - if ( in_array( $new_value, array( 'yes', 'no' ), true ) && in_array( $old_value, array( 'yes', 'no' ), true ) ) { + if ( in_array( $option_name, $this->dropdown_menu_options, true ) ) { + $this->modified_options[ $option_name ] = $new_value; + } elseif ( in_array( $new_value, array( 'yes', 'no' ), true ) && in_array( $old_value, array( 'yes', 'no' ), true ) ) { + // Save toggled options. $option_state = 'yes' === $new_value ? 'enabled' : 'disabled'; $this->toggled_options[ $option_state ][] = $option_name; } @@ -120,6 +141,12 @@ class WC_Settings_Tracking { } } + if ( ! empty( $this->modified_options ) ) { + foreach ( $this->modified_options as $option_name => $selected_option ) { + $properties[ $option_name ] = $selected_option ?? ''; + } + } + $properties['tab'] = $current_tab ?? ''; $properties['section'] = $current_section ?? ''; From c76203cde5381a2942ad43f63f7e062dccd75a66 Mon Sep 17 00:00:00 2001 From: Joel Thiessen <444632+joelclimbsthings@users.noreply.github.com> Date: Mon, 8 May 2023 10:18:15 -0700 Subject: [PATCH 071/249] Correcting spacing for image gallery block (#38151) * Correcting spacing for image gallery component * Adding changelog --- .../product-editor/changelog/fix-image-section-spacing | 4 ++++ packages/js/product-editor/src/blocks/images/editor.scss | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 packages/js/product-editor/changelog/fix-image-section-spacing diff --git a/packages/js/product-editor/changelog/fix-image-section-spacing b/packages/js/product-editor/changelog/fix-image-section-spacing new file mode 100644 index 00000000000..0075e40523d --- /dev/null +++ b/packages/js/product-editor/changelog/fix-image-section-spacing @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fixing spacing when no images added on image gallery block. diff --git a/packages/js/product-editor/src/blocks/images/editor.scss b/packages/js/product-editor/src/blocks/images/editor.scss index 4bb5af8a006..5ab57eb05e6 100644 --- a/packages/js/product-editor/src/blocks/images/editor.scss +++ b/packages/js/product-editor/src/blocks/images/editor.scss @@ -1,7 +1,4 @@ .wp-block-woocommerce-product-images-field { - .woocommerce-image-gallery { - margin-top: $gap-largest; - } .woocommerce-media-uploader { text-align: left; } @@ -13,6 +10,12 @@ padding: 0; } + &.has-images { + .woocommerce-image-gallery { + margin-top: $gap-largest; + } + } + &:not(.has-images) { .woocommerce-sortable { display: none; From 552806b34a16b0852f2037d5c82a9cb98688a6dc Mon Sep 17 00:00:00 2001 From: AashikP <17475174+AashikP@users.noreply.github.com> Date: Mon, 8 May 2023 23:03:29 +0530 Subject: [PATCH 072/249] Add e2e test for Merchant > Posts > Can create a new post (#38041) * Add create-post.spec.js Create e2e test for Critical Flow: Merchant > Posts > Can create a new post * Fix e2e Merchant Create Post * Force delete created post * Check for Welcome modal - close if exists * Change assertion for Published post confirmation from `check if true` to `check if visible` * Added changelog file * e2e-pw: Create post - replace btoa Replace deprecated function btoa with Buffer function --- .../changelog/e2e-pw-add-merchant-create-post | 4 + .../e2e-pw/tests/merchant/create-post.spec.js | 74 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 plugins/woocommerce/changelog/e2e-pw-add-merchant-create-post create mode 100644 plugins/woocommerce/tests/e2e-pw/tests/merchant/create-post.spec.js diff --git a/plugins/woocommerce/changelog/e2e-pw-add-merchant-create-post b/plugins/woocommerce/changelog/e2e-pw-add-merchant-create-post new file mode 100644 index 00000000000..1be8cca7d69 --- /dev/null +++ b/plugins/woocommerce/changelog/e2e-pw-add-merchant-create-post @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add e2e test for Merchant > Posts > Can create a new post diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-post.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-post.spec.js new file mode 100644 index 00000000000..8b059e56e95 --- /dev/null +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/create-post.spec.js @@ -0,0 +1,74 @@ +const { test, expect, request } = require( '@playwright/test' ); +const { admin } = require( '../../test-data/data' ); + +const postTitle = `Post-${ new Date().getTime().toString() }`; + +test.describe( 'Can create a new post', () => { + test.use( { storageState: process.env.ADMINSTATE } ); + + test.afterAll( async ( { baseURL } ) => { + const base64auth = Buffer.from( + `${ admin.username }:${ admin.password }` + ).toString( 'base64' ); + const wpApi = await request.newContext( { + baseURL: `${ baseURL }/wp-json/wp/v2/`, + extraHTTPHeaders: { + Authorization: `Basic ${ base64auth }`, + }, + } ); + + let response = await wpApi.get( `posts` ); + const allPosts = await response.json(); + + await allPosts.forEach( async ( post ) => { + if ( post.title.rendered === postTitle ) { + response = await wpApi.delete( `posts/${ post.id }`, { + data: { + force: true, + }, + } ); + expect( response.ok() ).toBeTruthy(); + } + } ); + } ); + + test( 'can create new post', async ( { page } ) => { + await page.goto( 'wp-admin/post-new.php' ); + + const welcomeModalVisible = await page + .getByRole( 'heading', { + name: 'Welcome to the block editor', + } ) + .isVisible(); + + if ( welcomeModalVisible ) { + await page.getByRole( 'button', { name: 'Close dialog' } ).click(); + } + + await page + .getByRole( 'textbox', { name: 'Add Title' } ) + .fill( postTitle ); + + await page.getByRole( 'button', { name: 'Add default block' } ).click(); + + await page + .getByRole( 'document', { + name: + 'Empty block; start writing or type forward slash to choose a block', + } ) + .fill( 'Test Post' ); + + await page + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await page + .getByRole( 'region', { name: 'Editor publish' } ) + .getByRole( 'button', { name: 'Publish', exact: true } ) + .click(); + + await expect( + page.getByText( `${ postTitle } is now live.` ) + ).toBeVisible(); + } ); +} ); From 92287f75578ada4a89aad9e5921d19473d8b0fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Mon, 8 May 2023 22:00:21 +0300 Subject: [PATCH 073/249] Make phpcs happy --- plugins/woocommerce/templates/myaccount/downloads.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/templates/myaccount/downloads.php b/plugins/woocommerce/templates/myaccount/downloads.php index fc00fadb3b7..fd4bd9abd2e 100644 --- a/plugins/woocommerce/templates/myaccount/downloads.php +++ b/plugins/woocommerce/templates/myaccount/downloads.php @@ -35,9 +35,9 @@ do_action( 'woocommerce_before_account_downloads', $has_downloads ); ?> - - ' . esc_html__( 'Browse products', 'woocommerce' ) . '', 'notice' ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment ?> From 105137c4060af4880d1e476dd4246c2e8d6bfc5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Mon, 8 May 2023 22:20:48 +0300 Subject: [PATCH 074/249] Add styling for wc-item-meta in order details table --- .../client/legacy/css/twenty-twenty-three.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss index fa60336cd44..af3913b9d43 100644 --- a/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss +++ b/plugins/woocommerce/client/legacy/css/twenty-twenty-three.scss @@ -1019,6 +1019,15 @@ ul.wc-tabs { thead th { text-transform: uppercase; } + + .wc-item-meta { + list-style-type: none; + padding-inline-start: 2rem; + + li > p { + margin-block-start: 0.3rem; + } + } } } From 38db587d1e7b5cf9ac4778b642638e6313e889b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChris?= Date: Mon, 8 May 2023 22:23:04 +0300 Subject: [PATCH 075/249] Add changelog --- .../changelog/fix-tt3-order-details-item-meta-styling | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-tt3-order-details-item-meta-styling diff --git a/plugins/woocommerce/changelog/fix-tt3-order-details-item-meta-styling b/plugins/woocommerce/changelog/fix-tt3-order-details-item-meta-styling new file mode 100644 index 00000000000..de43fcc6ec9 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-tt3-order-details-item-meta-styling @@ -0,0 +1,4 @@ +Significance: patch +Type: enhancement + +Add default styles for product meta in the TT3 order details table From 63916fed3c2a993e6d9891274b92844fc16b38f6 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Mon, 8 May 2023 17:53:05 -0300 Subject: [PATCH 076/249] Drop `$held_stock_counter` to simplify logic --- plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index 1f5d5c9a4fb..c6058bdcc75 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -73,7 +73,6 @@ final class ReserveStock { } $held_stock_notes = array(); - $held_stock_counter = 0; try { $items = array_filter( @@ -117,9 +116,8 @@ final class ReserveStock { $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; - if ( $held_stock_counter < 5 ) { $held_stock_notes[] = $product->get_formatted_name() . ' x ' . $rows[ $managed_by_id ]; - $held_stock_counter++; + if ( count( $held_stock_notes ) < 5 ) { } } @@ -138,9 +136,9 @@ final class ReserveStock { $note_suffix = ''; // Add suffix if there are more than 5 items. - if ( count( $items ) > $held_stock_counter ) { - $remaining_count = count( $items ) - $held_stock_counter; + $remaining_count = count( $rows ) - count( $held_stock_notes ); + if ( $remaining_count > 0 ) { // translators: %d is the remaining order items count. $note_suffix = '
- ' . sprintf( __( '... and %d more items.', 'woocommerce' ), $remaining_count ); } From 8eb8a09c8881bf12a471fd5d650d539308914ae2 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Mon, 8 May 2023 17:53:20 -0300 Subject: [PATCH 077/249] Minor fixes --- .../src/Checkout/Helpers/ReserveStock.php | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php index c6058bdcc75..59cff93f637 100644 --- a/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php +++ b/plugins/woocommerce/src/Checkout/Helpers/ReserveStock.php @@ -72,7 +72,7 @@ final class ReserveStock { return; } - $held_stock_notes = array(); + $held_stock_notes = array(); try { $items = array_filter( @@ -116,8 +116,9 @@ final class ReserveStock { $rows[ $managed_by_id ] = isset( $rows[ $managed_by_id ] ) ? $rows[ $managed_by_id ] + $item_quantity : $item_quantity; - $held_stock_notes[] = $product->get_formatted_name() . ' x ' . $rows[ $managed_by_id ]; if ( count( $held_stock_notes ) < 5 ) { + // translators: %1$s is a product's formatted name, %2$d: is the quantity of said product to which the stock hold applied. + $held_stock_notes[] = sprintf( _x( '- %1$s × %2$d', 'held stock note', 'woocommerce' ), $product->get_formatted_name(), $rows[ $managed_by_id ] ); } } @@ -133,18 +134,23 @@ final class ReserveStock { // Add order note after successfully holding the stock. if ( ! empty( $held_stock_notes ) ) { - - $note_suffix = ''; - // Add suffix if there are more than 5 items. - $remaining_count = count( $rows ) - count( $held_stock_notes ); if ( $remaining_count > 0 ) { - // translators: %d is the remaining order items count. - $note_suffix = '
- ' . sprintf( __( '... and %d more items.', 'woocommerce' ), $remaining_count ); + $held_stock_notes[] = sprintf( + // translators: %d is the remaining order items count. + _nx( '- ...and %d more item.', '- ... and %d more items.', $remaining_count, 'held stock note', 'woocommerce' ), + $remaining_count + ); } - // translators: %s is a time in minutes - $order->add_order_note( sprintf( __( 'Stock hold of %s minutes applied to:', 'woocommerce' ), $minutes ) . '
- ' . implode( '
- ', $held_stock_notes ) . $note_suffix ); + $order->add_order_note( + sprintf( + // translators: %1$s is a time in minutes, %2$s is a list of products and quantities. + _x( 'Stock hold of %1$s minutes applied to: %2$s', 'held stock note', 'woocommerce' ), + $minutes, + '
' . implode( '
', $held_stock_notes ) + ) + ); } } From 4a237ca476805b4d64456faa119283cb8d6c2daa Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 11:28:57 +0800 Subject: [PATCH 078/249] Migrate Purchase task and dashboard utils to TS (#37725) * Fix onboarding productTypes TS define type * Rename purchase.js -> purchase.tsx * Rename utils.js -> utils.ts * Migrate dashboard/util to TS * Rename tasks fills to index.ts * Migrate purchase task to TS * Add changelog * Fix types * Update changelog --- .../update-migrate-purchase-task-to-ts | 4 + packages/js/data/src/onboarding/actions.ts | 6 +- packages/js/data/src/onboarding/reducer.ts | 2 +- packages/js/data/src/onboarding/resolvers.ts | 4 +- packages/js/data/src/onboarding/selectors.ts | 7 +- packages/js/data/src/onboarding/types.ts | 14 +- .../client/dashboard/{utils.js => utils.ts} | 140 +++++++++--------- .../client/tasks/fills/{index.js => index.ts} | 0 .../tasks/fills/{purchase.js => purchase.tsx} | 11 +- .../client/tasks/fills/tax/index.tsx | 12 +- .../update-migrate-purchase-task-to-ts | 4 + 11 files changed, 111 insertions(+), 93 deletions(-) create mode 100644 packages/js/data/changelog/update-migrate-purchase-task-to-ts rename plugins/woocommerce-admin/client/dashboard/{utils.js => utils.ts} (78%) rename plugins/woocommerce-admin/client/tasks/fills/{index.js => index.ts} (100%) rename plugins/woocommerce-admin/client/tasks/fills/{purchase.js => purchase.tsx} (86%) create mode 100644 plugins/woocommerce/changelog/update-migrate-purchase-task-to-ts diff --git a/packages/js/data/changelog/update-migrate-purchase-task-to-ts b/packages/js/data/changelog/update-migrate-purchase-task-to-ts new file mode 100644 index 00000000000..c8ea79bf545 --- /dev/null +++ b/packages/js/data/changelog/update-migrate-purchase-task-to-ts @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Fix onboarding productTypes TS define type diff --git a/packages/js/data/src/onboarding/actions.ts b/packages/js/data/src/onboarding/actions.ts index 8628f22031c..e46692dfca5 100644 --- a/packages/js/data/src/onboarding/actions.ts +++ b/packages/js/data/src/onboarding/actions.ts @@ -16,7 +16,7 @@ import { ProfileItems, TaskListType, TaskType, - OnboardingProductType, + OnboardingProductTypes, } from './types'; import { Plugin } from '../plugins/types'; @@ -267,9 +267,7 @@ export function actionTaskSuccess( task: Partial< TaskType > ) { }; } -export function getProductTypesSuccess( - productTypes: OnboardingProductType[] -) { +export function getProductTypesSuccess( productTypes: OnboardingProductTypes ) { return { type: TYPES.GET_PRODUCT_TYPES_SUCCESS, productTypes, diff --git a/packages/js/data/src/onboarding/reducer.ts b/packages/js/data/src/onboarding/reducer.ts index a3b32468989..da69fae2c92 100644 --- a/packages/js/data/src/onboarding/reducer.ts +++ b/packages/js/data/src/onboarding/reducer.ts @@ -35,7 +35,7 @@ export const defaultState: OnboardingState = { }, emailPrefill: '', paymentMethods: [], - productTypes: [], + productTypes: {}, requesting: {}, taskLists: {}, }; diff --git a/packages/js/data/src/onboarding/resolvers.ts b/packages/js/data/src/onboarding/resolvers.ts index 5bb69f5492b..8674a4e7d83 100644 --- a/packages/js/data/src/onboarding/resolvers.ts +++ b/packages/js/data/src/onboarding/resolvers.ts @@ -24,7 +24,7 @@ import { import { DeprecatedTasks } from './deprecated-tasks'; import { ExtensionList, - OnboardingProductType, + OnboardingProductTypes, ProfileItems, TaskListType, } from './types'; @@ -126,7 +126,7 @@ export function* getFreeExtensions() { export function* getProductTypes() { try { - const results: OnboardingProductType[] = yield apiFetch( { + const results: OnboardingProductTypes = yield apiFetch( { path: WC_ADMIN_NAMESPACE + '/onboarding/product-types', method: 'GET', } ); diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index b73c1111211..508886fbfb7 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -12,7 +12,6 @@ import { OnboardingState, ExtensionList, ProfileItems, - OnboardingProductType, } from './types'; import { WPDataSelectors } from '../types'; import { Plugin } from '../plugins/types'; @@ -92,10 +91,8 @@ export const getEmailPrefill = ( state: OnboardingState ): string => { return state.emailPrefill || ''; }; -export const getProductTypes = ( - state: OnboardingState -): OnboardingProductType[] => { - return state.productTypes || []; +export const getProductTypes = ( state: OnboardingState ) => { + return state.productTypes || {}; }; export type OnboardingSelectors = { diff --git a/packages/js/data/src/onboarding/types.ts b/packages/js/data/src/onboarding/types.ts index 953ecf5ce0c..217cac646b0 100644 --- a/packages/js/data/src/onboarding/types.ts +++ b/packages/js/data/src/onboarding/types.ts @@ -75,7 +75,7 @@ export type OnboardingState = { profileItems: ProfileItems; taskLists: Record< string, TaskListType >; paymentMethods: Plugin[]; - productTypes: OnboardingProductType[]; + productTypes: OnboardingProductTypes; emailPrefill: string; // TODO clarify what the error record's type is errors: Record< string, unknown >; @@ -152,11 +152,21 @@ export type MethodFields = { }; export type OnboardingProductType = { - default?: boolean; label: string; + default?: boolean; product?: number; + id?: number; + title?: string; + yearly_price?: number; + description?: string; + more_url?: string; + slug?: string; }; +export type OnboardingProductTypes = + | Record< ProductTypeSlug, OnboardingProductType > + | Record< string, never >; + export type ExtensionList = { key: string; title: string; diff --git a/plugins/woocommerce-admin/client/dashboard/utils.js b/plugins/woocommerce-admin/client/dashboard/utils.ts similarity index 78% rename from plugins/woocommerce-admin/client/dashboard/utils.js rename to plugins/woocommerce-admin/client/dashboard/utils.ts index 26ae5b3821c..7bd0fe18a09 100644 --- a/plugins/woocommerce-admin/client/dashboard/utils.js +++ b/plugins/woocommerce-admin/client/dashboard/utils.ts @@ -3,6 +3,11 @@ */ import { decodeEntities } from '@wordpress/html-entities'; import { without } from 'lodash'; +import { + OnboardingProductType, + OnboardingProductTypes, + ProfileItems, +} from '@woocommerce/data'; /** * Internal dependencies @@ -24,19 +29,68 @@ export function getCountryCode( countryState = '' ) { return countryState.split( ':' )[ 0 ]; } -export function getCurrencyRegion( countryState ) { +export function getCurrencyRegion( countryState: string ) { let region = getCountryCode( countryState ); const euCountries = without( getAdminSetting( 'onboarding', { euCountries: [] } ).euCountries, 'GB' ); - if ( euCountries.includes( region ) ) { + if ( region !== null && euCountries.includes( region ) ) { region = 'EU'; } return region; } +/** + * Get the value of a price from a string, removing any non-numeric characters. + * + * @param {string} string Price string. + * @return {number} Number value. + */ +export function getPriceValue( string: string ) { + return Number( decodeEntities( string ).replace( /[^0-9.-]+/g, '' ) ); +} + +/** + * Gets a product list for items based on the product types and theme selected in the onboarding profiler. + * + * @param {Object} profileItems Onboarding profile. + * @param {boolean} includeInstalledItems Include installed items in returned product list. + * @param {Array} installedPlugins Installed plugins. + * @param {Object} productTypes Product Types. + * @return {Array} Products. + */ +export function getProductList( + profileItems: ProfileItems, + includeInstalledItems = false, + installedPlugins: string[], + productTypes: OnboardingProductTypes +) { + const productList: OnboardingProductType[] = []; + + if ( ! productTypes ) { + return productList; + } + + const profileItemsProductTypes = profileItems.product_types || []; + + profileItemsProductTypes.forEach( ( productType ) => { + if ( + productTypes[ productType ] && + productTypes[ productType ].product && + ( includeInstalledItems || + ! installedPlugins.includes( + productTypes[ productType ].slug as string + ) ) + ) { + productList.push( productTypes[ productType ] ); + } + } ); + + return productList; +} + /** * Gets the product IDs for items based on the product types and theme selected in the onboarding profiler. * @@ -47,10 +101,10 @@ export function getCurrencyRegion( countryState ) { * @return {Array} Product Ids. */ export function getProductIdsForCart( - productTypes, - profileItems, + productTypes: OnboardingProductTypes, + profileItems: ProfileItems, includeInstalledItems = false, - installedPlugins + installedPlugins: string[] ) { const productList = getProductList( profileItems, @@ -73,32 +127,25 @@ export function getProductIdsForCart( * @return {Array} Objects with labeled/categorized product names and types. */ export function getCategorizedOnboardingProducts( - productTypes, - profileItems, - installedPlugins + productTypes: OnboardingProductTypes, + profileItems: ProfileItems, + installedPlugins: string[] ) { - const productList = {}; - productList.products = getProductList( + const products = getProductList( profileItems, true, installedPlugins, productTypes ); - productList.remainingProducts = getProductList( + const remainingProducts = getProductList( profileItems, false, installedPlugins, productTypes ); - const uniqueItemsList = [ - ...new Set( [ - ...productList.products, - ...productList.remainingProducts, - ] ), - ]; - - productList.uniqueItemsList = uniqueItemsList.map( ( product ) => { + const productSets = [ ...new Set( [ ...products, ...remainingProducts ] ) ]; + const uniqueItemsList = productSets.map( ( product ) => { let cleanedProduct; if ( product.label ) { cleanedProduct = { type: 'extension', name: product.label }; @@ -108,54 +155,9 @@ export function getCategorizedOnboardingProducts( return cleanedProduct; } ); - return productList; -} - -/** - * Gets a product list for items based on the product types and theme selected in the onboarding profiler. - * - * @param {Object} profileItems Onboarding profile. - * @param {boolean} includeInstalledItems Include installed items in returned product list. - * @param {Array} installedPlugins Installed plugins. - * @param {Object} productTypes Product Types. - * @return {Array} Products. - */ -export function getProductList( - profileItems, - includeInstalledItems = false, - installedPlugins, - productTypes -) { - const productList = []; - - if ( ! productTypes ) { - return productList; - } - - const profileItemsProductTypes = profileItems.product_types || []; - - profileItemsProductTypes.forEach( ( productType ) => { - if ( - productTypes[ productType ] && - productTypes[ productType ].product && - ( includeInstalledItems || - ! installedPlugins.includes( - productTypes[ productType ].slug - ) ) - ) { - productList.push( productTypes[ productType ] ); - } - } ); - - return productList; -} - -/** - * Get the value of a price from a string, removing any non-numeric characters. - * - * @param {string} string Price string. - * @return {number} Number value. - */ -export function getPriceValue( string ) { - return Number( decodeEntities( string ).replace( /[^0-9.-]+/g, '' ) ); + return { + products, + remainingProducts, + uniqueItemsList, + }; } diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.ts similarity index 100% rename from plugins/woocommerce-admin/client/tasks/fills/index.js rename to plugins/woocommerce-admin/client/tasks/fills/index.ts diff --git a/plugins/woocommerce-admin/client/tasks/fills/purchase.js b/plugins/woocommerce-admin/client/tasks/fills/purchase.tsx similarity index 86% rename from plugins/woocommerce-admin/client/tasks/fills/purchase.js rename to plugins/woocommerce-admin/client/tasks/fills/purchase.tsx index 72ae6efcd48..316a82327b5 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/purchase.js +++ b/plugins/woocommerce-admin/client/tasks/fills/purchase.tsx @@ -15,7 +15,13 @@ import { ONBOARDING_STORE_NAME, PLUGINS_STORE_NAME } from '@woocommerce/data'; import CartModal from '../../dashboard/components/cart-modal'; import { getCategorizedOnboardingProducts } from '../../dashboard/utils'; -const PurchaseTaskItem = ( { defaultTaskItem } ) => { +type PurchaseTaskItemProps = { + defaultTaskItem: React.ComponentType< { + onClick: () => void; + } >; +}; + +const PurchaseTaskItem = ( { defaultTaskItem }: PurchaseTaskItemProps ) => { const [ cartModalOpen, setCartModalOpen ] = useState( false ); const { installedPlugins, productTypes, profileItems } = useSelect( @@ -71,7 +77,7 @@ const PurchaseTaskItem = ( { defaultTaskItem } ) => { const PurchaseTaskItemFill = () => { return ( - { ( { defaultTaskItem } ) => ( + { ( { defaultTaskItem }: PurchaseTaskItemProps ) => ( ) } @@ -79,6 +85,7 @@ const PurchaseTaskItemFill = () => { }; registerPlugin( 'woocommerce-admin-task-purchase', { + // @ts-expect-error 'scope' does exist. @types/wordpress__plugins is outdated. scope: 'woocommerce-tasks', render: PurchaseTaskItemFill, } ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx index b42d2d6bf08..4de8b8fbff9 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx @@ -147,9 +147,9 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { }, [] ); const getVisiblePartners = () => { - const countryCode = getCountryCode( - generalSettings?.woocommerce_default_country - ); + const countryCode = + getCountryCode( generalSettings?.woocommerce_default_country ) || + ''; const { additionalData: { woocommerceTaxCountries = [], @@ -164,11 +164,7 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { component: WooCommerceTax, isVisible: ! taxJarActivated && // WCS integration doesn't work with the official TaxJar plugin. - woocommerceTaxCountries.includes( - getCountryCode( - generalSettings?.woocommerce_default_country - ) - ), + woocommerceTaxCountries.includes( countryCode ), }, { id: 'avalara', diff --git a/plugins/woocommerce/changelog/update-migrate-purchase-task-to-ts b/plugins/woocommerce/changelog/update-migrate-purchase-task-to-ts new file mode 100644 index 00000000000..8c052ce352b --- /dev/null +++ b/plugins/woocommerce/changelog/update-migrate-purchase-task-to-ts @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Migrate tasks fills index.js, purchase.tsx and related utils to TS From 329fcd1bc3421f4eadd75a69e2d7b4d0872a2039 Mon Sep 17 00:00:00 2001 From: Joshua T Flowers Date: Tue, 9 May 2023 00:32:00 -0700 Subject: [PATCH 079/249] Add tinymce scripts to product editor pages (#38175) * Add tinymce scripts to product editor pages * Add changelog entry --- plugins/woocommerce/changelog/add-38118 | 4 ++++ .../src/Admin/Features/ProductBlockEditor/Init.php | 1 + 2 files changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-38118 diff --git a/plugins/woocommerce/changelog/add-38118 b/plugins/woocommerce/changelog/add-38118 new file mode 100644 index 00000000000..0eacd4bb8a5 --- /dev/null +++ b/plugins/woocommerce/changelog/add-38118 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add tinymce scripts to product editor pages diff --git a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php index de000b2ce89..87c374da81d 100644 --- a/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php +++ b/plugins/woocommerce/src/Admin/Features/ProductBlockEditor/Init.php @@ -75,6 +75,7 @@ class Init { sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( $editor_settings['blockCategories'] ) ), 'before' ); + wp_tinymce_inline_scripts(); } /** From bd7590dc596237e89f326f7687dd9f333ac4ff94 Mon Sep 17 00:00:00 2001 From: Sam Seay Date: Tue, 9 May 2023 19:57:50 +1200 Subject: [PATCH 080/249] Improve types and error support in Logger.error (#38160) --- .../src/core/__tests__/logger.ts | 71 +++++++++++++++++++ tools/monorepo-utils/src/core/logger.ts | 16 ++++- 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 tools/monorepo-utils/src/core/__tests__/logger.ts diff --git a/tools/monorepo-utils/src/core/__tests__/logger.ts b/tools/monorepo-utils/src/core/__tests__/logger.ts new file mode 100644 index 00000000000..2e5d7df37ce --- /dev/null +++ b/tools/monorepo-utils/src/core/__tests__/logger.ts @@ -0,0 +1,71 @@ +jest.spyOn( global.console, 'error' ).mockImplementation( () => {} ); +// @ts-expect-error -- We're mocking process exit, it has never return type! +jest.spyOn( global.process, 'exit' ).mockImplementation( () => {} ); + +/** + * External dependencies + */ +import chalk from 'chalk'; + +/** + * Internal dependencies + */ +import { Logger } from '../logger'; + +describe( 'Logger', () => { + afterEach( () => { + jest.resetAllMocks(); + } ); + + describe( 'error', () => { + process.env.LOGGER_LEVEL = 'error'; + + it( 'should log a message for string messages', () => { + const message = 'test message'; + + Logger.error( message ); + + expect( global.console.error ).toHaveBeenCalledWith( + chalk.red( message ) + ); + } ); + + it( 'should log a message for errors', () => { + const error = new Error( 'test error' ); + + Logger.error( error ); + + expect( global.console.error ).toHaveBeenCalledWith( + chalk.red( error.message ) + ); + } ); + + it( 'should json stringify for unknown types', () => { + Logger.error( { foo: 'bar' } ); + + expect( global.console.error ).toHaveBeenCalledWith( + chalk.red( JSON.stringify( { foo: 'bar' }, null, 2 ) ) + ); + } ); + + it( 'should call process.exit by default', () => { + Logger.error( 'test message' ); + + expect( global.process.exit ).toHaveBeenCalledWith( 1 ); + } ); + + it( 'should not call process.exit when failOnErr is false', () => { + Logger.error( 'test message', false ); + + expect( global.process.exit ).not.toHaveBeenCalled(); + } ); + + it( 'should not log errors if the Logger is in silent mode', () => { + process.env.LOGGER_LEVEL = 'silent'; + + Logger.error( 'test message' ); + + expect( global.console.error ).not.toHaveBeenCalled(); + } ); + } ); +} ); diff --git a/tools/monorepo-utils/src/core/logger.ts b/tools/monorepo-utils/src/core/logger.ts index 6fff23c1288..b7f6fc9e471 100644 --- a/tools/monorepo-utils/src/core/logger.ts +++ b/tools/monorepo-utils/src/core/logger.ts @@ -25,10 +25,20 @@ export class Logger { ] as number; } - static error( message: string ) { + static error( err: unknown, failOnErr = true ) { if ( Logger.loggingLevel >= LOGGING_LEVELS.error ) { - error( chalk.red( message ) ); - process.exit( 1 ); + if ( err instanceof Error ) { + error( chalk.red( err.message ) ); + } else if ( typeof err === 'string' ) { + error( chalk.red( err ) ); + } else { + // Best effort to log the error when we don't know the type. + error( chalk.red( JSON.stringify( err, null, 2 ) ) ); + } + + if ( failOnErr ) { + process.exit( 1 ); + } } } From b01894f17b5b19154f666afbbc11a9caa6926017 Mon Sep 17 00:00:00 2001 From: Leif Singer Date: Tue, 9 May 2023 10:02:47 +0200 Subject: [PATCH 081/249] Try: replace URL-encoded newlines with normal escaped newlines [WIP] (#38170) replace URL-encoded newlines with normal escaped newlines --- tools/monorepo/check-changelogger-use.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/monorepo/check-changelogger-use.php b/tools/monorepo/check-changelogger-use.php index e298c8f91c0..2c58f284178 100644 --- a/tools/monorepo/check-changelogger-use.php +++ b/tools/monorepo/check-changelogger-use.php @@ -216,7 +216,7 @@ foreach ( $touched_projects as $slug => $files ) { } elseif ( getenv( 'CI' ) ) { printf( "---\n" ); // Bracket message containing newlines for better visibility in GH's logs. printf( - "::error::Project %s is being changed, but no change file in %s is touched!%%0A%%0AUse `pnpm --filter=./%s run changelog add` to add a change file.\n", + "::error::Project %s is being changed, but no change file in %s is touched!\n\nUse `pnpm --filter=./%s run changelog add` to add a change file.\n", $slug, "$slug/{$changelogger_projects[ $slug ]['changes-dir']}/", $slug From 0148c3eafd735821e1acd7c243563441d48fe4ee Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 17:01:37 +0800 Subject: [PATCH 082/249] Make all fields in the tax location form mandatory (#38137) * Make all fields in the tax location form mandatory * Add changelog --- .../client/tasks/fills/steps/location.tsx | 14 +++++---- .../fills/tax/components/store-location.tsx | 29 ++++++++++++++++++- .../changelog/update-tax-location-form | 4 +++ 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-tax-location-form diff --git a/plugins/woocommerce-admin/client/tasks/fills/steps/location.tsx b/plugins/woocommerce-admin/client/tasks/fills/steps/location.tsx index 670f5a5016d..7a0637fac51 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/steps/location.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/steps/location.tsx @@ -16,7 +16,7 @@ import { getStoreAddressValidator, } from '../../../dashboard/components/settings/general/store-address'; -type FormValues = { +export type FormValues = { addressLine1: string; addressLine2: string; countryState: string; @@ -50,6 +50,12 @@ type StoreLocationProps = { settings?: { [ key: string ]: string; }; + validate?: ( values: FormValues ) => { [ key: string ]: string }; +}; + +export const defaultValidate = ( values: FormValues ) => { + const validator = getStoreAddressValidator(); + return validator( values ); }; const StoreLocation = ( { @@ -60,6 +66,7 @@ const StoreLocation = ( { updateAndPersistSettingsForGroup, settings, buttonText = __( 'Continue', 'woocommerce' ), + validate = defaultValidate, }: StoreLocationProps ) => { const { hasFinishedResolution } = useSelect( ( select ) => { const countryStore = select( COUNTRIES_STORE_NAME ); @@ -107,11 +114,6 @@ const StoreLocation = ( { }; }; - const validate = ( values: FormValues ) => { - const validator = getStoreAddressValidator(); - return validator( values ); - }; - if ( isSettingsRequesting || ! hasFinishedResolution ) { return ; } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx index 2d0034e0db0..7c06822a3b2 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx @@ -5,13 +5,35 @@ import { SETTINGS_STORE_NAME } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { useEffect } from '@wordpress/element'; import { useSelect, useDispatch } from '@wordpress/data'; +import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import { getCountryCode } from '~/dashboard/utils'; import { hasCompleteAddress } from '../utils'; -import { default as StoreLocationForm } from '~/tasks/fills/steps/location'; +import { + default as StoreLocationForm, + FormValues, + defaultValidate, +} from '~/tasks/fills/steps/location'; + +const validateLocationForm = ( values: FormValues ) => { + const errors = defaultValidate( values ); + + if ( ! values.addressLine1.trim().length ) { + errors.addressLine1 = __( 'Please enter an address', 'woocommerce' ); + } + + if ( ! values.postCode.trim().length ) { + errors.postCode = __( 'Please enter a post code', 'woocommerce' ); + } + + if ( ! values.city.trim().length ) { + errors.city = __( 'Please enter a city', 'woocommerce' ); + } + return errors; +}; export const StoreLocation: React.FC< { nextStep: () => void; @@ -44,7 +66,12 @@ export const StoreLocation: React.FC< { return ( { + if ( ! hasCompleteAddress( generalSettings || {} ) ) { + return; + } + const country = getCountryCode( values.countryState ); recordEvent( 'tasklist_tax_set_location', { country, diff --git a/plugins/woocommerce/changelog/update-tax-location-form b/plugins/woocommerce/changelog/update-tax-location-form new file mode 100644 index 00000000000..33a64afc1af --- /dev/null +++ b/plugins/woocommerce/changelog/update-tax-location-form @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Make all fields in the tax location form mandatory From e06097b4c228129c567a683c2fb45597ad52cec7 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 17:07:36 +0800 Subject: [PATCH 083/249] Fix `wc-experimental` strings are not translated (#38108) * Add wc-experimental to translated_scripts * Add changelog --- plugins/woocommerce/changelog/fix-wc-experimental-i18n | 4 ++++ plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php | 1 + 2 files changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-wc-experimental-i18n diff --git a/plugins/woocommerce/changelog/fix-wc-experimental-i18n b/plugins/woocommerce/changelog/fix-wc-experimental-i18n new file mode 100644 index 00000000000..ff9e7653252 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-wc-experimental-i18n @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix wc-experimental not translated issue diff --git a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php index 0d44957db99..7329dd459ee 100644 --- a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php +++ b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php @@ -278,6 +278,7 @@ class WCAdminAssets { 'wc-date', 'wc-components', 'wc-customer-effort-score', + 'wc-experimental', WC_ADMIN_APP, ); From 2189cb181a3f89085de4aed858797823414d25f9 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 18:20:18 +0800 Subject: [PATCH 084/249] Hide "Upload a logo" step in Personalize task if theme doesn't support it (#38161) * Hide upload logo step in Personalize task if theme doesn't support it * Add changelog * Fix lint --- .../woocommerce-admin/client/tasks/fills/appearance.js | 6 ++++-- .../changelog/update-hide-logo-step-if-not-support | 4 ++++ .../Admin/Features/OnboardingTasks/Tasks/Appearance.php | 9 +++++---- 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-hide-logo-step-if-not-support diff --git a/plugins/woocommerce-admin/client/tasks/fills/appearance.js b/plugins/woocommerce-admin/client/tasks/fills/appearance.js index 87955209b89..5bb7ce41f60 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/appearance.js +++ b/plugins/woocommerce-admin/client/tasks/fills/appearance.js @@ -25,11 +25,13 @@ import { WooOnboardingTask } from '@woocommerce/onboarding'; class Appearance extends Component { constructor( props ) { super( props ); - const { hasHomepage, hasProducts } = props.task.additionalData; + const { hasHomepage, hasProducts, supportCustomLogo } = + props.task.additionalData; this.stepVisibility = { homepage: ! hasHomepage, import: ! hasProducts, + logo: supportCustomLogo, }; this.state = { @@ -338,7 +340,7 @@ class Appearance extends Component { ), - visible: true, + visible: this.stepVisibility.logo, }, { key: 'notice', diff --git a/plugins/woocommerce/changelog/update-hide-logo-step-if-not-support b/plugins/woocommerce/changelog/update-hide-logo-step-if-not-support new file mode 100644 index 00000000000..945d32e92f2 --- /dev/null +++ b/plugins/woocommerce/changelog/update-hide-logo-step-if-not-support @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Hide upload logo step in Personalize task if theme doesn't support it diff --git a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Appearance.php b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Appearance.php index cadd67a6d5b..2b2832bf635 100644 --- a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Appearance.php +++ b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Appearance.php @@ -76,10 +76,11 @@ class Appearance extends Task { */ public function get_additional_data() { return array( - 'has_homepage' => self::has_homepage(), - 'has_products' => Products::has_products(), - 'stylesheet' => get_option( 'stylesheet' ), - 'theme_mods' => get_theme_mods(), + 'has_homepage' => self::has_homepage(), + 'has_products' => Products::has_products(), + 'stylesheet' => get_option( 'stylesheet' ), + 'theme_mods' => get_theme_mods(), + 'support_custom_logo' => false !== get_theme_support( 'custom-logo' ), ); } From 059d1de563009d402a263cb984586043eb91cf38 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 18:20:42 +0800 Subject: [PATCH 085/249] Remove core onboarding usage of woocommerce_updated hook (#38158) * Remove maybe_mark_complete usage * Add changelog --- .../changelog/remove-onboarding-hook | 4 +++ .../Admin/Onboarding/OnboardingProfile.php | 34 ------------------- 2 files changed, 4 insertions(+), 34 deletions(-) create mode 100644 plugins/woocommerce/changelog/remove-onboarding-hook diff --git a/plugins/woocommerce/changelog/remove-onboarding-hook b/plugins/woocommerce/changelog/remove-onboarding-hook new file mode 100644 index 00000000000..eb75c25987e --- /dev/null +++ b/plugins/woocommerce/changelog/remove-onboarding-hook @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Remove Core onboarding usage of woocommerce_updated hook diff --git a/plugins/woocommerce/src/Internal/Admin/Onboarding/OnboardingProfile.php b/plugins/woocommerce/src/Internal/Admin/Onboarding/OnboardingProfile.php index 2c058c54a0e..087a1e2e9d9 100644 --- a/plugins/woocommerce/src/Internal/Admin/Onboarding/OnboardingProfile.php +++ b/plugins/woocommerce/src/Internal/Admin/Onboarding/OnboardingProfile.php @@ -22,7 +22,6 @@ class OnboardingProfile { * Add onboarding actions. */ public static function init() { - add_action( 'woocommerce_updated', array( __CLASS__, 'maybe_mark_complete' ) ); add_action( 'update_option_' . self::DATA_OPTION, array( __CLASS__, 'trigger_complete' ), 10, 2 ); } @@ -65,37 +64,4 @@ class OnboardingProfile { // https://github.com/woocommerce/woocommerce-admin/pull/2300#discussion_r287237498. return ! $is_completed && ! $is_skipped; } - - /** - * When updating WooCommerce, mark the profiler and task list complete. - * - * @todo The `maybe_enable_setup_wizard()` method should be revamped on onboarding enable in core. - * See https://github.com/woocommerce/woocommerce/blob/1ca791f8f2325fe2ee0947b9c47e6a4627366374/includes/class-wc-install.php#L341 - */ - public static function maybe_mark_complete() { - // The install notice still exists so don't complete the profiler. - if ( ! class_exists( 'WC_Admin_Notices' ) || \WC_Admin_Notices::has_notice( 'install' ) ) { - return; - } - - $onboarding_data = get_option( self::DATA_OPTION, array() ); - // Don't make updates if the profiler is completed or skipped, but task list is potentially incomplete. - if ( - ( isset( $onboarding_data['completed'] ) && $onboarding_data['completed'] ) || - ( isset( $onboarding_data['skipped'] ) && $onboarding_data['skipped'] ) - ) { - return; - } - - $onboarding_data['completed'] = true; - update_option( self::DATA_OPTION, $onboarding_data ); - - if ( ! WCAdminHelper::is_wc_admin_active_for( DAY_IN_SECONDS ) ) { - $task_list = TaskLists::get_list( 'setup' ); - if ( ! $task_list ) { - return; - } - $task_list->hide(); - } - } } From 4c9bcbc30e6b84caec8ec73dfb3737a2a2e3fdf6 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 9 May 2023 18:53:08 +0800 Subject: [PATCH 086/249] Add missing woocommerce_run_on_woocommerce_admin_updated hook for RemoteInboxNotificationsEngine scheduled action (#38159) * Remove maybe_mark_complete usage * Add changelog * Add woocommerce_run_on_woocommerce_admin_updated hook * Add changelog * Fix lint --- .../changelog/fix-woocommerce_admin_updated-does-not-run | 4 ++++ .../RemoteInboxNotificationsEngine.php | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-woocommerce_admin_updated-does-not-run diff --git a/plugins/woocommerce/changelog/fix-woocommerce_admin_updated-does-not-run b/plugins/woocommerce/changelog/fix-woocommerce_admin_updated-does-not-run new file mode 100644 index 00000000000..3b50bb74c0c --- /dev/null +++ b/plugins/woocommerce/changelog/fix-woocommerce_admin_updated-does-not-run @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Add missing woocommerce_run_on_woocommerce_admin_updated hook for the scheduled action registered in RemoteInboxNotificationsEngine diff --git a/plugins/woocommerce/src/Admin/RemoteInboxNotifications/RemoteInboxNotificationsEngine.php b/plugins/woocommerce/src/Admin/RemoteInboxNotifications/RemoteInboxNotificationsEngine.php index c0372acb429..8365a2f0a24 100644 --- a/plugins/woocommerce/src/Admin/RemoteInboxNotifications/RemoteInboxNotificationsEngine.php +++ b/plugins/woocommerce/src/Admin/RemoteInboxNotifications/RemoteInboxNotificationsEngine.php @@ -40,19 +40,20 @@ class RemoteInboxNotificationsEngine { // Hook into WCA updated. This is hooked up here rather than in // on_admin_init because that runs too late to hook into the action. + add_action( 'woocommerce_run_on_woocommerce_admin_updated', array( __CLASS__, 'run_on_woocommerce_admin_updated' ) ); add_action( 'woocommerce_updated', function() { $next_hook = WC()->queue()->get_next( 'woocommerce_run_on_woocommerce_admin_updated', - array( __CLASS__, 'run_on_woocommerce_admin_updated' ), + array(), 'woocommerce-remote-inbox-engine' ); if ( null === $next_hook ) { WC()->queue()->schedule_single( time(), 'woocommerce_run_on_woocommerce_admin_updated', - array( __CLASS__, 'run_on_woocommerce_admin_updated' ), + array(), 'woocommerce-remote-inbox-engine' ); } From bbf4f47c9c7d1cad559000de03ffbf9a7c023822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Tue, 9 May 2023 14:57:39 +0200 Subject: [PATCH 087/249] Remove qs dependency from `WCAddonsTour` , use native `URLSearchParams` instead. --- .../client/guided-tours/wc-addons-tour/index.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce-admin/client/guided-tours/wc-addons-tour/index.tsx b/plugins/woocommerce-admin/client/guided-tours/wc-addons-tour/index.tsx index fec151af83f..a8e310c7566 100644 --- a/plugins/woocommerce-admin/client/guided-tours/wc-addons-tour/index.tsx +++ b/plugins/woocommerce-admin/client/guided-tours/wc-addons-tour/index.tsx @@ -6,7 +6,6 @@ import { TourKit, TourKitTypes } from '@woocommerce/components'; import { recordEvent } from '@woocommerce/tracks'; import { useDispatch } from '@wordpress/data'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; -import qs from 'qs'; /** * Internal dependencies @@ -25,8 +24,8 @@ const WCAddonsTour = () => { const defaultAutoScrollBlock: ScrollLogicalPosition = 'center'; useEffect( () => { - const query = qs.parse( window.location.search.slice( 1 ) ); - if ( query?.tutorial === 'true' ) { + const query = new URLSearchParams( location.search ); + if ( query.get( 'tutorial' ) === 'true' ) { const intervalId = waitUntilElementTopNotChange( steps[ 0 ].referenceElements?.desktop || '', () => { From 765a87a741befa8abd8873ee8152b8f4fbe4a3bc Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 9 May 2023 12:43:25 -0300 Subject: [PATCH 088/249] Variations - Remove separator between buttons and empty state screen (#38123) * Remove separator between buttons and empty state screen * Add changelog * Fix separator style --- ...tor_between_buttons_and_empty_state_screen | 4 ++ .../woocommerce/client/legacy/css/admin.scss | 55 ++++++++++++------- .../js/admin/meta-boxes-product-variation.js | 8 ++- 3 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 plugins/woocommerce/changelog/dev-38122_remove_separator_between_buttons_and_empty_state_screen diff --git a/plugins/woocommerce/changelog/dev-38122_remove_separator_between_buttons_and_empty_state_screen b/plugins/woocommerce/changelog/dev-38122_remove_separator_between_buttons_and_empty_state_screen new file mode 100644 index 00000000000..2f55bda0169 --- /dev/null +++ b/plugins/woocommerce/changelog/dev-38122_remove_separator_between_buttons_and_empty_state_screen @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Variations - Remove separator between buttons and empty state screen diff --git a/plugins/woocommerce/client/legacy/css/admin.scss b/plugins/woocommerce/client/legacy/css/admin.scss index 1c05ea84d1f..c7a0167d2dc 100644 --- a/plugins/woocommerce/client/legacy/css/admin.scss +++ b/plugins/woocommerce/client/legacy/css/admin.scss @@ -1071,27 +1071,38 @@ $default-line-height: 18px; } } - .add-variation-container { - @extend %container-defaults; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 24px; - position: relative; - - .arrow-image-wrapper { - position: absolute; - top: 10px; - left: 87px; + #variable_product_options_inner { + > .toolbar:not(.expand-close-hidden) { + border-bottom: 1px solid #eee; } - - p { - @extend %centered-text; - } - - &.hidden { + .add-variation-container { display: none; } + + &.no-variations { + > .toolbar:not(.expand-close-hidden) { + border-bottom: none; + } + .add-variation-container { + display: flex; + @extend %container-defaults; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 24px; + position: relative; + + .arrow-image-wrapper { + position: absolute; + top: 10px; + left: 87px; + } + + p { + @extend %centered-text; + } + } + } } } @@ -5505,13 +5516,15 @@ img.help_tip { * WooCommerce meta boxes */ .wc-metaboxes-wrapper { + :not(#variable_product_options_inner) { + .toolbar:not(.expand-close-hidden) { + border-bottom: 1px solid #eee; + } + } .toolbar { margin: 0 !important; border-top: 1px solid white; padding: 9px 12px !important; - &:not(.expand-close-hidden) { - border-bottom: 1px solid #eee; - } &:first-child { border-top: 0; diff --git a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js index 9381368ffc6..874bde8498c 100644 --- a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js +++ b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js @@ -1331,10 +1331,14 @@ jQuery( function ( $ ) { '.woocommerce_variations' ); if ( parseInt( wrapper.attr( 'data-total' ) ) > 0 ) { - $( '.add-variation-container' ).addClass( 'hidden' ); + $( '#variable_product_options_inner' ).removeClass( + 'no-variations' + ); $( '#field_to_edit' ).removeClass( 'hidden' ); } else { - $( '.add-variation-container' ).removeClass( 'hidden' ); + $( '#variable_product_options_inner' ).addClass( + 'no-variations' + ); $( '#field_to_edit' ).addClass( 'hidden' ); } }, From eef417fe39d6b8e7340ef127c4e15240a6d1dc20 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 9 May 2023 15:12:29 -0300 Subject: [PATCH 089/249] Variations - Rename the Generate variations button after variations are created (#38084) * Rename 'Generate variations' button * Add changelog * Fix button rename * Refactor fix --- .../dev-38080_rename_generate_variations_button | 4 ++++ .../legacy/js/admin/meta-boxes-product-variation.js | 10 ++++++++++ 2 files changed, 14 insertions(+) create mode 100644 plugins/woocommerce/changelog/dev-38080_rename_generate_variations_button diff --git a/plugins/woocommerce/changelog/dev-38080_rename_generate_variations_button b/plugins/woocommerce/changelog/dev-38080_rename_generate_variations_button new file mode 100644 index 00000000000..075077ccfe9 --- /dev/null +++ b/plugins/woocommerce/changelog/dev-38080_rename_generate_variations_button @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Variations - Rename Generate variations button after variations are created. diff --git a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js index 874bde8498c..0940deb45a1 100644 --- a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js +++ b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product-variation.js @@ -1060,6 +1060,12 @@ jQuery( function ( $ ) { page = total_pages; } + if ( total_pages === 0 ) { + $( '.generate_variations' ).text( + 'Generate variations' + ); + } + wc_meta_boxes_product_variations_pagenav.go_to_page( page, -1 @@ -1126,6 +1132,9 @@ jQuery( function ( $ ) { 1, count ); + $( '.generate_variations' ).text( + 'Regenerate variations' + ); } else { wc_meta_boxes_product_variations_ajax.unblock(); } @@ -1296,6 +1305,7 @@ jQuery( function ( $ ) { $( '#variable_product_options' ) .find( '.variation-needs-update' ) .removeClass( 'variation-needs-update' ); + $( '.generate_variations' ).text( 'Generate variations' ); } else { wc_meta_boxes_product_variations_ajax.check_for_changes(); } From 227695386d9090e2116857a9db0a3bb5da8d9092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maikel=20David=20P=C3=A9rez=20G=C3=B3mez?= Date: Tue, 9 May 2023 19:13:56 -0400 Subject: [PATCH 090/249] Fix spacing between pricing fields (#38146) * Fix spacing between pricing fields * Add changelog file * Fix spacing between sale toggle and the next section --- packages/js/product-editor/changelog/add-38097 | 4 ++++ .../src/blocks/schedule-sale/editor.scss | 15 +++++++++++++++ .../src/components/block-editor/style.scss | 1 + 3 files changed, 20 insertions(+) create mode 100644 packages/js/product-editor/changelog/add-38097 diff --git a/packages/js/product-editor/changelog/add-38097 b/packages/js/product-editor/changelog/add-38097 new file mode 100644 index 00000000000..e70778d9952 --- /dev/null +++ b/packages/js/product-editor/changelog/add-38097 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix spacing between pricing fields diff --git a/packages/js/product-editor/src/blocks/schedule-sale/editor.scss b/packages/js/product-editor/src/blocks/schedule-sale/editor.scss index 8b4d06af52b..0d1cb54d151 100644 --- a/packages/js/product-editor/src/blocks/schedule-sale/editor.scss +++ b/packages/js/product-editor/src/blocks/schedule-sale/editor.scss @@ -1,6 +1,21 @@ .wp-block-woocommerce-product-schedule-sale-fields { + margin-bottom: $gap-large; + + .components-toggle-control { + margin-bottom: $gap; + padding-bottom: $gap-smaller; + } + .components-toggle-control__label { display: flex; align-items: center; } } + +.wp-block-woocommerce-product-section { + > .block-editor-inner-blocks > .block-editor-block-list__layout { + > .wp-block.wp-block-woocommerce-product-schedule-sale-fields:not( :first-child ) { + margin-top: $gap; + } + } +} diff --git a/packages/js/product-editor/src/components/block-editor/style.scss b/packages/js/product-editor/src/components/block-editor/style.scss index 1aa58956bef..17ac7b9e1ac 100644 --- a/packages/js/product-editor/src/components/block-editor/style.scss +++ b/packages/js/product-editor/src/components/block-editor/style.scss @@ -75,6 +75,7 @@ .wp-block-columns { gap: $gap-large; + margin-bottom: 0; } .wp-block-woocommerce-product-section { From d11f50b5a3acf6b0f134adf93a7b191619ae98f9 Mon Sep 17 00:00:00 2001 From: Matt Sherman Date: Tue, 9 May 2023 20:04:29 -0400 Subject: [PATCH 091/249] Update empty state for product attributes tab (#38126) * Remove empty state HTML * Add empty attribute when product has no attributes * Remove unused woocommerce_admin_meta_boxes.has_local_attributes * Remove unused toggle_add_global_attribute_layout * Remove unused button.add_attribute click handling (button doesn't exist anymore) * Fix positioning of Expand / Close * Remove unnecessary add-attribute-container div * Refactor attribute search selection handling * Remove empty attribute if adding an existing attribute * Update e2e test clicking of "Add new" attribute button * Update Tracks handling for "Add new" attribute button * Changelog * Fix action recorded when "Add new" button is clicked * Remove console.log statements * Allow propagation of click event on "Create value" button * Move Tracks wcadmin_product_attributes_buttons action: 'add_existing' to product-tracking TS * Make function names more descriptive. Add comment to clarify why event.preventDefault is used. --- .../product-tracking/shared.ts | 80 ++++++------ .../changelog/update-attribute-empty-state | 4 + .../legacy/js/admin/meta-boxes-product.js | 115 +++++++----------- .../includes/admin/class-wc-admin-assets.php | 1 - .../views/html-product-data-attributes.php | 85 +++---------- .../merchant/create-variable-product.spec.js | 6 +- 6 files changed, 106 insertions(+), 185 deletions(-) create mode 100644 plugins/woocommerce/changelog/update-attribute-empty-state diff --git a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts index 504ee724cd4..15892e6b31d 100644 --- a/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts +++ b/plugins/woocommerce-admin/client/wp-admin-scripts/product-tracking/shared.ts @@ -412,29 +412,44 @@ const attachProductTagsTracks = () => { * Attaches attributes tracks. */ const attachAttributesTracks = () => { - function addNewTermEventHandler() { - recordEvent( 'product_attributes_add_term', { - page: 'product', - } ); - } - - function addNewAttributeTermTracks() { - const addNewTermButtons = document.querySelectorAll( - '.woocommerce_attribute .add_new_attribute' - ); - addNewTermButtons.forEach( ( button ) => { - button.removeEventListener( 'click', addNewTermEventHandler ); - button.addEventListener( 'click', addNewTermEventHandler ); - } ); - } - addNewAttributeTermTracks(); + attachEventListenerToParentForChildren( '#product_attributes', [ + { + eventName: 'click', + childQuery: '.add_new_attribute', + callback: () => { + recordEvent( 'product_attributes_add_term', { + page: 'product', + } ); + }, + }, + ] ); +}; +/** + * Attaches Tracks event for when a new custom attribute is added to a product. + */ +const attachAddCustomAttributeTracks = () => { document - .querySelector( '.add_attribute' ) + .querySelector( '#product_attributes .add_custom_attribute' ) ?.addEventListener( 'click', () => { - setTimeout( () => { - addNewAttributeTermTracks(); - }, 1000 ); + recordEvent( 'product_attributes_buttons', { + action: 'add_new', + } ); + } ); +}; + +/** + * Attaches Tracks event for when an existing global attribute is added to a product. + */ +const attachAddExistingAttributeTracks = () => { + window + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Need to use jQuery to hook up to the select2:select event since the select2 component is jQuery-based + ?.jQuery( 'select.wc-attribute-search' ) + .on( 'select2:select', function () { + recordEvent( 'product_attributes_buttons', { + action: 'add_existing', + } ); } ); }; @@ -442,29 +457,8 @@ const attachAttributesTracks = () => { * Attaches product attributes tracks. */ const attachProductAttributesTracks = () => { - document - .querySelector( '#product_attributes .add_custom_attribute' ) - ?.addEventListener( 'click', () => { - recordEvent( 'product_attributes_buttons', { - action: 'add_first_attribute', - } ); - } ); - document - .querySelector( '#product_attributes .add_attribute' ) - ?.addEventListener( 'click', () => { - // We verify that we are not adding an existing attribute to not - // duplicate the recorded event. - const selectElement = document.querySelector( - '.attribute_taxonomy' - ) as HTMLSelectElement; - // Get the index of the selected option - const selectedIndex = selectElement.selectedIndex; - if ( selectElement.options[ selectedIndex ]?.value === '' ) { - recordEvent( 'product_attributes_buttons', { - action: 'add_new', - } ); - } - } ); + attachAddCustomAttributeTracks(); + attachAddExistingAttributeTracks(); const attributesSection = '#product_attributes'; diff --git a/plugins/woocommerce/changelog/update-attribute-empty-state b/plugins/woocommerce/changelog/update-attribute-empty-state new file mode 100644 index 00000000000..6086429a5de --- /dev/null +++ b/plugins/woocommerce/changelog/update-attribute-empty-state @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update empty state for product attributes tab. diff --git a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product.js b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product.js index 41b51571584..3d6d6afdc15 100644 --- a/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product.js +++ b/plugins/woocommerce/client/legacy/js/admin/meta-boxes-product.js @@ -57,12 +57,6 @@ jQuery( function ( $ ) { } ); } ); - $( function () { - if ( ! woocommerce_admin_meta_boxes.has_local_attributes ) { - $( 'button.add_attribute' ).trigger( 'click' ); - } - } ); - // Catalog Visibility. $( '#catalog-visibility' ) .find( '.edit-catalog-visibility' ) @@ -400,6 +394,14 @@ jQuery( function ( $ ) { .find( '.woocommerce_attribute' ) .get(); + // If the product has no attributes, add an empty attribute to be filled out by the user. + $( function add_blank_custom_attribute_if_no_attributes() { + + if ( woocommerce_attribute_items.length === 0 ) { + $( 'button.add_custom_attribute' ).trigger( 'click' ); + } + } ); + woocommerce_attribute_items.sort( function ( a, b ) { var compA = parseInt( $( a ).attr( 'rel' ), 10 ); var compB = parseInt( $( b ).attr( 'rel' ), 10 ); @@ -445,12 +447,6 @@ jQuery( function ( $ ) { selectedAttributes ); - function toggle_add_global_attribute_layout() { - $( 'div.add-attribute-container' ).toggle(); - $( 'div.add-global-attribute-container' ).toggle(); - $( '#product_attributes > .toolbar-buttons' ).toggle(); - } - function add_attribute( element, attribute ) { var size = $( '.product_attributes .woocommerce_attribute' ).length; var $wrapper = $( element ).closest( '#product_attributes' ); @@ -504,64 +500,52 @@ jQuery( function ( $ ) { } } - $( 'select.wc-attribute-search' ).on( 'select2:select', function ( e ) { - if ( e.params && e.params.data && e.params.data.id ) { - add_attribute( this, e.params.data.id ); - if ( ! selectedAttributes.includes( e.params.data.id ) ) { - selectedAttributes.push( e.params.data.id ); - $( 'select.wc-attribute-search' ).data( - 'disabled-items', - selectedAttributes - ); + function add_if_not_exists( arr, item ) { + return arr.includes( item ) ? attr : [ ...arr, item ]; + } + + function disable_in_attribute_search( selectedAttributes ) { + $( 'select.wc-attribute-search' ).data( 'disabled-items', selectedAttributes ); + } + + function remove_blank_custom_attribute_if_no_other_attributes() { + const $attributes = $( '.product_attributes .woocommerce_attribute' ); + + if ( $attributes.length === 1 ) { + const $attribute = $attributes.first(); + + const $attributeName = $attribute.find( 'input[name="attribute_names[0]"]' ); + const $attributeValue = $attribute.find( 'input[name="attribute_values[0]"]' ); + + if ( ! $attributeName.val() && ! $attributeValue.val() ) { + $attribute.remove(); } - window.wcTracks.recordEvent( 'product_attributes_buttons', { - action: 'add_existing', - } ); } + } + + $( 'select.wc-attribute-search' ).on( 'select2:select', function ( e ) { + const attributeId = e?.params?.data?.id; + + if ( attributeId ) { + remove_blank_custom_attribute_if_no_other_attributes(); + + add_attribute( this, attributeId ); + + selectedAttributes = add_if_not_exists( selectedAttributes, attributeId ); + disable_in_attribute_search( selectedAttributes ); + } + $( this ).val( null ); $( this ).trigger( 'change' ); - if ( - $( 'div.add-attribute-container' ).hasClass( 'hidden' ) && - ! $( 'div.add-global-attribute-container' ).hasClass( 'hidden' ) - ) { - toggle_add_global_attribute_layout(); - } return false; } ); // Add rows. - $( 'button.add_attribute' ).on( 'click', function () { - var attribute = $( 'select.attribute_taxonomy' ).val(); - if ( - ! attribute && - $( 'select.attribute_taxonomy' ).hasClass( 'wc-attribute-search' ) - ) { - return; - } - add_attribute( this, attribute ); - $( 'select.attribute_taxonomy' ).val( null ); - $( 'select.attribute_taxonomy' ).trigger( 'change' ); - - // We record the event only when an existing attribute is added. - if ( attribute !== '' ) { - window.wcTracks.recordEvent( 'product_attributes_buttons', { - action: 'add_existing', - } ); - } - - return false; - } ); $( 'button.add_custom_attribute' ).on( 'click', function () { add_attribute( this, '' ); - if ( - $( 'div.add-attribute-container' ).hasClass( 'hidden' ) && - ! $( 'div.add-global-attribute-container' ).hasClass( 'hidden' ) - ) { - toggle_add_global_attribute_layout(); - } return false; } ); @@ -694,16 +678,6 @@ jQuery( function ( $ ) { action: 'remove_attribute', } ); - if ( - ! $( '.woocommerce_attribute_data' ).is( ':visible' ) && - ! $( 'div.add-global-attribute-container' ).hasClass( - 'hidden' - ) && - $( '.product_attributes' ).find( 'input, select, textarea' ) - .length === 0 - ) { - toggle_add_global_attribute_layout(); - } jQuery.maybe_disable_save_button(); } return false; @@ -734,7 +708,10 @@ jQuery( function ( $ ) { $( '.product_attributes' ).on( 'click', 'button.add_new_attribute', - function () { + function ( event ) { + // prevent form submission but allow event propagation + event.preventDefault(); + $( '.product_attributes' ).block( { message: null, overlayCSS: { @@ -784,8 +761,6 @@ jQuery( function ( $ ) { } else { $( '.product_attributes' ).unblock(); } - - return false; } ); diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php index 65e189494da..a80ceed8406 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php @@ -416,7 +416,6 @@ if ( ! class_exists( 'WC_Admin_Assets', false ) ) : 'rounding_precision' => wc_get_rounding_precision(), 'tax_rounding_mode' => wc_get_tax_rounding_mode(), 'product_types' => array_unique( array_merge( array( 'simple', 'grouped', 'variable', 'external' ), array_keys( wc_get_product_types() ) ) ), - 'has_local_attributes' => ! empty( wc_get_attribute_taxonomies() ), 'i18n_download_permission_fail' => __( 'Could not grant access - the user may already have permission for this file or billing email is not set. Ensure the billing email is set, and the order has been saved.', 'woocommerce' ), 'i18n_permission_revoke' => __( 'Are you sure you want to revoke access to this download?', 'woocommerce' ), 'i18n_tax_rate_already_exists' => __( 'You cannot add the same tax rate twice!', 'woocommerce' ), diff --git a/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-attributes.php b/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-attributes.php index a757f0414e8..753dc99f84f 100644 --- a/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-attributes.php +++ b/plugins/woocommerce/includes/admin/meta-boxes/views/html-product-data-attributes.php @@ -13,78 +13,27 @@ global $wc_product_attributes; // Array of defined attribute taxonomies. $attribute_taxonomies = wc_get_attribute_taxonomies(); // Product attributes - taxonomies and custom, ordered, with visibility and variation attributes set. -$product_attributes = $product_object->get_attributes( 'edit' ); -$has_local_attributes = empty( $attribute_taxonomies ); -$has_global_attributes = empty( $product_attributes ); -$is_add_global_attribute_visible = ! $has_local_attributes && $has_global_attributes; -$icon_url = WC_ADMIN_IMAGES_FOLDER_URL . '/icons/global-attributes-icon.svg'; +$product_attributes = $product_object->get_attributes( 'edit' ); ?>