diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 644bc2e3..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -helix-importer-ui \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 34c6b711..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - root: true, - extends: 'airbnb-base', - env: { - browser: true, - }, - parser: '@babel/eslint-parser', - parserOptions: { - allowImportExportEverywhere: true, - sourceType: 'module', - requireConfigFile: false, - }, - rules: { - 'import/extensions': ['error', { js: 'always' }], // require js file extensions in imports - 'linebreak-style': ['error', 'unix'], // enforce unix linebreaks - 'no-param-reassign': [2, { props: false }], // allow modifying properties of param - }, -}; diff --git a/.gitignore b/.gitignore index 03182200..c20a12af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ .hlx/* logs/* - helix-importer-ui .DS_Store *.bak @@ -10,4 +9,6 @@ coverage node_modules dist stats.json -packages/web-components/screenshots/Chrome/failed/* \ No newline at end of file +web-components/screenshots/Chrome/failed/* +server.crt +server.key diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..209e3ef4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..96c36f53 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "tabWidth": 4 +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..f7cbdc08 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "search.followSymlinks": false, + "files.exclude": { + "mas.js": true + } +} diff --git a/README.md b/README.md index e4af21ab..753a6cff 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,16 @@ npm run lint ``` ## Local development +``` +npm run build +aem up +``` Refer to the corresponding README.md under any of the packages: -* commerce - constain generic commerce-related logic, 'price' and 'checkout-link' web components +* commerce - contains generic commerce-related logic, 'price' and 'checkout-link' web components * web-components - merch-card, merch-offer-selector and other web components +* studio - M@S Studio for creating, updating and publishing merch fragments + #### Troubleshooting Please reach out to us in `#tacocat-friends` for any questions. \ No newline at end of file diff --git a/commerce/.eslintrc.json b/commerce/.eslintrc.json deleted file mode 100644 index 0b9b9d4c..00000000 --- a/commerce/.eslintrc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "env": { - "browser": true, - "es2022": true - }, - "extends": [ - "plugin:prettier/recommended" - ], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "rules": { - "prettier/prettier": "error" - } -} diff --git a/commerce/build.mjs b/commerce/build.mjs index 7f7e4834..312b11de 100644 --- a/commerce/build.mjs +++ b/commerce/build.mjs @@ -10,7 +10,7 @@ console.log(`you're building from branch ${branch} with commit ${commitHash}`); const { metafile } = await build({ alias: { - react: './src/react-shim.js', + react: '../mocks/react.js', }, banner: { js: `// branch: ${branch} commit: ${commitHash} ${new Date().toUTCString()}`, @@ -20,7 +20,7 @@ const { metafile } = await build({ format: 'esm', metafile: true, minify: true, - outfile: './lib/commerce.js', + outfile: '../lib/commerce.js', platform: 'browser', sourcemap: true, target: ['es2020'], diff --git a/deps/commerce-checkout-url-builder-1.6.0.tgz b/commerce/internal/commerce-checkout-url-builder-1.6.0.tgz similarity index 100% rename from deps/commerce-checkout-url-builder-1.6.0.tgz rename to commerce/internal/commerce-checkout-url-builder-1.6.0.tgz diff --git a/deps/data-models-odm-0.5.4.tgz b/commerce/internal/data-models-odm-0.5.4.tgz similarity index 100% rename from deps/data-models-odm-0.5.4.tgz rename to commerce/internal/data-models-odm-0.5.4.tgz diff --git a/deps/data-source-utils-0.3.1.tgz b/commerce/internal/data-source-utils-0.3.1.tgz similarity index 100% rename from deps/data-source-utils-0.3.1.tgz rename to commerce/internal/data-source-utils-0.3.1.tgz diff --git a/deps/data-source-wcs-0.2.8.tgz b/commerce/internal/data-source-wcs-0.2.8.tgz similarity index 100% rename from deps/data-source-wcs-0.2.8.tgz rename to commerce/internal/data-source-wcs-0.2.8.tgz diff --git a/deps/eslint-config-tacocat-1.1.2.tgz b/commerce/internal/eslint-config-tacocat-1.1.2.tgz similarity index 100% rename from deps/eslint-config-tacocat-1.1.2.tgz rename to commerce/internal/eslint-config-tacocat-1.1.2.tgz diff --git a/deps/fetch-1.3.4.tgz b/commerce/internal/fetch-1.3.4.tgz similarity index 100% rename from deps/fetch-1.3.4.tgz rename to commerce/internal/fetch-1.3.4.tgz diff --git a/deps/logger-1.3.0.tgz b/commerce/internal/logger-1.3.0.tgz similarity index 100% rename from deps/logger-1.3.0.tgz rename to commerce/internal/logger-1.3.0.tgz diff --git a/deps/react-auth-provider-1.2.1.tgz b/commerce/internal/react-auth-provider-1.2.1.tgz similarity index 100% rename from deps/react-auth-provider-1.2.1.tgz rename to commerce/internal/react-auth-provider-1.2.1.tgz diff --git a/deps/react-env-provider-1.2.2.tgz b/commerce/internal/react-env-provider-1.2.2.tgz similarity index 100% rename from deps/react-env-provider-1.2.2.tgz rename to commerce/internal/react-env-provider-1.2.2.tgz diff --git a/deps/react-fetch-provider-1.2.2.tgz b/commerce/internal/react-fetch-provider-1.2.2.tgz similarity index 100% rename from deps/react-fetch-provider-1.2.2.tgz rename to commerce/internal/react-fetch-provider-1.2.2.tgz diff --git a/deps/tacocat-consonant-templates-1.13.0.tgz b/commerce/internal/tacocat-consonant-templates-1.13.0.tgz similarity index 100% rename from deps/tacocat-consonant-templates-1.13.0.tgz rename to commerce/internal/tacocat-consonant-templates-1.13.0.tgz diff --git a/deps/tacocat-core-1.12.2.tgz b/commerce/internal/tacocat-core-1.12.2.tgz similarity index 100% rename from deps/tacocat-core-1.12.2.tgz rename to commerce/internal/tacocat-core-1.12.2.tgz diff --git a/deps/tacocat-wcs-client-1.17.0.tgz b/commerce/internal/tacocat-wcs-client-1.17.0.tgz similarity index 100% rename from deps/tacocat-wcs-client-1.17.0.tgz rename to commerce/internal/tacocat-wcs-client-1.17.0.tgz diff --git a/commerce/package.json b/commerce/package.json index f1f4c889..235d9b8c 100644 --- a/commerce/package.json +++ b/commerce/package.json @@ -1,5 +1,5 @@ { - "name": "@wcms/commerce", + "name": "@adobe/mas-commerce", "version": "2.0.0", "files": [ "lib", @@ -13,48 +13,35 @@ "scripts": { "build": "npm run build:bundle && npm run build:types", "build:bundle": "node ./build.mjs", - "build:types": "cp ./src/index.d.ts ./lib/commerce.d.ts", + "build:types": "cp ./src/index.d.ts ../lib/commerce.d.ts", "build:watch": "npm run build:bundle --watch", "test": "wtr --config ./web-test-runner.config.mjs --coverage --watch", - "test:ci": "wtr --config ./web-test-runner.config.mjs --debug", - "test:file": "wtr --config ./web-test-runner.config.mjs --coverage --watch" + "test:ci": "wtr --config ./web-test-runner.config.mjs" }, "dependencies": { - "@dexter/tacocat-consonant-templates": "file:../deps/tacocat-consonant-templates-1.13.0.tgz", - "@dexter/tacocat-core": "file:../deps/tacocat-core-1.12.2.tgz", - "@dexter/tacocat-wcs-client": "file:../deps/tacocat-wcs-client-1.17.0.tgz", - "@pandora/commerce-checkout-url-builder": "file:../deps/commerce-checkout-url-builder-1.6.0.tgz", - "@pandora/data-models-odm": "file:../deps/data-models-odm-0.5.4.tgz", - "@pandora/data-source-wcs": "file:../deps/data-source-wcs-0.2.8.tgz", - "@pandora/data-source-utils": "file:../deps/data-source-utils-0.3.1.tgz", - "@pandora/fetch": "file:../deps/fetch-1.3.4.tgz", - "@pandora/react-auth-provider": "file:../deps/react-auth-provider-1.2.1.tgz", - "@pandora/react-env-provider": "file:../deps/react-env-provider-1.2.2.tgz", - "@pandora/react-fetch-provider": "file:../deps/react-fetch-provider-1.2.2.tgz", - "@pandora/logger": "file:../deps/logger-1.3.0.tgz" + "@dexter/tacocat-consonant-templates": "file:./internal/tacocat-consonant-templates-1.13.0.tgz", + "@dexter/tacocat-core": "file:./internal/tacocat-core-1.12.2.tgz", + "@dexter/tacocat-wcs-client": "file:./internal/tacocat-wcs-client-1.17.0.tgz", + "@pandora/commerce-checkout-url-builder": "file:./internal/commerce-checkout-url-builder-1.6.0.tgz", + "@pandora/data-models-odm": "file:./internal/data-models-odm-0.5.4.tgz", + "@pandora/data-source-wcs": "file:./internal/data-source-wcs-0.2.8.tgz", + "@pandora/data-source-utils": "file:./internal/data-source-utils-0.3.1.tgz", + "@pandora/fetch": "file:./internal/fetch-1.3.4.tgz", + "@pandora/react-auth-provider": "file:./internal/react-auth-provider-1.2.1.tgz", + "@pandora/react-env-provider": "file:./internal/react-env-provider-1.2.2.tgz", + "@pandora/react-fetch-provider": "file:./internal/react-fetch-provider-1.2.2.tgz", + "@pandora/logger": "file:./internal/logger-1.3.0.tgz" }, "devDependencies": { - "@dexter/eslint-config-tacocat": "file:../deps/eslint-config-tacocat-1.1.2.tgz", - "@esm-bundle/chai": "4.3.4-fix.0", - "@esm-bundle/chai-as-promised": "7.1.1", - "@types/chai-as-promised": "7.1.5", - "@types/sinon": "10.0.15", "@web/dev-server-import-maps": "^0.1.1", - "@web/test-runner": "0.13.27", - "@web/test-runner-commands": "0.6.1", - "@web/test-runner-playwright": "0.10.1", - "esbuild": "0.18.11", - "eslint": "8.20.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-plugin-chai-friendly": "0.7.2", - "eslint-plugin-compat": "4.0.2", - "eslint-plugin-ecmalist": "1.0.8", - "eslint-plugin-import": "2.26.0", - "sinon": "13.0.1" + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "@web/test-runner-visual-regression": "^0.9.0", + "esbuild": "0.18.11" }, "repository": { "type": "git", "url": "git@github.com:adobecom/mas.git", - "directory": "packages/commerce" + "directory": "commerce" } } diff --git a/commerce/src/checkout-link.js b/commerce/src/checkout-link.js index cd5ca93f..1351176a 100644 --- a/commerce/src/checkout-link.js +++ b/commerce/src/checkout-link.js @@ -81,7 +81,7 @@ export class HTMLCheckoutAnchorElement extends HTMLAnchorElement { // @ts-ignore const elements = selectPlaceholders( HTMLCheckoutAnchorElement, - container + container, ); return elements; } @@ -119,7 +119,7 @@ export class HTMLCheckoutAnchorElement extends HTMLAnchorElement { } const options = service.collectCheckoutOptions( overrides, - this.placeholder + this.placeholder, ); if (!options.wcsOsi.length) return false; let extraOptions; @@ -137,14 +137,14 @@ export class HTMLCheckoutAnchorElement extends HTMLAnchorElement { offers = offers.map((offer) => selectOffers(offer, options)); const checkoutAction = await service.buildCheckoutAction( offers.flat(), - { ...extraOptions, ...options } + { ...extraOptions, ...options }, ); return this.renderOffers( offers.flat(), options, {}, checkoutAction, - version + version, ); } @@ -161,13 +161,13 @@ export class HTMLCheckoutAnchorElement extends HTMLAnchorElement { options, overrides = {}, checkoutAction = undefined, - version = undefined + version = undefined, ) { if (!this.isConnected) return false; const service = useService(); if (!service) return false; const extraOptions = JSON.parse( - this.placeholder.dataset.extraOptions ?? 'null' + this.placeholder.dataset.extraOptions ?? 'null', ); options = { ...extraOptions, ...options, ...overrides }; version ??= this.placeholder.togglePending(options); diff --git a/commerce/src/checkout.js b/commerce/src/checkout.js index d1f24175..5832bce9 100644 --- a/commerce/src/checkout.js +++ b/commerce/src/checkout.js @@ -55,14 +55,14 @@ export function Checkout({ providers, settings }, dataProviders) { const workflow = toEnumeration( checkoutWorkflow, CheckoutWorkflow, - Defaults.checkoutWorkflow + Defaults.checkoutWorkflow, ); let workflowStep = CheckoutWorkflowStep.CHECKOUT; if (workflow === CheckoutWorkflow.V3) { workflowStep = toEnumeration( checkoutWorkflowStep, CheckoutWorkflowStep, - Defaults.checkoutWorkflowStep + Defaults.checkoutWorkflowStep, ); } const options = omitProperties({ @@ -96,7 +96,7 @@ export function Checkout({ providers, settings }, dataProviders) { const checkoutAction = await dataProviders.getCheckoutAction?.( offers, options, - instance.imsSignedInPromise + instance.imsSignedInPromise, ); if (checkoutAction) { return checkoutAction; @@ -148,14 +148,14 @@ export function Checkout({ providers, settings }, dataProviders) { data.items.push( quantity[0] === 1 ? { id: offerId } - : { id: offerId, quantity: quantity[0] } + : { id: offerId, quantity: quantity[0] }, ); } else { data.items.push( ...offers.map(({ offerId }, index) => ({ id: offerId, quantity: quantity[index] ?? Defaults.quantity, - })) + })), ); } return buildCheckoutUrl(workflow, data); diff --git a/commerce/src/ims.js b/commerce/src/ims.js index e5eadc0f..ac6b5f8c 100644 --- a/commerce/src/ims.js +++ b/commerce/src/ims.js @@ -10,7 +10,6 @@ export function imsReady({ interval = 200, maxAttempts = 25 } = {}) { function poll() { if (window.adobeIMS?.initialized) { resolve(); - // eslint-disable-next-line no-plusplus } else if (++count > maxAttempts) { log.debug('Timeout'); resolve(); @@ -24,7 +23,9 @@ export function imsReady({ interval = 200, maxAttempts = 25 } = {}) { /** @type {Commerce.Ims.imsSignedIn} */ export function imsSignedIn(imsReadyPromise) { - return imsReadyPromise.then(() => window.adobeIMS.isSignedInUser()); + return imsReadyPromise.then( + () => window.adobeIMS?.isSignedInUser() ?? false, + ); } /** @type {Commerce.Ims.imsCountry} */ @@ -40,7 +41,7 @@ export function imsCountry(imsSignedInPromise) { (error) => { log.error('Unable to get user country:', error); return undefined; - } + }, ); }); } diff --git a/commerce/src/inline-price.js b/commerce/src/inline-price.js index 1a65454c..13981348 100644 --- a/commerce/src/inline-price.js +++ b/commerce/src/inline-price.js @@ -8,16 +8,80 @@ import { selectOffers, useService } from './utilities.js'; import { GeoMap } from './settings'; // countries where tax is displayed for all segments by default -const DISPLAY_ALL_TAX_COUNTRIES = [GeoMap.uk, GeoMap.au, GeoMap.fr, GeoMap.at, GeoMap.be_en, GeoMap.be_fr, GeoMap.be_nl, GeoMap.bg, GeoMap.ch_de, GeoMap.ch_fr, GeoMap.ch_it, - GeoMap.cz, GeoMap.de, GeoMap.dk, GeoMap.ee, GeoMap.eg_ar, GeoMap.eg_en, GeoMap.es, GeoMap.fi, GeoMap.fr, GeoMap.gr_el, GeoMap.gr_en, GeoMap.hu, GeoMap.ie, GeoMap.it, GeoMap.lu_de, - GeoMap.lu_en, GeoMap.lu_fr, GeoMap.nl, GeoMap.no, GeoMap.pl, GeoMap.pt, GeoMap.ro, GeoMap.se, GeoMap.si, GeoMap.sk, GeoMap.tr, GeoMap.ua, GeoMap.id_en, GeoMap.id_id, - GeoMap.in_en, GeoMap.in_hi, GeoMap.jp, GeoMap.my_en, GeoMap.my_ms, GeoMap.nz, GeoMap.th_en, GeoMap.th_th]; +const DISPLAY_ALL_TAX_COUNTRIES = [ + GeoMap.uk, + GeoMap.au, + GeoMap.fr, + GeoMap.at, + GeoMap.be_en, + GeoMap.be_fr, + GeoMap.be_nl, + GeoMap.bg, + GeoMap.ch_de, + GeoMap.ch_fr, + GeoMap.ch_it, + GeoMap.cz, + GeoMap.de, + GeoMap.dk, + GeoMap.ee, + GeoMap.eg_ar, + GeoMap.eg_en, + GeoMap.es, + GeoMap.fi, + GeoMap.fr, + GeoMap.gr_el, + GeoMap.gr_en, + GeoMap.hu, + GeoMap.ie, + GeoMap.it, + GeoMap.lu_de, + GeoMap.lu_en, + GeoMap.lu_fr, + GeoMap.nl, + GeoMap.no, + GeoMap.pl, + GeoMap.pt, + GeoMap.ro, + GeoMap.se, + GeoMap.si, + GeoMap.sk, + GeoMap.tr, + GeoMap.ua, + GeoMap.id_en, + GeoMap.id_id, + GeoMap.in_en, + GeoMap.in_hi, + GeoMap.jp, + GeoMap.my_en, + GeoMap.my_ms, + GeoMap.nz, + GeoMap.th_en, + GeoMap.th_th, +]; // countries where tax is displayed for some segments only by default const DISPLAY_TAX_MAP = { - 'INDIVIDUAL_COM': [GeoMap.za, GeoMap.lt, GeoMap.lv, GeoMap.ng, GeoMap.sa_ar, GeoMap.sa_en, GeoMap.za, GeoMap.sg, GeoMap.kr], // individual - 'TEAM_COM': [GeoMap.za, GeoMap.lt, GeoMap.lv, GeoMap.ng, GeoMap.za, GeoMap.co, GeoMap.kr], // business - 'INDIVIDUAL_EDU': [GeoMap.lt, GeoMap.lv, GeoMap.sa_en, GeoMap.sea], // student - 'TEAM_EDU': [GeoMap.sea, GeoMap.kr], // school and uni + INDIVIDUAL_COM: [ + GeoMap.za, + GeoMap.lt, + GeoMap.lv, + GeoMap.ng, + GeoMap.sa_ar, + GeoMap.sa_en, + GeoMap.za, + GeoMap.sg, + GeoMap.kr, + ], // individual + TEAM_COM: [ + GeoMap.za, + GeoMap.lt, + GeoMap.lv, + GeoMap.ng, + GeoMap.za, + GeoMap.co, + GeoMap.kr, + ], // business + INDIVIDUAL_EDU: [GeoMap.lt, GeoMap.lv, GeoMap.sa_en, GeoMap.sea], // student + TEAM_EDU: [GeoMap.sea, GeoMap.kr], // school and uni }; /** @type {Commerce.Price.PlaceholderConstructor} */ @@ -97,14 +161,22 @@ export class HTMLPriceSpanElement extends HTMLSpanElement { * Resolves default value of displayTax property, based on provided geo info and segments. * @returns {boolean} */ - resolveDisplayTaxForGeoAndSegment(country, language, customerSegment, marketSegment) { + resolveDisplayTaxForGeoAndSegment( + country, + language, + customerSegment, + marketSegment, + ) { const locale = `${country}_${language}`; - if (DISPLAY_ALL_TAX_COUNTRIES.includes(country) - || DISPLAY_ALL_TAX_COUNTRIES.includes(locale)) { + if ( + DISPLAY_ALL_TAX_COUNTRIES.includes(country) || + DISPLAY_ALL_TAX_COUNTRIES.includes(locale) + ) { return true; } - const segmentConfig = DISPLAY_TAX_MAP[`${customerSegment}_${marketSegment}`]; + const segmentConfig = + DISPLAY_TAX_MAP[`${customerSegment}_${marketSegment}`]; if (!segmentConfig) { return false; } @@ -127,7 +199,12 @@ export class HTMLPriceSpanElement extends HTMLSpanElement { const { country, language } = options; const offer = offers[0]; const [marketSegment = ''] = offer.marketSegments; - return this.resolveDisplayTaxForGeoAndSegment(country, language, offer.customerSegment, marketSegment); + return this.resolveDisplayTaxForGeoAndSegment( + country, + language, + offer.customerSegment, + marketSegment, + ); } } @@ -141,13 +218,14 @@ export class HTMLPriceSpanElement extends HTMLSpanElement { if (!service) return false; const options = service.collectPriceOptions( overrides, - this.placeholder + this.placeholder, ); if (!options.wcsOsi.length) return false; if (!this.placeholder.dataset.displayTax) { // set default value for displayTax if not set neither in OST nor in price URL - options.displayTax = await this.resolveDisplayTax(service, options) || false; + options.displayTax = + (await this.resolveDisplayTax(service, options)) || false; } const version = this.placeholder.togglePending(options); @@ -156,7 +234,7 @@ export class HTMLPriceSpanElement extends HTMLSpanElement { return this.renderOffers( selectOffers(await promise, options), options, - version + version, ); } diff --git a/commerce/src/lana.js b/commerce/src/lana.js index 2b7d8a56..4d7101c4 100644 --- a/commerce/src/lana.js +++ b/commerce/src/lana.js @@ -77,7 +77,7 @@ const lanaAppender = { if (!seenPayloads.has(payload)) { seenPayloads.add(payload); - window.lana.log(payload, { sampleRate, tags, clientId }); + window.lana?.log(payload, { sampleRate, tags, clientId }); } }, }; diff --git a/commerce/src/literals.js b/commerce/src/literals.js index 78212b5b..c6d72752 100644 --- a/commerce/src/literals.js +++ b/commerce/src/literals.js @@ -27,7 +27,7 @@ export async function fetchPriceLiterals(settings) { if (Array.isArray(data)) { const find = (language) => data.find((candidate) => - equalsCaseInsensitive(candidate.lang, language) + equalsCaseInsensitive(candidate.lang, language), ); const literals = find(settings.language) ?? find(Defaults.language); if (literals) return Object.freeze(literals); diff --git a/commerce/src/log.js b/commerce/src/log.js index 83bf938c..6f56370b 100644 --- a/commerce/src/log.js +++ b/commerce/src/log.js @@ -27,11 +27,11 @@ const Level = Object.freeze({ const consoleAppender = { append({ level, message, params, timestamp, source }) { /* c8 ignore start */ - // eslint-disable-next-line no-console + console[level]( `${timestamp}ms [${source}] %c${message}`, 'font-weight: bold;', - ...params + ...params, ); /* c8 ignore stop */ }, @@ -116,7 +116,7 @@ function init(env = {}) { const { name } = env; const debug = toBoolean( getParameter('commerce.debug', { search: true, storage: true }), - name === MiloEnv.LOCAL + name === MiloEnv.LOCAL, ); if (debug) use(consoleAppender); else use(debugFilter); diff --git a/commerce/src/placeholder.js b/commerce/src/placeholder.js index 251edbd6..dbe6c707 100644 --- a/commerce/src/placeholder.js +++ b/commerce/src/placeholder.js @@ -98,7 +98,7 @@ function notify(element) { } } element.dispatchEvent( - new CustomEvent(StateEventType[state], { bubbles: true }) + new CustomEvent(StateEventType[state], { bubbles: true }), ); } @@ -327,11 +327,11 @@ export function definePlaceholder(Class) { // Extend placeholder prototype with mixin members Object.defineProperties( prototype, - Object.getOwnPropertyDescriptors(HTMLPlaceholderMixin) + Object.getOwnPropertyDescriptors(HTMLPlaceholderMixin), ); PlaceholderClass = Object.defineProperties( Class, - Object.getOwnPropertyDescriptors(PlaceholderConstants) + Object.getOwnPropertyDescriptors(PlaceholderConstants), ); // Define custom DOM element window.customElements.define(is, PlaceholderClass, { extends: tag }); @@ -348,7 +348,7 @@ export function definePlaceholder(Class) { */ export function selectPlaceholders(Class, container = document.body) { return Array.from( - container?.querySelectorAll(`${Class.tag}[is="${Class.is}"]`) ?? [] + container?.querySelectorAll(`${Class.tag}[is="${Class.is}"]`) ?? [], ); } diff --git a/commerce/src/price.js b/commerce/src/price.js index 8711e287..0fd10d36 100644 --- a/commerce/src/price.js +++ b/commerce/src/price.js @@ -102,7 +102,7 @@ export function Price({ literals, providers, settings }) { context.literals = Object.assign( {}, literals.price, - omitProperties(options.literals ?? {}) + omitProperties(options.literals ?? {}), ); let [offer] = offers; offer = { ...offer, ...offer.priceDetails }; diff --git a/commerce/src/react-shim.js b/commerce/src/react-shim.js deleted file mode 100644 index b1cab1f1..00000000 --- a/commerce/src/react-shim.js +++ /dev/null @@ -1,12 +0,0 @@ -import { ignore } from './external.js'; - -// some referenced @pandora modules import `react` -// but it never activates from this package -// and can be mocked to decrease size of the resulting bundle - -const React = ignore; -const useContext = ignore; -const useMemo = ignore; - -export default React; -export { useContext, useMemo }; diff --git a/commerce/src/service.js b/commerce/src/service.js index 9d7ff9f5..eed7cc0e 100644 --- a/commerce/src/service.js +++ b/commerce/src/service.js @@ -94,7 +94,7 @@ async function activateService(config, dataProviders) { get settings() { return settings; }, - }) + }), ); log.debug('Activated:', { literals, settings, element }); // Append web component and dispatch "ready" event @@ -126,7 +126,7 @@ export function initService(getConfig, getProviders) { if (dataProviders.force) resetService(); return (HTMLWcmsCommerceElement.promise ??= activateService( getConfig(), - dataProviders + dataProviders, )); } // Return existing promise diff --git a/commerce/src/settings.js b/commerce/src/settings.js index e753c2a9..aa31eb9a 100644 --- a/commerce/src/settings.js +++ b/commerce/src/settings.js @@ -141,7 +141,7 @@ function getSettings(config = {}) { : toEnumeration( getParameter(PARAM_ENV, commerce, { metadata: false }), HostEnv, - HostEnv.PROD + HostEnv.PROD, ); const env = hostEnv === HostEnv.STAGE ? Env.STAGE : Env.PRODUCTION; const checkoutClientId = @@ -149,40 +149,40 @@ function getSettings(config = {}) { const checkoutWorkflow = toEnumeration( getParameter('checkoutWorkflow', commerce), CheckoutWorkflow, - Defaults.checkoutWorkflow + Defaults.checkoutWorkflow, ); let checkoutWorkflowStep = CheckoutWorkflowStep.CHECKOUT; if (checkoutWorkflow === CheckoutWorkflow.V3) { checkoutWorkflowStep = toEnumeration( getParameter('checkoutWorkflowStep', commerce), CheckoutWorkflowStep, - Defaults.checkoutWorkflowStep + Defaults.checkoutWorkflowStep, ); } const displayOldPrice = toBoolean( getParameter('displayOldPrice', commerce), - Defaults.displayOldPrice + Defaults.displayOldPrice, ); const displayPerUnit = toBoolean( getParameter('displayPerUnit', commerce), - Defaults.displayPerUnit + Defaults.displayPerUnit, ); const displayRecurrence = toBoolean( getParameter('displayRecurrence', commerce), - Defaults.displayRecurrence + Defaults.displayRecurrence, ); const displayTax = toBoolean( getParameter('displayTax', commerce), - Defaults.displayTax + Defaults.displayTax, ); const entitlement = toBoolean( getParameter('entitlement', commerce), - Defaults.entitlement + Defaults.entitlement, ); const modal = toBoolean(getParameter('modal', commerce), Defaults.modal); const forceTaxExclusive = toBoolean( getParameter('forceTaxExclusive', commerce), - Defaults.forceTaxExclusive + Defaults.forceTaxExclusive, ); const promotionCode = getParameter('promotionCode', commerce) ?? Defaults.promotionCode; @@ -194,15 +194,15 @@ function getSettings(config = {}) { : toEnumeration( getParameter(PARAM_LANDSCAPE, commerce), Landscape, - Defaults.landscape + Defaults.landscape, ); let wcsBufferDelay = toPositiveFiniteInteger( getParameter('wcsBufferDelay', commerce), - Defaults.wcsBufferDelay + Defaults.wcsBufferDelay, ); let wcsBufferLimit = toPositiveFiniteInteger( getParameter('wcsBufferLimit', commerce), - Defaults.wcsBufferLimit + Defaults.wcsBufferLimit, ); const domainSwitch = toBoolean(getParameter('domain.switch', commerce), false); diff --git a/commerce/src/utilities.js b/commerce/src/utilities.js index 338207b7..54c4a2ba 100644 --- a/commerce/src/utilities.js +++ b/commerce/src/utilities.js @@ -35,7 +35,7 @@ export function discoverService(getConfig, { once = false } = {}) { */ export function selectOffers( offers, - { country, forceTaxExclusive, perpetual } + { country, forceTaxExclusive, perpetual }, ) { let selected; if (offers.length < 2) selected = offers; diff --git a/commerce/src/wcs.js b/commerce/src/wcs.js index 9970e491..1648c2b0 100644 --- a/commerce/src/wcs.js +++ b/commerce/src/wcs.js @@ -82,7 +82,7 @@ export function Wcs({ settings }) { }, ({ resolvedOffers }) => ({ offers: resolvedOffers.map(applyPlanType), - }) + }), ); log.debug('Fetched:', options, data); const { offers } = data ?? {}; @@ -91,7 +91,7 @@ export function Wcs({ settings }) { // select offers with current OSI const resolved = offers .filter(({ offerSelectorIds }) => - offerSelectorIds.includes(offerSelectorId) + offerSelectorIds.includes(offerSelectorId), ) .flat(); // resolve current promise if at least 1 offer is present @@ -110,9 +110,9 @@ export function Wcs({ settings }) { resolveWcsOffers( { ...options, offerSelectorIds: [offerSelectorId] }, promises, - false // do not reject promises for missing offers, this will be done below - ) - ) + false, // do not reject promises for missing offers, this will be done below + ), + ), ); } else { log.error('Failed:', options, error); @@ -137,7 +137,7 @@ export function Wcs({ settings }) { const pending = [...queue.values()]; queue.clear(); pending.forEach(({ options, promises }) => - resolveWcsOffers(options, promises) + resolveWcsOffers(options, promises), ); } @@ -189,7 +189,7 @@ export function Wcs({ settings }) { if (!timer) { timer = setTimeout( flushQueue, - settings.wcsBufferDelay + settings.wcsBufferDelay, ); } } diff --git a/commerce/test/checkout.test.js b/commerce/test/checkout.test.js index 87774665..55247612 100644 --- a/commerce/test/checkout.test.js +++ b/commerce/test/checkout.test.js @@ -16,10 +16,12 @@ import { import { initService, resetService } from '../src/service.js'; import { mockConfig } from './mocks/config.js'; -import { mockFetch, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; import { mockIms, unmockIms } from './mocks/ims.js'; import { mockLana, unmockLana } from './mocks/lana.js'; +import { withLiterals } from './mocks/literals.js'; import { mockProviders } from './mocks/providers.js'; +import { withWcs } from './mocks/wcs.js'; import { expect, sinon } from './utilities.js'; const HREF = 'https://test.org/'; @@ -32,7 +34,7 @@ const HREF = 'https://test.org/'; function mockCheckoutLink(wcsOsi, options = {}, append = true) { const element = CheckoutLink.createCheckoutLink( { wcsOsi, ...options }, - `Buy now: ${wcsOsi}` + `Buy now: ${wcsOsi}`, ); if (append) document.body.append(element, document.createElement('br')); return element; @@ -44,13 +46,12 @@ let fetch; afterEach(() => { document.body.innerHTML = ''; resetService(); - unmockFetch(); unmockIms(); unmockLana(); }); beforeEach(async () => { - fetch = await mockFetch(); + fetch = await mockFetch(withWcs, withLiterals); mockLana(); }); @@ -60,7 +61,7 @@ describe('class "CheckoutLink"', () => { const checkoutLink = mockCheckoutLink('abm'); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -69,12 +70,12 @@ describe('class "CheckoutLink"', () => { mockConfig({ checkoutWorkflowStep: CheckoutWorkflowStep.SEGMENTATION, }), - mockProviders() + mockProviders(), ); const checkoutLink = mockCheckoutLink('abm'); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/segmentation?ms=COM&ot=BASE&pa=ccsn_direct_individual&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/segmentation?ms=COM&ot=BASE&pa=ccsn_direct_individual&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -85,7 +86,7 @@ describe('class "CheckoutLink"', () => { }); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/segmentation?ms=COM&ot=BASE&pa=ccsn_direct_individual&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/segmentation?ms=COM&ot=BASE&pa=ccsn_direct_individual&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -97,7 +98,7 @@ describe('class "CheckoutLink"', () => { await delay(1); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=CH&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=CH&lang=en', ); }); @@ -108,12 +109,12 @@ describe('class "CheckoutLink"', () => { }); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&apc=nicopromo&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&apc=nicopromo&cli=adobe_com&ctx=fp&co=US&lang=en', ); checkoutLink.dataset.promotionCode = 'testpromo'; await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&apc=testpromo&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&apc=testpromo&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -141,7 +142,7 @@ describe('class "CheckoutLink"', () => { }); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&items%5B0%5D%5Bq%5D=2&items%5B1%5D%5Bid%5D=7164A328080BC96CC60FEBF33F64342D&items%5B1%5D%5Bq%5D=2&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&items%5B0%5D%5Bq%5D=2&items%5B1%5D%5Bid%5D=7164A328080BC96CC60FEBF33F64342D&items%5B1%5D%5Bq%5D=2&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -149,7 +150,7 @@ describe('class "CheckoutLink"', () => { await initService(mockConfig(), mockProviders()); const checkoutLink = mockCheckoutLink('no-offer'); await expect(checkoutLink.onceSettled()).eventually.be.rejectedWith( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); }); @@ -157,7 +158,7 @@ describe('class "CheckoutLink"', () => { await initService(mockConfig(), mockProviders()); const checkoutLink = mockCheckoutLink('xyz'); await expect(checkoutLink.onceSettled()).eventually.be.rejectedWith( - ERROR_MESSAGE_BAD_REQUEST + ERROR_MESSAGE_BAD_REQUEST, ); }); @@ -168,7 +169,7 @@ describe('class "CheckoutLink"', () => { }); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=C5AC20C8AAF4892B67DE2E89B26D8ACA&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=C5AC20C8AAF4892B67DE2E89B26D8ACA&cli=adobe_com&ctx=fp&co=US&lang=en', ); expect(fetch.lastCall.args[0]).to.contain('language=EN'); @@ -176,7 +177,7 @@ describe('class "CheckoutLink"', () => { checkoutLink.dataset.perpetual = 'false'; const promise = checkoutLink.onceSettled(); await expect(promise).eventually.be.rejectedWith( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); expect(fetch.lastCall.args[0]).to.contain('language=MULT'); }); @@ -188,12 +189,12 @@ describe('class "CheckoutLink"', () => { }); await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&mv=1&mv2=2&promoid=abc&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&mv=1&mv2=2&promoid=abc&lang=en', ); delete checkoutLink.dataset.extraOptions; await checkoutLink.onceSettled(); expect(checkoutLink.href).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); @@ -266,15 +267,15 @@ describe('class "CheckoutLink"', () => { link.updateOptions(options); const { dataset } = link; expect(dataset.checkoutMarketSegment).to.equal( - options.checkoutMarketSegment + options.checkoutMarketSegment, ); expect(dataset.checkoutWorkflow).to.equal(options.checkoutWorkflow); expect(dataset.checkoutWorkflowStep).to.equal( - options.checkoutWorkflowStep + options.checkoutWorkflowStep, ); expect(dataset.perpetual).to.equal(String(options.perpetual)); expect(dataset.promotionCode).to.equal( - String(options.promotionCode) + String(options.promotionCode), ); expect(dataset.quantity).to.equal(String(options.quantity)); expect(dataset.wcsOsi).to.equal(String(options.wcsOsi)); @@ -305,14 +306,14 @@ describe('class "CheckoutLink"', () => { className: CLASS_NAME_DOWNLOAD, url: 'https://helpx.adobe.com/download-install.html', }, - }) + }), ); const checkoutLink = mockCheckoutLink('abm'); await checkoutLink.onceSettled(); expect(checkoutLink.textContent.trim()).to.equal('Download'); expect(checkoutLink.classList.contains('download')).to.be.true; expect(checkoutLink.getAttribute('href')).to.equal( - 'https://helpx.adobe.com/download-install.html' + 'https://helpx.adobe.com/download-install.html', ); }); @@ -327,7 +328,7 @@ describe('class "CheckoutLink"', () => { className: CLASS_NAME_UPGRADE, handler, }, - }) + }), ); const checkoutLink = mockCheckoutLink('abm'); await checkoutLink.onceSettled(); @@ -345,7 +346,7 @@ describe('class "CheckoutLink"', () => { await checkoutLink.onceSettled(); expect(checkoutLink.textContent.trim()).to.equal('Buy now: abm'); expect(checkoutLink.getAttribute('href')).to.equal( - 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en' + 'https://commerce.adobe.com/store/email?items%5B0%5D%5Bid%5D=632B3ADD940A7FBB7864AA5AD19B8D28&cli=adobe_com&ctx=fp&co=US&lang=en', ); }); }); @@ -356,7 +357,7 @@ describe('commerce service', () => { it('returns empty string if no offers provided', async () => { const { buildCheckoutURL } = await initService( mockConfig(), - mockProviders() + mockProviders(), ); expect(buildCheckoutURL([])).to.be.empty; }); diff --git a/commerce/test/ims.test.js b/commerce/test/ims.test.js index 06c3df47..346523c7 100644 --- a/commerce/test/ims.test.js +++ b/commerce/test/ims.test.js @@ -30,7 +30,7 @@ describe('IMS module', () => { const clock = sinon.useFakeTimers(); let attempt = -1; - // eslint-disable-next-line no-plusplus + while (++attempt < maxAttempts) { clock.tick(interval); clock.runAll(); diff --git a/commerce/test/literals.test.js b/commerce/test/literals.test.js index a4d14524..c478decc 100644 --- a/commerce/test/literals.test.js +++ b/commerce/test/literals.test.js @@ -1,16 +1,13 @@ import { Defaults } from '../src/index.js'; import { fetchPriceLiterals } from '../src/literals.js'; -import { mockFetch, priceLiteralsURL, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; +import { priceLiteralsURL, withLiterals } from './mocks/literals.js'; import { expect } from './utilities.js'; describe('function "fetchPriceLiterals"', () => { - afterEach(() => { - unmockFetch(); - }); - beforeEach(async () => { - await mockFetch(); + await mockFetch(withLiterals); }); it('throws if settings argument does not have `priceLiteralsURL` nor `priceLiteralsPromise` property', async () => { @@ -26,7 +23,7 @@ describe('function "fetchPriceLiterals"', () => { recurrenceLabel: '{recurrenceTerm, select, MONTH {/mo} YEAR {/yr} other {}}', }, - ]) + ]), ); // @ts-ignore const literals = await fetchPriceLiterals({ diff --git a/commerce/test/mocks b/commerce/test/mocks new file mode 120000 index 00000000..51ef1c67 --- /dev/null +++ b/commerce/test/mocks @@ -0,0 +1 @@ +../../mocks \ No newline at end of file diff --git a/commerce/test/mocks/fetch.js b/commerce/test/mocks/fetch.js deleted file mode 100644 index 0dff7f1b..00000000 --- a/commerce/test/mocks/fetch.js +++ /dev/null @@ -1,71 +0,0 @@ -import { sinon } from '../utilities.js'; - -export const priceLiteralsURL = - 'https://milo.adobe.com/libs/commerce/price-literals.json'; - -const { fetch } = window; - -export async function mockFetch() { - const originalFetch = window.fetch; - const literals = JSON.parse( - await originalFetch('/test/mocks/literals.json').then((r) => r.text()) - ); - const offers = JSON.parse( - await originalFetch('/test/mocks/offers.json').then((r) => r.text()) - ); - - const stub = sinon.stub().callsFake((...args) => { - const { href, pathname, searchParams } = new URL(String(args[0])); - - // mock Wcs responses - if (pathname.endsWith('/web_commerce_artifact')) { - const language = searchParams.get('language').toLowerCase(); - const buckets = searchParams - .get('offer_selector_ids') - .split(',') - .map((osi) => - offers[`${osi}-${language}`]?.map((offer) => ({ - ...offer, - offerSelectorIds: [osi], - })) - ); - - // 404 if any of requested osis does not exist - if (buckets.some((bucket) => bucket == null)) { - return Promise.resolve({ - ok: false, - status: 404, - json: () => Promise.reject(), - text: () => Promise.resolve('Some osis were not found'), - }); - } - - // 200, all osis were found - return Promise.resolve({ - ok: true, - status: 200, - json: () => - Promise.resolve({ - resolvedOffers: buckets.flatMap((array) => array ?? []), - }), - text: () => Promise.resolve('Unexpected error'), - }); - } - - // mock literals fetches - if (href === priceLiteralsURL) { - return Promise.resolve({ - ok: true, - json: () => Promise.resolve(literals), - }); - } - - return fetch.apply(window, args); - }); - window.fetch = stub; - return stub; -} - -export function unmockFetch() { - window.fetch = fetch; -} diff --git a/commerce/test/placeholder.test.js b/commerce/test/placeholder.test.js index ec8a2cb6..c99f115b 100644 --- a/commerce/test/placeholder.test.js +++ b/commerce/test/placeholder.test.js @@ -13,7 +13,8 @@ import { mockConfig } from './mocks/config.js'; import { mockLana, unmockLana } from './mocks/lana.js'; import { expect } from './utilities.js'; import { initService } from '../src/service.js'; -import { mockFetch, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; +import { withLiterals } from './mocks/literals.js'; let id = 1; /** @@ -26,7 +27,7 @@ async function mockPlaceholder( test1: undefined, test2: undefined, test3: undefined, - } + }, ) { class HTMLTestElement extends HTMLSpanElement { static is = `test-element${id++}`; @@ -41,7 +42,7 @@ async function mockPlaceholder( } Object.defineProperties( HTMLTestElement.prototype, - Object.getOwnPropertyDescriptors(props) + Object.getOwnPropertyDescriptors(props), ); definePlaceholder(HTMLTestElement); @@ -54,7 +55,6 @@ async function mockPlaceholder( describe('custom span-based placeholder', () => { after(() => { - unmockFetch(); unmockLana(); }); @@ -63,7 +63,7 @@ describe('custom span-based placeholder', () => { }); before(async () => { - await mockFetch(); + await mockFetch(withLiterals); mockLana(); }); @@ -75,7 +75,7 @@ describe('custom span-based placeholder', () => { test1: null, test2: '', test3: [], - } + }, ); expect(element.hasAttribute('data-test1')).to.be.false; expect(element.hasAttribute('data-test2')).to.be.false; diff --git a/commerce/test/price.test.js b/commerce/test/price.test.js index b457febe..6fd9bc3c 100644 --- a/commerce/test/price.test.js +++ b/commerce/test/price.test.js @@ -7,9 +7,11 @@ import { definePlaceholder } from '../src/placeholder.js'; import { initService, resetService } from '../src/service.js'; import { mockConfig } from './mocks/config.js'; -import { mockFetch, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; import { mockLana, unmockLana } from './mocks/lana.js'; +import { withLiterals } from './mocks/literals.js'; import snapshots from './mocks/snapshots.js'; +import { withWcs } from './mocks/wcs.js'; import { expect } from './utilities.js'; /** @@ -29,12 +31,11 @@ let fetch; afterEach(() => { document.body.innerHTML = ''; resetService(); - unmockFetch(); unmockLana(); }); beforeEach(async () => { - fetch = await mockFetch(); + fetch = await mockFetch(withWcs, withLiterals); mockLana(); }); @@ -132,7 +133,7 @@ describe('class "InlinePrice"', () => { document.body.appendChild(inlineOffer); await inlineOffer.onceSettled(); expect(inlineOffer.textContent).equal( - 'US$54.99/mo - ccsn_direct_individual - YEAR - MONTHLY - INDIVIDUAL - BASE - REGULAR' + 'US$54.99/mo - ccsn_direct_individual - YEAR - MONTHLY - INDIVIDUAL - BASE - REGULAR', ); }); @@ -157,7 +158,7 @@ describe('class "InlinePrice"', () => { const inlinePrice = mockInlinePrice('xyz'); inlinePrice.innerHTML = 'test'; await expect(inlinePrice.onceSettled()).to.be.eventually.rejectedWith( - ERROR_MESSAGE_BAD_REQUEST + ERROR_MESSAGE_BAD_REQUEST, ); expect(inlinePrice.innerHTML).to.be.empty; }); @@ -166,7 +167,7 @@ describe('class "InlinePrice"', () => { await initService(mockConfig(), true); const inlinePrice = mockInlinePrice('no-offer'); await expect(inlinePrice.onceSettled()).to.be.eventually.rejectedWith( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); expect(inlinePrice.innerHTML).to.equal(''); }); @@ -180,7 +181,7 @@ describe('class "InlinePrice"', () => { // no more perpetual offer inlinePrice.dataset.perpetual = 'false'; await expect(inlinePrice.onceSettled()).to.be.eventually.rejectedWith( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); expect(fetch.lastCall.args[0]).to.contain('language=MULT'); }); @@ -190,7 +191,7 @@ describe('class "InlinePrice"', () => { mockConfig({ forceTaxExclusive: true, }), - true + true, ); const inlinePrice = mockInlinePrice('tax-exclusive'); inlinePrice.dataset.promotionCode = 'nicopromo'; @@ -253,21 +254,21 @@ describe('class "InlinePrice"', () => { inlinePrice.updateOptions(options); const { dataset } = inlinePrice; expect(dataset.displayOldPrice).to.equal( - String(options.displayOldPrice) + String(options.displayOldPrice), ); expect(dataset.displayPerUnit).to.equal( - String(options.displayPerUnit) + String(options.displayPerUnit), ); expect(dataset.displayRecurrence).to.equal( - String(options.displayRecurrence) + String(options.displayRecurrence), ); expect(dataset.displayTax).to.equal(String(options.displayTax)); expect(dataset.forceTaxExclusive).to.equal( - String(options.forceTaxExclusive) + String(options.forceTaxExclusive), ); expect(dataset.perpetual).to.equal(String(options.perpetual)); expect(dataset.promotionCode).to.equal( - String(options.promotionCode) + String(options.promotionCode), ); expect(dataset.quantity).to.equal(String(options.quantity)); expect(dataset.template).to.equal(String(options.template)); @@ -292,369 +293,374 @@ describe('class "InlinePrice"', () => { const TESTS = [ { locale: 'AE_ar', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'AE_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'ZA_en', - expected: [true, true, false, false] + expected: [true, true, false, false], }, { locale: 'AT_de', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'BE_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'BE_fr', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'BE_nl', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'BG_bg', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'CH_de', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'CH_fr', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'CH_it', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'AZ_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'AZ_ru', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'CZ_cs', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'DE_de', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'DK_da', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'EE_et', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'EG_ar', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'EG_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'ES_es', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'FI_fi', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'FR_fr', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'GR_el', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'GR_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'HU_hu', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'IE_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'IL_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'IL_iw', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'IT_it', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'KW_ar', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'KW_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'LT_lt', - expected: [true, true, true, false] + expected: [true, true, true, false], }, { locale: 'LU_de', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'LU_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'LU_fr', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'LV_lv', - expected: [true, true, true, false] + expected: [true, true, true, false], }, { locale: 'DZ_ar', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'DZ_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'NG_en', - expected: [true, true, false, false] + expected: [true, true, false, false], }, { locale: 'NL_nl', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'NO_nb', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'PL_pl', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'PT_pt', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'QA_ar', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'QA_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'RO_ro', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'RU_ru', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'SA_ar', - expected: [true, false, false, false] + expected: [true, false, false, false], }, { locale: 'SA_en', - expected: [true, false, true, false] + expected: [true, false, true, false], }, { locale: 'SE_sv', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'SI_sl', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'SK_sk', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'TR_tr', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'UA_uk', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'ZA_en', - expected: [true, true, false, false] + expected: [true, true, false, false], }, { locale: 'AU_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'HK_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'ID_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'ID_in', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'IN_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'IN_hi', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'JP_ja', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'KR_ko', - expected: [true, true, false, true] + expected: [true, true, false, true], }, { locale: 'MY_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'MY_ms', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'NZ_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'PH_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'PH_fil', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'SG_en', - expected: [true, false, true, true] + expected: [true, false, true, true], }, { locale: 'TH_en', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'TH_th', - expected: [true, true, true, true] + expected: [true, true, true, true], }, { locale: 'VN_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'VN_vi', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'AR_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'BR_pt', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'CA_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'CA_fr', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'CL_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'CO_es', - expected: [false, true, false, false] + expected: [false, true, false, false], }, { locale: 'CR_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'EC_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'GT_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'LA_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'MX_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'PE_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'PR_es', - expected: [false, false, false, false] + expected: [false, false, false, false], }, { locale: 'US_en', - expected: [false, false, false, false] + expected: [false, false, false, false], }, ]; TESTS.forEach((test) => { SEGMENTS.forEach((segment, index) => { it(`renders price with tax info for "${test.locale}" and "${segment}"`, async () => { - const config = mockConfig({}, { prefix: test.locale}); + const config = mockConfig({}, { prefix: test.locale }); const service = await initService(config, true); const inlinePrice = mockInlinePrice(segment); inlinePrice.removeAttribute('data-display-tax'); await inlinePrice.onceSettled(); - const priceTaxElement = inlinePrice.querySelector('.price-tax-inclusivity'); + const priceTaxElement = inlinePrice.querySelector( + '.price-tax-inclusivity', + ); if (test.expected[index]) { - const taxExclusiveLabel = service.literals.price.taxExclusiveLabel; - const taxLabel = taxExclusiveLabel.match(/TAX \{(.*?)\}/)[1] + const taxExclusiveLabel = + service.literals.price.taxExclusiveLabel; + const taxLabel = + taxExclusiveLabel.match(/TAX \{(.*?)\}/)[1]; expect(priceTaxElement.textContent).to.equal(taxLabel); } else { - expect(priceTaxElement.classList.contains('disabled')).to.be.true; + expect(priceTaxElement.classList.contains('disabled')) + .to.be.true; } }); }); diff --git a/commerce/test/service.test.js b/commerce/test/service.test.js index 657f4886..390b9927 100644 --- a/commerce/test/service.test.js +++ b/commerce/test/service.test.js @@ -3,27 +3,31 @@ import { TAG_NAME_SERVICE, Defaults, init, reset } from '../src/index.js'; import { HTMLWcmsCommerceElement } from '../src//service.js'; import { mockConfig } from './mocks/config.js'; -import { mockFetch, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; import { mockIms, unmockIms } from './mocks/ims.js'; import { expect } from './utilities.js'; import { mockProviders } from './mocks/providers.js'; +import { withWcs } from './mocks/wcs.js'; +import { withLiterals } from './mocks/literals.js'; describe('commerce service', () => { + before(async () => { + await mockFetch(withWcs, withLiterals); + }); + afterEach(() => { reset(); - unmockFetch(); unmockIms(); }); beforeEach(async () => { - await mockFetch(); await mockIms(); }); describe('function "init"', () => { it('initialises service with configured locale', async () => { const { settings } = await init( - mockConfig({}, { prefix: 'mena_en' }) + mockConfig({}, { prefix: 'mena_en' }), ); expect(settings).to.deep.contain({ country: 'DZ', @@ -52,7 +56,7 @@ describe('commerce service', () => { it('ignores active instance and constructs new one if argument `force` is true', async () => { const instance = await init(mockConfig()); expect(await init(mockConfig(), mockProviders())).not.to.be.equal( - instance + instance, ); }); }); diff --git a/commerce/test/settings.test.js b/commerce/test/settings.test.js index 017adbfa..c7d2c7e0 100644 --- a/commerce/test/settings.test.js +++ b/commerce/test/settings.test.js @@ -49,7 +49,7 @@ describe('getSettings', () => { commerce, env: { name: 'stage' }, locale: { prefix: '/no' }, - }) + }), ).to.deep.equal({ ...Defaults, forceTaxExclusive: true, diff --git a/commerce/test/utilities.js b/commerce/test/utilities.js index 7869e12b..63d8337c 100644 --- a/commerce/test/utilities.js +++ b/commerce/test/utilities.js @@ -20,7 +20,6 @@ use((chai) => { } chai.Assertion.addMethod('html', function assertHtml(snapshot) { - // eslint-disable-next-line no-underscore-dangle const normAct = normalise(this._obj); const normExp = normalise(snapshot); this.assert( @@ -28,7 +27,7 @@ use((chai) => { 'expected to match html snapshot', 'expected not to match html snapshot', normAct, - normExp + normExp, ); }); }); diff --git a/commerce/test/utilities.test.js b/commerce/test/utilities.test.js index e894068d..a286c4cd 100644 --- a/commerce/test/utilities.test.js +++ b/commerce/test/utilities.test.js @@ -7,7 +7,7 @@ describe('function "selectWcsOffers"', () => { const offers = selectOffers( // @ts-ignore [{ language: 'MULT' }, { language: 'DE' }], - { perpetual: true } + { perpetual: true }, ); expect(offers[0].language).to.equal('DE'); }); @@ -26,7 +26,7 @@ describe('function "selectWcsOffers"', () => { }, }, ], - { forceTaxExclusive: true } + { forceTaxExclusive: true }, ); expect(offers[0].priceDetails.price).to.equal(1); expect(offers[0].priceDetails.priceWithoutDiscount).to.equal(4); diff --git a/commerce/test/wcs.test.js b/commerce/test/wcs.test.js index c959f65a..da6c5bad 100644 --- a/commerce/test/wcs.test.js +++ b/commerce/test/wcs.test.js @@ -1,16 +1,13 @@ import { ERROR_MESSAGE_OFFER_NOT_FOUND } from '../src/constants.js'; import { Wcs } from '../src/wcs.js'; -import { mockFetch, unmockFetch } from './mocks/fetch.js'; +import { mockFetch } from './mocks/fetch.js'; +import { withWcs } from './mocks/wcs.js'; import { expect } from './utilities.js'; describe('resolveOfferSelectors', () => { - afterEach(() => { - unmockFetch(); - }); - it('falls into fetch-by-one strategy if Wcs responds with 404 to a multi-osi request', async () => { - await mockFetch(); + await mockFetch(withWcs); // @ts-ignore const client = Wcs({ // @ts-ignore @@ -23,24 +20,24 @@ describe('resolveOfferSelectors', () => { const results = await Promise.allSettled( client.resolveOfferSelectors({ wcsOsi: ['abm', 'no-offer', 'stock-abm', 'void'], - }) + }), ); expect(results[0].status).to.equal('fulfilled'); expect(results[1].status).to.equal('rejected'); // @ts-ignore expect(results[1].reason.message).to.equal( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); expect(results[2].status).to.equal('fulfilled'); expect(results[3].status).to.equal('rejected'); // @ts-ignore expect(results[3].reason.message).to.equal( - ERROR_MESSAGE_OFFER_NOT_FOUND + ERROR_MESSAGE_OFFER_NOT_FOUND, ); }); it('groups WCS requests by promotion code', async () => { - let fetch = await mockFetch(); + let fetch = await mockFetch(withWcs); const client = Wcs({ // @ts-ignore settings: { diff --git a/commons/package.json b/commons/package.json new file mode 100644 index 00000000..9975586f --- /dev/null +++ b/commons/package.json @@ -0,0 +1,23 @@ +{ + "name": "@adobe/mas-commons", + "version": "0.0.1", + "description": "Merch at Scale Studio commons", + "scripts": { + "build": "echo", + "test": "wtr --config ./web-test-runner.config.mjs --coverage --watch --debug", + "test:ci": "wtr --config ./web-test-runner.config.mjs" + }, + "type": "module", + "main": "src/index.js", + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + }, + "devDependencies": { + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } +} diff --git a/commons/src/aem.js b/commons/src/aem.js new file mode 100644 index 00000000..27d8d027 --- /dev/null +++ b/commons/src/aem.js @@ -0,0 +1,63 @@ +const accessToken = localStorage.getItem('masAccessToken'); + +const headers = { + Authorization: `Bearer ${accessToken}`, + pragma: 'no-cache', + 'cache-control': 'no-cache', +}; + +/** + * Search for content fragments + * @param {Object} params - The search options + * @param {string} [params.path] - The path to search in + * @param {string} [params.query] - The search query + * @returns {Promise} - A promise that resolves to an array of search results + */ +async function fragmentSearch({ path, query }) { + const filter = {}; + if (path) { + filter.path = path; + } + if (query) { + filter.fullText = { + text: encodeURIComponent(query), + queryMode: 'EXACT_WORDS', + }; + } + const searchParams = new URLSearchParams({ + query: JSON.stringify({ filter }), + }).toString(); + return fetch(`${this.cfSearchUrl}?${searchParams}`, { + headers, + }) + .then((res) => res.json()) + .then(({ items }) => items); +} + +async function getCfByPath(path) { + return fetch(`${this.cfFragmentsUrl}?path=${path}`, { + headers, + }) + .then((res) => res.json()) + .then(({ items: [item] }) => item); +} + +class AEM { + sites = { + cf: { + fragments: { + search: fragmentSearch.bind(this), + getCfByPath: getCfByPath.bind(this), + }, + }, + }; + + constructor(bucket) { + const baseUrl = `https://${bucket}.adobeaemcloud.com`; + const sitesUrl = `${baseUrl}/adobe/sites`; + this.cfFragmentsUrl = `${sitesUrl}/cf/fragments`; + this.cfSearchUrl = `${this.cfFragmentsUrl}/search`; + } +} + +export { AEM }; diff --git a/web-components/src/deeplink.js b/commons/src/deeplink.js similarity index 97% rename from web-components/src/deeplink.js rename to commons/src/deeplink.js index 12056a1e..9fba5481 100644 --- a/web-components/src/deeplink.js +++ b/commons/src/deeplink.js @@ -42,6 +42,7 @@ export function pushState(state) { }); hash.sort(); const value = hash.toString(); + if (value === window.location.hash) return; let lastScrollTop = window.scrollY || document.documentElement.scrollTop; window.location.hash = value; window.scrollTo(0, lastScrollTop); diff --git a/commons/src/index.js b/commons/src/index.js new file mode 100644 index 00000000..146322ff --- /dev/null +++ b/commons/src/index.js @@ -0,0 +1,2 @@ +export * from './deeplink.js'; +export * from './aem.js'; diff --git a/web-components/test/deeplink.test.js b/commons/test/deeplink.test.js similarity index 97% rename from web-components/test/deeplink.test.js rename to commons/test/deeplink.test.js index 955cfe58..dc4d0373 100644 --- a/web-components/test/deeplink.test.js +++ b/commons/test/deeplink.test.js @@ -1,6 +1,6 @@ import { expect } from '@esm-bundle/chai'; import { deeplink, pushState } from '../src/deeplink.js'; -import { delay } from './utils.js'; +import { delay } from '../../web-components/test/utils.js'; describe('Deep linking', () => { it('processes initial URL hash', async () => { diff --git a/commons/test/utils.js b/commons/test/utils.js new file mode 100644 index 00000000..980b5961 --- /dev/null +++ b/commons/test/utils.js @@ -0,0 +1,6 @@ +export const getTemplateContent = (template) => { + const templateEl = document.getElementById(template); + // @ts-ignore + const templateContent = templateEl.content.cloneNode(true); + return [...templateContent.children]; +}; diff --git a/commons/web-test-runner.config.mjs b/commons/web-test-runner.config.mjs new file mode 100644 index 00000000..8f030284 --- /dev/null +++ b/commons/web-test-runner.config.mjs @@ -0,0 +1,30 @@ +import { chromeLauncher } from '@web/test-runner-chrome'; + +const testRunnerHtml = (testFramework) => ` + + + + + + + + +`; + +export default { + browsers: [ + chromeLauncher({ + launchOptions: { args: ['--no-sandbox'] }, + }), + ], + coverageConfig: { + include: ['src/**'], + exclude: ['test/mocks/**', 'test/**', '**/node_modules/**'], + }, + files: ['test/**/*.test.(js|html)'], + nodeResolve: true, + port: 2023, + testRunnerHtml, +}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..b0cabb09 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,15 @@ +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; + +const config = { + ...eslintPluginPrettierRecommended, + ignores: [ + '/node_modules/', + '**/node_modules/**', + '/lib/', + '**/lib/**', + '**/dist/**', + 'mas.js', + ], +}; + +export default [config]; diff --git a/mas.css b/mas.css new file mode 100644 index 00000000..9cb1270f --- /dev/null +++ b/mas.css @@ -0,0 +1,4 @@ +span.placeholder-resolved[data-template="strikethrough"], +span.price.price-strikethrough { + text-decoration: line-through; +} diff --git a/mas.js b/mas.js new file mode 100644 index 00000000..e6f66baf --- /dev/null +++ b/mas.js @@ -0,0 +1,4 @@ +// branch: MWPW-153599 commit: 50cd43553d2734d8efefef59e7c57e6a1603cac5 Thu, 04 Jul 2024 12:29:04 GMT +var Rr=Object.defineProperty;var Ur=e=>{throw TypeError(e)};var ci=(e,t,r)=>t in e?Rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var li=(e,t)=>{for(var r in t)Rr(e,r,{get:t[r],enumerable:!0})};var te=(e,t,r)=>ci(e,typeof t!="symbol"?t+"":t,r),Dr=(e,t,r)=>t.has(e)||Ur("Cannot "+r);var Pt=(e,t,r)=>(Dr(e,t,"read from private field"),r?r.call(e):t.get(e)),Mr=(e,t,r)=>t.has(e)?Ur("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),wt=(e,t,r,n)=>(Dr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var Ce;(function(e){e.ServerError="ServerError",e.ClientError="ClientError",e.UnexpectedError="UnexpectedError"})(Ce||(Ce={}));var kr=(e,t,r)=>({type:(i=>i>=500?Ce.ServerError:i<400?Ce.UnexpectedError:Ce.ClientError)(e),message:t,originatingRequest:r,status:e});var ui=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(l){try{u(n.next(l))}catch(p){s(p)}}function c(l){try{u(n.throw(l))}catch(p){s(p)}}function u(l){l.done?o(l.value):i(l.value).then(a,c)}u((n=n.apply(e,t||[])).next())})},Be;(function(e){e.AUTHORIZATION="Authorization",e.X_API_KEY="X-Api-Key"})(Be||(Be={}));var Ot=class{constructor(t){this.fetchOptions=t}commonHeaders(){let t={};return this.fetchOptions.apiKey&&(t[Be.X_API_KEY]=this.fetchOptions.apiKey),this.fetchOptions.accessToken&&(t[Be.AUTHORIZATION]=`Bearer ${this.fetchOptions.accessToken}`),t}transformData(t,r){return r?t.map(n=>r(n)):t.map(n=>this.identifyTransform(n))}transformDatum(t,r){return r?r(t):this.identifyTransform(t)}identifyTransform(t){return t}failOnBadStatusOrParseBody(t,r){return ui(this,void 0,void 0,function*(){if(t.ok)return t.json().then(i=>({headers:t.headers,status:t.status,statusText:t.statusText,data:i}));let n=yield t.text();return Promise.reject(kr(t.status,n,r))})}buildUrl(t,r,n,i,o){var s;let a=(s=this.fetchOptions.baseUrl)!==null&&s!==void 0?s:i(this.fetchOptions.env),c=o(r,n);return this.generateUrl(a,t,c)}generateUrl(t,r,n){let i=new URL(r,t);return n&&(i.search=this.convertToSearchParams(n).toString()),i.toString()}convertToSearchParams(t){return new URLSearchParams(t)}setParams(t,r,n){n!=null&&typeof n=="boolean"?t[r]=String(n):n&&(t[r]=n)}},Lt=Ot;var H;(function(e){e.STAGE="STAGE",e.PRODUCTION="PRODUCTION",e.LOCAL="LOCAL"})(H||(H={}));var Ie;(function(e){e.STAGE="STAGE",e.PRODUCTION="PROD",e.LOCAL="LOCAL"})(Ie||(Ie={}));var V;(function(e){e.DRAFT="DRAFT",e.PUBLISHED="PUBLISHED"})(V||(V={}));var fe;(function(e){e.V2="UCv2",e.V3="UCv3"})(fe||(fe={}));var X;(function(e){e.CHECKOUT="checkout",e.CHECKOUT_EMAIL="checkout/email",e.SEGMENTATION="segmentation",e.BUNDLE="bundle",e.COMMITMENT="commitment",e.RECOMMENDATION="recommendation",e.EMAIL="email",e.PAYMENT="payment",e.CHANGE_PLAN_TEAM_PLANS="change-plan/team-upgrade/plans",e.CHANGE_PLAN_TEAM_PAYMENT="change-plan/team-upgrade/payment"})(X||(X={}));var Nt=function(e){var t;return(t=fi.get(e))!==null&&t!==void 0?t:e},fi=new Map([["countrySpecific","cs"],["quantity","q"],["authCode","code"],["checkoutPromoCode","apc"],["rurl","rUrl"],["curl","cUrl"],["ctxrturl","ctxRtUrl"],["country","co"],["language","lang"],["clientId","cli"],["context","ctx"],["productArrangementCode","pa"],["offerType","ot"],["marketSegment","ms"]]);var Gr=function(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},Fr=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(a){s={error:a}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o};function ve(e,t,r){var n,i;try{for(var o=Gr(Object.entries(e)),s=o.next();!s.done;s=o.next()){var a=Fr(s.value,2),c=a[0],u=a[1],l=Nt(c);u!=null&&r.has(l)&&t.set(l,u)}}catch(p){n={error:p}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}}function Ye(e){switch(e){case H.PRODUCTION:return"https://commerce.adobe.com";default:return"https://commerce-stg.adobe.com"}}function $e(e,t){var r,n;for(var i in e){var o=e[i];try{for(var s=(r=void 0,Gr(Object.entries(o))),a=s.next();!a.done;a=s.next()){var c=Fr(a.value,2),u=c[0],l=c[1];if(l!=null){var p=Nt(u);t.set("items["+i+"]["+p+"]",l)}}}catch(f){r={error:f}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}}}var pi=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function Vr(e){Ei(e);var t=e.env,r=e.items,n=e.workflowStep,i=pi(e,["env","items","workflowStep"]),o=new URL(Ye(t));return o.pathname=n+"/",$e(r,o.searchParams),ve(i,o.searchParams,hi),o.toString()}var hi=new Set(["cli","co","lang","ctx","cUrl","mv","nglwfdata","otac","promoid","rUrl","sdid","spint","trackingid","code","campaignid","appctxid"]),di=["env","workflowStep","clientId","country","items"];function Ei(e){var t,r;try{for(var n=mi(di),i=n.next();!i.done;i=n.next()){var o=i.value;if(!e[o])throw new Error('Argument "checkoutData" is not valid, missing: '+o)}}catch(s){t={error:s}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return!0}var gi=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},yi="p_draft_landscape",_i="/store/";function It(e){Ti(e);var t=e.env,r=e.items,n=e.workflowStep,i=e.ms,o=e.marketSegment,s=e.ot,a=e.offerType,c=e.pa,u=e.productArrangementCode,l=e.landscape,p=gi(e,["env","items","workflowStep","ms","marketSegment","ot","offerType","pa","productArrangementCode","landscape"]),f={marketSegment:o??i,offerType:a??s,productArrangementCode:u??c},h=new URL(Ye(t));return h.pathname=""+_i+n,n!==X.SEGMENTATION&&n!==X.CHANGE_PLAN_TEAM_PLANS&&$e(r,h.searchParams),n===X.SEGMENTATION&&ve(f,h.searchParams,Ct),ve(p,h.searchParams,Ct),l===V.DRAFT&&ve({af:yi},h.searchParams,Ct),h.toString()}var Ct=new Set(["af","ai","apc","appctxid","cli","co","csm","ctx","ctxRtUrl","DCWATC","dp","fr","gsp","ijt","lang","lo","mal","ms","mv","mv2","nglwfdata","ot","otac","pa","pcid","promoid","q","rf","sc","scl","sdid","sid","spint","svar","th","thm","trackingid","usid","workflowid","context.guid","so.ca","so.su","so.tr","so.va"]),vi=["env","workflowStep","clientId","country"];function Ti(e){var t,r;try{for(var n=xi(vi),i=n.next();!i.done;i=n.next()){var o=i.value;if(!e[o])throw new Error('Argument "checkoutData" is not valid, missing: '+o)}}catch(s){t={error:s}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}if(e.workflowStep!==X.SEGMENTATION&&e.workflowStep!==X.CHANGE_PLAN_TEAM_PLANS&&!e.items)throw new Error('Argument "checkoutData" is not valid, missing: items');return!0}function Rt(e,t){switch(e){case fe.V2:return Vr(t);case fe.V3:return It(t);default:return console.warn("Unsupported CheckoutType, will use UCv3 as default. Given type: "+e),It(t)}}var Ut;(function(e){e.BASE="BASE",e.TRIAL="TRIAL",e.PROMOTION="PROMOTION"})(Ut||(Ut={}));var I;(function(e){e.MONTH="MONTH",e.YEAR="YEAR",e.TWO_YEARS="TWO_YEARS",e.THREE_YEARS="THREE_YEARS",e.PERPETUAL="PERPETUAL",e.TERM_LICENSE="TERM_LICENSE",e.ACCESS_PASS="ACCESS_PASS",e.THREE_MONTHS="THREE_MONTHS",e.SIX_MONTHS="SIX_MONTHS"})(I||(I={}));var O;(function(e){e.ANNUAL="ANNUAL",e.MONTHLY="MONTHLY",e.TWO_YEARS="TWO_YEARS",e.THREE_YEARS="THREE_YEARS",e.P1D="P1D",e.P1Y="P1Y",e.P3Y="P3Y",e.P10Y="P10Y",e.P15Y="P15Y",e.P3D="P3D",e.P7D="P7D",e.P30D="P30D",e.HALF_YEARLY="HALF_YEARLY",e.QUARTERLY="QUARTERLY"})(O||(O={}));var Dt;(function(e){e.INDIVIDUAL="INDIVIDUAL",e.TEAM="TEAM",e.ENTERPRISE="ENTERPRISE"})(Dt||(Dt={}));var Mt;(function(e){e.COM="COM",e.EDU="EDU",e.GOV="GOV"})(Mt||(Mt={}));var kt;(function(e){e.DIRECT="DIRECT",e.INDIRECT="INDIRECT"})(kt||(kt={}));var Gt;(function(e){e.ENTERPRISE_PRODUCT="ENTERPRISE_PRODUCT",e.ETLA="ETLA",e.RETAIL="RETAIL",e.VIP="VIP",e.VIPMP="VIPMP",e.FREE="FREE"})(Gt||(Gt={}));var Ft=()=>{};Ft.createContext=Ft;var bi=V.PUBLISHED,jr=e=>{switch(e){case H.PRODUCTION:return"https://wcs.adobe.io";case H.STAGE:return"https://wcs-stage.adobe.io";case H.LOCAL:return"http://localhost:3002";default:return"https://wcs-stage.adobe.io"}},Wr=(e,t)=>{var r;return e.api_key=t.apiKey,e.landscape=(r=t.landscape)!==null&&r!==void 0?r:bi,e};var Si=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(l){try{u(n.next(l))}catch(p){s(p)}}function c(l){try{u(n.throw(l))}catch(p){s(p)}}function u(l){l.done?o(l.value):i(l.value).then(a,c)}u((n=n.apply(e,t||[])).next())})},Vt=class extends Lt{constructor(t){super(t),this.apiPaths={getWebCommerceArtifact:"web_commerce_artifact"},this.getWebCommerceArtifact=(r,n,i,o)=>Si(this,void 0,void 0,function*(){let s=this.buildUrl(this.apiPaths.getWebCommerceArtifact,n,r,a=>jr(a),(a,c)=>this.evaluateGetWebCommerceArtifactParams(a,c));return this.fetchOptions.fetch(s,{signal:o,headers:Object.assign({},this.commonHeaders()),mode:"cors"}).then(a=>this.failOnBadStatusOrParseBody(a,`GET ${s}`)).then(a=>{let u=a.data;return{data:this.transformDatum(u,i)}})})}evaluateGetWebCommerceArtifactParams(t,r){let n={};return this.setParams(n,"offer_selector_ids",r.offerSelectorIds.join(",")),this.setParams(n,"country",r.country),this.setParams(n,"language",r.language),this.setParams(n,"currency",r.currency),this.setParams(n,"locale",r.locale),this.setParams(n,"promotion_code",r.promotionCode),Wr(n,t)}},Hr=Vt;var qe=e=>new Hr(e).getWebCommerceArtifact;var Xr="tacocat.js";var ze=(e,t)=>String(e??"").toLowerCase()==String(t??"").toLowerCase(),Br=e=>`${e??""}`.replace(/[&<>'"]/g,t=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[t]??t)??"";function w(e,t={},{metadata:r=!0,search:n=!0,storage:i=!0}={}){let o;if(n&&o==null){let s=new URLSearchParams(window.location.search),a=Te(n)?n:e;o=s.get(a)}if(i&&o==null){let s=Te(i)?i:e;o=window.sessionStorage.getItem(s)??window.localStorage.getItem(s)}if(r&&o==null){let s=qr(Te(r)?r:e);o=document.documentElement.querySelector(`meta[name="${s}"]`)?.content}return o??t[e]}var be=()=>{};var Yr=e=>typeof e=="boolean",se=e=>typeof e=="function",Ze=e=>typeof e=="number",$r=e=>e!=null&&typeof e=="object";var Te=e=>typeof e=="string",jt=e=>Te(e)&&e,Se=e=>Ze(e)&&Number.isFinite(e)&&e>0;function Ae(e,t=r=>r==null||r===""){return e!=null&&Object.entries(e).forEach(([r,n])=>{t(n)&&delete e[r]}),e}function b(e,t){if(Yr(e))return e;let r=String(e);return r==="1"||r==="true"?!0:r==="0"||r==="false"?!1:t}function re(e,t,r){let n=Object.values(t);return n.find(i=>ze(i,e))??r??n[0]}function qr(e=""){return String(e).replace(/(\p{Lowercase_Letter})(\p{Uppercase_Letter})/gu,(t,r,n)=>`${r}-${n}`).replace(/\W+/gu,"-").toLowerCase()}function Pe(e,t=1){return Ze(e)||(e=Number.parseInt(e,10)),!Number.isNaN(e)&&e>0&&Number.isFinite(e)?e:t}var Ai=Date.now(),Wt=()=>`(+${Date.now()-Ai}ms)`,Qe=new Set,Pi=b(w("tacocat.debug",{},{metadata:!1}),typeof process<"u"&&process.env?.DEBUG);function zr(e){let t=`[${Xr}/${e}]`,r=(s,a,...c)=>s?!0:(i(a,...c),!1),n=Pi?(s,...a)=>{console.debug(`${t} ${s}`,...a,Wt())}:()=>{},i=(s,...a)=>{let c=`${t} ${s}`;Qe.forEach(([u])=>u(c,...a))};return{assert:r,debug:n,error:i,warn:(s,...a)=>{let c=`${t} ${s}`;Qe.forEach(([,u])=>u(c,...a))}}}function wi(e,t){let r=[e,t];return Qe.add(r),()=>{Qe.delete(r)}}wi((e,...t)=>{console.error(e,...t,Wt())},(e,...t)=>{console.warn(e,...t,Wt())});var Oi="no promo",Zr="promo-tag",Li="yellow",Ni="neutral",Ci=(e,t,r)=>{let n=o=>o||Oi,i=r?` (was "${n(t)}")`:"";return`${n(e)}${i}`},Ii="cancel-context",Re=(e,t)=>{let r=e===Ii,n=!r&&e?.length>0,i=(n||r)&&(t&&t!=e||!t&&!r),o=i&&n||!i&&!!t,s=o?e||t:void 0;return{effectivePromoCode:s,overridenPromoCode:e,className:o?Zr:`${Zr} no-promo`,text:Ci(s,t,i),variant:o?Li:Ni,isOverriden:i}};var Ht=function(e,t){return Ht=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]=n[i])},Ht(e,t)};function Ue(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Ht(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var v=function(){return v=Object.assign||function(t){for(var r,n=1,i=arguments.length;n0}),r=[],n=0,i=t;n1)throw new RangeError("integer-width stems only accept a single optional option");i.options[0].replace(Di,function(a,c,u,l,p,f){if(c)t.minimumIntegerDigits=u.length;else{if(l&&p)throw new Error("We currently do not support maximum integer digits");if(f)throw new Error("We currently do not support exact integer digits")}return""});continue}if(an.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(tn.test(i.stem)){if(i.options.length>1)throw new RangeError("Fraction-precision stems only accept a single optional option");i.stem.replace(tn,function(a,c,u,l,p,f){return u==="*"?t.minimumFractionDigits=c.length:l&&l[0]==="#"?t.maximumFractionDigits=l.length:p&&f?(t.minimumFractionDigits=p.length,t.maximumFractionDigits=p.length+f.length):(t.minimumFractionDigits=c.length,t.maximumFractionDigits=c.length),""}),i.options.length&&(t=v(v({},t),rn(i.options[0])));continue}if(sn.test(i.stem)){t=v(v({},t),rn(i.stem));continue}var o=cn(i.stem);o&&(t=v(v({},t),o));var s=Mi(i.stem);s&&(t=v(v({},t),s))}return t}var Yt,ki=new RegExp("^"+Bt.source+"*"),Gi=new RegExp(Bt.source+"*$");function g(e,t){return{start:e,end:t}}var Fi=!!String.prototype.startsWith,Vi=!!String.fromCodePoint,ji=!!Object.fromEntries,Wi=!!String.prototype.codePointAt,Hi=!!String.prototype.trimStart,Xi=!!String.prototype.trimEnd,Bi=!!Number.isSafeInteger,Yi=Bi?Number.isSafeInteger:function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},qt=!0;try{un=hn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),qt=((Yt=un.exec("a"))===null||Yt===void 0?void 0:Yt[0])==="a"}catch{qt=!1}var un,fn=Fi?function(t,r,n){return t.startsWith(r,n)}:function(t,r,n){return t.slice(n,n+r.length)===r},zt=Vi?String.fromCodePoint:function(){for(var t=[],r=0;ro;){if(s=t[o++],s>1114111)throw RangeError(s+" is not a valid code point");n+=s<65536?String.fromCharCode(s):String.fromCharCode(((s-=65536)>>10)+55296,s%1024+56320)}return n},pn=ji?Object.fromEntries:function(t){for(var r={},n=0,i=t;n=n)){var i=t.charCodeAt(r),o;return i<55296||i>56319||r+1===n||(o=t.charCodeAt(r+1))<56320||o>57343?i:(i-55296<<10)+(o-56320)+65536}},$i=Hi?function(t){return t.trimStart()}:function(t){return t.replace(ki,"")},qi=Xi?function(t){return t.trimEnd()}:function(t){return t.replace(Gi,"")};function hn(e,t){return new RegExp(e,t)}var Zt;qt?($t=hn("([^\\p{White_Space}\\p{Pattern_Syntax}]*)","yu"),Zt=function(t,r){var n;$t.lastIndex=r;var i=$t.exec(t);return(n=i[1])!==null&&n!==void 0?n:""}):Zt=function(t,r){for(var n=[];;){var i=mn(t,r);if(i===void 0||En(i)||Qi(i))break;n.push(i),r+=i>=65536?2:1}return zt.apply(void 0,n)};var $t,dn=function(){function e(t,r){r===void 0&&(r={}),this.message=t,this.position={offset:0,line:1,column:1},this.ignoreTag=!!r.ignoreTag,this.requiresOtherClause=!!r.requiresOtherClause,this.shouldParseSkeletons=!!r.shouldParseSkeletons}return e.prototype.parse=function(){if(this.offset()!==0)throw Error("parser can only be used once");return this.parseMessage(0,"",!1)},e.prototype.parseMessage=function(t,r,n){for(var i=[];!this.isEOF();){var o=this.char();if(o===123){var s=this.parseArgument(t,n);if(s.err)return s;i.push(s.val)}else{if(o===125&&t>0)break;if(o===35&&(r==="plural"||r==="selectordinal")){var a=this.clonePosition();this.bump(),i.push({type:P.pound,location:g(a,this.clonePosition())})}else if(o===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(E.UNMATCHED_CLOSING_TAG,g(this.clonePosition(),this.clonePosition()))}else if(o===60&&!this.ignoreTag&&Qt(this.peek()||0)){var s=this.parseTag(t,r);if(s.err)return s;i.push(s.val)}else{var s=this.parseLiteral(t,r);if(s.err)return s;i.push(s.val)}}}return{val:i,err:null}},e.prototype.parseTag=function(t,r){var n=this.clonePosition();this.bump();var i=this.parseTagName();if(this.bumpSpace(),this.bumpIf("/>"))return{val:{type:P.literal,value:"<"+i+"/>",location:g(n,this.clonePosition())},err:null};if(this.bumpIf(">")){var o=this.parseMessage(t+1,r,!0);if(o.err)return o;var s=o.val,a=this.clonePosition();if(this.bumpIf("")?{val:{type:P.tag,value:i,children:s,location:g(n,this.clonePosition())},err:null}:this.error(E.INVALID_TAG,g(a,this.clonePosition())))}else return this.error(E.UNCLOSED_TAG,g(n,this.clonePosition()))}else return this.error(E.INVALID_TAG,g(n,this.clonePosition()))},e.prototype.parseTagName=function(){var t=this.offset();for(this.bump();!this.isEOF()&&Zi(this.char());)this.bump();return this.message.slice(t,this.offset())},e.prototype.parseLiteral=function(t,r){for(var n=this.clonePosition(),i="";;){var o=this.tryParseQuote(r);if(o){i+=o;continue}var s=this.tryParseUnquoted(t,r);if(s){i+=s;continue}var a=this.tryParseLeftAngleBracket();if(a){i+=a;continue}break}var c=g(n,this.clonePosition());return{val:{type:P.literal,value:i,location:c},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!zi(this.peek()||0))?(this.bump(),"<"):null},e.prototype.tryParseQuote=function(t){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),"'";case 123:case 60:case 62:case 125:break;case 35:if(t==="plural"||t==="selectordinal")break;return null;default:return null}this.bump();var r=[this.char()];for(this.bump();!this.isEOF();){var n=this.char();if(n===39)if(this.peek()===39)r.push(39),this.bump();else{this.bump();break}else r.push(n);this.bump()}return zt.apply(void 0,r)},e.prototype.tryParseUnquoted=function(t,r){if(this.isEOF())return null;var n=this.char();return n===60||n===123||n===35&&(r==="plural"||r==="selectordinal")||n===125&&t>0?null:(this.bump(),zt(n))},e.prototype.parseArgument=function(t,r){var n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(E.EXPECT_ARGUMENT_CLOSING_BRACE,g(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(E.EMPTY_ARGUMENT,g(n,this.clonePosition()));var i=this.parseIdentifierIfPossible().value;if(!i)return this.error(E.MALFORMED_ARGUMENT,g(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(E.EXPECT_ARGUMENT_CLOSING_BRACE,g(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:P.argument,value:i,location:g(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(E.EXPECT_ARGUMENT_CLOSING_BRACE,g(n,this.clonePosition())):this.parseArgumentOptions(t,r,i,n);default:return this.error(E.MALFORMED_ARGUMENT,g(n,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var t=this.clonePosition(),r=this.offset(),n=Zt(this.message,r),i=r+n.length;this.bumpTo(i);var o=this.clonePosition(),s=g(t,o);return{value:n,location:s}},e.prototype.parseArgumentOptions=function(t,r,n,i){var o,s=this.clonePosition(),a=this.parseIdentifierIfPossible().value,c=this.clonePosition();switch(a){case"":return this.error(E.EXPECT_ARGUMENT_TYPE,g(s,c));case"number":case"date":case"time":{this.bumpSpace();var u=null;if(this.bumpIf(",")){this.bumpSpace();var l=this.clonePosition(),p=this.parseSimpleArgStyleIfPossible();if(p.err)return p;var f=qi(p.val);if(f.length===0)return this.error(E.EXPECT_ARGUMENT_STYLE,g(this.clonePosition(),this.clonePosition()));var h=g(l,this.clonePosition());u={style:f,styleLocation:h}}var d=this.tryParseArgumentClose(i);if(d.err)return d;var x=g(i,this.clonePosition());if(u&&fn(u?.style,"::",0)){var y=$i(u.style.slice(2));if(a==="number"){var p=this.parseNumberSkeletonFromString(y,u.styleLocation);return p.err?p:{val:{type:P.number,value:n,location:x,style:p.val},err:null}}else{if(y.length===0)return this.error(E.EXPECT_DATE_TIME_SKELETON,x);var f={type:pe.dateTime,pattern:y,location:u.styleLocation,parsedOptions:this.shouldParseSkeletons?Kr(y):{}},N=a==="date"?P.date:P.time;return{val:{type:N,value:n,location:x,style:f},err:null}}}return{val:{type:a==="number"?P.number:a==="date"?P.date:P.time,value:n,location:x,style:(o=u?.style)!==null&&o!==void 0?o:null},err:null}}case"plural":case"selectordinal":case"select":{var S=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(","))return this.error(E.EXPECT_SELECT_ARGUMENT_OPTIONS,g(S,v({},S)));this.bumpSpace();var _=this.parseIdentifierIfPossible(),L=0;if(a!=="select"&&_.value==="offset"){if(!this.bumpIf(":"))return this.error(E.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,g(this.clonePosition(),this.clonePosition()));this.bumpSpace();var p=this.tryParseDecimalInteger(E.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,E.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(p.err)return p;this.bumpSpace(),_=this.parseIdentifierIfPossible(),L=p.val}var A=this.tryParsePluralOrSelectOptions(t,a,r,_);if(A.err)return A;var d=this.tryParseArgumentClose(i);if(d.err)return d;var U=g(i,this.clonePosition());return a==="select"?{val:{type:P.select,value:n,options:pn(A.val),location:U},err:null}:{val:{type:P.plural,value:n,options:pn(A.val),offset:L,pluralType:a==="plural"?"cardinal":"ordinal",location:U},err:null}}default:return this.error(E.INVALID_ARGUMENT_TYPE,g(s,c))}},e.prototype.tryParseArgumentClose=function(t){return this.isEOF()||this.char()!==125?this.error(E.EXPECT_ARGUMENT_CLOSING_BRACE,g(t,this.clonePosition())):(this.bump(),{val:!0,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var t=0,r=this.clonePosition();!this.isEOF();){var n=this.char();switch(n){case 39:{this.bump();var i=this.clonePosition();if(!this.bumpUntil("'"))return this.error(E.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,g(i,this.clonePosition()));this.bump();break}case 123:{t+=1,this.bump();break}case 125:{if(t>0)t-=1;else return{val:this.message.slice(r.offset,this.offset()),err:null};break}default:this.bump();break}}return{val:this.message.slice(r.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(t,r){var n=[];try{n=on(t)}catch{return this.error(E.INVALID_NUMBER_SKELETON,r)}return{val:{type:pe.number,tokens:n,location:r,parsedOptions:this.shouldParseSkeletons?ln(n):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(t,r,n,i){for(var o,s=!1,a=[],c=new Set,u=i.value,l=i.location;;){if(u.length===0){var p=this.clonePosition();if(r!=="select"&&this.bumpIf("=")){var f=this.tryParseDecimalInteger(E.EXPECT_PLURAL_ARGUMENT_SELECTOR,E.INVALID_PLURAL_ARGUMENT_SELECTOR);if(f.err)return f;l=g(p,this.clonePosition()),u=this.message.slice(p.offset,this.offset())}else break}if(c.has(u))return this.error(r==="select"?E.DUPLICATE_SELECT_ARGUMENT_SELECTOR:E.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,l);u==="other"&&(s=!0),this.bumpSpace();var h=this.clonePosition();if(!this.bumpIf("{"))return this.error(r==="select"?E.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:E.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,g(this.clonePosition(),this.clonePosition()));var d=this.parseMessage(t+1,r,n);if(d.err)return d;var x=this.tryParseArgumentClose(h);if(x.err)return x;a.push([u,{value:d.val,location:g(h,this.clonePosition())}]),c.add(u),this.bumpSpace(),o=this.parseIdentifierIfPossible(),u=o.value,l=o.location}return a.length===0?this.error(r==="select"?E.EXPECT_SELECT_ARGUMENT_SELECTOR:E.EXPECT_PLURAL_ARGUMENT_SELECTOR,g(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!s?this.error(E.MISSING_OTHER_CLAUSE,g(this.clonePosition(),this.clonePosition())):{val:a,err:null}},e.prototype.tryParseDecimalInteger=function(t,r){var n=1,i=this.clonePosition();this.bumpIf("+")||this.bumpIf("-")&&(n=-1);for(var o=!1,s=0;!this.isEOF();){var a=this.char();if(a>=48&&a<=57)o=!0,s=s*10+(a-48),this.bump();else break}var c=g(i,this.clonePosition());return o?(s*=n,Yi(s)?{val:s,err:null}:this.error(r,c)):this.error(t,c)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var t=this.position.offset;if(t>=this.message.length)throw Error("out of bound");var r=mn(this.message,t);if(r===void 0)throw Error("Offset "+t+" is at invalid UTF-16 code unit boundary");return r},e.prototype.error=function(t,r){return{val:null,err:{kind:t,message:this.message,location:r}}},e.prototype.bump=function(){if(!this.isEOF()){var t=this.char();t===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=t<65536?1:2)}},e.prototype.bumpIf=function(t){if(fn(this.message,t,this.offset())){for(var r=0;r=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)},e.prototype.bumpTo=function(t){if(this.offset()>t)throw Error("targetOffset "+t+" must be greater than or equal to the current offset "+this.offset());for(t=Math.min(t,this.message.length);;){var r=this.offset();if(r===t)break;if(r>t)throw Error("targetOffset "+t+" is at invalid UTF-16 code unit boundary");if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&En(this.char());)this.bump()},e.prototype.peek=function(){if(this.isEOF())return null;var t=this.char(),r=this.offset(),n=this.message.charCodeAt(r+(t>=65536?2:1));return n??null},e}();function Qt(e){return e>=97&&e<=122||e>=65&&e<=90}function zi(e){return Qt(e)||e===47}function Zi(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function En(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function Qi(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e===8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090||e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e===11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}function Jt(e){e.forEach(function(t){if(delete t.location,rt(t)||nt(t))for(var r in t.options)delete t.options[r].location,Jt(t.options[r].value);else Ke(t)&&ot(t.style)||(et(t)||tt(t))&&De(t.style)?delete t.style.location:it(t)&&Jt(t.children)})}function gn(e,t){t===void 0&&(t={}),t=v({shouldParseSkeletons:!0,requiresOtherClause:!0},t);var r=new dn(e,t).parse();if(r.err){var n=SyntaxError(E[r.err.kind]);throw n.location=r.err.location,n.originalMessage=r.err.message,n}return t?.captureLocation||Jt(r.val),r.val}function Me(e,t){var r=t&&t.cache?t.cache:no,n=t&&t.serializer?t.serializer:ro,i=t&&t.strategy?t.strategy:Ki;return i(e,{cache:r,serializer:n})}function Ji(e){return e==null||typeof e=="number"||typeof e=="boolean"}function xn(e,t,r,n){var i=Ji(n)?n:r(n),o=t.get(i);return typeof o>"u"&&(o=e.call(this,n),t.set(i,o)),o}function yn(e,t,r){var n=Array.prototype.slice.call(arguments,3),i=r(n),o=t.get(i);return typeof o>"u"&&(o=e.apply(this,n),t.set(i,o)),o}function Kt(e,t,r,n,i){return r.bind(t,e,n,i)}function Ki(e,t){var r=e.length===1?xn:yn;return Kt(e,this,r,t.cache.create(),t.serializer)}function eo(e,t){return Kt(e,this,yn,t.cache.create(),t.serializer)}function to(e,t){return Kt(e,this,xn,t.cache.create(),t.serializer)}var ro=function(){return JSON.stringify(arguments)};function er(){this.cache=Object.create(null)}er.prototype.get=function(e){return this.cache[e]};er.prototype.set=function(e,t){this.cache[e]=t};var no={create:function(){return new er}},st={variadic:eo,monadic:to};var me;(function(e){e.MISSING_VALUE="MISSING_VALUE",e.INVALID_VALUE="INVALID_VALUE",e.MISSING_INTL_API="MISSING_INTL_API"})(me||(me={}));var ke=function(e){Ue(t,e);function t(r,n,i){var o=e.call(this,r)||this;return o.code=n,o.originalMessage=i,o}return t.prototype.toString=function(){return"[formatjs Error: "+this.code+"] "+this.message},t}(Error);var tr=function(e){Ue(t,e);function t(r,n,i,o){return e.call(this,'Invalid values for "'+r+'": "'+n+'". Options are "'+Object.keys(i).join('", "')+'"',me.INVALID_VALUE,o)||this}return t}(ke);var _n=function(e){Ue(t,e);function t(r,n,i){return e.call(this,'Value for "'+r+'" must be of type '+n,me.INVALID_VALUE,i)||this}return t}(ke);var vn=function(e){Ue(t,e);function t(r,n){return e.call(this,'The intl string context variable "'+r+'" was not provided to the string "'+n+'"',me.MISSING_VALUE,n)||this}return t}(ke);var R;(function(e){e[e.literal=0]="literal",e[e.object=1]="object"})(R||(R={}));function io(e){return e.length<2?e:e.reduce(function(t,r){var n=t[t.length-1];return!n||n.type!==R.literal||r.type!==R.literal?t.push(r):n.value+=r.value,t},[])}function oo(e){return typeof e=="function"}function Ge(e,t,r,n,i,o,s){if(e.length===1&&Xt(e[0]))return[{type:R.literal,value:e[0].value}];for(var a=[],c=0,u=e;c0?e.substring(0,n):"";let i=Sn(e.split("").reverse().join("")),o=r-i,s=e.substring(o,o+1),a=o+(s==="."||s===","?1:0);t.suffix=i>0?e.substring(a,r):"",t.mask=e.substring(n,a),t.maskHasNegativeSign=t.mask.charAt(0)==="-",t.maskHasPositiveSign=t.mask.charAt(0)==="+";let c=t.mask.match(uo);return t.decimal=c&&c[c.length-1]||".",t.separator=c&&c[1]&&c[0]||",",c=t.mask.split(t.decimal),t.integer=c[0],t.fraction=c[1],t}function po(e,t,r){let n=!1,i={value:e};e<0&&(n=!0,i.value=-i.value),i.sign=n?"-":"",i.value=Number(i.value).toFixed(t.fraction&&t.fraction.length),i.value=Number(i.value).toString();let o=t.fraction&&t.fraction.lastIndexOf("0"),[s="0",a=""]=i.value.split(".");return(!a||a&&a.length<=o)&&(a=o<0?"":(+("0."+a)).toFixed(o+1).replace("0.","")),i.integer=s,i.fraction=a,mo(i,t),(i.result==="0"||i.result==="")&&(n=!1,i.sign=""),!n&&t.maskHasPositiveSign?i.sign="+":n&&t.maskHasPositiveSign?i.sign="-":n&&(i.sign=r&&r.enforceMaskSign&&!t.maskHasNegativeSign?"":"-"),i}function mo(e,t){e.result="";let r=t.integer.split(t.separator),n=r.join(""),i=n&&n.indexOf("0");if(i>-1)for(;e.integer.lengthMath.round(e*20)/20},nr=(e,t)=>({accept:e,round:t}),yo=[nr(({divisor:e,price:t})=>t%e==0,({divisor:e,price:t})=>t/e),nr(({usePrecision:e})=>e,({divisor:e,price:t})=>Math.ceil(Math.floor(t*1e4/e)/100)/100),nr(()=>!0,({divisor:e,price:t})=>Math.ceil(Math.floor(t*100/e)/100))],ir={[I.YEAR]:{[O.MONTHLY]:Fe.MONTH,[O.ANNUAL]:Fe.YEAR},[I.MONTH]:{[O.MONTHLY]:Fe.MONTH}},_o=(e,t)=>e.indexOf(`'${t}'`)===0,vo=(e,t=!0)=>{let r=e.replace(/'.*?'/,"").trim(),n=Cn(r);return!!n?t||(r=r.replace(/[,\.]0+/,n)):r=r.replace(/\s?(#.*0)(?!\s)?/,"$&"+bo(e)),r},To=e=>{let t=So(e),r=_o(e,t),n=e.replace(/'.*?'/,""),i=On.test(n)||Ln.test(n);return{currencySymbol:t,isCurrencyFirst:r,hasCurrencySpace:i}},Nn=e=>e.replace(On,wn).replace(Ln,wn),bo=e=>e.match(/#(.?)#/)?.[1]===Pn?Eo:Pn,So=e=>e.match(/'(.*?)'/)?.[1]??"",Cn=e=>e.match(/0(.?)0/)?.[1]??"";function at({formatString:e,price:t,usePrecision:r,isIndianPrice:n=!1},i,o=s=>s){let{currencySymbol:s,isCurrencyFirst:a,hasCurrencySpace:c}=To(e),u=r?Cn(e):"",l=vo(e,r),p=r?2:0,f=o(t,{currencySymbol:s}),h=n?f.toLocaleString("hi-IN",{minimumFractionDigits:p,maximumFractionDigits:p}):An(l,f),d=r?h.lastIndexOf(u):h.length,x=h.substring(0,d),y=h.substring(d+1);return{accessiblePrice:e.replace(/'.*?'/,"SYMBOL").replace(/#.*0/,h).replace(/SYMBOL/,s),currencySymbol:s,decimals:y,decimalsDelimiter:u,hasCurrencySpace:c,integer:x,isCurrencyFirst:a,recurrenceTerm:i}}var In=e=>{let{commitment:t,term:r,usePrecision:n}=e,i=go[r]??1;return at(e,i>1?Fe.MONTH:ir[t]?.[r],(o,{currencySymbol:s})=>{let a={divisor:i,price:o,usePrecision:n},{round:c}=yo.find(({accept:l})=>l(a));if(!c)throw new Error(`Missing rounding rule for: ${JSON.stringify(a)}`);return(xo[s]??(l=>l))(c(a))})},Rn=({commitment:e,term:t,...r})=>at(r,ir[e]?.[t]),Un=e=>{let{commitment:t,term:r}=e;return t===I.YEAR&&r===O.MONTHLY?at(e,Fe.YEAR,n=>n*12):at(e,ir[t]?.[r])};var Ao={recurrenceLabel:"{recurrenceTerm, select, MONTH {/mo} YEAR {/yr} other {}}",recurrenceAriaLabel:"{recurrenceTerm, select, MONTH {per month} YEAR {per year} other {}}",perUnitLabel:"{perUnit, select, LICENSE {per license} other {}}",perUnitAriaLabel:"{perUnit, select, LICENSE {per license} other {}}",freeLabel:"Free",freeAriaLabel:"Free",taxExclusiveLabel:"{taxTerm, select, GST {excl. GST} VAT {excl. VAT} TAX {excl. tax} IVA {excl. IVA} SST {excl. SST} KDV {excl. KDV} other {}}",taxInclusiveLabel:"{taxTerm, select, GST {incl. GST} VAT {incl. VAT} TAX {incl. tax} IVA {incl. IVA} SST {incl. SST} KDV {incl. KDV} other {}}",alternativePriceAriaLabel:"Alternatively at {alternativePrice}",strikethroughAriaLabel:"Regularly at {strikethroughPrice}"},Po=zr("ConsonantTemplates/price"),wo=/<.+?>/g,j={container:"price",containerOptical:"price-optical",containerStrikethrough:"price-strikethrough",containerAnnual:"price-annual",disabled:"disabled",currencySpace:"price-currency-space",currencySymbol:"price-currency-symbol",decimals:"price-decimals",decimalsDelimiter:"price-decimals-delimiter",integer:"price-integer",recurrence:"price-recurrence",taxInclusivity:"price-tax-inclusivity",unitType:"price-unit-type"},he={perUnitLabel:"perUnitLabel",perUnitAriaLabel:"perUnitAriaLabel",recurrenceLabel:"recurrenceLabel",recurrenceAriaLabel:"recurrenceAriaLabel",taxExclusiveLabel:"taxExclusiveLabel",taxInclusiveLabel:"taxInclusiveLabel",strikethroughAriaLabel:"strikethroughAriaLabel"},Oo="TAX_EXCLUSIVE",Lo=e=>$r(e)?Object.entries(e).filter(([,t])=>Te(t)||Ze(t)||t===!0).reduce((t,[r,n])=>t+` ${r}${n===!0?"":'="'+Br(n)+'"'}`,""):"",$=(e,t,r,n=!1)=>`${n?Nn(t):t??""}`;function No(e,{accessibleLabel:t,currencySymbol:r,decimals:n,decimalsDelimiter:i,hasCurrencySpace:o,integer:s,isCurrencyFirst:a,recurrenceLabel:c,perUnitLabel:u,taxInclusivityLabel:l},p={}){let f=$(j.currencySymbol,r),h=$(j.currencySpace,o?" ":""),d="";return a&&(d+=f+h),d+=$(j.integer,s),d+=$(j.decimalsDelimiter,i),d+=$(j.decimals,n),a||(d+=h+f),d+=$(j.recurrence,c,null,!0),d+=$(j.unitType,u,null,!0),d+=$(j.taxInclusivity,l,!0),$(e,d,{...p,"aria-label":t})}var de=({displayOptical:e=!1,displayStrikethrough:t=!1,displayAnnual:r=!1}={})=>({country:n,displayFormatted:i=!0,displayRecurrence:o=!0,displayPerUnit:s=!1,displayTax:a=!1,language:c,literals:u={}}={},{commitment:l,formatString:p,price:f,priceWithoutDiscount:h,taxDisplay:d,taxTerm:x,term:y,usePrecision:N}={},S={})=>{Object.entries({country:n,formatString:p,language:c,price:f}).forEach(([ee,St])=>{if(St==null)throw new Error(`Argument "${ee}" is missing`)});let _={...Ao,...u},L=`${c.toLowerCase()}-${n.toUpperCase()}`;function A(ee,St){let At=_[ee];if(At==null)return"";try{return new bn(At.replace(wo,""),L).format(St)}catch{return Po.error("Failed to format literal:",At),""}}let U=t&&h?h:f,F=e?In:Rn;r&&(F=Un);let{accessiblePrice:C,recurrenceTerm:W,...J}=F({commitment:l,formatString:p,term:y,price:e?f:U,usePrecision:N,isIndianPrice:n==="IN"}),B=C,le="";if(b(o)&&W){let ee=A(he.recurrenceAriaLabel,{recurrenceTerm:W});ee&&(B+=" "+ee),le=A(he.recurrenceLabel,{recurrenceTerm:W})}let ue="";if(b(s)){ue=A(he.perUnitLabel,{perUnit:"LICENSE"});let ee=A(he.perUnitAriaLabel,{perUnit:"LICENSE"});ee&&(B+=" "+ee)}let K="";b(a)&&x&&(K=A(d===Oo?he.taxExclusiveLabel:he.taxInclusiveLabel,{taxTerm:x}),K&&(B+=" "+K)),t&&(B=A(he.strikethroughAriaLabel,{strikethroughPrice:B}));let Y=j.container;if(e&&(Y+=" "+j.containerOptical),t&&(Y+=" "+j.containerStrikethrough),r&&(Y+=" "+j.containerAnnual),b(i))return No(Y,{...J,accessibleLabel:B,recurrenceLabel:le,perUnitLabel:ue,taxInclusivityLabel:K},S);let{currencySymbol:ye,decimals:He,decimalsDelimiter:Xe,hasCurrencySpace:Ne,integer:bt,isCurrencyFirst:si}=J,_e=[bt,Xe,He];si?(_e.unshift(Ne?"\xA0":""),_e.unshift(ye)):(_e.push(Ne?"\xA0":""),_e.push(ye)),_e.push(le,ue,K);let ai=_e.join("");return $(Y,ai,S)},Dn=()=>(e,t,r)=>{let i=(e.displayOldPrice===void 0||b(e.displayOldPrice))&&t.priceWithoutDiscount&&t.priceWithoutDiscount!=t.price;return`${de()(e,t,r)}${i?" "+de({displayStrikethrough:!0})(e,t,r):""}`};var or=de(),sr=Dn(),ar=de({displayOptical:!0}),cr=de({displayStrikethrough:!0}),lr=de({displayAnnual:!0});var Co=(e,t)=>{if(!(!Se(e)||!Se(t)))return Math.floor((t-e)/t*100)},Mn=()=>(e,t,r)=>{let{price:n,priceWithoutDiscount:i}=t,o=Co(n,i);return o===void 0?'':`${o}%`};var ur=Mn();var fr="ABM",pr="PUF",mr="M2M",hr="PERPETUAL",kn="P3Y",Io="TAX_INCLUSIVE_DETAILS",Ro="TAX_EXCLUSIVE",Gn={ABM:fr,PUF:pr,M2M:mr,PERPETUAL:hr,P3Y:kn},ic={[fr]:{commitment:I.YEAR,term:O.MONTHLY},[pr]:{commitment:I.YEAR,term:O.ANNUAL},[mr]:{commitment:I.MONTH,term:O.MONTHLY},[hr]:{commitment:I.PERPETUAL,term:void 0},[kn]:{commitment:I.THREE_MONTHS,term:O.P3Y}},Fn="Value is not an offer",dr=e=>{if(typeof e!="object")return Fn;let{commitment:t,term:r}=e,n=Uo(t,r);return{...e,planType:n}};var Uo=(e,t)=>{if(e===void 0)return Fn;if(e===""&&t==="")return"";let r="";return e===I.YEAR?t===O.MONTHLY?r=fr:t===O.ANNUAL&&(r=pr):e===I.MONTH?t===O.MONTHLY&&(r=mr):e===I.PERPETUAL&&(r=hr),r};function Er(e){let{priceDetails:t}=e,{price:r,priceWithoutDiscount:n,priceWithoutTax:i,priceWithoutDiscountAndTax:o,taxDisplay:s}=t;if(s!==Io)return e;let a={...e,priceDetails:{...t,price:i??r,priceWithoutDiscount:o??n,taxDisplay:Ro}};return a.offerType==="TRIAL"&&a.priceDetails.price===0&&(a.priceDetails.price=a.priceDetails.priceWithoutDiscount),a}var{freeze:Ee}=Object,ne=Ee({...fe}),ie=Ee({...X}),q=Ee({...H}),Vn=Ee({...I}),Ve=Ee({...Ie}),jn=Ee({...Gn}),Wn=Ee({...O});var br={};li(br,{CLASS_NAME_FAILED:()=>ct,CLASS_NAME_PENDING:()=>lt,CLASS_NAME_RESOLVED:()=>ut,ERROR_MESSAGE_BAD_REQUEST:()=>gr,ERROR_MESSAGE_MISSING_LITERALS_URL:()=>yr,ERROR_MESSAGE_OFFER_NOT_FOUND:()=>xr,EVENT_TYPE_ERROR:()=>Do,EVENT_TYPE_FAILED:()=>ft,EVENT_TYPE_PENDING:()=>pt,EVENT_TYPE_READY:()=>ge,EVENT_TYPE_RESOLVED:()=>mt,LOG_NAMESPACE:()=>_r,PARAM_AOS_API_KEY:()=>Mo,PARAM_ENV:()=>vr,PARAM_LANDSCAPE:()=>Tr,PARAM_WCS_API_KEY:()=>ko,STATE_FAILED:()=>z,STATE_PENDING:()=>Z,STATE_RESOLVED:()=>Q,TAG_NAME_SERVICE:()=>ae});var ct="placeholder-failed",lt="placeholder-pending",ut="placeholder-resolved",gr="Bad WCS request",xr="Commerce offer not found",yr="Literals URL not provided",Do="wcms:commerce:error",ft="wcms:placeholder:failed",pt="wcms:placeholder:pending",ge="wcms:commerce:ready",mt="wcms:placeholder:resolved",_r="wcms/commerce",vr="commerce.env",Tr="commerce.landscape",Mo="commerce.aosKey",ko="commerce.wcsKey",z="failed",Z="pending",Q="resolved",ae="wcms-commerce";var Sr={clientId:"merch-at-scale",delimiter:"\xB6",ignoredProperties:["analytics","literals"],serializableTypes:["Array","Object"],sampleRate:30,tags:"consumer=milo/commerce"},Hn=new Set,Go=e=>e instanceof Error||typeof e.originatingRequest=="string";function Xn(e){if(e==null)return;let t=typeof e;if(t==="function"){let{name:r}=e;return r?`${t} ${r}`:t}if(t==="object"){if(e instanceof Error)return e.message;if(typeof e.originatingRequest=="string"){let{message:n,originatingRequest:i,status:o}=e;return[n,o,i].filter(s=>s).join(" ")}let r=e[Symbol.toStringTag]??Object.getPrototypeOf(e).constructor.name;if(!Sr.serializableTypes.includes(r))return r}return e}function Fo(e,t){if(!Sr.ignoredProperties.includes(e))return Xn(t)}var Ar={append(e){let{delimiter:t,sampleRate:r,tags:n,clientId:i}=Sr,{message:o,params:s}=e,a=[],c=o,u=[];s.forEach(f=>{f!=null&&(Go(f)?a:u).push(f)}),a.length&&(c+=" ",c+=a.map(Xn).join(" "));let{pathname:l,search:p}=window.location;c+=`${t}page=`,c+=l+p,u.length&&(c+=`${t}facts=`,c+=JSON.stringify(u,Fo)),Hn.has(c)||(Hn.add(c),window.lana?.log(c,{sampleRate:r,tags:n,clientId:i}))}};var T=Object.freeze({checkoutClientId:"adobe_com",checkoutWorkflow:ne.V3,checkoutWorkflowStep:ie.EMAIL,country:"US",displayOldPrice:!0,displayPerUnit:!1,displayRecurrence:!0,displayTax:!1,env:q.PRODUCTION,forceTaxExclusive:!1,language:"en",entitlement:!1,extraOptions:{},modal:!1,promotionCode:"",quantity:1,wcsApiKey:"wcms-commerce-ims-ro-user-milo",wcsBufferDelay:1,wcsEnv:Ve.PRODUCTION,landscape:V.PUBLISHED,wcsBufferLimit:1});function Bn(e,{once:t=!1}={}){let r=null;function n(){let i=document.querySelector(ae);i!==r&&(r=i,i&&e(i))}return document.addEventListener(ge,n,{once:t}),ce(n),()=>document.removeEventListener(ge,n)}function je(e,{country:t,forceTaxExclusive:r,perpetual:n}){let i;if(e.length<2)i=e;else{let o=t==="GB"||n?"EN":"MULT",[s,a]=e;i=[s.language===o?s:a]}return r&&(i=i.map(Er)),i}var ce=e=>window.setTimeout(e);function we(e,t=1){if(e==null)return[t];let r=(Array.isArray(e)?e:String(e).split(",")).map(Pe).filter(Se);return r.length||(r=[t]),r}function ht(e){return e==null?[]:(Array.isArray(e)?e:String(e).split(",")).filter(jt)}function k(){return window.customElements.get(ae)?.instance}var Vo="en_US",m={ar:"AR_es",be_en:"BE_en",be_fr:"BE_fr",be_nl:"BE_nl",br:"BR_pt",ca:"CA_en",ch_de:"CH_de",ch_fr:"CH_fr",ch_it:"CH_it",cl:"CL_es",co:"CO_es",la:"DO_es",mx:"MX_es",pe:"PE_es",africa:"ZA_en",dk:"DK_da",de:"DE_de",ee:"EE_et",eg_ar:"EG_ar",eg_en:"EG_en",es:"ES_es",fr:"FR_fr",gr_el:"GR_el",gr_en:"GR_en",ie:"IE_en",il_he:"IL_iw",it:"IT_it",lv:"LV_lv",lt:"LT_lt",lu_de:"LU_de",lu_en:"LU_en",lu_fr:"LU_fr",my_en:"MY_en",my_ms:"MY_ms",hu:"HU_hu",mt:"MT_en",mena_en:"DZ_en",mena_ar:"DZ_ar",nl:"NL_nl",no:"NO_nb",pl:"PL_pl",pt:"PT_pt",ro:"RO_ro",si:"SI_sl",sk:"SK_sk",fi:"FI_fi",se:"SE_sv",tr:"TR_tr",uk:"GB_en",at:"AT_de",cz:"CZ_cs",bg:"BG_bg",ru:"RU_ru",ua:"UA_uk",au:"AU_en",in_en:"IN_en",in_hi:"IN_hi",id_en:"ID_en",id_id:"ID_in",nz:"NZ_en",sa_ar:"SA_ar",sa_en:"SA_en",sg:"SG_en",cn:"CN_zh-Hans",tw:"TW_zh-Hant",hk_zh:"HK_zh-hant",jp:"JP_ja",kr:"KR_ko",za:"ZA_en",ng:"NG_en",cr:"CR_es",ec:"EC_es",pr:"US_es",gt:"GT_es",cis_en:"AZ_en",cis_ru:"AZ_ru",sea:"SG_en",th_en:"TH_en",th_th:"TH_th"},oe=Object.freeze({LOCAL:"local",PROD:"prod",STAGE:"stage"});function jo({locale:e={}}={}){if(!e.prefix)return{country:T.country,language:T.language,locale:Vo};let t=e.prefix.replace("/","")??"",[r=T.country,n=T.language]=(m[t]??t).split("_",2);return r=r.toUpperCase(),n=n.toLowerCase(),{country:r,language:n,locale:`${n}_${r}`}}function Yn(e={}){let{commerce:t={},locale:r=void 0}=e,i=(e.env?.name===oe.PROD?oe.PROD:re(w(vr,t,{metadata:!1}),oe,oe.PROD))===oe.STAGE?q.STAGE:q.PRODUCTION,o=w("checkoutClientId",t)??T.checkoutClientId,s=re(w("checkoutWorkflow",t),ne,T.checkoutWorkflow),a=ie.CHECKOUT;s===ne.V3&&(a=re(w("checkoutWorkflowStep",t),ie,T.checkoutWorkflowStep));let c=b(w("displayOldPrice",t),T.displayOldPrice),u=b(w("displayPerUnit",t),T.displayPerUnit),l=b(w("displayRecurrence",t),T.displayRecurrence),p=b(w("displayTax",t),T.displayTax),f=b(w("entitlement",t),T.entitlement),h=b(w("modal",t),T.modal),d=b(w("forceTaxExclusive",t),T.forceTaxExclusive),x=w("promotionCode",t)??T.promotionCode,y=we(w("quantity",t)),N=w("wcsApiKey",t)??T.wcsApiKey,S=e.env?.name===oe.PROD?V.PUBLISHED:re(w(Tr,t),V,T.landscape),_=Pe(w("wcsBufferDelay",t),T.wcsBufferDelay),L=Pe(w("wcsBufferLimit",t),T.wcsBufferLimit);return{...jo({locale:r}),displayOldPrice:c,checkoutClientId:o,checkoutWorkflow:s,checkoutWorkflowStep:a,displayPerUnit:u,displayRecurrence:l,displayTax:p,entitlement:f,extraOptions:T.extraOptions,modal:h,env:i,forceTaxExclusive:d,priceLiteralsURL:t.priceLiteralsURL,priceLiteralsPromise:t.priceLiteralsPromise,promotionCode:x,quantity:y,wcsApiKey:N,wcsBufferDelay:_,wcsBufferLimit:L,wcsEnv:i===q.STAGE?Ve.STAGE:Ve.PRODUCTION,landscape:S}}var qn="debug",Wo="error",Ho="info",Xo="warn",Bo=Date.now(),Pr=new Set,wr=new Set,$n=new Map,We=Object.freeze({DEBUG:qn,ERROR:Wo,INFO:Ho,WARN:Xo}),zn={append({level:e,message:t,params:r,timestamp:n,source:i}){console[e](`${n}ms [${i}] %c${t}`,"font-weight: bold;",...r)}},Zn={filter:({level:e})=>e!==qn},Yo={filter:()=>!1};function $o(e,t,r,n,i){return{level:e,message:t,namespace:r,get params(){if(n.length===1){let[o]=n;se(o)&&(n=o(),Array.isArray(n)||(n=[n]))}return n},source:i,timestamp:Date.now()-Bo}}function qo(e){[...wr].every(t=>t(e))&&Pr.forEach(t=>t(e))}function Qn(e){let t=($n.get(e)??0)+1;$n.set(e,t);let r=`${e} #${t}`,n=o=>(s,...a)=>qo($o(o,s,e,a,r)),i=Object.seal({id:r,namespace:e,module(o){return Qn(`${i.namespace}/${o}`)},debug:n(We.DEBUG),error:n(We.ERROR),info:n(We.INFO),warn:n(We.WARN)});return i}function dt(...e){e.forEach(t=>{let{append:r,filter:n}=t;se(n)?wr.add(n):se(r)&&Pr.add(r)})}function zo(e={}){let{name:t}=e,r=b(w("commerce.debug",{search:!0,storage:!0}),t===oe.LOCAL);return dt(r?zn:Zn),t===oe.PROD&&dt(Ar),D}function Zo(){Pr.clear(),wr.clear()}var D={...Qn(_r),Level:We,Plugins:{consoleAppender:zn,debugFilter:Zn,quietFilter:Yo,lanaAppender:Ar},init:zo,reset:Zo,use:dt};var Qo={CLASS_NAME_FAILED:ct,CLASS_NAME_PENDING:lt,CLASS_NAME_RESOLVED:ut,EVENT_TYPE_FAILED:ft,EVENT_TYPE_PENDING:pt,EVENT_TYPE_RESOLVED:mt,STATE_FAILED:z,STATE_PENDING:Z,STATE_RESOLVED:Q},Jo={[z]:ct,[Z]:lt,[Q]:ut},Ko={[z]:ft,[Z]:pt,[Q]:mt},xt=new WeakMap;function G(e){if(!xt.has(e)){let t=D.module(e.constructor.is);xt.set(e,{changes:new Map,connected:!1,dispose:be,error:void 0,log:t,options:void 0,promises:[],state:Z,timer:null,value:void 0,version:0})}return xt.get(e)}function Et(e){let t=G(e),{error:r,promises:n,state:i}=t;(i===Q||i===z)&&(t.promises=[],i===Q?n.forEach(({resolve:o})=>o(e)):i===z&&n.forEach(({reject:o})=>o(r))),e.dispatchEvent(new CustomEvent(Ko[i],{bubbles:!0}))}function gt(e){let t=xt.get(e);[z,Z,Q].forEach(r=>{e.classList.toggle(Jo[r],r===t.state)})}var es={get error(){return G(this).error},get log(){return G(this).log},get options(){return G(this).options},get state(){return G(this).state},get value(){return G(this).value},attributeChangedCallback(e,t,r){G(this).changes.set(e,r),this.requestUpdate()},connectedCallback(){G(this).dispose=Bn(()=>this.requestUpdate(!0))},disconnectedCallback(){let e=G(this);e.connected&&(e.connected=!1,e.log.debug("Disconnected:",{element:this})),e.dispose(),e.dispose=be},onceSettled(){let{error:e,promises:t,state:r}=G(this);return Q===r?Promise.resolve(this):z===r?Promise.reject(e):new Promise((n,i)=>{t.push({resolve:n,reject:i})})},toggleResolved(e,t,r){let n=G(this);return e!==n.version?!1:(r!==void 0&&(n.options=r),n.state=Q,n.value=t,gt(this),this.log.debug("Resolved:",{element:this,value:t}),ce(()=>Et(this)),!0)},toggleFailed(e,t,r){let n=G(this);return e!==n.version?!1:(r!==void 0&&(n.options=r),n.error=t,n.state=z,gt(this),n.log.error("Failed:",{element:this,error:t}),ce(()=>Et(this)),!0)},togglePending(e){let t=G(this);return t.version++,e&&(t.options=e),t.state=Z,gt(this),ce(()=>Et(this)),t.version},requestUpdate(e=!1){if(!this.isConnected||!k())return;let t=G(this);if(t.timer)return;let{error:r,options:n,state:i,value:o,version:s}=t;t.state=Z,t.timer=ce(async()=>{t.timer=null;let a=null;if(t.changes.size&&(a=Object.fromEntries(t.changes.entries()),t.changes.clear()),t.connected?t.log.debug("Updated:",{element:this,changes:a}):(t.connected=!0,t.log.debug("Connected:",{element:this,changes:a})),a||e)try{await this.render?.()===!1&&t.state===Z&&t.version===s&&(t.state=i,t.error=r,t.value=o,gt(this),Et(this))}catch(c){this.toggleFailed(t.version,c,n)}})}};function Jn(e={}){return Object.entries(e).forEach(([t,r])=>{(r==null||r===""||r?.length===0)&&delete e[t]}),e}function yt(e,t={}){let{tag:r,is:n}=e,i=document.createElement(r,{is:n});return i.setAttribute("is",n),Object.assign(i.dataset,Jn(t)),i}function _t(e){let{tag:t,is:r,prototype:n}=e,i=window.customElements.get(r);return i||(Object.defineProperties(n,Object.getOwnPropertyDescriptors(es)),i=Object.defineProperties(e,Object.getOwnPropertyDescriptors(Qo)),window.customElements.define(r,i,{extends:t})),i}function vt(e,t=document.body){return Array.from(t?.querySelectorAll(`${e.tag}[is="${e.is}"]`)??[])}function Tt(e,t={}){return e instanceof HTMLElement?(Object.assign(e.dataset,Jn(t)),e):null}var ts="download",rs="upgrade",xe,Oe=class Oe extends HTMLAnchorElement{constructor(){super();Mr(this,xe);this.addEventListener("click",this.clickHandler)}static get observedAttributes(){return["data-checkout-workflow","data-checkout-workflow-step","data-extra-options","data-ims-country","data-perpetual","data-promotion-code","data-quantity","data-template","data-wcs-osi","data-entitlement","data-upgrade","data-modal"]}static createCheckoutLink(r={},n=""){let i=k();if(!i)return null;let{checkoutMarketSegment:o,checkoutWorkflow:s,checkoutWorkflowStep:a,entitlement:c,upgrade:u,modal:l,perpetual:p,promotionCode:f,quantity:h,wcsOsi:d,extraOptions:x}=i.collectCheckoutOptions(r),y=yt(Oe,{checkoutMarketSegment:o,checkoutWorkflow:s,checkoutWorkflowStep:a,entitlement:c,upgrade:u,modal:l,perpetual:p,promotionCode:f,quantity:h,wcsOsi:d,extraOptions:x});return n&&(y.innerHTML=`${n}`),y}static getCheckoutLinks(r){return vt(Oe,r)}get isCheckoutLink(){return!0}get placeholder(){return this}clickHandler(r){var n;(n=Pt(this,xe))==null||n.call(this,r)}async render(r={}){if(!this.isConnected)return!1;let n=k();if(!n)return!1;this.dataset.imsCountry||n.imsCountryPromise.then(l=>{l&&(this.dataset.imsCountry=l)},be);let i=n.collectCheckoutOptions(r,this.placeholder);if(!i.wcsOsi.length)return!1;let o;try{o=JSON.parse(i.extraOptions??"{}")}catch(l){this.placeholder.log.error("cannot parse exta checkout options",l)}let s=this.placeholder.togglePending(i);this.href="";let a=n.resolveOfferSelectors(i),c=await Promise.all(a);c=c.map(l=>je(l,i));let u=await n.buildCheckoutAction(c.flat(),{...o,...i});return this.renderOffers(c.flat(),i,{},u,s)}renderOffers(r,n,i={},o=void 0,s=void 0){if(!this.isConnected)return!1;let a=k();if(!a)return!1;if(n={...JSON.parse(this.placeholder.dataset.extraOptions??"null"),...n,...i},s??(s=this.placeholder.togglePending(n)),Pt(this,xe)&&wt(this,xe,void 0),o){this.classList.remove(ts,rs),this.placeholder.toggleResolved(s,r,n);let{url:u,text:l,className:p,handler:f}=o;return u&&(this.href=u),l&&(this.firstElementChild.innerHTML=l),p&&this.classList.add(...p.split(" ")),f&&(this.setAttribute("href","#"),wt(this,xe,f.bind(this))),!0}else if(r.length){if(this.placeholder.toggleResolved(s,r,n)){let u=a.buildCheckoutURL(r,n);return this.setAttribute("href",u),!0}}else{let u=new Error(`Not provided: ${n?.wcsOsi??"-"}`);if(this.placeholder.toggleFailed(s,u,n))return this.setAttribute("href","#"),!0}return!1}updateOptions(r={}){let n=k();if(!n)return!1;let{checkoutMarketSegment:i,checkoutWorkflow:o,checkoutWorkflowStep:s,entitlement:a,upgrade:c,modal:u,perpetual:l,promotionCode:p,quantity:f,wcsOsi:h}=n.collectCheckoutOptions(r);return Tt(this,{checkoutMarketSegment:i,checkoutWorkflow:o,checkoutWorkflowStep:s,entitlement:a,upgrade:c,modal:u,perpetual:l,promotionCode:p,quantity:f,wcsOsi:h}),!0}};xe=new WeakMap,te(Oe,"is","checkout-link"),te(Oe,"tag","a");var Or=Oe,Lr=_t(Or);var Kn=[m.uk,m.au,m.fr,m.at,m.be_en,m.be_fr,m.be_nl,m.bg,m.ch_de,m.ch_fr,m.ch_it,m.cz,m.de,m.dk,m.ee,m.eg_ar,m.eg_en,m.es,m.fi,m.fr,m.gr_el,m.gr_en,m.hu,m.ie,m.it,m.lu_de,m.lu_en,m.lu_fr,m.nl,m.no,m.pl,m.pt,m.ro,m.se,m.si,m.sk,m.tr,m.ua,m.id_en,m.id_id,m.in_en,m.in_hi,m.jp,m.my_en,m.my_ms,m.nz,m.th_en,m.th_th],ns={INDIVIDUAL_COM:[m.za,m.lt,m.lv,m.ng,m.sa_ar,m.sa_en,m.za,m.sg,m.kr],TEAM_COM:[m.za,m.lt,m.lv,m.ng,m.za,m.co,m.kr],INDIVIDUAL_EDU:[m.lt,m.lv,m.sa_en,m.sea],TEAM_EDU:[m.sea,m.kr]},Le=class Le extends HTMLSpanElement{static get observedAttributes(){return["data-display-old-price","data-display-per-unit","data-display-recurrence","data-display-tax","data-perpetual","data-promotion-code","data-tax-exclusive","data-template","data-wcs-osi"]}static createInlinePrice(t){let r=k();if(!r)return null;let{displayOldPrice:n,displayPerUnit:i,displayRecurrence:o,displayTax:s,forceTaxExclusive:a,perpetual:c,promotionCode:u,quantity:l,template:p,wcsOsi:f}=r.collectPriceOptions(t);return yt(Le,{displayOldPrice:n,displayPerUnit:i,displayRecurrence:o,displayTax:s,forceTaxExclusive:a,perpetual:c,promotionCode:u,quantity:l,template:p,wcsOsi:f})}static getInlinePrices(t){return vt(Le,t)}get isInlinePrice(){return!0}get placeholder(){return this}resolveDisplayTaxForGeoAndSegment(t,r,n,i){let o=`${t}_${r}`;if(Kn.includes(t)||Kn.includes(o))return!0;let s=ns[`${n}_${i}`];return s?!!(s.includes(t)||s.includes(o)):!1}async resolveDisplayTax(t,r){let[n]=await t.resolveOfferSelectors(r),i=je(await n,r);if(i?.length){let{country:o,language:s}=r,a=i[0],[c=""]=a.marketSegments;return this.resolveDisplayTaxForGeoAndSegment(o,s,a.customerSegment,c)}}async render(t={}){if(!this.isConnected)return!1;let r=k();if(!r)return!1;let n=r.collectPriceOptions(t,this.placeholder);if(!n.wcsOsi.length)return!1;this.placeholder.dataset.displayTax||(n.displayTax=await this.resolveDisplayTax(r,n)||!1);let i=this.placeholder.togglePending(n);this.innerHTML="";let[o]=r.resolveOfferSelectors(n);return this.renderOffers(je(await o,n),n,i)}renderOffers(t,r={},n=void 0){if(!this.isConnected)return;let i=k();if(!i)return!1;let o=i.collectPriceOptions({...this.dataset,...r});if(n??(n=this.placeholder.togglePending(o)),t.length){if(this.placeholder.toggleResolved(n,t,o))return this.innerHTML=i.buildPriceHTML(t,o),!0}else{let s=new Error(`Not provided: ${o?.wcsOsi??"-"}`);if(this.placeholder.toggleFailed(n,s,o))return this.innerHTML="",!0}return!1}updateOptions(t){let r=k();if(!r)return!1;let{displayOldPrice:n,displayPerUnit:i,displayRecurrence:o,displayTax:s,forceTaxExclusive:a,perpetual:c,promotionCode:u,quantity:l,template:p,wcsOsi:f}=r.collectPriceOptions(t);return Tt(this,{displayOldPrice:n,displayPerUnit:i,displayRecurrence:o,displayTax:s,forceTaxExclusive:a,perpetual:c,promotionCode:u,quantity:l,template:p,wcsOsi:f}),!0}};te(Le,"is","inline-price"),te(Le,"tag","span");var Nr=Le,Cr=_t(Nr);function ei({providers:e,settings:t},r){let n=D.module("checkout");function i(u,l){let{checkoutClientId:p,checkoutWorkflow:f,checkoutWorkflowStep:h,country:d,language:x,promotionCode:y,quantity:N}=t,{checkoutMarketSegment:S,checkoutWorkflow:_=f,checkoutWorkflowStep:L=h,imsCountry:A,country:U=A??d,language:F=x,quantity:C=N,entitlement:W,upgrade:J,modal:B,perpetual:le,promotionCode:ue=y,wcsOsi:K,extraOptions:Y,...ye}=Object.assign({},l?.dataset??{},u??{}),He=re(_,ne,T.checkoutWorkflow),Xe=ie.CHECKOUT;He===ne.V3&&(Xe=re(L,ie,T.checkoutWorkflowStep));let Ne=Ae({...ye,extraOptions:Y,checkoutClientId:p,checkoutMarketSegment:S,country:U,quantity:we(C,T.quantity),checkoutWorkflow:He,checkoutWorkflowStep:Xe,language:F,entitlement:b(W),upgrade:b(J),modal:b(B),perpetual:b(le),promotionCode:Re(ue).effectivePromoCode,wcsOsi:ht(K)});if(l)for(let bt of e.checkout)bt(l,Ne);return Ne}async function o(u,l){let p=k(),f=await r.getCheckoutAction?.(u,l,p.imsSignedInPromise);return f||null}function s(u,l){if(!Array.isArray(u)||!u.length||!l)return"";let{env:p,landscape:f}=t,{checkoutClientId:h,checkoutMarketSegment:d,checkoutWorkflow:x,checkoutWorkflowStep:y,country:N,promotionCode:S,quantity:_,...L}=i(l),A=window.frameElement?"if":"fp",U={checkoutPromoCode:S,clientId:h,context:A,country:N,env:p,items:[],marketSegment:d,workflowStep:y,landscape:f,...L};if(u.length===1){let[{offerId:F,offerType:C,productArrangementCode:W}]=u,{marketSegments:[J]}=u[0];Object.assign(U,{marketSegment:J,offerType:C,productArrangementCode:W}),U.items.push(_[0]===1?{id:F}:{id:F,quantity:_[0]})}else U.items.push(...u.map(({offerId:F},C)=>({id:F,quantity:_[C]??T.quantity})));return Rt(x,U)}let{createCheckoutLink:a,getCheckoutLinks:c}=Lr;return{CheckoutLink:Lr,CheckoutWorkflow:ne,CheckoutWorkflowStep:ie,buildCheckoutAction:o,buildCheckoutURL:s,collectCheckoutOptions:i,createCheckoutLink:a,getCheckoutLinks:c}}function is({interval:e=200,maxAttempts:t=25}={}){let r=D.module("ims");return new Promise(n=>{r.debug("Waing for IMS to be ready");let i=0;function o(){window.adobeIMS?.initialized?n():++i>t?(r.debug("Timeout"),n()):setTimeout(o,e)}o()})}function os(e){return e.then(()=>window.adobeIMS?.isSignedInUser()??!1)}function ss(e){let t=D.module("ims");return e.then(r=>r?window.adobeIMS.getProfile().then(({countryCode:n})=>(t.debug("Got user country:",n),n),n=>{t.error("Unable to get user country:",n)}):null)}function ti({}){let e=is(),t=os(e),r=ss(t);return{imsReadyPromise:e,imsSignedInPromise:t,imsCountryPromise:r}}function as(e){if(!e.priceLiteralsURL)throw new Error(yr);return new Promise(t=>{window.fetch(e.priceLiteralsURL).then(r=>{r.json().then(({data:n})=>{t(n)})})})}async function ri(e){let r=await(e.priceLiteralsPromise||as(e));if(Array.isArray(r)){let n=o=>r.find(s=>ze(s.lang,o)),i=n(e.language)??n(T.language);if(i)return Object.freeze(i)}return{}}function ni({literals:e,providers:t,settings:r}){function n(a,c){let{country:u,displayOldPrice:l,displayPerUnit:p,displayRecurrence:f,displayTax:h,forceTaxExclusive:d,language:x,promotionCode:y,quantity:N}=r,{displayOldPrice:S=l,displayPerUnit:_=p,displayRecurrence:L=f,displayTax:A=h,forceTaxExclusive:U=d,country:F=u,language:C=x,perpetual:W,promotionCode:J=y,quantity:B=N,template:le,wcsOsi:ue,...K}=Object.assign({},c?.dataset??{},a??{}),Y=Ae({...K,country:F,displayOldPrice:b(S),displayPerUnit:b(_),displayRecurrence:b(L),displayTax:b(A),forceTaxExclusive:b(U),language:C,perpetual:b(W),promotionCode:Re(J).effectivePromoCode,quantity:we(B,T.quantity),template:le,wcsOsi:ht(ue)});if(c)for(let ye of t.price)ye(c,Y);return Y}function i(a,c){if(!Array.isArray(a)||!a.length||!c)return"";let{template:u}=c,l;switch(u){case"discount":l=ur;break;case"strikethrough":l=cr;break;case"optical":l=ar;break;case"annual":l=lr;break;default:l=c.promotionCode?sr:or}let p=n(c);p.literals=Object.assign({},e.price,Ae(c.literals??{}));let[f]=a;return f={...f,...f.priceDetails},l(p,f)}let{createInlinePrice:o,getInlinePrices:s}=Cr;return{InlinePrice:Cr,buildPriceHTML:i,collectPriceOptions:n,createInlinePrice:o,getInlinePrices:s}}var cs={[q.PRODUCTION]:"https://wcs.adobe.com",[q.STAGE]:"https://wcs.stage.adobe.com"};function ii({settings:e}){let t=D.module("wcs"),{env:r,wcsApiKey:n}=e,i={apiKey:n,baseUrl:cs[r],fetch:window.fetch.bind(window)},o=qe(i),s=new Map,a=new Map,c;async function u(f,h,d=!0){let x=xr;try{t.debug("Fetching:",f),f.offerSelectorIds=f.offerSelectorIds.sort();let{data:y}=await o(f,{apiKey:n,environment:e.wcsEnv,landscape:r===q.STAGE?"ALL":e.landscape},({resolvedOffers:S})=>({offers:S.map(dr)}));t.debug("Fetched:",f,y);let{offers:N}=y??{};h.forEach(({resolve:S},_)=>{let L=N.filter(({offerSelectorIds:A})=>A.includes(_)).flat();L.length&&(h.delete(_),S(L))})}catch(y){y.status===404&&f.offerSelectorIds.length>1?(t.debug("Multi-osi 404, fallback to fetch-by-one strategy"),await Promise.allSettled(f.offerSelectorIds.map(N=>u({...f,offerSelectorIds:[N]},h,!1)))):(t.error("Failed:",f,y),x=gr)}d&&h.size&&(t.debug("Missing:",{offerSelectorIds:[...h.keys()]}),h.forEach(y=>{y.reject(new Error(x))}))}function l(){clearTimeout(c);let f=[...a.values()];a.clear(),f.forEach(({options:h,promises:d})=>u(h,d))}function p({country:f,language:h,perpetual:d=!1,promotionCode:x="",wcsOsi:y=[]}){let N=`${h}_${f}`;f!=="GB"&&(h=d?"EN":"MULT");let S=[f,h,x].filter(_=>_).join("-").toLowerCase();return y.map(_=>{let L=`${_}-${S}`;if(!s.has(L)){let A=new Promise((U,F)=>{let C=a.get(S);if(!C){let W={country:f,locale:N,offerSelectorIds:[]};f!=="GB"&&(W.language=h),C={options:W,promises:new Map},a.set(S,C)}x&&(C.options.promotionCode=x),C.options.offerSelectorIds.push(_),C.promises.set(_,{resolve:U,reject:F}),C.options.offerSelectorIds.length>=e.wcsBufferLimit?l():(t.debug("Queued:",C.options),c||(c=setTimeout(l,e.wcsBufferDelay)))});s.set(L,A)}return s.get(L)})}return{WcsCommitment:Vn,WcsPlanType:jn,WcsTerm:Wn,resolveOfferSelectors:p}}var M=class extends HTMLElement{get isWcmsCommerce(){return!0}};te(M,"instance"),te(M,"promise",null);window.customElements.define(ae,M);async function ls(e,t){let r=D.init(e.env).module("service");r.debug("Activating:",e);let n={price:{}},i=Object.freeze(Yn(e));try{n.price=await ri(i)}catch(c){r.warn("Price literals were not fetched:",c)}let o={checkout:new Set,price:new Set},s=document.createElement(ae),a={literals:n,providers:o,settings:i};return M.instance=Object.defineProperties(s,Object.getOwnPropertyDescriptors({...ei(a,t),...ti(a),...ni(a),...ii(a),...br,Log:D,get defaults(){return T},get literals(){return n},get log(){return D},get providers(){return{checkout(c){return o.checkout.add(c),()=>o.checkout.delete(c)},price(c){return o.price.add(c),()=>o.price.delete(c)}}},get settings(){return i}})),r.debug("Activated:",{literals:n,settings:i,element:s}),document.head.append(s),ce(()=>{let c=new CustomEvent(ge,{bubbles:!0,cancelable:!1,detail:M.instance});M.instance.dispatchEvent(c)}),M.instance}function oi(){document.head.querySelector(ae)?.remove(),M.promise=null,D.reset()}function Ir(e,t){if(se(e)){let r=se(t)?t():{};return r.force&&oi(),M.promise??(M.promise=ls(e(),r))}return M.promise?M.promise:new Promise(r=>{let n=i=>{r(i.detail)};document.head.addEventListener(ge,n,{once:!0})})}var us=document.querySelector('meta[name="mas-locale"]')?.getAttribute("content")??"US_en",Ll=document.querySelector('meta[name="mas-lang"]')?.getAttribute("content"),fs=()=>({env:{name:"stage"},commerce:{"commerce.env":"STAGE"},locale:{prefix:us}}),ps=document.querySelector('meta[name="mas-features"]')?.getAttribute("content")?.split(",")??[];Ir(fs);if(ps.includes("merch-card")){let{origin:e}=new URL(import.meta.url);import(`${e}/lib/merch-card-all.js`)} diff --git a/mas/build.mjs b/mas/build.mjs new file mode 100644 index 00000000..7c38e549 --- /dev/null +++ b/mas/build.mjs @@ -0,0 +1,29 @@ +import { build } from 'esbuild'; +import fs from 'node:fs'; + +import { execSync } from 'node:child_process'; + +// Get the current commit hash +const commitHash = execSync('git rev-parse HEAD').toString().trim(); +const branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); + +console.log(`you're building from branch ${branch} with commit ${commitHash}`); + +const { metafile } = await build({ + alias: { + react: '../mocks/react.js', + }, + banner: { + js: `// branch: ${branch} commit: ${commitHash} ${new Date().toUTCString()}`, + }, + bundle: true, + entryPoints: ['./src/mas.js'], + format: 'esm', + metafile: true, + minify: true, + outfile: '../mas.js', + platform: 'browser', + target: ['es2020'], +}); + +fs.writeFileSync('stats.json', JSON.stringify(metafile)); diff --git a/mas/package.json b/mas/package.json new file mode 100644 index 00000000..82c1cf64 --- /dev/null +++ b/mas/package.json @@ -0,0 +1,22 @@ +{ + "name": "@adobe/mas", + "version": "0.0.1", + "description": "Merch at Scale Enablement", + "scripts": { + "test:ci": "echo", + "build": "node build.mjs" + }, + "type": "module", + "main": "src/mas.js", + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + }, + "devDependencies": { + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } +} diff --git a/mas/src/mas.js b/mas/src/mas.js new file mode 100644 index 00000000..4c1d4515 --- /dev/null +++ b/mas/src/mas.js @@ -0,0 +1,29 @@ +import { init } from '@adobe/mas-commerce'; + +const locale = + document + .querySelector('meta[name="mas-locale"]') + ?.getAttribute('content') ?? 'US_en'; + +const lang = document + .querySelector('meta[name="mas-lang"]') + ?.getAttribute('content'); + +const config = () => ({ + env: { name: 'stage' }, + commerce: { 'commerce.env': 'STAGE' }, + locale: { prefix: locale }, +}); + +const features = + document + .querySelector('meta[name="mas-features"]') + ?.getAttribute('content') + ?.split(',') ?? []; + +init(config); + +if (features.includes('merch-card')) { + const { origin } = new URL(import.meta.url); + import(`${origin}/lib/merch-card-all.js`); +} diff --git a/mocks/aem.js b/mocks/aem.js new file mode 100644 index 00000000..b882f812 --- /dev/null +++ b/mocks/aem.js @@ -0,0 +1,11 @@ +export async function withAem(originalFetch) { + return async ({ pathname }) => { + if (/cf\/fragments\/search/.test(pathname)) { + // TODO add conditional use case. + return originalFetch( + '/test/mocks/sites/cf/fragments/search/default.json', + ); + } + return false; + }; +} diff --git a/commerce/test/mocks/config.js b/mocks/config.js similarity index 84% rename from commerce/test/mocks/config.js rename to mocks/config.js index 5678d26a..ec963910 100644 --- a/commerce/test/mocks/config.js +++ b/mocks/config.js @@ -1,4 +1,4 @@ -import { priceLiteralsURL } from './fetch.js'; +import { priceLiteralsURL } from './literals.js'; export const mockConfig = ( @@ -7,7 +7,7 @@ export const mockConfig = env = { // replace prod with 'local' to enable debugging name: 'prod', - } + }, ) => () => ({ commerce: { diff --git a/mocks/fetch.js b/mocks/fetch.js new file mode 100644 index 00000000..596bbb68 --- /dev/null +++ b/mocks/fetch.js @@ -0,0 +1,25 @@ +import sinon from 'sinon'; + +const { fetch: originalFetch } = window; + +export async function mockFetch(...stubs) { + const mocks = await Promise.all(stubs.map((stub) => stub(originalFetch))); + const stub = sinon.stub().callsFake(async (...args) => { + const { href, pathname, searchParams } = new URL( + String(args[0]), + window.location, + ); + let found = false; + for await (const mock of mocks) { + found = await mock({ href, pathname, searchParams }); + if (found === false) continue; + break; + } + if (found === false) { + return originalFetch(...args); + } + return found; + }); + window.fetch = stub; + return stub; +} diff --git a/mocks/img/creative-cloud.svg b/mocks/img/creative-cloud.svg new file mode 100644 index 00000000..fcdaf3d7 --- /dev/null +++ b/mocks/img/creative-cloud.svg @@ -0,0 +1,749 @@ + + + + + + + diff --git a/web-components/test/img/photoshop.svg b/mocks/img/photoshop.svg similarity index 100% rename from web-components/test/img/photoshop.svg rename to mocks/img/photoshop.svg diff --git a/commerce/test/mocks/ims.js b/mocks/ims.js similarity index 87% rename from commerce/test/mocks/ims.js rename to mocks/ims.js index 7db9ae63..9b1615c5 100644 --- a/commerce/test/mocks/ims.js +++ b/mocks/ims.js @@ -1,4 +1,4 @@ -import { delay } from '../../src/external.js'; +import { delay } from '../commerce/src/external.js'; const { adobeIMS } = window; diff --git a/commerce/test/mocks/lana.js b/mocks/lana.js similarity index 78% rename from commerce/test/mocks/lana.js rename to mocks/lana.js index 00d8df67..71b1dbef 100644 --- a/commerce/test/mocks/lana.js +++ b/mocks/lana.js @@ -1,4 +1,4 @@ -import { sinon } from '../utilities.js'; +import { sinon } from '../commerce/test/utilities.js'; const ogLana = window.lana; diff --git a/mocks/literals.js b/mocks/literals.js new file mode 100644 index 00000000..b69ae008 --- /dev/null +++ b/mocks/literals.js @@ -0,0 +1,17 @@ +export const priceLiteralsURL = + 'https://www.adobe.com/federal/commerce/price-literals.json'; + +export async function withLiterals(originalFetch) { + const literals = await originalFetch('/test/mocks/literals.json').then( + (res) => res.json(), + ); + return async ({ href }) => { + if (href === priceLiteralsURL) { + return Promise.resolve({ + ok: true, + json: async () => literals, + }); + } + return false; + }; +} diff --git a/commerce/test/mocks/literals.json b/mocks/literals.json similarity index 97% rename from commerce/test/mocks/literals.json rename to mocks/literals.json index 0788a432..64155c54 100644 --- a/commerce/test/mocks/literals.json +++ b/mocks/literals.json @@ -1,17 +1,8 @@ { - "data": [{ - "lang": "en", - "recurrenceLabel": "{recurrenceTerm, select, MONTH {/mo} YEAR {/yr} other {}}", - "recurrenceAriaLabel": "{recurrenceTerm, select, MONTH {per month} YEAR {per year} other {}}", - "perUnitLabel": "{perUnit, select, LICENSE {per license} other {}}", - "perUnitAriaLabel": "{perUnit, select, LICENSE {per license} other {}}", - "freeLabel": "Free", - "freeAriaLabel": "Free", - "taxExclusiveLabel": "{taxTerm, select, GST {excl. GST} VAT {excl. VAT} TAX {excl. tax} IVA {excl. IVA} SST {excl. SST} KDV {excl. KDV} other {}}", - "taxInclusiveLabel": "{taxTerm, select, GST {incl. GST} VAT {incl. VAT} TAX {incl. tax} IVA {incl. IVA} SST {incl. SST} KDV {incl. KDV} other {}}", - "alternativePriceAriaLabel": "Alternatively at {alternativePrice}", - "strikethroughAriaLabel": "Regularly at {strikethroughPrice}" - }, + "total": 38, + "offset": 0, + "limit": 38, + "data": [ { "lang": "ar", "recurrenceLabel": "{recurrenceTerm, select, MONTH {/الشهر} YEAR {/العام} other {}}", @@ -77,6 +68,19 @@ "alternativePriceAriaLabel": "Alternativ: {alternativePrice}", "strikethroughAriaLabel": "Regulär: {strikethroughPrice}" }, + { + "lang": "en", + "recurrenceLabel": "{recurrenceTerm, select, MONTH {/mo} YEAR {/yr} other {}}", + "recurrenceAriaLabel": "{recurrenceTerm, select, MONTH {per month} YEAR {per year} other {}}", + "perUnitLabel": "{perUnit, select, LICENSE {per license} other {}}", + "perUnitAriaLabel": "{perUnit, select, LICENSE {per license} other {}}", + "freeLabel": "Free", + "freeAriaLabel": "Free", + "taxExclusiveLabel": "{taxTerm, select, GST {excl. GST} VAT {excl. VAT} TAX {excl. tax} IVA {excl. IVA} SST {excl. SST} KDV {excl. KDV} other {}}", + "taxInclusiveLabel": "{taxTerm, select, GST {incl. GST} VAT {incl. VAT} TAX {incl. tax} IVA {incl. IVA} SST {incl. SST} KDV {incl. KDV} other {}}", + "alternativePriceAriaLabel": "Alternatively at {alternativePrice}", + "strikethroughAriaLabel": "Regularly at {strikethroughPrice}" + }, { "lang": "et", "recurrenceLabel": "{recurrenceTerm, select, MONTH {kuus} YEAR {aastas} other {}}", diff --git a/mocks/mas.js b/mocks/mas.js new file mode 100644 index 00000000..f77da437 --- /dev/null +++ b/mocks/mas.js @@ -0,0 +1,18 @@ +import { init } from '@adobe/mas-commerce'; +import '@adobe/mas-web-components/src/merch-card-all.js'; + +const locale = + document + .querySelector('meta[name="mas-locale"]') + ?.getAttribute('content') ?? 'US_en'; + +const config = () => ({ + env: { name: 'prod' }, + commerce: { 'commerce.env': 'PROD' }, + locale: { prefix: locale }, +}); + +/** in tests, eagerly initialisation breaks mocks */ +export default async () => { + await init(config); +}; diff --git a/commerce/test/mocks/offers.json b/mocks/offers.json similarity index 89% rename from commerce/test/mocks/offers.json rename to mocks/offers.json index fe19762e..30439540 100644 --- a/commerce/test/mocks/offers.json +++ b/mocks/offers.json @@ -849,39 +849,39 @@ "merchant": "ADOBE" } ], - "BNTtrDS9wbigrk5Hjeyn6BO62hcRZ-X5fJM9nLqJL6c-mult": [ - { - "offerSelectorIds": [ - "BNTtrDS9wbigrk5Hjeyn6BO62hcRZ-X5fJM9nLqJL6c" - ], - "offerId": "1E47D777E75D45CD12BE910FD7EEEC6E", - "priceDetails": { - "price": 9.99, - "priceWithoutTax": 9.99, - "usePrecision": true, - "formatString": "'US$'#,##0.00", - "taxDisplay": "TAX_EXCLUSIVE", - "taxTerm": "TAX" - }, - "analytics": "{\"offerId\":\"1E47D777E75D45CD12BE910FD7EEEC6E\",\"label\":\"PA-892\",\"price\":\"9.99\",\"amountWithoutTax\":\"9.99\",\"commitmentType\":\"YEAR\",\"billingFrequency\":\"MONTHLY\",\"currencyCode\":\"USD\"}", - "productArrangementCode": "PA-892", - "productArrangement": { - "productFamily": "PHOTOSHOP_LIGHTROOM" - }, - "buyingProgram": "RETAIL", - "commitment": "YEAR", - "term": "MONTHLY", - "customerSegment": "INDIVIDUAL", - "marketSegments": [ - "COM" - ], - "salesChannel": "DIRECT", - "offerType": "BASE", - "pricePoint": "REGULAR", - "language": "MULT", - "merchant": "ADOBE" - } - ], + "BNTtrDS9wbigrk5Hjeyn6BO62hcRZ-X5fJM9nLqJL6c-mult": [ + { + "offerSelectorIds": [ + "BNTtrDS9wbigrk5Hjeyn6BO62hcRZ-X5fJM9nLqJL6c" + ], + "offerId": "1E47D777E75D45CD12BE910FD7EEEC6E", + "priceDetails": { + "price": 9.99, + "priceWithoutTax": 9.99, + "usePrecision": true, + "formatString": "'US$'#,##0.00", + "taxDisplay": "TAX_EXCLUSIVE", + "taxTerm": "TAX" + }, + "analytics": "{\"offerId\":\"1E47D777E75D45CD12BE910FD7EEEC6E\",\"label\":\"PA-892\",\"price\":\"9.99\",\"amountWithoutTax\":\"9.99\",\"commitmentType\":\"YEAR\",\"billingFrequency\":\"MONTHLY\",\"currencyCode\":\"USD\"}", + "productArrangementCode": "PA-892", + "productArrangement": { + "productFamily": "PHOTOSHOP_LIGHTROOM" + }, + "buyingProgram": "RETAIL", + "commitment": "YEAR", + "term": "MONTHLY", + "customerSegment": "INDIVIDUAL", + "marketSegments": [ + "COM" + ], + "salesChannel": "DIRECT", + "offerType": "BASE", + "pricePoint": "REGULAR", + "language": "MULT", + "merchant": "ADOBE" + } + ], "abm-team-gov-mult": [ { "offerId": "DAC628518DDD843D4D19A8BF7D8FF1FE", @@ -1031,5 +1031,76 @@ "language": "MULT", "merchant": "ADOBE" } + ], + "r_JXAnlFI7xD6FxWKl2ODvZriLYBoSL701Kd1hRyhe8-mult": [ + { + "offerSelectorIds": [ + "r_JXAnlFI7xD6FxWKl2ODvZriLYBoSL701Kd1hRyhe8" + ], + "offerId": "632B3ADD940A7FBB7864AA5AD19B8D28", + "startDate": "2015-12-04T17:38:19.000Z", + "endDate": "2100-04-13T21:20:00.000Z", + "priceDetails": { + "price": 35.99, + "priceWithoutDiscount": 59.99, + "priceWithoutTax": 35.99, + "priceWithoutDiscountAndTax": 59.99, + "usePrecision": true, + "formatString": "'US$'#,##0.00", + "taxDisplay": "TAX_EXCLUSIVE", + "taxTerm": "TAX" + }, + "analytics": "{\"offerId\":\"632B3ADD940A7FBB7864AA5AD19B8D28\",\"label\":\"ccsn_direct_individual\",\"price\":\"35.99\",\"amountWithoutTax\":\"35.99\",\"commitmentType\":\"YEAR\",\"billingFrequency\":\"MONTHLY\",\"currencyCode\":\"USD\"}", + "productArrangementCode": "ccsn_direct_individual", + "productArrangement": { + "productFamily": "CC_ALL_APPS" + }, + "buyingProgram": "RETAIL", + "commitment": "YEAR", + "term": "MONTHLY", + "customerSegment": "INDIVIDUAL", + "marketSegments": [ + "COM" + ], + "salesChannel": "DIRECT", + "offerType": "BASE", + "pricePoint": "REGULAR", + "language": "MULT", + "merchant": "ADOBE" + } + ], + "A1xn6EL4pK93bWjM8flffQpfEL-bnvtoQKQAvkx574M-mult": [ + { + "offerSelectorIds": [ + "A1xn6EL4pK93bWjM8flffQpfEL-bnvtoQKQAvkx574M" + ], + "offerId": "30404A88D89A328584307175B8B27616", + "startDate": "2015-11-17T20:52:25.000Z", + "priceDetails": { + "price": 22.99, + "priceWithoutTax": 22.99, + "usePrecision": true, + "formatString": "'US$'#,##0.00", + "taxDisplay": "TAX_EXCLUSIVE", + "taxTerm": "TAX" + }, + "analytics": "{\"offerId\":\"30404A88D89A328584307175B8B27616\",\"label\":\"phsp_direct_individual\",\"price\":\"22.99\",\"amountWithoutTax\":\"22.99\",\"commitmentType\":\"YEAR\",\"billingFrequency\":\"MONTHLY\",\"currencyCode\":\"USD\"}", + "productArrangementCode": "phsp_direct_individual", + "productArrangement": { + "productFamily": "PHOTOSHOP" + }, + "buyingProgram": "RETAIL", + "commitment": "YEAR", + "term": "MONTHLY", + "customerSegment": "INDIVIDUAL", + "marketSegments": [ + "COM" + ], + "salesChannel": "DIRECT", + "offerType": "BASE", + "pricePoint": "REGULAR", + "language": "MULT", + "merchant": "ADOBE" + } ] } diff --git a/commerce/test/mocks/pandora-fetch.js b/mocks/pandora-fetch.js similarity index 100% rename from commerce/test/mocks/pandora-fetch.js rename to mocks/pandora-fetch.js diff --git a/commerce/test/mocks/providers.js b/mocks/providers.js similarity index 100% rename from commerce/test/mocks/providers.js rename to mocks/providers.js diff --git a/commerce/test/mocks/react.js b/mocks/react.js similarity index 100% rename from commerce/test/mocks/react.js rename to mocks/react.js diff --git a/mocks/sites/cf/fragments/search/default.json b/mocks/sites/cf/fragments/search/default.json new file mode 100644 index 00000000..acf15662 --- /dev/null +++ b/mocks/sites/cf/fragments/search/default.json @@ -0,0 +1,240 @@ +{ + "items": [ + { + "path": "/content/dam/sandbox/mas/creative-cloud", + "title": "Creative Cloud All Apps", + "description": "", + "id": "be9aa9c6-b8e9-4058-aa6b-f0125647479a", + "created": { + "at": "2024-05-08T12:05:03.588Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "modified": { + "at": "2024-06-13T11:10:53.174Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "published": { + "at": "2024-06-13T11:11:01.224Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "status": "PUBLISHED", + "fields": [ + { + "name": "type", + "type": "enumeration", + "multiple": false, + "values": [ + "ccd-action" + ] + }, + { + "name": "icon", + "type": "text", + "multiple": true, + "values": [ + "/test/mocks/img/creative-cloud.svg" + ] + }, + { + "name": "name", + "type": "text", + "multiple": false, + "values": [ + "creative-cloud" + ] + }, + { + "name": "title", + "type": "text", + "multiple": false, + "values": [ + "Creative Cloud All Apps" + ] + }, + { + "name": "link", + "type": "text", + "multiple": false, + "values": [] + }, + { + "name": "prices", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "" + ] + }, + { + "name": "description", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "

Get 25 apps and games plus fonts, storage, templates, and tutorials for less than the price of Acrobat Pro, Photoshop, and Premiere Pro sold separately. (Substance 3D apps not included.)

" + ] + }, + { + "name": "secure", + "type": "boolean", + "multiple": false, + "values": [ + true + ] + }, + { + "name": "stock", + "type": "boolean", + "multiple": false, + "values": [ + true + ] + }, + { + "name": "ctas", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "Buy nowFree trial" + ] + } + ], + "variations": [], + "tags": [], + "references": [], + "model": { + "id": "L2NvbmYvc2FuZGJveC9zZXR0aW5ncy9kYW0vY2ZtL21vZGVscy9tZXJjaC1jYXJk", + "path": "/conf/sandbox/settings/dam/cfm/models/merch-card", + "name": "Merch Card", + "title": "Merch Card", + "description": "content for adobe.com merch-card web component." + }, + "validationStatus": [], + "fieldTags": [], + "etag": "\"2028f561fa1f216104ee23d9ee4a141e\"" + }, + { + "path": "/content/dam/sandbox/mas/photoshop", + "title": "Photoshop", + "description": "", + "id": "d52dcff2-9dea-439e-a7a4-a53099ec9315", + "created": { + "at": "2024-05-08T12:05:04.785Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "modified": { + "at": "2024-06-13T11:10:20.455Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "published": { + "at": "2024-06-13T11:11:01.224Z", + "by": "johndoe@adobe.com", + "fullName": "John Doe" + }, + "status": "PUBLISHED", + "fields": [ + { + "name": "type", + "type": "enumeration", + "multiple": false, + "values": [ + "ccd-action" + ] + }, + { + "name": "icon", + "type": "text", + "multiple": true, + "values": [ + "/test/mocks/img/photoshop.svg" + ] + }, + { + "name": "name", + "type": "text", + "multiple": false, + "values": [ + "photoshop" + ] + }, + { + "name": "title", + "type": "text", + "multiple": false, + "values": [ + "Photoshop" + ] + }, + { + "name": "link", + "type": "text", + "multiple": false, + "values": [] + }, + { + "name": "prices", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "" + ] + }, + { + "name": "description", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "

Edit, composite, and create beautiful images, graphics, and art on desktop and iPad.

" + ] + }, + { + "name": "secure", + "type": "boolean", + "multiple": false, + "values": [ + true + ] + }, + { + "name": "stock", + "type": "boolean", + "multiple": false, + "values": [ + true + ] + }, + { + "name": "ctas", + "type": "long-text", + "multiple": false, + "mimeType": "text/html", + "values": [ + "Buy nowFree trial" + ] + } + ], + "variations": [], + "tags": [], + "references": [], + "model": { + "id": "L2NvbmYvc2FuZGJveC9zZXR0aW5ncy9kYW0vY2ZtL21vZGVscy9tZXJjaC1jYXJk", + "path": "/conf/sandbox/settings/dam/cfm/models/merch-card", + "name": "Merch Card", + "title": "Merch Card", + "description": "content for adobe.com merch-card web component." + }, + "validationStatus": [], + "fieldTags": [], + "etag": "\"343f00d61244effce6e55c31cc90d4f9\"" + } + ] +} diff --git a/commerce/test/mocks/snapshots.js b/mocks/snapshots.js similarity index 100% rename from commerce/test/mocks/snapshots.js rename to mocks/snapshots.js diff --git a/mocks/wcs.js b/mocks/wcs.js new file mode 100644 index 00000000..2dbdc8fb --- /dev/null +++ b/mocks/wcs.js @@ -0,0 +1,41 @@ +export async function withWcs(originalFetch) { + const offers = JSON.parse( + await originalFetch('/test/mocks/offers.json').then((r) => r.text()), + ); + return async ({ pathname, searchParams }) => { + // mock Wcs responses + if (pathname.endsWith('/web_commerce_artifact')) { + const language = searchParams.get('language').toLowerCase(); + const buckets = searchParams + .get('offer_selector_ids') + .split(',') + .map((osi) => + offers[`${osi}-${language}`]?.map((offer) => ({ + ...offer, + offerSelectorIds: [osi], + })), + ); + + // 404 if any of requested osis does not exist + if (buckets.some((bucket) => bucket == null)) { + return Promise.resolve({ + ok: false, + status: 404, + json: async () => new Error(), + text: async () => 'Some osis were not found', + }); + } + + // 200, all osis were found + return Promise.resolve({ + ok: true, + status: 200, + json: async () => ({ + resolvedOffers: buckets.flatMap((array) => array ?? []), + }), + text: async () => 'Unexpected error', + }); + } + return false; + }; +} diff --git a/package-lock.json b/package-lock.json index d9036c8b..ccc8a738 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,59 +1,188 @@ { - "name": "@adobe/mas", - "version": "1.0.0", + "name": "@adobe/mas-platform", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@adobe/mas", - "version": "1.0.0", + "name": "@adobe/mas-platform", + "version": "0.0.1", "workspaces": [ - "web-components", - "commerce" - ] - }, - "commerce": { - "name": "@wcms/commerce", - "version": "2.0.0", + "commerce", + "commons", + "mas", + "studio", + "web-components" + ], "dependencies": { - "@dexter/tacocat-consonant-templates": "file:../deps/tacocat-consonant-templates-1.13.0.tgz", - "@dexter/tacocat-core": "file:../deps/tacocat-core-1.12.2.tgz", - "@dexter/tacocat-wcs-client": "file:../deps/tacocat-wcs-client-1.17.0.tgz", - "@pandora/commerce-checkout-url-builder": "file:../deps/commerce-checkout-url-builder-1.6.0.tgz", - "@pandora/data-models-odm": "file:../deps/data-models-odm-0.5.4.tgz", - "@pandora/data-source-utils": "file:../deps/data-source-utils-0.3.1.tgz", - "@pandora/data-source-wcs": "file:../deps/data-source-wcs-0.2.8.tgz", - "@pandora/fetch": "file:../deps/fetch-1.3.4.tgz", - "@pandora/logger": "file:../deps/logger-1.3.0.tgz", - "@pandora/react-auth-provider": "file:../deps/react-auth-provider-1.2.1.tgz", - "@pandora/react-env-provider": "file:../deps/react-env-provider-1.2.2.tgz", - "@pandora/react-fetch-provider": "file:../deps/react-fetch-provider-1.2.2.tgz" + "@spectrum-web-components/action-button": "^0.43.0", + "@spectrum-web-components/action-menu": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/button-group": "^0.43.0", + "@spectrum-web-components/checkbox": "^0.43.0", + "@spectrum-web-components/dialog": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/link": "^0.43.0", + "@spectrum-web-components/menu": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/popover": "^0.43.0", + "@spectrum-web-components/progress-circle": "^0.43.0", + "@spectrum-web-components/radio": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/search": "^0.43.0", + "@spectrum-web-components/sidenav": "0.42.1", + "@spectrum-web-components/split-button": "^0.43.0", + "@spectrum-web-components/tabs": "^0.43.0", + "@spectrum-web-components/theme": "^0.43.0", + "@spectrum-web-components/tooltip": "^0.43.0", + "@spectrum-web-components/tray": "^0.43.0", + "lit": "^2.8.0" }, "devDependencies": { - "@dexter/eslint-config-tacocat": "file:../deps/eslint-config-tacocat-1.1.2.tgz", "@esm-bundle/chai": "4.3.4-fix.0", "@esm-bundle/chai-as-promised": "7.1.1", "@types/chai-as-promised": "7.1.5", "@types/sinon": "10.0.15", - "@web/dev-server-import-maps": "^0.1.1", - "@web/test-runner": "0.13.27", - "@web/test-runner-commands": "0.6.1", - "@web/test-runner-playwright": "0.10.1", - "esbuild": "0.18.11", - "eslint": "8.20.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-plugin-chai-friendly": "0.7.2", - "eslint-plugin-compat": "4.0.2", - "eslint-plugin-ecmalist": "1.0.8", - "eslint-plugin-import": "2.26.0", + "eslint": "^9.5.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.3.2", "sinon": "13.0.1" } }, + "commerce": { + "name": "@adobe/mas-commerce", + "version": "2.0.0", + "dependencies": { + "@dexter/tacocat-consonant-templates": "file:./internal/tacocat-consonant-templates-1.13.0.tgz", + "@dexter/tacocat-core": "file:./internal/tacocat-core-1.12.2.tgz", + "@dexter/tacocat-wcs-client": "file:./internal/tacocat-wcs-client-1.17.0.tgz", + "@pandora/commerce-checkout-url-builder": "file:./internal/commerce-checkout-url-builder-1.6.0.tgz", + "@pandora/data-models-odm": "file:./internal/data-models-odm-0.5.4.tgz", + "@pandora/data-source-utils": "file:./internal/data-source-utils-0.3.1.tgz", + "@pandora/data-source-wcs": "file:./internal/data-source-wcs-0.2.8.tgz", + "@pandora/fetch": "file:./internal/fetch-1.3.4.tgz", + "@pandora/logger": "file:./internal/logger-1.3.0.tgz", + "@pandora/react-auth-provider": "file:./internal/react-auth-provider-1.2.1.tgz", + "@pandora/react-env-provider": "file:./internal/react-env-provider-1.2.2.tgz", + "@pandora/react-fetch-provider": "file:./internal/react-fetch-provider-1.2.2.tgz" + }, + "devDependencies": { + "@web/dev-server-import-maps": "^0.1.1", + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "@web/test-runner-visual-regression": "^0.9.0", + "esbuild": "0.18.11" + } + }, + "commons": { + "name": "@adobe/mas-commons", + "version": "0.0.1", + "license": "ISC", + "devDependencies": { + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } + }, + "commons/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "mas": { + "name": "@adobe/mas", + "version": "0.0.1", + "license": "ISC", + "devDependencies": { + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } + }, + "mas/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/@75lb/deep-merge": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", "dev": true, + "license": "MIT", "dependencies": { "lodash.assignwith": "^4.2.0", "typical": "^7.1.1" @@ -67,15 +196,47 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } }, + "node_modules/@adobe/lit-mobx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@adobe/lit-mobx/-/lit-mobx-2.2.2.tgz", + "integrity": "sha512-TKmaEgu0m8dxydo0cAhJ5qaNoa/moQr8I3E9DtxVb0OSu/huXps+gUg/6oz7sYllcSl4KFZtzfyfx7EstbQ9tw==", + "license": "Apache-2.0", + "peerDependencies": { + "lit": "^2.0.0 || ^3.0.0", + "mobx": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/@adobe/mas": { + "resolved": "mas", + "link": true + }, + "node_modules/@adobe/mas-commerce": { + "resolved": "commerce", + "link": true + }, + "node_modules/@adobe/mas-commons": { + "resolved": "commons", + "link": true + }, + "node_modules/@adobe/mas-studio": { + "resolved": "studio", + "link": true + }, + "node_modules/@adobe/mas-web-components": { + "resolved": "web-components", + "link": true + }, "node_modules/@babel/code-frame": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" @@ -89,6 +250,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -98,6 +260,7 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -108,10 +271,89 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@browser-bunyan/console-formatted-stream": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@browser-bunyan/console-formatted-stream/-/console-formatted-stream-1.8.0.tgz", "integrity": "sha512-Lg5SC2uXrvZ6aLwLZT6SErfN1Is4NcrTOb5km4BW/BfL8Lv0CfpsYuhuD7ltdURL6awTYBUiT+BwhKw1Xd9glQ==", + "license": "MIT", "dependencies": { "@browser-bunyan/levels": "^1.8.0" } @@ -120,6 +362,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/@browser-bunyan/console-plain-stream/-/console-plain-stream-1.8.0.tgz", "integrity": "sha512-S0WNsH5zvMfkbayIx90wANGHQ8l3Bvd7mjgy95/bYmUzcI+Mwkv2eJcSufdTP/MbdHBhjv/lEdLDOXEPBi+w3A==", + "license": "MIT", "dependencies": { "@browser-bunyan/levels": "^1.8.0" } @@ -128,6 +371,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/@browser-bunyan/console-raw-stream/-/console-raw-stream-1.8.0.tgz", "integrity": "sha512-6M/xEiNckbFslQMaS1BHAxvuvN1Wtbh/aq4UzQD3fjEPFCxtubvf4KyzwPxUXA5CXq7leVZ+cibEUCRBsm5bzg==", + "license": "MIT", "dependencies": { "@browser-bunyan/levels": "^1.8.0" } @@ -135,20 +379,12 @@ "node_modules/@browser-bunyan/levels": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@browser-bunyan/levels/-/levels-1.8.0.tgz", - "integrity": "sha512-f9oSDik8kAl+4rhVyHqIr012P1boHFUKc7D9nzA5+lDsFoP90UQnDwpseqBdF2mTaWYju10E7h+GdH8u+7MHOQ==" - }, - "node_modules/@dexter/eslint-config-tacocat": { - "version": "1.1.2", - "resolved": "file:deps/eslint-config-tacocat-1.1.2.tgz", - "integrity": "sha512-w/sDqP8aan/llDUOar67yovGhoi7bkAgAvRwaHZPtVMY5D0B+tZfZWQNnJt6ocN3rerXXZZdn/HTdFKIKpmalg==", - "dev": true, - "peerDependencies": { - "eslint": "^8.14.0" - } + "integrity": "sha512-f9oSDik8kAl+4rhVyHqIr012P1boHFUKc7D9nzA5+lDsFoP90UQnDwpseqBdF2mTaWYju10E7h+GdH8u+7MHOQ==", + "license": "MIT" }, "node_modules/@dexter/tacocat-consonant-templates": { "version": "1.13.0", - "resolved": "file:deps/tacocat-consonant-templates-1.13.0.tgz", + "resolved": "file:commerce/internal/tacocat-consonant-templates-1.13.0.tgz", "integrity": "sha512-2NarRylzSxPXJXdfeem3gqz3bGNf6d4+diy4LSp3YfpfNuQIeZouZ+iQFbU5LHZ388KTeKhV+ARoVwiGGQI8nw==", "dependencies": { "@dexter/tacocat-core": "^1.0.0", @@ -158,12 +394,12 @@ }, "node_modules/@dexter/tacocat-core": { "version": "1.12.2", - "resolved": "file:deps/tacocat-core-1.12.2.tgz", + "resolved": "file:commerce/internal/tacocat-core-1.12.2.tgz", "integrity": "sha512-ydBx5I1uxsQY5KjlN7VVs+J7kg0js/x2fBjuQ0DY9cKgZY7nYnzZfz/E7q8uGTVuqk5hW9cVzDFGLazUVqAmYg==" }, "node_modules/@dexter/tacocat-wcs-client": { "version": "1.17.0", - "resolved": "file:deps/tacocat-wcs-client-1.17.0.tgz", + "resolved": "file:commerce/internal/tacocat-wcs-client-1.17.0.tgz", "integrity": "sha512-UVuXQaVvLhhFSYfq6bIYVOhEDMXAh95xCBR7qizH8ug0+DouDl12qjm+nWZGNcnw3iXke9tvYH0aGj+dYVQ6Uw==", "dependencies": { "@dexter/tacocat-consonant-templates": "^1.0.0", @@ -174,422 +410,168 @@ "@pandora/data-source-wcs": "0.2.8" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", - "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ - "arm" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "android" + "darwin" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", - "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", - "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", - "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", - "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/config-array": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", + "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", - "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", - "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/js": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", + "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", - "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", - "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", - "cpu": [ - "arm64" - ], + "node_modules/@esm-bundle/chai": { + "version": "4.3.4-fix.0", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", + "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@types/chai": "^4.2.12" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", - "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", - "cpu": [ - "ia32" - ], + "node_modules/@esm-bundle/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-qhDeW3gK3ITAzzhZj8QfvuhX7iNqyzooVZJnoW5bjIotxxJM92O9EKxdxBg4B35hjh3tV1chlEgC/pfR9cVRlA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", - "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", - "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", - "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", - "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", - "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", - "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", - "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", - "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", - "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", - "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", - "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", - "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@esm-bundle/chai": { - "version": "4.3.4-fix.0", - "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", - "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", - "dev": true, - "dependencies": { - "@types/chai": "^4.2.12" - } - }, - "node_modules/@esm-bundle/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@esm-bundle/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-qhDeW3gK3ITAzzhZj8QfvuhX7iNqyzooVZJnoW5bjIotxxJM92O9EKxdxBg4B35hjh3tV1chlEgC/pfR9cVRlA==", - "dev": true - }, - "node_modules/@floating-ui/core": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", - "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", - "dependencies": { - "@floating-ui/utils": "^0.2.0" + "license": "MIT" + }, + "node_modules/@floating-ui/core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", - "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", - "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", + "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.9.7", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.9.7.tgz", "integrity": "sha512-Lu05JjSlL4QbXLiJHcljmWLSSKoxc4ed6aAz4ZPIJn7HsgzoObR4wKllFVcEWnIfiW8FIWITOZjXjoZ8MamSJA==", + "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "0.2.20", "tslib": "^2.1.0" @@ -599,6 +581,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", + "license": "ISC", "dependencies": { "tslib": "^2.1.0" } @@ -607,6 +590,7 @@ "version": "2.0.10", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.10.tgz", "integrity": "sha512-X1HTDTs0sdLVFFJLZuJ4+YfMMWv7/wGsoE7yIQkzKlck3HrAA/dBZDR1sOwcxH7Rz8NY1K+oUOkPe/f1sa7Q8g==", + "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "1.9.7", "@formatjs/icu-skeleton-parser": "1.2.11", @@ -617,6 +601,7 @@ "version": "1.2.11", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.11.tgz", "integrity": "sha512-nvme882npz//T17BR5S1xdNqv10CSlHsaPZ1iUxVrDTlotQHcr7O5qkX6JjpQ6qPflTt2s4k0W9nkMcFIfDuFg==", + "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "1.9.7", "tslib": "^2.1.0" @@ -626,6 +611,7 @@ "version": "0.2.20", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.20.tgz", "integrity": "sha512-/Ro85goRZnCojzxOegANFYL0LaDIpdPjAukR7xMTjOtRx+3yyjR0ifGTOW3/Kjhmab3t6GnyHBYWZSudxEOxPA==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" } @@ -634,65 +620,49 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10.10.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@import-maps/resolve": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@import-maps/resolve/-/resolve-1.0.1.tgz", "integrity": "sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==", - "dev": true - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } + "license": "MIT" }, "node_modules/@lit-labs/observers": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@lit-labs/observers/-/observers-2.0.2.tgz", "integrity": "sha512-eZb5+W9Cb0e/Y5m1DNxBSGTvGB2TAVTGMnTxL/IzFhPQEcZIAHewW1eVBhN8W07A5tirRaAmmF6fGL1V20p3gQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^1.0.0 || ^2.0.0" } @@ -700,12 +670,14 @@ "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", - "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==", + "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0" } @@ -714,13 +686,15 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.2.1.tgz", "integrity": "sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -734,6 +708,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -743,6 +718,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -755,35 +731,40 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { "node": ">=8.0.0" } }, "node_modules/@pandora/commerce-checkout-url-builder": { "version": "1.6.0", - "resolved": "file:deps/commerce-checkout-url-builder-1.6.0.tgz", + "resolved": "file:commerce/internal/commerce-checkout-url-builder-1.6.0.tgz", "integrity": "sha512-AFWqTieWnkSNhb7qfLkSzjExEvkHrgC0cuPQKDb9ZxVHxbNlUHd+Mjx2i1UhhPKYPSHihvcurUGA7HY32Ur8zg==", + "license": "SEE LICENSE IN license.txt", "dependencies": { "@pandora/data-source-utils": "^0.3.1" } }, "node_modules/@pandora/data-models-odm": { "version": "0.5.4", - "resolved": "file:deps/data-models-odm-0.5.4.tgz", - "integrity": "sha512-6H0DPaHiT+6/Bsrrumn67xfEWMmfS2Xp+80csEadsY2m/my/wYa5wpYblOnw0pEoFzXc6FCUp3TZHVFeulbkEQ==" + "resolved": "file:commerce/internal/data-models-odm-0.5.4.tgz", + "integrity": "sha512-6H0DPaHiT+6/Bsrrumn67xfEWMmfS2Xp+80csEadsY2m/my/wYa5wpYblOnw0pEoFzXc6FCUp3TZHVFeulbkEQ==", + "license": "SEE LICENSE IN license.txt" }, "node_modules/@pandora/data-source-utils": { "version": "0.3.1", - "resolved": "file:deps/data-source-utils-0.3.1.tgz", + "resolved": "file:commerce/internal/data-source-utils-0.3.1.tgz", "integrity": "sha512-BL73lgHIV/R1o5oJ5ZZlYkA0q9hKL/W0r6e+C10tEyF2fTlGGIQIfAxDhWLxQk5hFFCO9d9TznsdfFExxxFLrg==", + "license": "SEE LICENSE IN license.txt", "dependencies": { "@pandora/fetch": "^1.0.1" } }, "node_modules/@pandora/data-source-wcs": { "version": "0.2.8", - "resolved": "file:deps/data-source-wcs-0.2.8.tgz", + "resolved": "file:commerce/internal/data-source-wcs-0.2.8.tgz", "integrity": "sha512-eetfLZRhgiIKDmtWbb3oG8B+Zy+X5oqtwztmBzdw4FolB5y/A2Tgz0YzLX3Wn68wPq1STNPlt+Hffl4o320/Lg==", + "license": "SEE LICENSE IN license.txt", "dependencies": { "@pandora/data-models-odm": "^0.5.4", "@pandora/data-source-utils": "^0.3.1", @@ -798,8 +779,9 @@ }, "node_modules/@pandora/fetch": { "version": "1.3.4", - "resolved": "file:deps/fetch-1.3.4.tgz", + "resolved": "file:commerce/internal/fetch-1.3.4.tgz", "integrity": "sha512-ZV4CH/lFgFhQ76Ek54z9swQGTdKfRjYlIMLo+PNPCUbWmEVlIqPUZBuYkwe+77nrkXsyRf4oVhehDjQaeMz8Ow==", + "license": "SEE LICENSE IN license.txt", "dependencies": { "@opentelemetry/api": "^1.6.0", "@pandora/logger": "^1.3.0", @@ -809,8 +791,9 @@ }, "node_modules/@pandora/logger": { "version": "1.3.0", - "resolved": "file:deps/logger-1.3.0.tgz", + "resolved": "file:commerce/internal/logger-1.3.0.tgz", "integrity": "sha512-pFHi7CCUTEg3+PGgF7gvpOneB9qlkfwfSbGIwMhp47Me4uIGgHocnyqKxn2AUtIR2DKN26zESGRIypuKttA+aw==", + "license": "Proprietary. Adobe.", "dependencies": { "browser-bunyan": "^1.5.3", "bunyan": "^1.8.12", @@ -820,8 +803,9 @@ }, "node_modules/@pandora/react-auth-provider": { "version": "1.2.1", - "resolved": "file:deps/react-auth-provider-1.2.1.tgz", + "resolved": "file:commerce/internal/react-auth-provider-1.2.1.tgz", "integrity": "sha512-ulYG/WKP8oRvC7GMJTjmiklS925LenGmLZJitEQHkUYuik576HZn3tF7DbSCnA7L1IzaRMmw6cictRaCZ2skAg==", + "license": "SEE LICENSE IN license.txt", "peerDependencies": { "react": "^16.12.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.12.0 || ^17.0.0 || ^18.0.0" @@ -829,8 +813,9 @@ }, "node_modules/@pandora/react-env-provider": { "version": "1.2.2", - "resolved": "file:deps/react-env-provider-1.2.2.tgz", + "resolved": "file:commerce/internal/react-env-provider-1.2.2.tgz", "integrity": "sha512-uuj1d+Idn1nZ3YDZVCduO/kp/ZyBSGu1ThBErrIqPpopUk+uCfaYCNqS2kgznoEdAJ/9Lu0mMfq3asOvSURVLA==", + "license": "SEE LICENSE IN license.txt", "peerDependencies": { "react": "^16.12.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.12.0 || ^17.0.0 || ^18.0.0" @@ -838,8 +823,9 @@ }, "node_modules/@pandora/react-fetch-provider": { "version": "1.2.2", - "resolved": "file:deps/react-fetch-provider-1.2.2.tgz", + "resolved": "file:commerce/internal/react-fetch-provider-1.2.2.tgz", "integrity": "sha512-6qXrPeIuNxisEUfI2JhUuidIUIr4/gRy1Oq84CfuGhsj5rsaWMtJPLMSB5b1ezyNBsKHaPrG/tvp1lNsCk4Ltw==", + "license": "SEE LICENSE IN license.txt", "dependencies": { "@pandora/fetch": "^1.2.5" }, @@ -848,11 +834,25 @@ "react-dom": "^16.12.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.2.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -878,6 +878,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -900,6 +901,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -909,6 +911,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } @@ -918,6 +921,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.3.tgz", "integrity": "sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.6.0", "lodash.get": "^4.4.2", @@ -928,308 +932,366 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true + "dev": true, + "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@spectrum-web-components/action-button": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/action-button/-/action-button-0.42.5.tgz", - "integrity": "sha512-kQG+fdZE0NN6ggso8rnYplPbZ+2pj7q2OmqqH1TpJKBDiQogGKr4Wp4GoODVlWAU4AyLs6DDUFZj7y0lj7lVvA==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/action-button/-/action-button-0.43.0.tgz", + "integrity": "sha512-6FF/GNDG37kPxesmpDSwWtdGutsTqVHu1+YJ3+xEY+1b3vha9i54FqWkRY+r7u0y1VQ3IE1WgcJl5GeZAPDcZQ==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/action-menu": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/action-menu/-/action-menu-0.42.5.tgz", - "integrity": "sha512-39VumLL/DAEzpQ6rabZFUhFS9RhYGHb8/Nla6vZyUpVWuxLA/mZfD6Q+/0eKsEiz64s6JXK5KJY1zsJUhmmivQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/action-menu/-/action-menu-0.43.0.tgz", + "integrity": "sha512-2utwW42k+DqQYZm4BXt9Bky2BFkMF8TWgBa9H3eeZEZu7PUA1oK7cpXPvs17PxEslfo2AAAGgZcz7eTeFLTVQw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/action-button": "^0.42.5", - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/picker": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/action-button": "^0.43.0", + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/picker": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/alert-dialog": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/alert-dialog/-/alert-dialog-0.42.5.tgz", - "integrity": "sha512-efDVChXGboLwSBwIy96rG5qUHOdBqEj8HU9NKqQ5dUpB4FGhU0xqa3R2D5+4c0RSslvtTraNf24S154qxPCsYQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/alert-dialog/-/alert-dialog-0.43.0.tgz", + "integrity": "sha512-jzJzOWJY9do9b/Ph5wTZ9Dk6ewEL1oXkdBZ1m6PJyHOhqMsQWg07iFtGdeu3JxDqrdF6vNbxyqXrt6r9AIqDhg==", + "license": "Apache-2.0", "dependencies": { "@lit-labs/observers": "^2.0.2", - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/button-group": "^0.42.5", - "@spectrum-web-components/divider": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/button-group": "^0.43.0", + "@spectrum-web-components/divider": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/base": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/base/-/base-0.42.5.tgz", - "integrity": "sha512-0Xbn8HOVh1qLf90RGKpj49Bu0kMe2tu1bWmKAOM6JC5NgIefjXl+Fq5lxF3QRgHQ1l0ZjKjqBFGrMqBTptWlZw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/base/-/base-0.43.0.tgz", + "integrity": "sha512-3EtDjjsaZylN3jwA1q7zuiRKNWXq1Xlzofg4jRHHVMTqxPSXT/ZlxkhLVpYrJqfQ3wdIbZFmZl2TeLXVNjct4w==", + "license": "Apache-2.0", "dependencies": { "lit": "^2.5.0 || ^3.1.3" } }, "node_modules/@spectrum-web-components/button": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/button/-/button-0.42.5.tgz", - "integrity": "sha512-+mOOLd/GerTjkqfTQFXcqenD27cqdecQyuDacLyZ8Mx/CNJ9gUSD4cpkcUiItIUJsS2NytjTVWCa9ucQ89fD8Q==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/button/-/button-0.43.0.tgz", + "integrity": "sha512-zfQWo6iqw14NIvLZoaYyS3wQ54bblRvB4OERqx0ilCc+hIJZu/MnBboToFd8stVjVs53y8GOAyCEwrq2CWPY2g==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/clear-button": "^0.42.5", - "@spectrum-web-components/close-button": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/progress-circle": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/clear-button": "^0.43.0", + "@spectrum-web-components/close-button": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/progress-circle": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/button-group": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/button-group/-/button-group-0.42.5.tgz", - "integrity": "sha512-TgtdzOcWGnRdfe7EJJX9H7/8TeJhHT9jHrmtLnyUzegeW5odeemn/Smr+RAemIuT4iJQOJT6QRD4FrqIIkld1A==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/button-group/-/button-group-0.43.0.tgz", + "integrity": "sha512-QcHkjMv32gzxG+a71vsWAtyi+KYyU91Ir6FMXcm9nKh1YA90kqJGkyhOxHnfp9hfrCWeZn/AN9avMuhmvdcu6A==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0" } }, "node_modules/@spectrum-web-components/checkbox": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/checkbox/-/checkbox-0.42.5.tgz", - "integrity": "sha512-nAb3cym+sN2CNt89l7YFuLNnRUKASLjV7X9Afhi49arU1gmdJ9qLFKsYrMBcTmLpkIChqFkaKsGRM2dBB5F4Vg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/checkbox/-/checkbox-0.43.0.tgz", + "integrity": "sha512-9YCHdbVnSGTmgs+iImTExoqvXhBhE0lUww/CkWAVkbH9k/cr/J37JwxawieQLWKpFCg71aMzZX522MmwWsIXow==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/clear-button": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/clear-button/-/clear-button-0.42.5.tgz", - "integrity": "sha512-5ikX6mviAfh40LpXKqBUvx4nH3bNU5bMIbicSaroJVC5t1x+p1Y/nUBppbl3t9unXvjcAqQiUCbmz0bVVIFPWQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/clear-button/-/clear-button-0.43.0.tgz", + "integrity": "sha512-IwM5cZyBfABOxaTL8Z0+0zM+tdX1ndnhEa5i4/p69dadB84Hb5/30/nQXm865YYiRvYVqxsQ7D+Twx4o8pvzqw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/close-button": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/close-button/-/close-button-0.42.5.tgz", - "integrity": "sha512-sfq43FOTzxim8XlpK+Vad0v1qcIaLQEKMD/5oJ0pDGHIe34dtGYswpJA9Qe5g2ZYZQks29JIdWZGCX4YkVNUTw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/close-button/-/close-button-0.43.0.tgz", + "integrity": "sha512-KAQjl4x8bO1hvoWbg33ayzh/9Oyw1+fqdQJV0FqWQnPDfpOx8UtFy/N5QqaYLN+S2yJt92nrtDImeGUIMaQulQ==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/dialog": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/dialog/-/dialog-0.42.5.tgz", - "integrity": "sha512-aaAYMWGGHKX2J+YEtWxnAOE9weHcGF3KEDGWvBwwOoy+WY1dgeEZdiJZL0h2sygoagy4Wi10/rTOR0/ycXcyeQ==", - "dependencies": { - "@spectrum-web-components/alert-dialog": "^0.42.5", - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/button-group": "^0.42.5", - "@spectrum-web-components/divider": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/modal": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5", - "@spectrum-web-components/underlay": "^0.42.5" + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/dialog/-/dialog-0.43.0.tgz", + "integrity": "sha512-8P9yY1WUf7GmSDOaD0B+3KAjCQ5eJ+uwIx1dQYo24awvt15P5JrvIzteeegVTQ9OAzDogIyEzHJIuLvmZYn/uQ==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/alert-dialog": "^0.43.0", + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/button-group": "^0.43.0", + "@spectrum-web-components/divider": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/modal": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0", + "@spectrum-web-components/underlay": "^0.43.0" } }, "node_modules/@spectrum-web-components/divider": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/divider/-/divider-0.42.5.tgz", - "integrity": "sha512-yvY1UM835H8yN0hbh0ol+OOFEfWd6MJqv4/zVa9HSHQcgaTv2KSWhIgOHU2yrAPKI3Xs2zail3JtBFh1ynErpA==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/divider/-/divider-0.43.0.tgz", + "integrity": "sha512-5jVnNcEfXjdKMPDclTo2Tqhi+0EdVc3MKEox7akzUJM2ZcxSF2dBTbK1EVIsbZmz5sdzXEdCs/cZ7JJtoRoEsA==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/field-group": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/field-group/-/field-group-0.42.5.tgz", - "integrity": "sha512-8Jp1uUW1a3SVE9TBKi8tSVcyu6oH6aRRBXO+2K9F66DyLtdBZ5j4U42nYhLsHYQs6CHYR422+0o/2w0umU89fA==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/field-group/-/field-group-0.43.0.tgz", + "integrity": "sha512-4GqEzz96zDk2zMyMRUbWLwuhBEmdKpxX50THiCcvM5yDD9OuxXVOYlZ68zzwPnQX7knKDNiVwQUxHXpP+DDPGQ==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/help-text": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/help-text": "^0.43.0" } }, - "node_modules/@spectrum-web-components/field-label": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/field-label/-/field-label-0.42.5.tgz", - "integrity": "sha512-HSainInLkjVutscF9ms33i5WKIlbMoDfkhZ2nRECOjfUP73O4tKsi/wAAkXxcIwlwekLATOaehG8//mKJIzbJQ==", + "node_modules/@spectrum-web-components/field-group/node_modules/@spectrum-web-components/help-text": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/help-text/-/help-text-0.43.0.tgz", + "integrity": "sha512-vB7GQ8OmJSDP5ht6jTSGauGmHKPkKMMqlMFz7MXkp8pI/Vef4CTvi2L5/ncXeI5Jod2Z/HpTTPLef3bX2mXk9g==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, - "node_modules/@spectrum-web-components/help-text": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/help-text/-/help-text-0.42.5.tgz", - "integrity": "sha512-3TCnVJE3awymYuZ7SvHQuY2TiKm514agRsDWvEcQI4DXzMZl3zaNs9h/C88qBnemfGt7EIfA+EvmL4SezKE9xg==", + "node_modules/@spectrum-web-components/field-label": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/field-label/-/field-label-0.43.0.tgz", + "integrity": "sha512-KEhU1b0YAlmwPBrr1m4JhCrU+cfO3QQ7P5fbC5cI97n6Pvuh739oYRdjkCGikq9fu70EhK3bgsyS9RUc+2G5Rw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/icon": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/icon/-/icon-0.42.5.tgz", - "integrity": "sha512-7fECP297EgEu1XvBPLxfPRSuEM6dmkkEeuPpHXwhjbicqiOsAFVDLALB/LUghOhQBXI7Hd7Vl1eQiYYaVLKKfw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/icon/-/icon-0.43.0.tgz", + "integrity": "sha512-muV9a252O289xd68fN2gwJ1fO0alb8bpEn6/mtTh72LN8p8nSFSP6zxzDuB3ZYMsRslOP5CjxNVW9PcFDQ0R7Q==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/iconset": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/iconset": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/icon/node_modules/@spectrum-web-components/iconset": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/iconset/-/iconset-0.43.0.tgz", + "integrity": "sha512-O/Kz72R7DAS5r+DlpQ6oh83x1gvbNSaraqso3JyvliI4Z1Fwg0fsgBmmc24+wVvSc5z6RUJ8RXyFXMukRUOZkA==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/icons": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons/-/icons-0.42.5.tgz", - "integrity": "sha512-al//A8FiLyt59dVlUy8JchxplnuHLu9hYsTFUld1TkiuY0lS42ZE2rxQO+9AX33ZJ/5bv3er9s46sm1FVszmYw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons/-/icons-0.43.0.tgz", + "integrity": "sha512-siDM4/cuJ0nu9E/asDwj6h1rrn/QRM44g75lkKeKbvso2E9opBXAkni13fRTgdrTyH1L7m1CJVTOmnMU3tfeEg==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/iconset": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/iconset": "^0.43.0" } }, "node_modules/@spectrum-web-components/icons-ui": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons-ui/-/icons-ui-0.42.5.tgz", - "integrity": "sha512-Jif910xJFC0JhmeCYWQUubI/C3kB2INHomNye2y4rWYatVE/ZMjJc4BLcs2RTRYRvt/2yJ7LUwi2SZi7q3eJmQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons-ui/-/icons-ui-0.43.0.tgz", + "integrity": "sha512-SjdjuO610dDbbq2KPJ4vOkPb8KoJpiyP1Zi8BWnjmb0eCLLzXql0xdlctv+48NmmgeVPVCJLeX3j0sezNzmp7w==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/iconset": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/iconset": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/icons-ui/node_modules/@spectrum-web-components/iconset": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/iconset/-/iconset-0.43.0.tgz", + "integrity": "sha512-O/Kz72R7DAS5r+DlpQ6oh83x1gvbNSaraqso3JyvliI4Z1Fwg0fsgBmmc24+wVvSc5z6RUJ8RXyFXMukRUOZkA==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/icons-workflow": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons-workflow/-/icons-workflow-0.42.5.tgz", - "integrity": "sha512-LR9+leTSnTyy8MxVKi+bbC7pBCzNUIq97dcf6MH3smo2Xcrh+W5pIBdw4LIOAt0yzdLRagfQtMFkzQfhH7+9VQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/icons-workflow/-/icons-workflow-0.43.0.tgz", + "integrity": "sha512-dP9RklJDQvwiJFxMQupGp/Fnp2jz2yWEBh6tLFUCUuIjpNzSRDrPhZjFBUAX6AxItYhP0IgGk5Ab+OURdqlEig==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0" } }, - "node_modules/@spectrum-web-components/iconset": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/iconset/-/iconset-0.42.5.tgz", - "integrity": "sha512-jdmydViHhSXVStfpweFgTyU5bC9KmX1rC03eN4fyUI/E7JES22V+SMi2jvT71gb7MHswqsS7mlPyUBlcJGrz1Q==", + "node_modules/@spectrum-web-components/icons/node_modules/@spectrum-web-components/iconset": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/iconset/-/iconset-0.43.0.tgz", + "integrity": "sha512-O/Kz72R7DAS5r+DlpQ6oh83x1gvbNSaraqso3JyvliI4Z1Fwg0fsgBmmc24+wVvSc5z6RUJ8RXyFXMukRUOZkA==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/link": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/link/-/link-0.42.5.tgz", - "integrity": "sha512-HQUHX8mwmZrQYgUXMfuwZUP3DDOC7scmGqEh4/mgaG5rGoSXNJGpJvEbKHSeIzxS2Gtf0mlHrtYTXFAiWUHMMg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/link/-/link-0.43.0.tgz", + "integrity": "sha512-9ODBk6aLOw6dkibEIXw6aEigNrqZY2gem1yXgGo+/72/qcn/Szh2sLnAEjVeX561QQRiTZFYHnlQ2viLyWYUnQ==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/menu": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/menu/-/menu-0.42.5.tgz", - "integrity": "sha512-CuZXR2kmCf3o+Zv1RHhW2mtFPpcAUKyz2Bqay1tn3iQUmLLW0GEfqmE4WsLUc19XCAtYtZyuMNh+e0/IdSDyBQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/menu/-/menu-0.43.0.tgz", + "integrity": "sha512-UqS5c+7kNknHrfyVSl1ThIxpLoXmvYo3lCAu0MKgDO6R0ourNBVzgfKgHXj7SdhakgJSTtcmTnwXriIvY/p4uA==", + "license": "Apache-2.0", "dependencies": { "@lit-labs/observers": "^2.0.2", - "@spectrum-web-components/action-button": "^0.42.5", - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/divider": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/overlay": "^0.42.5", - "@spectrum-web-components/popover": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/action-button": "^0.43.0", + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/divider": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/popover": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/modal": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/modal/-/modal-0.42.5.tgz", - "integrity": "sha512-sxkKK1QbBsKaUy99kpghxaRBzM6SDe0tn5699QHMvyEGJVZsvAFgwZ8tJqBvs8sGKcQ04en3UOloZm1pvbmIOw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/modal/-/modal-0.43.0.tgz", + "integrity": "sha512-mNhPnn+zjvBEz6Fm4dpl4OHv+qq5yw5GZq6G8ka/oNVmk2ZVT6XoLPhezHYqnyycGqiiqXeWom5Mmfzdcp+muw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@spectrum-web-components/overlay": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/overlay/-/overlay-0.42.5.tgz", - "integrity": "sha512-SFD0wyTUWglPW9Hth3pT17xQLdcggWOw8EkiYoOp0Eth6/LKCcJ0a63EFlzEXyY/DqgC24/KzE+mF2Kqcne01A==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/overlay/-/overlay-0.43.0.tgz", + "integrity": "sha512-RHYsfQR3CBDt2Ise/hmsnvoJVltibIImEgUJ/RiQECzz3uvCYLdkhtfHz5kxD3vWjmluWuD+m7Vrf0V71BCU+w==", + "license": "Apache-2.0", "dependencies": { "@floating-ui/dom": "^1.6.1", "@floating-ui/utils": "^0.2.1", - "@spectrum-web-components/action-button": "^0.42.5", - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5", - "@spectrum-web-components/theme": "^0.42.5" + "@spectrum-web-components/action-button": "^0.43.0", + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0", + "@spectrum-web-components/theme": "^0.43.0" } }, "node_modules/@spectrum-web-components/picker": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/picker/-/picker-0.42.5.tgz", - "integrity": "sha512-qS/TkXwtgBBLrHbLUufGm3g022orjACOOeFAk1aZ7sYfapWxztOzXlUO5L8qOaUhabA1IJ2K4kIuygfY9DVdFw==", - "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/field-label": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/menu": "^0.42.5", - "@spectrum-web-components/overlay": "^0.42.5", - "@spectrum-web-components/popover": "^0.42.5", - "@spectrum-web-components/progress-circle": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5", - "@spectrum-web-components/tooltip": "^0.42.5", - "@spectrum-web-components/tray": "^0.42.5" + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/picker/-/picker-0.43.0.tgz", + "integrity": "sha512-CAjruaUuCWYEW9jFzEBKR3EDFvCoXkn0EFqdBLmH0NAag7mYVgJqA1mPE9d9PIkMURB3cbg2/bffYxMEWJ28Dw==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/field-label": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/menu": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/popover": "^0.43.0", + "@spectrum-web-components/progress-circle": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0", + "@spectrum-web-components/tooltip": "^0.43.0", + "@spectrum-web-components/tray": "^0.43.0" } }, "node_modules/@spectrum-web-components/popover": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/popover/-/popover-0.42.5.tgz", - "integrity": "sha512-4A5IcPAzS8NjfSkZYq4P1baIVG3bM983SCTrR0GlLKvH/XYW07idUYiw2R9N/0DEDzY0c+u9U29Iec4o4CSLEw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/popover/-/popover-0.43.0.tgz", + "integrity": "sha512-EF4hRgQe0SliPk0U9RJuMFUXudyMS9dGR/Lmm3r5DwZoJ8UI2r8XKLgZjdz4vchxLGLS6yuXVgW3BdCr/H194Q==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/overlay": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0" } }, "node_modules/@spectrum-web-components/progress-circle": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/progress-circle/-/progress-circle-0.42.5.tgz", - "integrity": "sha512-XROdnKCYjkKP0Fzoa21zzAqr/xwJ6dyQRgBafw1aMpA8gMVlcW0JHz6ZPAukWTMV6szIfU3DjP0eLmMdMPqDwg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/progress-circle/-/progress-circle-0.43.0.tgz", + "integrity": "sha512-6n23MCRM705EnJAeLtKAghzjcCKly7wyq9i+aNtmw1SiSR7dAguWA9VP0zIjYMpFr50GEn4tQGDhisWcy9ze6g==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/radio": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/radio/-/radio-0.42.5.tgz", - "integrity": "sha512-KpYLWB7XD4A0TS/w/bqAVAAVycxbTWCg+GfSzWZLOSGr/b3ZQ2aCFfdk6jJ8UvMNhLlY5SNyCNcfzQnSBjS3OQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/radio/-/radio-0.43.0.tgz", + "integrity": "sha512-veJgxO6fpGQ5N2Z8Pp+6JR7qf6F9GsxMI2/akMm68uR2aCdyyBHq5qd54T1O6I//HBcgZmrHPCcXY5W6DdOnbA==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/field-group": "^0.42.5", - "@spectrum-web-components/help-text": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/field-group": "^0.43.0", + "@spectrum-web-components/help-text": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/radio/node_modules/@spectrum-web-components/help-text": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/help-text/-/help-text-0.43.0.tgz", + "integrity": "sha512-vB7GQ8OmJSDP5ht6jTSGauGmHKPkKMMqlMFz7MXkp8pI/Vef4CTvi2L5/ncXeI5Jod2Z/HpTTPLef3bX2mXk9g==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/reactive-controllers": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/reactive-controllers/-/reactive-controllers-0.42.5.tgz", - "integrity": "sha512-xKg1rhGklcZ6TwYlSmtwCaLiITb6Tdl3vKkLEzCe4dfYDD0FO0kIUuI9uCVonTz6bVBTtEd1/taXJCSneUuDJg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/reactive-controllers/-/reactive-controllers-0.43.0.tgz", + "integrity": "sha512-2v7Mexb5POiD3h8EN9PjuUldRJazoKladEnkTDN24vXq+W8KtC0K/UUQ42vMEPRkA9ljsXJPJNah6zNLO8rS3A==", + "license": "Apache-2.0", "dependencies": { "lit": "^3.1.3" } @@ -1238,6 +1300,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^2.0.4", "lit-element": "^4.0.4", @@ -1248,6 +1311,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0", "@lit/reactive-element": "^2.0.4", @@ -1258,29 +1322,32 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } }, "node_modules/@spectrum-web-components/search": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/search/-/search-0.42.5.tgz", - "integrity": "sha512-XCXafVaAc5Q1pdSowtZHE+i/p+PWDnPztpPjo09wzarveX2mrhVHjYl1BU8dfrYh8PBkOTbsEPXy10bdfEH1GQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/search/-/search-0.43.0.tgz", + "integrity": "sha512-yrWKtxs0fKdAjuutnN+ePSUf1Gaz3j8MEew54vlU0CrW0mT5lXse7hhspAYz7XFiHQ5VvSzbSPC/LbtIMNyMjg==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/textfield": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/textfield": "^0.43.0" } }, "node_modules/@spectrum-web-components/shared": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/shared/-/shared-0.42.5.tgz", - "integrity": "sha512-daqAnp1KBJ/j0P3I30Z1wuK6wu7p5Bij+0ofCdopo4DK4F3GntfUmRb6a9C4TNV+mWP4K+VxMtZ55aHuLG99Gw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/shared/-/shared-0.43.0.tgz", + "integrity": "sha512-LQ/lAoIsObsEj8ZeeB6bHqfaMMmk6FxuW5Jw2Ci9x6fYZ6gPnr4pFH79KGCzAxHFDr+DOP/W5c1JTWwyiKAGVQ==", + "license": "Apache-2.0", "dependencies": { "@lit-labs/observers": "^2.0.2", - "@spectrum-web-components/base": "^0.42.5", + "@spectrum-web-components/base": "^0.43.0", "focus-visible": "^5.1.0" } }, @@ -1288,100 +1355,180 @@ "version": "0.42.1", "resolved": "https://registry.npmjs.org/@spectrum-web-components/sidenav/-/sidenav-0.42.1.tgz", "integrity": "sha512-yu5v4IQp2vkNlYZS0x+rPu05oQ4fzq33Q1kmUXDRwZCcAXZ1t1VjkWbOoX3Cmeu0xI+vRvWXglHjb9vqNpFDlg==", + "license": "Apache-2.0", "dependencies": { "@spectrum-web-components/base": "^0.42.1", "@spectrum-web-components/reactive-controllers": "^0.42.1", "@spectrum-web-components/shared": "^0.42.1" } }, - "node_modules/@spectrum-web-components/split-button": { + "node_modules/@spectrum-web-components/sidenav/node_modules/@spectrum-web-components/base": { "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/split-button/-/split-button-0.42.5.tgz", - "integrity": "sha512-qTvKbZcnl4KrUdLhOV/roGsXzBD5LwHRa7DtmO+deDL4D4CixQpfAjBfQs2yyktowYSGcVc24NyM/iSgv5CRJA==", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/base/-/base-0.42.5.tgz", + "integrity": "sha512-0Xbn8HOVh1qLf90RGKpj49Bu0kMe2tu1bWmKAOM6JC5NgIefjXl+Fq5lxF3QRgHQ1l0ZjKjqBFGrMqBTptWlZw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/button": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/menu": "^0.42.5", - "@spectrum-web-components/overlay": "^0.42.5", - "@spectrum-web-components/picker": "^0.42.5", - "@spectrum-web-components/popover": "^0.42.5" + "lit": "^2.5.0 || ^3.1.3" } }, - "node_modules/@spectrum-web-components/styles": { + "node_modules/@spectrum-web-components/sidenav/node_modules/@spectrum-web-components/reactive-controllers": { "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/styles/-/styles-0.42.5.tgz", - "integrity": "sha512-e2ZFmMTAUMg4VZVR3CpqdeZoLhqu6SN+FiQE7bDspdOAE9V4vIM4nFHVq7FntxEZYjWge3LWqHdOT75BhYG9lQ==", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/reactive-controllers/-/reactive-controllers-0.42.5.tgz", + "integrity": "sha512-xKg1rhGklcZ6TwYlSmtwCaLiITb6Tdl3vKkLEzCe4dfYDD0FO0kIUuI9uCVonTz6bVBTtEd1/taXJCSneUuDJg==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "lit": "^3.1.3" } }, - "node_modules/@spectrum-web-components/tabs": { + "node_modules/@spectrum-web-components/sidenav/node_modules/@spectrum-web-components/shared": { "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/tabs/-/tabs-0.42.5.tgz", - "integrity": "sha512-K9IRqi2oWVNY+aR1e4nMVO8faWBsoOesO1HWxPsKyhDHTJeU31E7vxbWTXnEyFHoSqCbchX2bbauuZGN3JonYQ==", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/shared/-/shared-0.42.5.tgz", + "integrity": "sha512-daqAnp1KBJ/j0P3I30Z1wuK6wu7p5Bij+0ofCdopo4DK4F3GntfUmRb6a9C4TNV+mWP4K+VxMtZ55aHuLG99Gw==", + "license": "Apache-2.0", "dependencies": { "@lit-labs/observers": "^2.0.2", "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "focus-visible": "^5.1.0" + } + }, + "node_modules/@spectrum-web-components/sidenav/node_modules/lit": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz", + "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@spectrum-web-components/sidenav/node_modules/lit-element": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz", + "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@spectrum-web-components/sidenav/node_modules/lit-html": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz", + "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@spectrum-web-components/split-button": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/split-button/-/split-button-0.43.0.tgz", + "integrity": "sha512-m0WPdmhL5Qb+8CrB3iRta+D2bPWLoNouU/iRa/F8bZeaNJfSXSQJ/RA8a9YFq49vn/FxD/7fbJssgrg06q3xjQ==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/menu": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/picker": "^0.43.0", + "@spectrum-web-components/popover": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/styles": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/styles/-/styles-0.43.0.tgz", + "integrity": "sha512-9VtUlFfAb9BwFBSnU/cuToDgJlXndH+Tt/pVuJ+F0u111dh7y5lmE9y+C/u6OlUwZ8MaIK2iaHMmGFvjEjzCgg==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/tabs": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/tabs/-/tabs-0.43.0.tgz", + "integrity": "sha512-4qyhBI9xNkAgubJvrwqSn6aT4y6F0l1veTaQz9nkVxk0mwM7ZpyAfQgcZxl0uM2BeWpCF6lVjN3AecKmGzH06Q==", + "license": "Apache-2.0", + "dependencies": { + "@lit-labs/observers": "^2.0.2", + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/textfield": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/textfield/-/textfield-0.42.5.tgz", - "integrity": "sha512-79EFHUXqDaPG870pwtUQ+gxLvYp0cDetDRcCgyiccChJkSd3/LXH6kz2XwNjCCGsIDVfjNg7kdEKGSRNTBV2hw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/textfield/-/textfield-0.43.0.tgz", + "integrity": "sha512-KjZTWfdJ2RppyROhq3DTDfyEkbkLtEmdND2uJb08+FdAt9FJ1vGj9GdzGkGvyeJ1Zr1qxEEg4AVCV5RlO3ZNOg==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/help-text": "^0.42.5", - "@spectrum-web-components/icon": "^0.42.5", - "@spectrum-web-components/icons-ui": "^0.42.5", - "@spectrum-web-components/icons-workflow": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/help-text": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-ui": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" + } + }, + "node_modules/@spectrum-web-components/textfield/node_modules/@spectrum-web-components/help-text": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/help-text/-/help-text-0.43.0.tgz", + "integrity": "sha512-vB7GQ8OmJSDP5ht6jTSGauGmHKPkKMMqlMFz7MXkp8pI/Vef4CTvi2L5/ncXeI5Jod2Z/HpTTPLef3bX2mXk9g==", + "license": "Apache-2.0", + "dependencies": { + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/theme": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/theme/-/theme-0.42.5.tgz", - "integrity": "sha512-6E+j4RfHRlxwrK+t6Sy7az2Pw2N0AaYidcJbXcZZw/luYr1NtvNWMuJq6Jg5bbusTSSNSrAXDgsi4e09MVHuNg==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/theme/-/theme-0.43.0.tgz", + "integrity": "sha512-22T+ivfMHpf3jPkAfkl1VenBivJ2EdXEOV+NJa+Pev5Ong9evzdmarfK+1J4HOOFKTdLLR3fOCVbVCf5kJvelQ==", + "license": "ISC", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/styles": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/styles": "^0.43.0" } }, "node_modules/@spectrum-web-components/tooltip": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/tooltip/-/tooltip-0.42.5.tgz", - "integrity": "sha512-x+tiVnmgdi1mnlOX2vWlEXW9gl2Sj7f9xzb752JJsEKLkggCP19ldXtuapOzr7clT9Ke1cBrQ/ZrBKoDRuQXJQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/tooltip/-/tooltip-0.43.0.tgz", + "integrity": "sha512-xPQjZFoc6OzgNmY/UtB5bfaH5+jeNdjm8Kkm9z+SicWdpIQckVbtYXmx9BzWRorP3GHAvdtewWkJqROEaJmEhA==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/overlay": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0" } }, "node_modules/@spectrum-web-components/tray": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/tray/-/tray-0.42.5.tgz", - "integrity": "sha512-/HycXMjNkeImbfva1IBXqnfqyLrBbHMNgbOKk34t9JvZ/hIj0vaaMtcyb6OUaZfpYRInJlUO+Y7PyGKzfPWM5g==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/tray/-/tray-0.43.0.tgz", + "integrity": "sha512-+zaoe2Qw3ye0xweUJmI9nlBo9DB9Ph1FfPDmyw5Qn/HiyfgJ2gIzFuZfNZaOq7ubcWynvX9tvYZ8GvQcwMGGzw==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5", - "@spectrum-web-components/modal": "^0.42.5", - "@spectrum-web-components/reactive-controllers": "^0.42.5", - "@spectrum-web-components/shared": "^0.42.5", - "@spectrum-web-components/underlay": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0", + "@spectrum-web-components/modal": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/shared": "^0.43.0", + "@spectrum-web-components/underlay": "^0.43.0" } }, "node_modules/@spectrum-web-components/underlay": { - "version": "0.42.5", - "resolved": "https://registry.npmjs.org/@spectrum-web-components/underlay/-/underlay-0.42.5.tgz", - "integrity": "sha512-oa5UdX90Ail762pYJ7OYNHmnlMIVXy07dg9QzW6PvVq+mMdNUj0Fh7icui/AKBL5EpzOTSaXSROq9UCKBtzv8g==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@spectrum-web-components/underlay/-/underlay-0.43.0.tgz", + "integrity": "sha512-Mup47GmKDWlF+ApnadvSCY9H3mbcsaPIruAWw+jBO76K1yryYMzlQGgBZqgCZvrKy5QxRwGOiR6VSp0zOJ90Lg==", + "license": "Apache-2.0", "dependencies": { - "@spectrum-web-components/base": "^0.42.5" + "@spectrum-web-components/base": "^0.43.0" } }, "node_modules/@types/accepts": { @@ -1389,6 +1536,7 @@ "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1397,13 +1545,15 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.6.tgz", "integrity": "sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -1413,13 +1563,15 @@ "version": "4.3.16", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/chai-as-promised": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz", "integrity": "sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*" } @@ -1429,6 +1581,7 @@ "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.3.tgz", "integrity": "sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*" @@ -1438,13 +1591,15 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1453,19 +1608,22 @@ "version": "0.5.8", "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/convert-source-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz", "integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cookies": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/express": "*", @@ -1477,19 +1635,22 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.4.tgz", "integrity": "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -1498,10 +1659,11 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", - "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -1513,25 +1675,29 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -1541,27 +1707,24 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "node_modules/@types/keygrip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/koa": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz", "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==", "dev": true, + "license": "MIT", "dependencies": { "@types/accepts": "*", "@types/content-disposition": "*", @@ -1578,6 +1741,7 @@ "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", "dev": true, + "license": "MIT", "dependencies": { "@types/koa": "*" } @@ -1586,13 +1750,15 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mkdirp": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.2.tgz", "integrity": "sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1601,13 +1767,15 @@ "version": "8.2.3", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", - "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -1616,13 +1784,15 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/pixelmatch": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.6.tgz", "integrity": "sha512-wC83uexE5KGuUODn6zkm9gMzTwdY5L0chiK+VrKcDfEjzxh1uadlWTvOmAbCpnM9zx/Ww3f8uKlYQVnO/TrqVg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1632,6 +1802,7 @@ "resolved": "https://registry.npmjs.org/@types/pngjs/-/pngjs-6.0.5.tgz", "integrity": "sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1640,25 +1811,29 @@ "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -1669,6 +1844,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -1680,6 +1856,7 @@ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.15.tgz", "integrity": "sha512-3lrFNQG0Kr2LDzvjyjB6AMJk4ge+8iYhQfdnSwIwlG88FUOV43kPcQqDZkDa/h3WSZy6i8Fr0BSjfQtB1B3xuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } @@ -1688,18 +1865,21 @@ "version": "8.1.5", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1709,24 +1889,18 @@ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" } }, - "node_modules/@wcms/commerce": { - "resolved": "commerce", - "link": true - }, - "node_modules/@wcms/commerce-web-components": { - "resolved": "web-components", - "link": true - }, "node_modules/@web/browser-logs": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.2.6.tgz", "integrity": "sha512-CNjNVhd4FplRY8PPWIAt02vAowJAVcOoTNrR/NNb/o9pka7yI9qdjpWrWhEbPr2pOXonWb52AeAgdK66B8ZH7w==", "dev": true, + "license": "MIT", "dependencies": { "errorstacks": "^2.2.0" }, @@ -1739,6 +1913,7 @@ "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.2.2.tgz", "integrity": "sha512-HhoXMGivHbQ880MKQ1JChYCjWsMS4MUNOF35ktLV/0pZiX+J7oobybsPuyhS+gTnZsU7Duqnk3+HQYB7cNS4fA==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.4" }, @@ -1751,6 +1926,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.3.7.tgz", "integrity": "sha512-He/QTO1C+zWJesgOmGbuBX5p5OEbH9hxgELDVIscQAdOq91PpQN/4s8PJ3LIRpkbXAZBxdwCoRUZHENxHgOtjg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", @@ -1780,6 +1956,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.6.3.tgz", "integrity": "sha512-BWlgxIXQbg3RqUdz9Cfeh3XqFv0KcjQi4DLaZy9s63IlXgNZTzesTfDzliP/mIdWd5r8KZYh/P3n6LMi7CLPjQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", "@types/ws": "^7.4.0", @@ -1809,6 +1986,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.4.4.tgz", "integrity": "sha512-gxXvj1mw0/b8HP2ARaXgQEmWH/nyPWvRuzSyEvybMm9oThe//z6K0ksj2qyffT/X7yblhEReKqWK7djCaB0M0Q==", "dev": true, + "license": "MIT", "dependencies": { "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.6.2", @@ -1820,54 +1998,6 @@ "node": ">=16.0.0" } }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/darwin-arm64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", @@ -1876,6 +2006,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1884,390 +2015,107 @@ "node": ">=12" } }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/darwin-x64": { + "node_modules/@web/dev-server-esbuild/node_modules/esbuild": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], + "node_modules/@web/dev-server-import-maps": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.1.3.tgz", + "integrity": "sha512-0eUS6ruDCOs58rXjugeDu5GCAoWHzlKLKWNTLow3qyzGkhwhj7HW9K4+zG84A1SASOLqIzB2XqrMHQEslojomg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "@import-maps/resolve": "^1.0.1", + "@types/parse5": "^6.0.1", + "@web/dev-server-core": "^0.6.2", + "@web/parse5-utils": "^2.0.2", + "parse5": "^6.0.1", + "picomatch": "^2.2.2" + }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], + "node_modules/@web/dev-server-rollup": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.5.4.tgz", + "integrity": "sha512-lIN+lwj84Oh8Whe4vHijjMVe7NLJUzLxiiUsOleUtrBp1b7Us9QyUNCJK/iYitHJJDhCw6JcLJbCJ5H+vW969Q==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "@rollup/plugin-node-resolve": "^15.0.1", + "@web/dev-server-core": "^0.6.2", + "nanocolors": "^0.2.1", + "parse5": "^6.0.1", + "rollup": "^3.15.0", + "whatwg-url": "^11.0.0" + }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], + "node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" + }, "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@web/dev-server-esbuild/node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "node_modules/@web/dev-server-import-maps": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.1.3.tgz", - "integrity": "sha512-0eUS6ruDCOs58rXjugeDu5GCAoWHzlKLKWNTLow3qyzGkhwhj7HW9K4+zG84A1SASOLqIzB2XqrMHQEslojomg==", - "dev": true, - "dependencies": { - "@import-maps/resolve": "^1.0.1", - "@types/parse5": "^6.0.1", - "@web/dev-server-core": "^0.6.2", - "@web/parse5-utils": "^2.0.2", - "parse5": "^6.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/dev-server-rollup": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.5.4.tgz", - "integrity": "sha512-lIN+lwj84Oh8Whe4vHijjMVe7NLJUzLxiiUsOleUtrBp1b7Us9QyUNCJK/iYitHJJDhCw6JcLJbCJ5H+vW969Q==", - "dev": true, - "dependencies": { - "@rollup/plugin-node-resolve": "^15.0.1", - "@web/dev-server-core": "^0.6.2", - "nanocolors": "^0.2.1", - "parse5": "^6.0.1", - "rollup": "^3.15.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/parse5-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", - "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", - "dev": true, - "dependencies": { - "@types/parse5": "^6.0.1", - "parse5": "^6.0.1" - }, - "engines": { - "node": ">=18.0.0" + "node": ">=18.0.0" } }, "node_modules/@web/test-runner": { - "version": "0.13.27", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.27.tgz", - "integrity": "sha512-yVhXK9sPJE2VQs1/KPTIeQvUxh+02OZkn+tgcr0+W8ovvrFD4ucF2X26cpeOTuD+Y67ERUi/EopIze3aelw6sg==", + "version": "0.13.31", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.31.tgz", + "integrity": "sha512-QMj/25U25AkhN4ffBoMMPdpQLNojL8cAzlyIh/oyVp385Cjmd4Hz8S0u4PvWJmDRmPerbJRNtsWafB8/EcQ1rA==", "dev": true, + "license": "MIT", "dependencies": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", - "@web/dev-server": "^0.1.24", + "@web/dev-server": "^0.1.32", "@web/test-runner-chrome": "^0.10.7", - "@web/test-runner-commands": "^0.6.0", - "@web/test-runner-core": "^0.10.22", + "@web/test-runner-commands": "^0.6.3", + "@web/test-runner-core": "^0.10.27", "@web/test-runner-mocha": "^0.7.5", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", @@ -2292,6 +2140,7 @@ "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.7.tgz", "integrity": "sha512-DKJVHhHh3e/b6/erfKOy0a4kGfZ47qMoQRgROxi9T4F9lavEY3E5/MQ7hapHFM2lBF4vDrm+EWjtBdOL8o42tw==", "dev": true, + "license": "MIT", "dependencies": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", @@ -2303,12 +2152,13 @@ } }, "node_modules/@web/test-runner-commands": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.1.tgz", - "integrity": "sha512-P4aQqp0duumeGdGxQ8TwLnplkrXzpLqb47eSEEqBRS//C1H7s6VskaqEng+k0dbk+cSpEa4RuZGY/G5k8aTjTw==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.6.6.tgz", + "integrity": "sha512-2DcK/+7f8QTicQpGFq/TmvKHDK/6Zald6rn1zqRlmj3pcH8fX6KHNVMU60Za9QgAKdorMBPfd8dJwWba5otzdw==", "dev": true, + "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.10.20", + "@web/test-runner-core": "^0.10.29", "mkdirp": "^1.0.4" }, "engines": { @@ -2320,6 +2170,7 @@ "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.10.29.tgz", "integrity": "sha512-0/ZALYaycEWswHhpyvl5yqo0uIfCmZe8q14nGPi1dMmNiqLcHjyFGnuIiLexI224AW74ljHcHllmDlXK9FUKGA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", "@types/babel__code-frame": "^7.0.2", @@ -2357,6 +2208,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.4.1.tgz", "integrity": "sha512-KdYwejXZwIZvb6tYMCqU7yBiEOPfKLQ3V9ezqqEz8DA9V9R3oQWaowckvCpFB9IxxPfS/P8/59OkdzGKQjcIUw==", "dev": true, + "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", "@types/ws": "^7.4.0", @@ -2386,6 +2238,7 @@ "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.1.tgz", "integrity": "sha512-haCgDchZrAOB9EhBJ5XqiIjBMsS/exsM5Ru7sCSyNkXVEJWskyyKuKMFk66BonnIGMPpDtqDrTUfYEis5Zi3XA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse5": "^6.0.1", "parse5": "^6.0.1" @@ -2398,13 +2251,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@web/test-runner-core/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2417,6 +2272,7 @@ "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.4.9.tgz", "integrity": "sha512-y9LWL4uY25+fKQTljwr0XTYjeWIwU4h8eYidVuLoW3n1CdFkaddv+smrGzzF5j8XY+Mp6TmV9NdxjvMWqVkDdw==", "dev": true, + "license": "MIT", "dependencies": { "@web/test-runner-core": "^0.10.20", "istanbul-lib-coverage": "^3.0.0", @@ -2432,6 +2288,7 @@ "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.7.5.tgz", "integrity": "sha512-12/OBq6efPCAvJpcz3XJs2OO5nHe7GtBibZ8Il1a0QtsGpRmuJ4/m1EF0Fj9f6KHg7JdpGo18A37oE+5hXjHwg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mocha": "^8.2.0", "@web/test-runner-core": "^0.10.20" @@ -2440,156 +2297,21 @@ "node": ">=12.0.0" } }, - "node_modules/@web/test-runner-playwright": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@web/test-runner-playwright/-/test-runner-playwright-0.10.1.tgz", - "integrity": "sha512-/sEfuKc60UT0gXdn7M6lFddh+nCepO73gLPe2Og7jfoFv2tDkkk41RYBG75jx11RMVOJ6+i1peluLZSVxLlcEg==", + "node_modules/@web/test-runner-visual-regression": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-visual-regression/-/test-runner-visual-regression-0.9.0.tgz", + "integrity": "sha512-06M1WffLy+BJo08s57RumKYUULD/UB8u7DgZ8/MJZYCt+7r4Vt54w34CwSGHCpeDLY8Z/YkxecafvzDjuLnEJQ==", "dev": true, + "license": "MIT", "dependencies": { - "@web/test-runner-core": "^0.11.0", - "@web/test-runner-coverage-v8": "^0.7.0", - "playwright": "^1.22.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/test-runner-playwright/node_modules/@web/browser-logs": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.3.4.tgz", - "integrity": "sha512-0UkoUj1DdQjxaVBArHZRAGoiE5584/dSQ0V3hYWRqVDxaE3CwkfQ7kwb6i3Z1xJ8HZ9nuLMNycu3vLQwfhDnpg==", - "dev": true, - "dependencies": { - "errorstacks": "^2.2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/test-runner-playwright/node_modules/@web/test-runner-core": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.11.6.tgz", - "integrity": "sha512-hbLg15seMnpDD32NmEzy/T18EKiH4tnuqaspqq7dEKY9svvVhPiFj/Q0JN79SvE6oE4M0vAxzCTRlBl4/huiTw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.11", - "@types/babel__code-frame": "^7.0.2", - "@types/co-body": "^6.1.0", - "@types/convert-source-map": "^2.0.0", - "@types/debounce": "^1.2.0", - "@types/istanbul-lib-coverage": "^2.0.3", - "@types/istanbul-reports": "^3.0.0", - "@web/browser-logs": "^0.3.4", - "@web/dev-server-core": "^0.6.2", - "chokidar": "^3.4.3", - "cli-cursor": "^3.1.0", - "co-body": "^6.1.0", - "convert-source-map": "^2.0.0", - "debounce": "^1.2.0", - "dependency-graph": "^0.11.0", - "globby": "^11.0.1", - "ip": "^1.1.5", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.0.2", - "log-update": "^4.0.0", - "nanocolors": "^0.2.1", - "nanoid": "^3.1.25", - "open": "^8.0.2", - "picomatch": "^2.2.2", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/test-runner-playwright/node_modules/@web/test-runner-coverage-v8": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.7.3.tgz", - "integrity": "sha512-hFlMFLEonDTS+TqKAE5RUJPq1HdsT0YqZD4z0x2y/E65UfYNB6ZJpV567KDCG+9ph1xynkKyqsiIhK1ufktVJA==", - "dev": true, - "dependencies": { - "@web/test-runner-core": "^0.12.0", - "istanbul-lib-coverage": "^3.0.0", - "lru-cache": "^8.0.4", - "picomatch": "^2.2.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/test-runner-playwright/node_modules/@web/test-runner-coverage-v8/node_modules/@web/test-runner-core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.12.0.tgz", - "integrity": "sha512-p318c1HzszyjqF0bl7oAsw6s8Xpd/xBIbMW7w5ktZwzm+r1KuNYh4RRuvkg1iMFkqu/6F8UeMR4+TJ0EYyJegw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.11", - "@types/babel__code-frame": "^7.0.2", - "@types/co-body": "^6.1.0", - "@types/convert-source-map": "^2.0.0", - "@types/debounce": "^1.2.0", - "@types/istanbul-lib-coverage": "^2.0.3", - "@types/istanbul-reports": "^3.0.0", - "@web/browser-logs": "^0.3.4", - "@web/dev-server-core": "^0.6.2", - "chokidar": "^3.4.3", - "cli-cursor": "^3.1.0", - "co-body": "^6.1.0", - "convert-source-map": "^2.0.0", - "debounce": "^1.2.0", - "dependency-graph": "^0.11.0", - "globby": "^11.0.1", - "ip": "^1.1.5", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.0.2", - "log-update": "^4.0.0", - "nanocolors": "^0.2.1", - "nanoid": "^3.1.25", - "open": "^8.0.2", - "picomatch": "^2.2.2", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@web/test-runner-playwright/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@web/test-runner-playwright/node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/@web/test-runner-visual-regression": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-visual-regression/-/test-runner-visual-regression-0.9.0.tgz", - "integrity": "sha512-06M1WffLy+BJo08s57RumKYUULD/UB8u7DgZ8/MJZYCt+7r4Vt54w34CwSGHCpeDLY8Z/YkxecafvzDjuLnEJQ==", - "dev": true, - "dependencies": { - "@types/mkdirp": "^1.0.1", - "@types/pixelmatch": "^5.2.2", - "@types/pngjs": "^6.0.0", - "@web/test-runner-commands": "^0.9.0", - "@web/test-runner-core": "^0.13.0", - "mkdirp": "^1.0.4", - "pixelmatch": "^5.2.1", - "pngjs": "^7.0.0" + "@types/mkdirp": "^1.0.1", + "@types/pixelmatch": "^5.2.2", + "@types/pngjs": "^6.0.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-core": "^0.13.0", + "mkdirp": "^1.0.4", + "pixelmatch": "^5.2.1", + "pngjs": "^7.0.0" }, "engines": { "node": ">=18.0.0" @@ -2600,6 +2322,7 @@ "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", "dev": true, + "license": "MIT", "dependencies": { "errorstacks": "^2.2.0" }, @@ -2612,6 +2335,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.2.tgz", "integrity": "sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==", "dev": true, + "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", "@types/ws": "^7.4.0", @@ -2641,6 +2365,7 @@ "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.9.0.tgz", "integrity": "sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==", "dev": true, + "license": "MIT", "dependencies": { "@web/test-runner-core": "^0.13.0", "mkdirp": "^1.0.4" @@ -2650,10 +2375,11 @@ } }, "node_modules/@web/test-runner-visual-regression/node_modules/@web/test-runner-core": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.2.tgz", - "integrity": "sha512-G0D3mv9jvR+5xILENchPP9v1ZjBf3QVlzarMLR5jedCNbgntzcayF0LeW5wh5uyafGZJH28cYm9jGrJvGipoPQ==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.3.tgz", + "integrity": "sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", "@types/babel__code-frame": "^7.0.2", @@ -2671,7 +2397,7 @@ "debounce": "^1.2.0", "dependency-graph": "^0.11.0", "globby": "^11.0.1", - "ip": "^2.0.1", + "internal-ip": "^6.2.0", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.0.2", @@ -2690,19 +2416,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@web/test-runner-visual-regression/node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@web/test-runner/node_modules/@rollup/plugin-node-resolve": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -2723,6 +2445,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -2739,13 +2462,15 @@ "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@web/test-runner/node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2755,6 +2480,7 @@ "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.1.3.tgz", "integrity": "sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.4" }, @@ -2767,6 +2493,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.38.tgz", "integrity": "sha512-WUq7Zi8KeJ5/UZmmpZ+kzUpUlFlMP/rcreJKYg9Lxiz998KYl4G5Rv24akX0piTuqXG7r6h+zszg8V/hdzjCoA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", @@ -2796,6 +2523,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.4.1.tgz", "integrity": "sha512-KdYwejXZwIZvb6tYMCqU7yBiEOPfKLQ3V9ezqqEz8DA9V9R3oQWaowckvCpFB9IxxPfS/P8/59OkdzGKQjcIUw==", "dev": true, + "license": "MIT", "dependencies": { "@types/koa": "^2.11.6", "@types/ws": "^7.4.0", @@ -2825,6 +2553,7 @@ "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.4.1.tgz", "integrity": "sha512-Ebsv7Ovd9MufeH3exvikBJ7GmrZA5OmHnOgaiHcwMJ2eQBJA5/I+/CbRjsLX97ICj/ZwZG//p2ITRz8W3UfSqg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/plugin-node-resolve": "^13.0.4", "@web/dev-server-core": "^0.4.1", @@ -2842,6 +2571,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -2851,6 +2581,7 @@ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", "chalk-template": "^0.4.0", @@ -2866,6 +2597,7 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -2875,6 +2607,7 @@ "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-1.3.1.tgz", "integrity": "sha512-haCgDchZrAOB9EhBJ5XqiIjBMsS/exsM5Ru7sCSyNkXVEJWskyyKuKMFk66BonnIGMPpDtqDrTUfYEis5Zi3XA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse5": "^6.0.1", "parse5": "^6.0.1" @@ -2883,20 +2616,67 @@ "node": ">=10.0.0" } }, + "node_modules/@web/test-runner/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@web/test-runner/node_modules/array-back": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/@web/test-runner/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@web/test-runner/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@web/test-runner/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, "node_modules/@web/test-runner/node_modules/command-line-usage": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^4.0.2", "chalk": "^2.4.2", @@ -2912,6 +2692,7 @@ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^4.0.1", "deep-extend": "~0.6.0", @@ -2922,17 +2703,39 @@ "node": ">=8.0.0" } }, + "node_modules/@web/test-runner/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@web/test-runner/node_modules/estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@web/test-runner/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, "node_modules/@web/test-runner/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2945,6 +2748,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -2955,11 +2759,25 @@ "fsevents": "~2.3.2" } }, + "node_modules/@web/test-runner/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@web/test-runner/node_modules/typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2969,6 +2787,7 @@ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, + "license": "MIT", "dependencies": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" @@ -2982,6 +2801,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2995,6 +2815,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3007,6 +2828,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3016,6 +2838,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -3028,6 +2851,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3044,6 +2868,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -3054,37 +2879,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { @@ -3092,6 +2910,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3104,155 +2923,55 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-metadata-inferer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.7.0.tgz", - "integrity": "sha512-OkMLzd8xelb3gmnp6ToFvvsHLtS6CbagTkFQvQ+ZYFe3/AIl9iKikNR9G7pY3GfOR/2Xc222hwBjzI7HLkE76Q==", - "dev": true, - "dependencies": { - "@mdn/browser-compat-data": "^3.3.14" - } - }, - "node_modules/ast-metadata-inferer/node_modules/@mdn/browser-compat-data": { - "version": "3.3.14", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz", - "integrity": "sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==", - "dev": true - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -3272,13 +2991,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3291,6 +3012,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3302,6 +3024,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "devOptional": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3312,6 +3035,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -3330,38 +3054,6 @@ "@browser-bunyan/levels": "^1.8.0" } }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -3381,6 +3073,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3391,6 +3084,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -3400,6 +3094,7 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -3414,6 +3109,7 @@ "engines": [ "node >=0.10.0" ], + "license": "MIT", "bin": { "bunyan": "bin/bunyan" }, @@ -3429,6 +3125,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3438,6 +3135,7 @@ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "^2.1.18", "ylru": "^1.2.0" @@ -3451,6 +3149,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3470,6 +3169,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3479,6 +3179,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3486,75 +3187,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/chalk-template/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk-template/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3566,43 +3204,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk-template/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "chalk": "^4.1.2" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk-template/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/chalk-template/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk-template/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=12" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, "node_modules/chokidar": { @@ -3610,6 +3225,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3629,17 +3245,32 @@ "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/chrome-launcher": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -3653,23 +3284,12 @@ "node": ">=12.13.0" } }, - "node_modules/chrome-launcher/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -3682,6 +3302,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -3691,6 +3312,7 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -3701,6 +3323,7 @@ "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.2.0.tgz", "integrity": "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==", "dev": true, + "license": "MIT", "dependencies": { "@hapi/bourne": "^3.0.0", "inflation": "^2.0.0", @@ -3713,25 +3336,31 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, "node_modules/command-line-args": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^3.1.0", "find-replace": "^3.0.0", @@ -3747,6 +3376,7 @@ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", "chalk-template": "^0.4.0", @@ -3762,6 +3392,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -3771,6 +3402,7 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -3779,19 +3411,15 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "devOptional": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -3804,6 +3432,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3812,13 +3441,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookies": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~2.0.0", "keygrip": "~1.1.0" @@ -3827,21 +3458,11 @@ "node": ">= 0.8" } }, - "node_modules/core-js": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -3851,6 +3472,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3860,68 +3482,19 @@ "node": ">= 8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debug": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -3938,13 +3511,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -3953,22 +3528,38 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3986,38 +3577,24 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4027,6 +3604,7 @@ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -4036,6 +3614,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -4045,13 +3624,15 @@ "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -4061,6 +3642,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4068,23 +3650,12 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "hasInstallScript": true, + "license": "BSD-2-Clause", "optional": true, "dependencies": { "nan": "^2.14.0" @@ -4097,25 +3668,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.806", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.806.tgz", - "integrity": "sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4125,6 +3693,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -4133,73 +3702,15 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.1.tgz", "integrity": "sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==", - "dev": true - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -4212,567 +3723,249 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", - "dev": true - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/esbuild": { "version": "0.18.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.11", - "@esbuild/android-arm64": "0.18.11", - "@esbuild/android-x64": "0.18.11", - "@esbuild/darwin-arm64": "0.18.11", - "@esbuild/darwin-x64": "0.18.11", - "@esbuild/freebsd-arm64": "0.18.11", - "@esbuild/freebsd-x64": "0.18.11", - "@esbuild/linux-arm": "0.18.11", - "@esbuild/linux-arm64": "0.18.11", - "@esbuild/linux-ia32": "0.18.11", - "@esbuild/linux-loong64": "0.18.11", - "@esbuild/linux-mips64el": "0.18.11", - "@esbuild/linux-ppc64": "0.18.11", - "@esbuild/linux-riscv64": "0.18.11", - "@esbuild/linux-s390x": "0.18.11", - "@esbuild/linux-x64": "0.18.11", - "@esbuild/netbsd-x64": "0.18.11", - "@esbuild/openbsd-x64": "0.18.11", - "@esbuild/sunos-x64": "0.18.11", - "@esbuild/win32-arm64": "0.18.11", - "@esbuild/win32-ia32": "0.18.11", - "@esbuild/win32-x64": "0.18.11" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-chai-friendly": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz", - "integrity": "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=3.0.0" - } - }, - "node_modules/eslint-plugin-compat": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz", - "integrity": "sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==", - "dev": true, - "dependencies": { - "@mdn/browser-compat-data": "^4.1.5", - "ast-metadata-inferer": "^0.7.0", - "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001304", - "core-js": "^3.16.2", - "find-up": "^5.0.0", - "lodash.memoize": "4.1.2", - "semver": "7.3.5" - }, - "engines": { - "node": ">=9.x" - }, - "peerDependencies": { - "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-compat/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-compat/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-ecmalist": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-ecmalist/-/eslint-plugin-ecmalist-1.0.8.tgz", - "integrity": "sha512-0Rh8E/CD70RulX/BmbIzvGEN0Y2wMEqdqJ/zXJDVIJHf1JFrqLs4L93ozEtmhCD4i5WEGMlfJJ5OGRamvtnqAg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@mdn/browser-compat-data": "^4.0.0", - "browserslist": "^4.16.8", - "eslint-plugin-es": "github:ivangeorgiew/eslint-plugin-es" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "eslint": ">= 7.30.0" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "git+ssh://git@github.com/ivangeorgiew/eslint-plugin-es.git#433b188aae274cc82943d92fcd5088dc18b0d58e", - "dev": true, - "dependencies": { - "eslint-utils": "^3.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, - "funding": { - "url": "https://opencollective.com/eslint" + "optionalDependencies": { + "@esbuild/android-arm": "0.18.11", + "@esbuild/android-arm64": "0.18.11", + "@esbuild/android-x64": "0.18.11", + "@esbuild/darwin-arm64": "0.18.11", + "@esbuild/darwin-x64": "0.18.11", + "@esbuild/freebsd-arm64": "0.18.11", + "@esbuild/freebsd-x64": "0.18.11", + "@esbuild/linux-arm": "0.18.11", + "@esbuild/linux-arm64": "0.18.11", + "@esbuild/linux-ia32": "0.18.11", + "@esbuild/linux-loong64": "0.18.11", + "@esbuild/linux-mips64el": "0.18.11", + "@esbuild/linux-ppc64": "0.18.11", + "@esbuild/linux-riscv64": "0.18.11", + "@esbuild/linux-s390x": "0.18.11", + "@esbuild/linux-x64": "0.18.11", + "@esbuild/netbsd-x64": "0.18.11", + "@esbuild/openbsd-x64": "0.18.11", + "@esbuild/sunos-x64": "0.18.11", + "@esbuild/win32-arm64": "0.18.11", + "@esbuild/win32-ia32": "0.18.11", + "@esbuild/win32-x64": "0.18.11" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/esbuild-node-externals": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/esbuild-node-externals/-/esbuild-node-externals-1.13.1.tgz", + "integrity": "sha512-ho4Lokc6iMB1lWbb2tWJ6otien+3Kfoaxe0fy7NUNgVuLnfmlW+GRINftTVUGtTVY/dapuwUu/CvFylYNwzkMA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "find-up": "^5.0.0", + "tslib": "^2.4.1" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=12" }, "peerDependencies": { - "eslint": ">=5" + "esbuild": "0.12 - 0.21" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", + "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.17.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.6.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://eslint.org/donate" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, "engines": { - "node": ">=10" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-glob": "^4.0.3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10.13.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/has-flag": { + "node_modules/eslint-visitor-keys": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -4783,6 +3976,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4795,6 +3989,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4807,6 +4002,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4815,13 +4011,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -4831,15 +4029,41 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -4860,6 +4084,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -4874,13 +4099,22 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4892,23 +4126,39 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -4918,20 +4168,22 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -4939,6 +4191,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4951,6 +4204,7 @@ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^3.0.1" }, @@ -4963,6 +4217,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4975,44 +4230,38 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/focus-visible": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", - "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } + "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==", + "license": "W3C" }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5021,66 +4270,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5090,6 +4295,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -5109,99 +4315,64 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "license": "ISC", + "optional": true, "dependencies": { - "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -5222,6 +4393,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -5229,31 +4401,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -5261,6 +4416,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -5273,6 +4429,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5285,6 +4442,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5297,6 +4455,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -5312,6 +4471,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -5323,13 +4483,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, + "license": "MIT", "dependencies": { "deep-equal": "~1.0.1", "http-errors": "~1.8.0" @@ -5343,6 +4505,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -5359,6 +4522,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5368,6 +4532,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -5376,11 +4541,22 @@ "node": ">= 6" } }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5406,13 +4582,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -5422,6 +4600,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5438,6 +4617,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -5447,6 +4627,7 @@ "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -5457,6 +4638,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "devOptional": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5466,26 +4648,33 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true + "devOptional": true, + "license": "ISC" }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", "dev": true, + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" } }, "node_modules/intl-messageformat": { "version": "9.9.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.0.tgz", "integrity": "sha512-5+XCcCHdO55A57Emrfd5bhZ0OhB0Kc2SJCe7pFJ4hK/xYgtMteA8R+L7qnHyE0EDuD8tlNQG3TzjULKd/Zqebw==", + "license": "BSD-3-Clause", "dependencies": { "@formatjs/fast-memoize": "1.2.0", "@formatjs/icu-messageformat-parser": "2.0.10", @@ -5496,34 +4685,27 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, "node_modules/is-binary-path": { @@ -5531,6 +4713,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -5538,216 +4721,30 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -5756,11 +4753,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { "node": ">=8" }, @@ -5768,11 +4769,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5783,46 +4805,70 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "ip-regex": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2" + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-wsl": { @@ -5830,6 +4876,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -5837,17 +4884,12 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/isbinaryfile": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18.0.0" }, @@ -5859,13 +4901,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -5875,6 +4919,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -5884,32 +4929,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-reports": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -5921,13 +4946,15 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5939,43 +4966,36 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } + "license": "MIT" }, "node_modules/just-extend": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, + "license": "MIT", "dependencies": { "tsscmp": "1.0.6" }, @@ -5988,6 +5008,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5997,6 +5018,7 @@ "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -6030,13 +5052,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/koa-convert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", "dev": true, + "license": "MIT", "dependencies": { "co": "^4.6.0", "koa-compose": "^4.1.0" @@ -6050,6 +5074,7 @@ "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", "dev": true, + "license": "MIT", "dependencies": { "etag": "^1.8.1" } @@ -6059,6 +5084,7 @@ "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "http-errors": "^1.7.3", @@ -6073,6 +5099,7 @@ "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.1.0", "koa-send": "^5.0.0" @@ -6086,6 +5113,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -6095,6 +5123,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -6108,6 +5137,7 @@ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" @@ -6118,6 +5148,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6126,12 +5157,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lit": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^1.6.0", "lit-element": "^3.3.0", @@ -6142,6 +5175,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", @@ -6152,6 +5186,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.0.0" } @@ -6160,6 +5195,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -6168,6 +5204,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.0.0" } @@ -6177,6 +5214,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -6191,48 +5229,49 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.assignwith": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -6250,6 +5289,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -6263,6 +5303,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "dev": true, + "license": "ISC", "engines": { "node": ">=16.14" } @@ -6272,6 +5313,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -6286,22 +5328,32 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -6311,6 +5363,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -6324,6 +5377,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6333,6 +5387,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -6345,6 +5400,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6354,6 +5410,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "devOptional": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6366,6 +5423,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "devOptional": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6375,6 +5433,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -6386,12 +5445,24 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/mobx": { + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.12.5.tgz", + "integrity": "sha512-xRq2tyY6unAec0ItlsrgoCuxrWXLoIkM5cGPuerm/0nX/CI9FxAO6ttfRYfFa+B5Yz51d59IfKy0mJwxOEwqzQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", "optional": true, "engines": { "node": "*" @@ -6401,12 +5472,14 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "license": "MIT", "optional": true, "dependencies": { "mkdirp": "~0.5.1", @@ -6417,27 +5490,11 @@ "node": ">=0.8.0" } }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "optional": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/mv/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "optional": true, "dependencies": { "minimist": "^1.2.6" @@ -6446,30 +5503,19 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "optional": true, - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "license": "MIT", "optional": true }, "node_modules/nanocolors": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", @@ -6482,6 +5528,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6493,12 +5540,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "license": "MIT", "optional": true, "bin": { "ncp": "bin/ncp" @@ -6509,6 +5558,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6518,6 +5568,7 @@ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0", "@sinonjs/fake-timers": "^11.2.2", @@ -6531,6 +5582,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -6540,6 +5592,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } @@ -6548,6 +5601,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -6566,97 +5620,54 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6669,6 +5680,7 @@ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6681,6 +5693,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "devOptional": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6690,6 +5703,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -6711,6 +5725,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -6728,6 +5743,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -6740,11 +5756,51 @@ "node": ">= 0.8.0" } }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-event/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6760,6 +5816,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6774,6 +5831,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", + "license": "MIT", "engines": { "node": ">=10" } @@ -6783,6 +5841,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6792,6 +5851,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6803,13 +5863,15 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6819,6 +5881,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6828,6 +5891,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6837,6 +5901,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6845,19 +5910,22 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6866,19 +5934,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6891,6 +5962,7 @@ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", "dev": true, + "license": "ISC", "dependencies": { "pngjs": "^6.0.0" }, @@ -6903,6 +5975,7 @@ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13.0" } @@ -6912,6 +5985,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -6924,6 +5998,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6937,6 +6012,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -6949,6 +6025,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6964,6 +6041,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -6971,55 +6049,12 @@ "node": ">=8" } }, - "node_modules/playwright": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", - "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", - "dev": true, - "dependencies": { - "playwright-core": "1.44.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", - "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", - "dev": true, - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/pngjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.19.0" } @@ -7029,6 +6064,7 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, + "license": "MIT", "dependencies": { "async": "^2.6.4", "debug": "^3.2.7", @@ -7043,6 +6079,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -7052,6 +6089,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -7059,29 +6097,51 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -7090,13 +6150,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -7107,6 +6169,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7116,6 +6179,7 @@ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", @@ -7139,6 +6203,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } @@ -7148,6 +6213,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -7160,11 +6226,34 @@ } } }, + "node_modules/puppeteer-core/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/puppeteer-core/node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -7180,23 +6269,43 @@ } } }, + "node_modules/puppeteer-core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/puppeteer-core/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/puppeteer-core/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/puppeteer-core/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -7207,6 +6316,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -7224,10 +6334,11 @@ } }, "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", + "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -7256,13 +6367,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/raw-body": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -7278,6 +6391,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -7294,6 +6408,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7302,6 +6417,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -7314,6 +6430,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0", @@ -7328,6 +6445,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7342,6 +6460,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -7354,45 +6473,17 @@ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7410,6 +6501,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7419,6 +6511,7 @@ "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", "dev": true, + "license": "MIT", "dependencies": { "http-errors": "~1.6.2", "path-is-absolute": "1.0.1" @@ -7432,6 +6525,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7441,6 +6535,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -7455,19 +6550,22 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/resolve-path/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -7481,25 +6579,24 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, + "license": "ISC", + "optional": true, "dependencies": { - "glob": "^7.1.3" + "glob": "^6.0.1" }, "bin": { "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { @@ -7507,6 +6604,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -7537,28 +6635,11 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -7577,41 +6658,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-json-stringify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "license": "MIT", "optional": true }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -7622,6 +6690,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7634,6 +6703,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7646,32 +6716,19 @@ "node": ">= 0.4" } }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7684,6 +6741,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7693,6 +6751,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -7710,7 +6769,8 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sinon": { "version": "13.0.1", @@ -7718,6 +6778,7 @@ "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==", "deprecated": "16.1.1", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.8.3", "@sinonjs/fake-timers": "^9.0.0", @@ -7731,32 +6792,12 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7766,6 +6807,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -7778,44 +6820,12 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -7825,6 +6835,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7834,80 +6845,34 @@ "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "safe-buffer": "~5.2.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/strip-ansi": { @@ -7915,6 +6880,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7922,13 +6888,14 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/strip-json-comments": { @@ -7936,6 +6903,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7944,15 +6912,16 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -7960,6 +6929,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7967,11 +6937,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/table-layout": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", "dev": true, + "license": "MIT", "dependencies": { "@75lb/deep-merge": "^1.1.1", "array-back": "^6.2.2", @@ -7993,6 +6981,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -8002,6 +6991,7 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -8011,6 +7001,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -8023,6 +7014,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -8038,19 +7030,22 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8063,6 +7058,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -8072,6 +7068,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -8082,30 +7079,21 @@ "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", - "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", + "license": "MIT" }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.x" } @@ -8115,6 +7103,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -8127,15 +7116,17 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8148,6 +7139,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -8156,84 +7148,12 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8257,30 +7177,17 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "engines": { "node": "*" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -8290,52 +7197,25 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -8344,19 +7224,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, + "license": "ISC", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -8371,6 +7247,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8380,6 +7257,7 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -8389,6 +7267,7 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -8402,6 +7281,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8412,46 +7292,12 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8461,6 +7307,7 @@ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -8470,6 +7317,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8479,50 +7327,19 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true + "devOptional": true, + "license": "ISC" }, "node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -8543,13 +7360,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -8560,6 +7379,7 @@ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -8569,6 +7389,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8576,53 +7397,124 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "studio": { + "name": "@adobe/mas-studio", + "version": "0.0.1", + "license": "ISC", + "dependencies": { + "@adobe/lit-mobx": "^2.2.2", + "@adobe/mas": "^0.0.1", + "@adobe/mas-commons": "^0.0.1", + "@adobe/mas-web-components": "^0.0.1", + "mobx": "^6.12.4" + }, + "devDependencies": { + "@web/dev-server-import-maps": "^0.2.1", + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } + }, + "studio/node_modules/@web/dev-server-core": { + "version": "0.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "studio/node_modules/@web/dev-server-import-maps": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.2.1.tgz", + "integrity": "sha512-iGM7s4qenmTDUWC2iV0HoQ1NR5lAyRxVHOpWzTsFH/TnUZzP+YuL6QIFtB2v2v7URfhGL2l2WPIibmliToITcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@import-maps/resolve": "^1.0.1", + "@types/parse5": "^6.0.1", + "@web/dev-server-core": "^0.7.2", + "@web/parse5-utils": "^2.1.0", + "parse5": "^6.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "studio/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "web-components": { - "name": "@wcms/commerce-web-components", + "name": "@adobe/mas-web-components", "version": "0.0.1", "dependencies": { - "@spectrum-web-components/action-menu": "^0.42.1", - "@spectrum-web-components/button": "^0.42.1", - "@spectrum-web-components/checkbox": "^0.42.1", - "@spectrum-web-components/dialog": "^0.42.1", - "@spectrum-web-components/icon": "^0.42.1", - "@spectrum-web-components/icons": "^0.42.1", - "@spectrum-web-components/icons-workflow": "^0.42.1", - "@spectrum-web-components/link": "^0.42.1", - "@spectrum-web-components/menu": "^0.42.1", - "@spectrum-web-components/overlay": "^0.42.1", - "@spectrum-web-components/popover": "^0.42.1", - "@spectrum-web-components/progress-circle": "^0.42.1", - "@spectrum-web-components/radio": "^0.42.1", - "@spectrum-web-components/reactive-controllers": "^0.42.1", - "@spectrum-web-components/search": "^0.42.1", - "@spectrum-web-components/sidenav": "0.42.1", - "@spectrum-web-components/split-button": "^0.42.1", - "@spectrum-web-components/tabs": "^0.42.1", - "@spectrum-web-components/theme": "^0.42.1", - "@spectrum-web-components/tooltip": "^0.42.1", - "@spectrum-web-components/tray": "^0.42.1", - "lit": "^2.8.0" + "@adobe/mas-commons": "^0.0.1" }, "devDependencies": { - "@dexter/eslint-config-tacocat": "file:../deps/eslint-config-tacocat-1.1.2.tgz", - "@esm-bundle/chai": "4.3.4-fix.0", - "@esm-bundle/chai-as-promised": "7.1.1", - "@types/chai-as-promised": "7.1.5", - "@types/sinon": "10.0.15", "@web/dev-server": "^0.3.1", "@web/dev-server-esbuild": "^0.4.1", "@web/dev-server-import-maps": "^0.1.1", - "@web/test-runner": "0.13.27", - "@web/test-runner-commands": "0.6.1", - "@web/test-runner-visual-regression": "0.9.0", - "esbuild": "0.18.11", - "eslint": "8.20.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-plugin-chai-friendly": "0.7.2", - "eslint-plugin-compat": "4.0.2", - "eslint-plugin-ecmalist": "1.0.8", - "eslint-plugin-import": "2.26.0", - "sinon": "13.0.1" + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "@web/test-runner-visual-regression": "^0.9.0", + "esbuild": "0.18.11" } } } diff --git a/package.json b/package.json index a15a8d2e..773e37aa 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,60 @@ { - "name": "@adobe/mas", - "version": "1.0.0", + "name": "@adobe/mas-platform", + "version": "0.0.1", + "type": "module", + "main": "mas.js", "private": true, - "workspaces": ["web-components", "commerce"], + "workspaces": [ + "commerce", + "commons", + "mas", + "studio", + "web-components" + ], "scripts": { - "test": "npm run test:commerce && npm run test:web-components", - "test:commerce": "cd commerce && npm run test:ci", - "test:web-components": "cd web-components && npm run test:ci", - "build": "npm run build:commerce && npm run build:web-components", - "build:commerce": "cd commerce && npm run build", - "build:web-components": "cd web-components && npm run build" + "lint": "eslint --fix", + "test": "npm run test:ci --workspaces", + "build": "npm run build --workspaces" }, "repository": { "type": "git", "url": "git@github.com:adobecom/mas.git" + }, + "dependencies": { + "@spectrum-web-components/action-button": "^0.43.0", + "@spectrum-web-components/action-menu": "^0.43.0", + "@spectrum-web-components/button-group": "^0.43.0", + "@spectrum-web-components/button": "^0.43.0", + "@spectrum-web-components/checkbox": "^0.43.0", + "@spectrum-web-components/dialog": "^0.43.0", + "@spectrum-web-components/icon": "^0.43.0", + "@spectrum-web-components/icons-workflow": "^0.43.0", + "@spectrum-web-components/icons": "^0.43.0", + "@spectrum-web-components/link": "^0.43.0", + "@spectrum-web-components/menu": "^0.43.0", + "@spectrum-web-components/overlay": "^0.43.0", + "@spectrum-web-components/popover": "^0.43.0", + "@spectrum-web-components/progress-circle": "^0.43.0", + "@spectrum-web-components/radio": "^0.43.0", + "@spectrum-web-components/reactive-controllers": "^0.43.0", + "@spectrum-web-components/search": "^0.43.0", + "@spectrum-web-components/sidenav": "0.42.1", + "@spectrum-web-components/split-button": "^0.43.0", + "@spectrum-web-components/tabs": "^0.43.0", + "@spectrum-web-components/theme": "^0.43.0", + "@spectrum-web-components/tooltip": "^0.43.0", + "@spectrum-web-components/tray": "^0.43.0", + "lit": "^2.8.0" + }, + "devDependencies": { + "@esm-bundle/chai-as-promised": "7.1.1", + "@esm-bundle/chai": "4.3.4-fix.0", + "@types/chai-as-promised": "7.1.5", + "@types/sinon": "10.0.15", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint": "^9.5.0", + "prettier": "^3.3.2", + "sinon": "13.0.1" } } diff --git a/studio.html b/studio.html new file mode 100644 index 00000000..cb871349 --- /dev/null +++ b/studio.html @@ -0,0 +1,26 @@ + + + + + Merch at Scale Studio + + + + + + + + + + + + + +
+ + + +
+ + + diff --git a/studio/README.md b/studio/README.md new file mode 100644 index 00000000..c6fcc03f --- /dev/null +++ b/studio/README.md @@ -0,0 +1 @@ +# M@S Studio \ No newline at end of file diff --git a/studio/build.mjs b/studio/build.mjs new file mode 100644 index 00000000..cddc90d5 --- /dev/null +++ b/studio/build.mjs @@ -0,0 +1,23 @@ +import { build } from 'esbuild'; + +build({ + entryPoints: ['src/swc.js'], + format: 'esm', + bundle: true, + outfile: 'lib/swc.js', + sourcemap: true, + define: { + 'process.env.NODE_ENV': '"production"', + }, +}).catch(() => process.exit(1)); + +build({ + entryPoints: ['src/studio.js'], + format: 'esm', + bundle: true, + outfile: 'lib/studio.js', + sourcemap: true, + define: { + 'process.env.NODE_ENV': '"production"', + }, +}).catch(() => process.exit(1)); diff --git a/studio/package.json b/studio/package.json new file mode 100644 index 00000000..6ba0ab5a --- /dev/null +++ b/studio/package.json @@ -0,0 +1,29 @@ +{ + "name": "@adobe/mas-studio", + "version": "0.0.1", + "description": "Merch at Scale Studio", + "scripts": { + "build": "node build.mjs", + "test": "wtr --config ./web-test-runner.config.mjs --coverage --watch --debug", + "test:ci": "wtr --config ./web-test-runner.config.mjs" + }, + "type": "module", + "main": "src/index.js", + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@adobe/lit-mobx": "^2.2.2", + "@adobe/mas": "^0.0.1", + "@adobe/mas-commons": "^0.0.1", + "@adobe/mas-web-components": "^0.0.1", + "mobx": "^6.12.4" + }, + "devDependencies": { + "@web/dev-server-import-maps": "^0.2.1", + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "esbuild": "^0.21.5", + "esbuild-node-externals": "^1.13.1" + } +} diff --git a/studio/src/events.js b/studio/src/events.js new file mode 100644 index 00000000..36d9d635 --- /dev/null +++ b/studio/src/events.js @@ -0,0 +1,8 @@ +/* Event types */ +export const EVENT_KEYDOWN = 'keydown'; +export const EVENT_KEYUP = 'keyup'; +export const EVENT_CHANGE = 'change'; +export const EVENT_SUBMIT = 'submit'; + +/* Keys */ +export const KEY_ENTER = 'Enter'; diff --git a/studio/src/index.js b/studio/src/index.js new file mode 100644 index 00000000..05a6eed3 --- /dev/null +++ b/studio/src/index.js @@ -0,0 +1,3 @@ +export * from './aem.js'; +export * from './mas.js'; +export * from './studio.js'; diff --git a/studio/src/store/Fragment.js b/studio/src/store/Fragment.js new file mode 100644 index 00000000..9bb45cd1 --- /dev/null +++ b/studio/src/store/Fragment.js @@ -0,0 +1,20 @@ +export class Fragment { + path = ''; + type = ''; + model = { + id: '', + path: '', + }; + + /** + * @param {Object} props - common properties of a fragment as a search result + * @param {string} props.path - cf path + * @param {string} props.type - merch web component type (e.g: merch-card) + * @param {Object} props.model - cf model + * @param {string} props.model.id - cf model id + * @param {string} props.model.path - cf model path + */ + constructor(props) { + Object.assign(this, props); + } +} diff --git a/studio/src/store/Search.js b/studio/src/store/Search.js new file mode 100644 index 00000000..63cc2389 --- /dev/null +++ b/studio/src/store/Search.js @@ -0,0 +1,43 @@ +import { makeAutoObservable } from 'mobx'; +import { Fragment } from './Fragment.js'; + +export class Search { + /** @type {string|undefined} Search query (the text the user entered) */ + query; + + /** @type {string|undefined} Path of the request (e.g., the URL on a website) */ + path; + + /** @type {string|undefined} Locale */ + locale; + + /** @type {string|undefined} Content Fragment variant, e.g: merch-card */ + variant; + + /** @type {string|undefined} Content Fragment Model ID */ + modelId; + + /** @type {boolean|undefined} Whether the Content Fragment is published */ + published; + + /** + * @type {Array} + */ + result = []; + + constructor() { + makeAutoObservable(this); + } + + /** + * + * @param {Array} result + */ + setResult(result) { + this.result = result; + } + + update(props) { + Object.assign(this, props); + } +} diff --git a/studio/src/store/Store.js b/studio/src/store/Store.js new file mode 100644 index 00000000..224e0f0b --- /dev/null +++ b/studio/src/store/Store.js @@ -0,0 +1,42 @@ +import { makeObservable, observable } from 'mobx'; +import { Search } from './Search.js'; + +import { AEM } from '@adobe/mas-commons'; +import { Fragment } from './Fragment.js'; + +let merchDataSourceCache; + +export class Store { + /** + * @type {Search} + */ + search = new Search(); + /** + * @type {import('@adobe/mas-commons').AEM} + */ + aem; + + /** + * @param {string} bucket + */ + constructor(bucket) { + if (!bucket) throw new Error('bucket is required'); // TODO provide better error message. + makeObservable(this, { + search: observable, + }); + this.aem = new AEM(bucket); + ({ cache: merchDataSourceCache } = + document.createElement('merch-datasource')); + } + + async doSearch(props) { + this.search.update(props); + const fragments = await this.aem.sites.cf.fragments + .search(this.search) + .then((items) => { + merchDataSourceCache.add(...items); + return items.map((item) => new Fragment(item)); + }); + this.search.setResult(fragments); + } +} diff --git a/studio/src/studio.js b/studio/src/studio.js new file mode 100644 index 00000000..31966c82 --- /dev/null +++ b/studio/src/studio.js @@ -0,0 +1,143 @@ +import { html, css, LitElement, nothing } from 'lit'; +import { Store } from './store/Store.js'; +import { EVENT_SUBMIT } from './events.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { Reaction } from 'mobx'; +import { MobxReactionUpdateCustom } from '@adobe/lit-mobx/lib/mixin-custom.js'; +import { deeplink, pushState } from '@adobe/mas-commons'; + +const models = { + merchCard: { + path: '/conf/sandbox/settings/dam/cfm/models/merch-card', + name: 'Merch Card', + }, +}; +class MasStudio extends MobxReactionUpdateCustom(LitElement, Reaction) { + static styles = css` + :host { + display: block; + } + + sp-theme { + display: contents; + } + `; + + static properties = { + store: { type: Object }, + bucket: { type: String, attribute: 'aem-bucket' }, + searchText: { type: String }, + }; + + constructor() { + super(); + } + + connectedCallback() { + super.connectedCallback(); + this.store = new Store(this.bucket); + this.startDeeplink(); + } + + disconnectedCallback() { + super.disconnectedCallback(); + this.deeplinkDisposer(); + } + + get search() { + return this.shadowRoot.querySelector('sp-search'); + } + + get picker() { + return this.shadowRoot.querySelector('sp-picker'); + } + + get result() { + if (this.store.search.result.length === 0) return nothing; + return html`
    + ${repeat( + this.store.search.result, + (item) => item.path, + (item) => { + switch (item.model.path) { + case models.merchCard.path: + return html` + + `; + default: + return nothing; + } + }, + )} +
`; + } + + render() { + return html` +

Merch at Scale Studio

+
+ + + All + Merch Card + + Search +
+ ${this.result} + `; + } + + async startDeeplink() { + this.deeplinkDisposer = deeplink(({ path, modelId, query }) => { + this.searchText = query; + this.store.search.update({ path, modelId }); + }); + if (this.searchText) { + await this.updateComplete; + this.doSearch(); + } + } + + /** + * @param {Event} e; + */ + handleSearch(e) { + this.searchText = this.search.value; + if (e.type === EVENT_SUBMIT) { + e.preventDefault(); + this.doSearch(); + } + } + + async doSearch() { + const query = this.searchText; + const modelId = this.picker.value.replace('all', ''); + const path = '/content/dam/sandbox/mas'; + const search = { query, path, modelId }; + pushState(search); + this.store.doSearch(search); + } +} + +customElements.define('mas-studio', MasStudio); diff --git a/studio/src/swc.js b/studio/src/swc.js new file mode 100644 index 00000000..144ce48f --- /dev/null +++ b/studio/src/swc.js @@ -0,0 +1,13 @@ +import '@spectrum-web-components/action-button/sp-action-button.js'; +import '@spectrum-web-components/button-group/sp-button-group.js'; +import '@spectrum-web-components/button/sp-button.js'; +import '@spectrum-web-components/dialog/sp-dialog.js'; +import '@spectrum-web-components/menu/sp-menu-divider.js'; +import '@spectrum-web-components/menu/sp-menu-item.js'; +import '@spectrum-web-components/menu/sp-menu.js'; +import '@spectrum-web-components/overlay/sp-overlay.js'; +import '@spectrum-web-components/picker/sp-picker.js'; +import '@spectrum-web-components/search/sp-search.js'; +import '@spectrum-web-components/theme/scale-medium.js'; +import '@spectrum-web-components/theme/sp-theme.js'; +import '@spectrum-web-components/theme/theme-light.js'; diff --git a/studio/style.css b/studio/style.css new file mode 100644 index 00000000..676fa20b --- /dev/null +++ b/studio/style.css @@ -0,0 +1,60 @@ +mas-studio { + display: flex; + gap: 8px; + align-items: center; + flex-direction: column; + } + + merch-card { + position: relative; + } + + mas-studio > ul > li { + list-style: none; + position: relative; + border-top: 1px dodgerblue solid; + margin-top: 16px; + display: flex; + justify-content: center; + } + + mas-studio .block { + margin-top: 64px; + } + + mas-studio p.path { + position: absolute; + top: 16px; + left: 0; + white-space: nowrap; + margin: 0; + } + + mas-studio sp-action-group { + position: absolute; + top: 16px; + right: 0; + } + + mas-studio > ul { + width: 80%; + } + + div[data-cf-path] { + margin: 60px 0 10px; + } + + sp-action-button#confirm { + margin-left: 16px; + } + + sp-textfield { + width: 360px; + } + + footer { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 200px; + } diff --git a/studio/test/mocks b/studio/test/mocks new file mode 120000 index 00000000..51ef1c67 --- /dev/null +++ b/studio/test/mocks @@ -0,0 +1 @@ +../../mocks \ No newline at end of file diff --git a/studio/test/store/Store.test.js b/studio/test/store/Store.test.js new file mode 100644 index 00000000..d750fc8d --- /dev/null +++ b/studio/test/store/Store.test.js @@ -0,0 +1,22 @@ +import { expect } from '@esm-bundle/chai'; +import '@adobe/mas-web-components/src/merch-datasource.js'; +import { Store } from '../../src/store/Store.js'; +import { withAem } from '../mocks/aem.js'; +import { mockFetch } from '../mocks/fetch.js'; + +describe('Store', async () => { + await mockFetch(withAem); + describe('Search', () => { + it('perform a search with [query, path] params', async () => { + const store = new Store('test'); + await store.doSearch({ + query: 'test', + }); + expect(store.search).to.exist; + expect(store.search.result.length).eq(2); + const [cc, ps] = store.search.result.values(); + expect(cc.path).eq('/content/dam/sandbox/mas/creative-cloud'); + expect(ps.path).eq('/content/dam/sandbox/mas/photoshop'); + }); + }); +}); diff --git a/studio/test/studio.test.html b/studio/test/studio.test.html new file mode 100644 index 00000000..18405ca8 --- /dev/null +++ b/studio/test/studio.test.html @@ -0,0 +1,28 @@ + + + + + Merch at Scale Studio + + + + + + + + + + + +
+
+ + + + diff --git a/studio/test/studio.test.html.js b/studio/test/studio.test.html.js new file mode 100644 index 00000000..5f105f07 --- /dev/null +++ b/studio/test/studio.test.html.js @@ -0,0 +1,26 @@ +// @ts-nocheck +import { runTests } from '@web/test-runner-mocha'; +import { expect } from '@esm-bundle/chai'; + +import '../src/swc.js'; +import '../src/studio.js'; + +import { mockFetch } from './mocks/fetch.js'; +import { withAem } from './mocks/aem.js'; +import { withWcs } from './mocks/wcs.js'; + +import mas from './mocks/mas.js'; +import { getTemplateContent } from '@adobe/mas-commons/test/utils.js'; + +runTests(async () => { + await mockFetch(withAem, withWcs); + await mas(); + + describe('M@S Studio', () => { + it('should render', () => { + const [studio] = getTemplateContent('studio'); + document.querySelector('main').append(studio); + expect(studio).exist; + }); + }); +}); diff --git a/studio/web-test-runner.config.mjs b/studio/web-test-runner.config.mjs new file mode 100644 index 00000000..b8a9e54b --- /dev/null +++ b/studio/web-test-runner.config.mjs @@ -0,0 +1,43 @@ +import { chromeLauncher } from '@web/test-runner-chrome'; +import { importMapsPlugin } from '@web/dev-server-import-maps'; + +const testRunnerHtml = (testFramework) => ` + + + + + + + + +`; + +export default { + browsers: [ + chromeLauncher({ + launchOptions: { args: ['--no-sandbox'] }, + }), + ], + coverageConfig: { + include: ['src/**'], + exclude: ['test/mocks/**', 'test/**', '**/node_modules/**'], + }, + files: ['test/**/*.test.(js|html)'], + plugins: [ + importMapsPlugin({ + inject: { + importMap: { + imports: { + react: '/test/mocks/react.js', + '@pandora/fetch': '/test/mocks/pandora-fetch.js', + }, + }, + }, + }), + ], + nodeResolve: true, + port: 2023, + testRunnerHtml, +}; diff --git a/web-components/.eslintrc.json b/web-components/.eslintrc.json deleted file mode 100644 index ccc6d63c..00000000 --- a/web-components/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "env": { - "browser": true, - "es2022": true - }, - "extends": [ - "plugin:prettier/recommended" - ], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "overrides": [ - { - "files": [ - "*.html", - "*.js", - "*.mjs" - ] - } - ], - "rules": { - "prettier/prettier": "error" - } -} diff --git a/web-components/scripts/build.mjs b/web-components/build.mjs similarity index 76% rename from web-components/scripts/build.mjs rename to web-components/build.mjs index ad5333db..b8d6be6d 100644 --- a/web-components/scripts/build.mjs +++ b/web-components/build.mjs @@ -21,23 +21,37 @@ async function buildLitComponent(name) { format: 'esm', metafile: true, minify: true, - outfile: `./lib/${name}.js`, + platform: 'browser', + outfile: `../lib/${name}.js`, plugins: [rewriteImports()], sourcemap: true, }); - writeFileSync(`./lib/${name}.json`, JSON.stringify(metafile)); + writeFileSync(`../lib/${name}.json`, JSON.stringify(metafile)); } Promise.all([ + build({ + banner, + bundle: true, + format: 'esm', + entryPoints: ['./src/merch-card-all.js'], + minify: true, + outfile: '../lib/merch-card-all.js', + sourcemap: true, + }), build({ banner, bundle: true, stdin: { contents: '' }, - inject: ['./src/merch-card.js', './src/merch-icon.js'], + inject: [ + './src/merch-card.js', + './src/merch-icon.js', + './src/merch-datasource.js', + ], format: 'esm', minify: true, - outfile: './lib/merch-card.js', + outfile: '../lib/merch-card.js', sourcemap: true, plugins: [rewriteImports()], }), @@ -48,7 +62,7 @@ Promise.all([ inject: ['./src/merch-offer.js', './src/merch-offer-select.js'], format: 'esm', minify: true, - outfile: './lib/merch-offer-select.js', + outfile: '../lib/merch-offer-select.js', sourcemap: true, plugins: [rewriteImports()], }), @@ -59,7 +73,7 @@ Promise.all([ format: 'esm', minify: true, plugins: [rewriteImports()], - outfile: './lib/merch-card-collection.js', + outfile: '../lib/merch-card-collection.js', }), build({ banner, @@ -67,13 +81,13 @@ Promise.all([ entryPoints: ['./src/plans-modal.js'], format: 'esm', plugins: [rewriteImports()], - outfile: './lib/plans-modal.js', + outfile: '../lib/plans-modal.js', }), build({ entryPoints: ['./src/sidenav/merch-sidenav.js'], bundle: true, banner, - outfile: './lib/merch-sidenav.js', + outfile: '../lib/merch-sidenav.js', format: 'esm', plugins: [rewriteImports()], external: ['lit'], @@ -85,7 +99,7 @@ Promise.all([ buildLitComponent('merch-twp-d2p'), ]).catch(() => process.exit(1)); -function rewriteImports() { +function rewriteImports(rew) { return { name: 'rewrite-imports', setup(build) { diff --git a/web-components/package.json b/web-components/package.json index 4db07505..52d24059 100644 --- a/web-components/package.json +++ b/web-components/package.json @@ -1,5 +1,5 @@ { - "name": "@wcms/commerce-web-components", + "name": "@adobe/mas-web-components", "version": "0.0.1", "files": [ "lib", @@ -12,60 +12,25 @@ "src/**/*" ], "scripts": { - "build": "node scripts/build.mjs", - "copy": "cp ./lib/*.js ~/milo/libs/deps && cp ./lib/*.js.map ~/milo/libs/deps", - "consume": "npm run build && npm run copy", + "build": "node build.mjs", "test": "wtr --config ./web-test-runner.config.mjs --coverage --watch --debug", - "test:ci": "wtr --config ./web-test-runner.config.mjs --debug" + "test:ci": "wtr --config ./web-test-runner.config.mjs" }, "dependencies": { - "lit": "^2.8.0", - "@spectrum-web-components/action-menu": "^0.42.1", - "@spectrum-web-components/button": "^0.42.1", - "@spectrum-web-components/checkbox": "^0.42.1", - "@spectrum-web-components/dialog": "^0.42.1", - "@spectrum-web-components/icon": "^0.42.1", - "@spectrum-web-components/icons": "^0.42.1", - "@spectrum-web-components/icons-workflow": "^0.42.1", - "@spectrum-web-components/link": "^0.42.1", - "@spectrum-web-components/menu": "^0.42.1", - "@spectrum-web-components/overlay": "^0.42.1", - "@spectrum-web-components/popover": "^0.42.1", - "@spectrum-web-components/progress-circle": "^0.42.1", - "@spectrum-web-components/radio": "^0.42.1", - "@spectrum-web-components/theme": "^0.42.1", - "@spectrum-web-components/tooltip": "^0.42.1", - "@spectrum-web-components/search": "^0.42.1", - "@spectrum-web-components/sidenav": "0.42.1", - "@spectrum-web-components/tray": "^0.42.1", - "@spectrum-web-components/tabs": "^0.42.1", - "@spectrum-web-components/reactive-controllers": "^0.42.1", - "@spectrum-web-components/split-button": "^0.42.1" + "@adobe/mas-commons": "^0.0.1" }, "devDependencies": { - "@dexter/eslint-config-tacocat": "file:../deps/eslint-config-tacocat-1.1.2.tgz", - "@esm-bundle/chai": "4.3.4-fix.0", - "@esm-bundle/chai-as-promised": "7.1.1", - "@types/chai-as-promised": "7.1.5", - "@types/sinon": "10.0.15", "@web/dev-server": "^0.3.1", "@web/dev-server-esbuild": "^0.4.1", "@web/dev-server-import-maps": "^0.1.1", - "@web/test-runner": "0.13.27", - "@web/test-runner-commands": "0.6.1", - "@web/test-runner-visual-regression": "0.9.0", - "esbuild": "0.18.11", - "eslint": "8.20.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-plugin-chai-friendly": "0.7.2", - "eslint-plugin-compat": "4.0.2", - "eslint-plugin-ecmalist": "1.0.8", - "eslint-plugin-import": "2.26.0", - "sinon": "13.0.1" + "@web/test-runner": "^0.13.27", + "@web/test-runner-commands": "^0.6.1", + "@web/test-runner-visual-regression": "^0.9.0", + "esbuild": "0.18.11" }, "repository": { "type": "git", "url": "git@github.com:adobecom/mas.git", - "directory": "packages/web-components" + "directory": "web-components" } } diff --git a/web-components/src/async-control.js b/web-components/src/async-control.js deleted file mode 100644 index d0020c80..00000000 --- a/web-components/src/async-control.js +++ /dev/null @@ -1,202 +0,0 @@ -import { - dispatchAsyncEvent, - makeCssClassName, - makeEventTypeName, -} from './utils.js'; - -const FAILED = 'failed'; -const PENDING = 'pending'; -const RESOLVED = 'resolved'; - -/** - * Notifies observers about results of asynchronous operations that - * can be performed by a component from time to time. - * An async component can be in one of these states: - * - `pending` - the component is waiting for the async operation to complete; - * - `resolved` - the async operation has completed successfully; - * - `failed` - the async operation has failed. - * This helper toggles state-reflecting CSS classes and emits state events, - * prefixed for distinguity between various component types. - */ -export class AsyncControl { - /** - * The latest value or error collected from a controlled async operation. - * @type {Commerce.EventDetail} - */ - #detail = {}; - /** - * Control options. - * @type {{ - * cssClassNames?: Record; - * eventOptions?: EventInit; - * eventTypeNames?: Record; - * }} - */ - #options = {}; - /** - * Current state. - * @type {string} - */ - #state; - /** - * The controlled web component. - */ - #target; - - /** - * Creates a new instance of control, pending for an async operation. - * @param {Element} target - Target element to control. - * @param {{ - * cssPrefix?: string; - * eventOptions?: EventInit; - * eventPrefix?: string; - * }} options - Notification options: - * - `cssPrefix`: prepended to the state CSS class names, toggled on the controlled component; - * - `eventOptions`: settings for custom events, dispatched by this control; - * - `eventPrefix`: prepended to the state event names, dispatched on the controlled component. - */ - constructor(target, { cssPrefix, eventOptions = {}, eventPrefix } = {}) { - this.#target = target; - const options = this.#options; - options.cssClassNames = {}; - options.eventOptions = eventOptions; - options.eventTypeNames = {}; - for (const state of [FAILED, PENDING, RESOLVED]) { - options.cssClassNames[state] = makeCssClassName(cssPrefix, state); - options.eventTypeNames[state] = makeEventTypeName( - eventPrefix, - state - ); - } - this.init(); - } - - /** - * Notifies observers about current state of the component by - * setting CSS state class and dispatching event. - */ - #notify() { - const [ - detail, - { cssClassNames, eventOptions, eventTypeNames }, - state, - target, - ] = [this.#detail, this.#options, this.#state, this.#target]; - [FAILED, PENDING, RESOLVED].forEach((key) => { - target.classList.toggle(cssClassNames[key], key === state); - }); - dispatchAsyncEvent(target, eventTypeNames[state], { - ...eventOptions, - detail, - }); - } - - /** - * Gets the latest rejection error. - * @returns {Error | undefined} - */ - get error() { - return this.#detail.error; - } - - get options() { - return this.#options; - } - - /** - * Returns the promise pending for completion of the currently active async operation. - * If no operation is active at the moment, returns settled promise. - * @returns {Promise} - */ - get promise() { - return new Promise((resolve, reject) => { - this.subscribe(resolve, reject); - }); - } - - /** - * Returns the current state of the object. - * @returns {string} - */ - get state() { - return this.#state; - } - - /** - * Signals start of a new asynchronous operation. - * @return `false` if this control is already in "pending" state, otherwise `true`. - */ - init() { - if (this.#state !== PENDING) { - this.#state = PENDING; - this.#notify(); - return true; - } - return false; - } - - /** - * Signals success of an asynchronous operation and stores its `value`. - * @param {Error} error - * @return `false` if this control is not in "pending" state, otherwise `true`. - */ - reject(error) { - if (this.#state !== PENDING) return false; - this.#detail.error = error; - this.#state = FAILED; - this.#notify(); - return true; - } - - /** - * Signals success of the asynchronous operation and stores its `value`. - * If provided argument is a promise, waits for its resolution. - * @param {any} [value] - * @return `false` if this control is not in "pending" state, otherwise `true`. - */ - async resolve(value) { - if (this.#state !== PENDING) return false; - this.#detail.value = value == null ? undefined : await value; - this.#state = RESOLVED; - this.#notify(); - return true; - } - - /** - * Registers the `resolved` and optional `rejected` callbacks - * to be notified about state changes. - * @param {Commerce.resolved} resolved - * @param {Commerce.failed} failed - * @param {boolean} once - * @return {() => void} - */ - subscribe(resolved, failed = () => {}, once = false) { - const [detail, { eventTypeNames }, state, target] = [ - this.#detail, - this.#options, - this.#state, - this.#target, - ]; - if (RESOLVED === state) { - resolved(detail.value, target); - return () => {}; - } - if (FAILED === state) { - failed?.(detail.error, target); - return () => {}; - } - const options = once ? { once: true } : undefined; - const onFailed = (event) => failed(detail.error, event.target); - const onResolved = (event) => resolved(detail.value, event.target); - target.addEventListener(eventTypeNames[FAILED], onFailed, options); - target.addEventListener(eventTypeNames[RESOLVED], onResolved, options); - return () => { - target.removeEventListener(eventTypeNames[FAILED], onFailed); - target.removeEventListener(eventTypeNames[RESOLVED], onResolved); - }; - } - - static FAILED = FAILED; - static PENDING = PENDING; - static RESOLVED = RESOLVED; -} diff --git a/web-components/src/commerce-aware.js b/web-components/src/commerce-aware.js deleted file mode 100644 index 2e570e0f..00000000 --- a/web-components/src/commerce-aware.js +++ /dev/null @@ -1,280 +0,0 @@ -import { AsyncControl } from './async-control.js'; -import { EVENT_TYPE_READY, TAG_NAME_SERVICE } from './constants.js'; -import { getCommonAncestor } from './utils.js'; - -export const UNKNOWN_PLAN_TYPE = 'UNKNOWN'; - -/** - * Groups commerce placeholders inside the `conteiner` element - * into `offer` objects, by their subsription plan type. - * @param {Commerce.Placeholder[]} placeholders - * @param {Element} container - * @param {{ - * filterOffer?: Commerce.filterOffer; - * filterPlaceholder?: Commerce.filterPlaceholder; - * }} filters - */ -async function makeOffers(container, filters, placeholders) { - /** @type {Commerce.Offers} */ - const offers = new Map(); - // Note: all placeholders are awaited in parallel - await Promise.allSettled( - placeholders.map((placeholder) => placeholder.onceSettled()) - ); - let i = 0; - for (const placeholder of placeholders) { - if (!filters.filterPlaceholder(placeholder, i++)) continue; - const wcsOffers = placeholder?.value ?? []; - // Note: `UNKNOWN_PLAN_TYPE` - special group for failed commerce placeholders, perhaps should be ignored in render - for (const { planType = UNKNOWN_PLAN_TYPE } of wcsOffers) { - // Use group for this plan type, create if needed - const group = offers.get(planType) ?? { - checkoutLinks: [], - inlinePrices: [], - planType, - get container() { - const { checkoutLinks, inlinePrices } = group; - const candidate = getCommonAncestor( - ...checkoutLinks, - ...inlinePrices - ); - if ( - candidate?.compareDocumentPosition(container) & - Node.DOCUMENT_POSITION_CONTAINS - ) { - return candidate; - } - return undefined; - }, - }; - // Classify placeholder - if (placeholder.isCheckoutLink) { - group.checkoutLinks.push(placeholder); - } else if (placeholder.isInlinePrice) { - group.inlinePrices.push(placeholder); - } - offers.set(planType, group); - } - } - i = 0; - for (const offer of offers.values()) { - if (!filters.filterOffer(offer, i++)) { - offers.delete(offer.planType); - } - } - return offers; -} - -/** - * Notifies the provided `callback` every time the commerce service is initialised, - * providing currently active instance of the service. - * @param {(commerce: Commerce.Instance) => void} callback - * @param {{ once?: boolean; }} options - * @returns {() => void} - * A function to unsubscribe from notifications. - */ -export function discoverService(callback, { once = false } = {}) { - const { head } = document; - let latest = null; - function discover() { - /** @type { Commerce.Instance } */ - const current = head.querySelector(TAG_NAME_SERVICE); - if (current === latest) return; - latest = current; - if (current) callback(current); - } - head.addEventListener(EVENT_TYPE_READY, discover, { once }); - window.setTimeout(discover); - return () => head.removeEventListener(EVENT_TYPE_READY, discover); -} - -/** - * Lit mixin for web components requiring active instance of the commerce service. - * Creates `commerce`, `log` and `offers` properties on the enhanced component. - * @param {Commerce.ComponentConstructor} Component - Component constructor. - * @param {string} tagName - Tag name of the component. - * @example - * class MyElement extends CommerceAware(LitElement, 'my-element') {} - */ -export function CommerceAware(Component, tagName) { - // TODO: `name` arg can be replaced with a call to `CustomElementRegistry.getName` method in the future - // SEE: https://caniuse.com/mdn-api_customelementregistry_getname - return class CommerceAware extends Component { - /** - * Notifies connected components about state changes. - */ - #control = new AsyncControl(this, { - cssPrefix: tagName, - eventPrefix: tagName, - }); - /** @type {Commerce.Instance | undefined} */ - #commerce; - /** @type {() => void} */ - #dispose; - /** @type {Commerce.Log.Instance | undefined} */ - #log; - /** @type {Commerce.Offers | undefined} */ - #offers; - /** - * Preselected offer type, if any. - * @type { any } - */ - #preselected; - /** - * The currently selected offer, if any. - * @type { Commerce.Offer | undefined } - */ - #selected; - - /** - * Sets selected offer and notifies subscribers. - * @param { string | Commerce.Offer } value - */ - #updateSelected(value) { - const { offers } = this; - if (!offers) return; - const selected = offers.get(value) ?? offers.get(value?.planType); - if (selected === this.#selected) return; - const old = this.#selected; - this.#selected = selected; - this.requestUpdate('selected', old); - /* c8 ignore start */ - this.log?.debug('Selected:', { - selected: this.selected?.planType, - element: this, - }); - /* c8 ignore stop */ - } - - /** - * Returns the currently active instance of commerce service. - */ - get commerce() { - return this.#commerce; - } - - /** - * Returns an instance of async control class, - * used to notify observers abour state changes. - */ - get control() { - return this.#control; - } - - /** - * Returns an instance of logger, associated with this component. - */ - get log() { - return this.#log; - } - - /** - * Returns offers found during the latest call to the `discoverOffers` method, - * grouped by their plan type. - */ - get offers() { - return this.#offers; - } - - /** - * Returns a promise resolving when this panel has all data to render the offers, - * or rejecting with the error occured during offer resolution. - */ - get resolveComplete() { - return this.#control.promise; - } - - /** - * Returns the currently selected selected offer object, if any. - * @returns { Commerce.Offer | undefined } - */ - get selected() { - return this.#selected; - } - - /** - * Allows programmatic control of the selected offer. - * Accepts either plan type as a string - * or an offer object and uses its plan type to select among known offers. - * If the given plan type cannot be found, - * selects the first offer,following the document order. - * @param { string | Commerce.Offer } value - */ - set selected(value) { - this.#preselected = value; - this.#updateSelected(value); - } - - connectedCallback() { - super.connectedCallback(); - this.#dispose = discoverService((commerce) => { - const old = [this.#commerce, this.#log, this.#offers]; - this.#commerce = commerce; - this.#log = commerce.Log.module(tagName); - this.#offers = undefined; - this.#log.debug('Connected:', { element: this }); - this.requestUpdate('commerce', old[0]); - this.requestUpdate('log', old[1]); - this.requestUpdate('offers', old[2]); - }); - } - - disconnectedCallback() { - this.#log.debug('Disconnected:', { element: this }); - super.disconnectedCallback(); - this.#dispose?.(); - } - - /** - * Overridable method to filter offers discoverable for this component. - * By default, accepts all offers. - * @param {Commerce.Offer} offer - * @param {number} index - */ - filterOffer(offer, index) { - return true; - } - - /** - * Overridable method to filter placeholders discoverable for this component. - * By default, accepts all placeholders. - * @param {Commerce.Placeholder} placeholder - * @param {number} index - */ - filterPlaceholder(placeholder, index) { - return true; - } - - /** - * Finds all commerce placeholders inside the `container` and groups them into offer objects. - * A web page offer normally includes `checkout-link` and `inline-price` components - * having same plan type and surrounded with some descriptive text. - * @param { Element } container - */ - async discoverOffers(container) { - this.#control.init(); - const placeholders = []; - const { commerce } = this; - if (commerce) { - const { CheckoutLink, InlinePrice } = commerce; - placeholders.push( - ...CheckoutLink.getCheckoutLinks(container), - ...InlinePrice.getInlinePrices(container) - ); - this.log.debug('Discovering offers:', { - container, - element: this, - }); - } - const old = this.#offers; - try { - const offers = await makeOffers(container, this, placeholders); - this.#offers = offers; - this.requestUpdate('offers', old); - this.#updateSelected(this.#preselected); - } catch (error) { - this.#control.reject(error); - } - } - }; -} diff --git a/web-components/src/commerce.js b/web-components/src/commerce.js index 71d7050e..eded1b7c 100644 --- a/web-components/src/commerce.js +++ b/web-components/src/commerce.js @@ -15,7 +15,7 @@ export async function getService() { if (service) resolve(service); else reject(new Error('Commerce service not found')); }, - { once: true } + { once: true }, ); }); } diff --git a/web-components/src/global.css.js b/web-components/src/global.css.js index ab0e62e1..b4762eaf 100644 --- a/web-components/src/global.css.js +++ b/web-components/src/global.css.js @@ -112,6 +112,11 @@ styles.innerHTML = ` --consonant-merch-card-twp-mobile-width: 300px; --consonant-merch-card-twp-mobile-height: 358px; + /* ccd-action */ + --consonant-merch-card-ccd-action-width: 276px; + --consonant-merch-card-ccd-action-min-height: 320px; + + /*mini compare chart */ --consonant-merch-card-mini-compare-chart-icon-size: 32px; --consonant-merch-card-mini-compare-mobile-cta-font-size: 15px; @@ -323,6 +328,10 @@ merch-card[variant="catalog"] [slot="action-menu-content"] a { text-decoration: underline; } +merch-card[variant="ccd-action"] .price-strikethrough { + font-size: 18px; +} + merch-card[variant="plans"] [slot="quantity-select"] { display: flex; justify-content: flex-start; @@ -873,6 +882,38 @@ div[slot='bg-image'] img { } } +/* grid style for ccd-action */ +.one-merch-card.ccd-action, +.two-merch-cards.ccd-action, +.three-merch-cards.ccd-action, +.four-merch-cards.ccd-action { + grid-template-columns: var(--consonant-merch-card-ccd-action-width); +} + +/* Tablet */ +@media screen and ${TABLET_UP} { + .two-merch-cards.ccd-action, + .three-merch-cards.ccd-action, + .four-merch-cards.ccd-action { + grid-template-columns: repeat(2, var(--consonant-merch-card-ccd-action-width)); + } +} + +/* desktop */ +@media screen and ${DESKTOP_UP} { + .three-merch-cards.ccd-action, + .four-merch-cards.ccd-action { + grid-template-columns: repeat(3, var(--consonant-merch-card-ccd-action-width)); + } +} + +/* Large desktop */ + @media screen and ${LARGE_DESKTOP} { + .four-merch-cards.ccd-action { + grid-template-columns: repeat(4, var(--consonant-merch-card-ccd-action-width)); + } +} + /* grid style for mini-compare-chart */ .one-merch-card.mini-compare-chart { grid-template-columns: var(--consonant-merch-card-mini-compare-chart-wide-width); diff --git a/web-components/src/index.js b/web-components/src/index.js index fcf3342a..54a1fd6d 100644 --- a/web-components/src/index.js +++ b/web-components/src/index.js @@ -1 +1,2 @@ -/* wcms commerce web components */ +export * from './merch-card.js'; +export * from './merch-card-collection.js'; diff --git a/web-components/src/merch-card-all.js b/web-components/src/merch-card-all.js new file mode 100644 index 00000000..c742d4a7 --- /dev/null +++ b/web-components/src/merch-card-all.js @@ -0,0 +1,3 @@ +import './merch-card.js'; +import './merch-icon.js'; +import './merch-datasource.js'; diff --git a/web-components/src/merch-card-collection.js b/web-components/src/merch-card-collection.js index 85e5e751..845116cc 100644 --- a/web-components/src/merch-card-collection.js +++ b/web-components/src/merch-card-collection.js @@ -1,7 +1,7 @@ import { html, LitElement } from 'lit'; import { MatchMediaController } from '@spectrum-web-components/reactive-controllers/src/MatchMedia.js'; -import { deeplink, pushState } from './deeplink.js'; +import { deeplink, pushState } from '@adobe/mas-commons'; import { updateLiterals } from './literals.js'; import { TABLET_DOWN } from './media.js'; @@ -35,7 +35,7 @@ const typeFilter = (elements, { types }) => { if (!types) return elements; types = types.split(','); return elements.filter((element) => - types.some((type) => element.types.includes(type)) + types.some((type) => element.types.includes(type)), ); }; @@ -43,7 +43,7 @@ const alphabeticalSorter = (elements) => elements.sort((a, b) => (a.title ?? '').localeCompare(b.title ?? '', 'en', { sensitivity: 'base', - }) + }), ); const authoredSorter = (elements, { filter }) => @@ -119,7 +119,7 @@ export class MerchCardCollection extends LitElement { window.scrollY || document.documentElement.scrollTop; const children = [...this.children].filter( - (child) => child.tagName === 'MERCH-CARD' + (child) => child.tagName === 'MERCH-CARD', ); if (children.length === 0) return; @@ -333,7 +333,7 @@ export class MerchCardCollection extends LitElement { this.singleApp = single_app; this.sort = sort; this.page = Number(page) || 1; - } + }, ); } diff --git a/web-components/src/merch-card.css.js b/web-components/src/merch-card.css.js index 50baf225..ae05b4dc 100644 --- a/web-components/src/merch-card.css.js +++ b/web-components/src/merch-card.css.js @@ -42,6 +42,10 @@ export const styles = css` min-height: 214px; } + :host([variant='ccd-action']:not([size])) { + width: var(--consonant-merch-card-ccd-action-width); + } + :host([aria-selected]) { outline: none; box-sizing: border-box; diff --git a/web-components/src/merch-card.js b/web-components/src/merch-card.js index 303e200d..fffcc6cd 100644 --- a/web-components/src/merch-card.js +++ b/web-components/src/merch-card.js @@ -1,4 +1,4 @@ -import { html, LitElement } from 'lit'; +import { html, LitElement, nothing } from 'lit'; import { sizeStyles, styles } from './merch-card.css.js'; import { @@ -72,7 +72,7 @@ export class MerchCard extends LitElement { size, }, ]; - }) + }), ); }, toAttribute: (value) => { @@ -80,7 +80,7 @@ export class MerchCard extends LitElement { .map(([key, { order, size }]) => [key, order, size] .filter((v) => v != undefined) - .join(':') + .join(':'), ) .join(','); }, @@ -117,7 +117,7 @@ export class MerchCard extends LitElement { } this.updateComplete.then(async () => { const prices = Array.from( - this.querySelectorAll('span[is="inline-price"][data-wcs-osi]') + this.querySelectorAll('span[is="inline-price"][data-wcs-osi]'), ); await Promise.all(prices.map((price) => price.onceSettled())); this.adjustTitleWidth(); @@ -247,7 +247,7 @@ export class MerchCard extends LitElement { toggleActionMenu(e) { const retract = e?.type === 'mouseleave' ? true : undefined; const actionMenuContentSlot = this.shadowRoot.querySelector( - 'slot[name="action-menu-content"]' + 'slot[name="action-menu-content"]', ); if (!actionMenuContentSlot) return; actionMenuContentSlot.classList.toggle('hidden', retract); @@ -320,6 +320,8 @@ export class MerchCard extends LitElement { return this.renderInlineHeading(); case MINI_COMPARE_CHART: return this.renderMiniCompareChart(); + case 'ccd-action': + return this.renderCcdAction(); case 'twp': return this.renderTwp(); default: @@ -489,6 +491,26 @@ export class MerchCard extends LitElement {
`; } + get defaultSlot() { + const defaultSlotElement = this.querySelector( + ':scope > a:not([slot]),:scope > p:not([slot]),:scope > div:not([slot]),:scope > span:not([slot])', + ); + if (!defaultSlotElement) return nothing; + return html``; + } + + renderCcdAction() { + return html`
+ ${this.badge} + + + + +
+ ${this.defaultSlot} +
`; + } + connectedCallback() { super.connectedCallback(); this.#container = this.getContainer(); @@ -497,19 +519,19 @@ export class MerchCard extends LitElement { this.addEventListener('mouseleave', this.toggleActionMenu); this.addEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.handleQuantitySelection + this.handleQuantitySelection, ); this.addEventListener( EVENT_MERCH_OFFER_SELECT_READY, this.merchCardReady, - { once: true } + { once: true }, ); this.updateComplete.then(() => { this.merchCardReady(); }); this.storageOptions?.addEventListener( 'change', - this.handleStorageChange + this.handleStorageChange, ); // this.appendInvisibleSpacesToFooterLinks(); } @@ -519,11 +541,11 @@ export class MerchCard extends LitElement { this.removeEventListener('keydown', this.keydownHandler); this.removeEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.handleQuantitySelection + this.handleQuantitySelection, ); this.storageOptions?.removeEventListener( EVENT_MERCH_STORAGE_CHANGE, - this.handleStorageChange + this.handleStorageChange, ); } @@ -568,8 +590,8 @@ export class MerchCard extends LitElement { if (code === 'Tab') { const focusableElements = Array.from( this.querySelectorAll( - 'a[href], button:not([disabled]), textarea, input[type="text"], input[type="radio"], input[type="checkbox"], select' - ) + 'a[href], button:not([disabled]), textarea, input[type="text"], input[type="radio"], input[type="checkbox"], select', + ), ); const firstFocusableElement = focusableElements[0]; const lastFocusableElement = @@ -614,16 +636,16 @@ export class MerchCard extends LitElement { const elMinHeightPropertyName = `--consonant-merch-card-mini-compare-${name}-height`; const height = Math.max( 0, - parseInt(window.getComputedStyle(el).height) || 0 + parseInt(window.getComputedStyle(el).height) || 0, ); const maxMinHeight = parseInt( - this.#container.style.getPropertyValue(elMinHeightPropertyName) + this.#container.style.getPropertyValue(elMinHeightPropertyName), ) || 0; if (height > maxMinHeight) { this.#container.style.setProperty( elMinHeightPropertyName, - `${height}px` + `${height}px`, ); } } @@ -636,7 +658,7 @@ export class MerchCard extends LitElement { if (cardWidth === 0 || badgeWidth === 0) return; this.style.setProperty( '--consonant-merch-card-heading-xs-max-width', - `${Math.round(cardWidth - badgeWidth - 16)}px` // consonant-merch-spacing-xs + `${Math.round(cardWidth - badgeWidth - 16)}px`, // consonant-merch-spacing-xs ); } @@ -646,7 +668,7 @@ export class MerchCard extends LitElement { this.updateMiniCompareElementMinHeight( this.shadowRoot.querySelector('.top-section'), - 'top-section' + 'top-section', ); const slots = [ @@ -662,21 +684,21 @@ export class MerchCard extends LitElement { slots.forEach((slot) => this.updateMiniCompareElementMinHeight( this.shadowRoot.querySelector(`slot[name="${slot}"]`), - slot - ) + slot, + ), ); this.updateMiniCompareElementMinHeight( this.shadowRoot.querySelector('footer'), - 'footer' + 'footer', ); const badge = this.shadowRoot.querySelector( - '.mini-compare-chart-badge' + '.mini-compare-chart-badge', ); if (badge && badge.textContent !== '') { this.#container.style.setProperty( '--consonant-merch-card-mini-compare-top-section-mobile-height', - '32px' + '32px', ); } } @@ -688,18 +710,18 @@ export class MerchCard extends LitElement { [...footerRows.children].forEach((el, index) => { const height = Math.max( FOOTER_ROW_MIN_HEIGHT, - parseInt(window.getComputedStyle(el).height) || 0 + parseInt(window.getComputedStyle(el).height) || 0, ); const maxMinHeight = parseInt( this.#container.style.getPropertyValue( - getRowMinHeightPropertyName(index + 1) - ) + getRowMinHeightPropertyName(index + 1), + ), ) || 0; if (height > maxMinHeight) { this.#container.style.setProperty( getRowMinHeightPropertyName(index + 1), - `${height}px` + `${height}px`, ); } }); @@ -713,7 +735,7 @@ export class MerchCard extends LitElement { const storageOption = this.storageOptions?.selected; if (storageOption) { const merchOfferSelect = this.querySelector( - `merch-offer-select[storage="${storageOption}"]` + `merch-offer-select[storage="${storageOption}"]`, ); if (merchOfferSelect) return merchOfferSelect; } @@ -734,7 +756,7 @@ export class MerchCard extends LitElement { if (this.offerSelect && !this.offerSelect.planType) return; // add checks for other properties if needed this.dispatchEvent( - new CustomEvent(EVENT_MERCH_CARD_READY, { bubbles: true }) + new CustomEvent(EVENT_MERCH_CARD_READY, { bubbles: true }), ); } @@ -746,7 +768,7 @@ export class MerchCard extends LitElement { new CustomEvent(EVENT_MERCH_STORAGE_CHANGE, { detail: { offerSelect }, bubbles: true, - }) + }), ); } diff --git a/web-components/src/merch-datasource.js b/web-components/src/merch-datasource.js new file mode 100644 index 00000000..aa5ce6ef --- /dev/null +++ b/web-components/src/merch-datasource.js @@ -0,0 +1,209 @@ +import { AEM } from '@adobe/mas-commons'; +import { createTag } from './utils.js'; + +const ATTR_AEM_BUCKET = 'aem-bucket'; + +const cardContent = { + catalog: { + name: 'catalog', + title: { + tag: 'h3', + slot: 'heading-xs', + }, + prices: { + tag: 'h3', + slot: 'heading-xs', + }, + description: { + tag: 'div', + slot: 'body-xs', + }, + ctas: { size: 'l' }, + }, + ah: { + name: 'ah', + title: { + tag: 'h3', + slot: 'heading-xxs', + }, + prices: { + tag: 'h3', + slot: 'heading-xs', + }, + description: { + tag: 'div', + slot: 'body-xxs', + }, + ctas: { size: 's' }, + }, + 'ccd-action': { + name: 'ccd-action', + title: { + tag: 'h3', + slot: 'heading-xs', + }, + prices: { + tag: 'h3', + slot: 'heading-xs', + }, + description: { + tag: 'div', + slot: 'body-xs', + }, + ctas: { size: 'l' }, + }, +}; + +async function parseMerchCard(item, merchCard) { + const cardJson = item.fields.reduce((acc, { name, multiple, values }) => { + acc[name] = multiple ? values : values[0]; + return acc; + }, {}); + const { type = 'catalog' } = cardJson; + const cardType = cardContent[type] || cardContent.catalog; + + merchCard.variant = type; + + merchCard.setAttribute('variant', type); + cardJson.icon?.forEach((icon) => { + const merchIcon = createTag('merch-icon', { + slot: 'icons', + src: icon, + alt: '', + href: '', + size: 'l', + }); + merchCard.append(merchIcon); + }); + + if (cardJson.title) { + merchCard.append( + createTag( + cardType.title.tag, + { slot: cardType.title.slot }, + cardJson.title, + ), + ); + } + + if (cardJson.prices) { + const prices = cardJson.prices; + const headingM = createTag( + cardType.prices.tag, + { slot: cardType.prices.slot }, + prices, + ); + merchCard.append(headingM); + } + + merchCard.append( + createTag('p', { slot: 'body-xxs', id: 'individuals1' }, 'Desktop'), + ); + + if (cardJson.description) { + const body = createTag( + cardType.description.tag, + { slot: cardType.description.slot }, + cardJson.description, + ); + merchCard.append(body); + } + + if (cardJson.ctas) { + let ctas = cardJson.ctas; + const footer = createTag('div', { slot: 'footer' }, ctas); + merchCard.append(footer); + } +} + +class FragmentCache { + #fragmentCache = new Map(); + clear() { + this.#fragmentCache.clear(); + } + add(...items) { + items.forEach((item) => { + const { path } = item; + if (path) { + this.#fragmentCache.set(path, item); + } + }); + } + has(path) { + return this.#fragmentCache.has(path); + } + get(path) { + return this.#fragmentCache.get(path); + } + remove(path) { + this.#fragmentCache.delete(path); + } +} +const cache = new FragmentCache(); + +/** + * Custom element representing a MerchDataSource. + * + * @attr {string} path - fragment path + */ +export class MerchDataSource extends HTMLElement { + /** + * @type {import('@adobe/mas-commons').AEM} + */ + #aem; + cache = cache; + + /** + * @type {string} fragment path + */ + path; + + static get observedAttributes() { + return ['source', 'path']; + } + + attributeChangedCallback(name, oldValue, newValue) { + this[name] = newValue; + } + + connectedCallback() { + const bucket = + this.getAttribute(ATTR_AEM_BUCKET) ?? + document.querySelector('mas-studio')?.getAttribute(ATTR_AEM_BUCKET); + this.#aem = new AEM(bucket); + this.fetchData(); + } + + refresh() { + this.cache.remove(this.path); + this.fetchData(); + } + + async fetchData() { + let item = cache.get(this.path); + if (!item) { + item = await this.#aem.sites.cf.fragments.getCfByPath(this.path); + } + if (item) { + parseMerchCard(item, this.parentElement); + this.render(); + return; + } + + this.render(); + } + + async render() { + if (!this.isConnected) return; + if (this.parentElement.tagName !== 'MERCH-CARD') return; + await Promise.all( + [ + ...this.parentElement.querySelectorAll( + '[is="inline-price"],[is="checkout-link"]', + ), + ].map((el) => el.onceSettled()), + ); + } +} + +customElements.define('merch-datasource', MerchDataSource); diff --git a/web-components/src/merch-offer-select.js b/web-components/src/merch-offer-select.js index 7891b644..ea80e6d3 100644 --- a/web-components/src/merch-offer-select.js +++ b/web-components/src/merch-offer-select.js @@ -66,7 +66,7 @@ class MerchOfferSelect extends LitElement { const containerEl = container || this.closest(this.getAttribute('container')); return containerEl.querySelector( - `[slot="${slotName}"]:not(merch-offer > *)` + `[slot="${slotName}"]:not(merch-offer > *)`, ); } @@ -112,7 +112,7 @@ class MerchOfferSelect extends LitElement { new CustomEvent(EVENT_OFFER_SELECTED, { detail: this, bubbles: true, - }) + }), ); }); } @@ -171,7 +171,7 @@ class MerchOfferSelect extends LitElement { this.addEventListener( EVENT_MERCH_OFFER_READY, - this.handleOfferSelectReady + this.handleOfferSelectReady, ); const quantitySelect = this.closest('merch-quantity-select'); @@ -183,7 +183,7 @@ class MerchOfferSelect extends LitElement { if (this.manageableMode) { quantitySelect.addEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.#handleOfferSelectionByQuantityFn + this.#handleOfferSelectionByQuantityFn, ); } else { this.defaults = this.saveContainerDefaultValues(); @@ -212,11 +212,11 @@ class MerchOfferSelect extends LitElement { disconnectedCallback() { this.removeEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.#handleOfferSelectionByQuantityFn + this.#handleOfferSelectionByQuantityFn, ); this.removeEventListener( EVENT_MERCH_OFFER_READY, - this.handleOfferSelectReady + this.handleOfferSelectReady, ); this.removeEventListener('focusin', this.handleFocusin); this.removeEventListener('click', this.handleFocusin); @@ -224,7 +224,7 @@ class MerchOfferSelect extends LitElement { get price() { return this.querySelector( - 'merch-offer[aria-selected] [is="inline-price"]' + 'merch-offer[aria-selected] [is="inline-price"]', ); } @@ -253,11 +253,11 @@ class MerchOfferSelect extends LitElement { this.selectOffer( this.selectedOffer ?? this.querySelector('merch-offer[aria-selected]') ?? - this.querySelector('merch-offer') + this.querySelector('merch-offer'), ); this.dispatchEvent( - new CustomEvent(EVENT_MERCH_OFFER_SELECT_READY, { bubbles: true }) + new CustomEvent(EVENT_MERCH_OFFER_SELECT_READY, { bubbles: true }), ); } } diff --git a/web-components/src/merch-offer.css.js b/web-components/src/merch-offer.css.js index 812f288c..43dd8126 100644 --- a/web-components/src/merch-offer.css.js +++ b/web-components/src/merch-offer.css.js @@ -56,7 +56,9 @@ export const styles = css` display: block; height: 14px; position: absolute; - transition: border 0.13s ease-in-out, box-shadow 0.13s ease-in-out; + transition: + border 0.13s ease-in-out, + box-shadow 0.13s ease-in-out; width: 14px; z-index: 0; } @@ -69,7 +71,9 @@ export const styles = css` position: absolute; top: 50%; transform: translateX(-50%) translateY(-50%); - transition: opacity 0.13s ease-out, margin 0.13s ease-out; + transition: + opacity 0.13s ease-out, + margin 0.13s ease-out; } :host(:active) .merch-Radio-button:before { diff --git a/web-components/src/merch-offer.js b/web-components/src/merch-offer.js index 9762458c..82b8a650 100644 --- a/web-components/src/merch-offer.js +++ b/web-components/src/merch-offer.js @@ -73,7 +73,7 @@ class MerchOffer extends LitElement { get price() { return this.querySelector( - 'span[is="inline-price"]:not([data-template="strikethrough"])' + 'span[is="inline-price"]:not([data-template="strikethrough"])', ); } @@ -104,7 +104,7 @@ class MerchOffer extends LitElement { this.planType = offer.planType; await this.updateComplete; this.dispatchEvent( - new CustomEvent(EVENT_MERCH_OFFER_READY, { bubbles: true }) + new CustomEvent(EVENT_MERCH_OFFER_READY, { bubbles: true }), ); } } diff --git a/web-components/src/merch-quantity-select.js b/web-components/src/merch-quantity-select.js index 00e93c24..a2569a98 100644 --- a/web-components/src/merch-quantity-select.js +++ b/web-components/src/merch-quantity-select.js @@ -131,7 +131,7 @@ export class MerchQuantitySelect extends LitElement { ? this.options.indexOf(this.defaultValue) : 0; this.handleMenuOption( - this.defaultValue ? this.defaultValue : this.options[0] + this.defaultValue ? this.defaultValue : this.options[0], ); this.requestUpdate(); } @@ -167,7 +167,7 @@ export class MerchQuantitySelect extends LitElement { { detail: { option: this.selectedValue }, bubbles: true, - } + }, ); this.dispatchEvent(customEvent); } @@ -195,7 +195,7 @@ export class MerchQuantitySelect extends LitElement { > ${option === this.max ? `${option}+` : option} - ` + `, )} `; } diff --git a/web-components/src/merch-search.js b/web-components/src/merch-search.js index 65b136dc..251bf71c 100644 --- a/web-components/src/merch-search.js +++ b/web-components/src/merch-search.js @@ -1,7 +1,10 @@ import { html, LitElement, css } from 'lit'; -import { pushStateFromComponent, parseState } from './deeplink'; import { debounce } from './utils'; -import { deeplink } from './deeplink.js'; +import { + deeplink, + pushStateFromComponent, + parseState, +} from '@adobe/mas-commons'; export class MerchSearch extends LitElement { static properties = { diff --git a/web-components/src/merch-stock.js b/web-components/src/merch-stock.js index 26b24987..7afc95de 100644 --- a/web-components/src/merch-stock.js +++ b/web-components/src/merch-stock.js @@ -51,7 +51,7 @@ export class MerchStock extends LitElement { planType: this.planType, }, bubbles: true, - }) + }), ); } @@ -63,7 +63,7 @@ export class MerchStock extends LitElement { await el.onceSettled(); el.parentElement.setAttribute( 'data-plan-type', - el.value[0].planType + el.value[0].planType, ); }); }); @@ -86,7 +86,7 @@ export class MerchStock extends LitElement { get osi() { if (!this.checked) return; return this.querySelector( - `div[data-plan-type="${this.planType}"] [is="inline-price"]` + `div[data-plan-type="${this.planType}"] [is="inline-price"]`, )?.value?.[0].offerSelectorIds[0]; } } diff --git a/web-components/src/merch-subscription-panel.js b/web-components/src/merch-subscription-panel.js index 43d87747..f84e6b57 100644 --- a/web-components/src/merch-subscription-panel.js +++ b/web-components/src/merch-subscription-panel.js @@ -74,14 +74,14 @@ class MerchSubscriptionPanel extends LitElement { } this.addEventListener( EVENT_MERCH_OFFER_SELECT_READY, - this.handleOfferSelectReady + this.handleOfferSelectReady, ); this.checkOfferSelectReady(); this.addEventListener(EVENT_OFFER_SELECTED, this.handleOfferSelect); this.addEventListener(EVENT_MERCH_STOCK_CHANGE, this.handleStockChange); this.addEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.handleQuantitySelectChange + this.handleQuantitySelectChange, ); } @@ -89,16 +89,16 @@ class MerchSubscriptionPanel extends LitElement { super.disconnectedCallback(); this.removeEventListener( EVENT_MERCH_OFFER_SELECT_READY, - this.handleOfferSelectReady + this.handleOfferSelectReady, ); this.removeEventListener(EVENT_OFFER_SELECTED, this.handleOfferSelect); this.removeEventListener( EVENT_MERCH_STOCK_CHANGE, - this.handleStockChange + this.handleStockChange, ); this.removeEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.handleQuantitySelectChange + this.handleQuantitySelectChange, ); } @@ -151,7 +151,7 @@ class MerchSubscriptionPanel extends LitElement { this.ready = !!this.offerSelect.planType; this.offerSelect.setAttribute('slot', 'offers'); await this.offerSelect.selectOffer( - this.offerSelect.querySelector('merch-offer[aria-selected]') + this.offerSelect.querySelector('merch-offer[aria-selected]'), ); await this.offerSelect.selectedOffer.price.onceSettled(); this.requestUpdate(); @@ -224,5 +224,5 @@ class MerchSubscriptionPanel extends LitElement { window.customElements.define( 'merch-subscription-panel', - MerchSubscriptionPanel + MerchSubscriptionPanel, ); diff --git a/web-components/src/merch-twp-d2p.js b/web-components/src/merch-twp-d2p.js index 3e65c604..b0580702 100644 --- a/web-components/src/merch-twp-d2p.js +++ b/web-components/src/merch-twp-d2p.js @@ -10,7 +10,7 @@ import { EVENT_OFFER_SELECTED, EVENT_MERCH_STORAGE_CHANGE, } from './constants.js'; -import { parseState } from './deeplink'; +import { parseState } from '@adobe/mas-commons'; const TAG_NAME = 'merch-twp-d2p'; const TAB_INDIVIDUALS = 'individuals'; @@ -108,7 +108,11 @@ export class MerchTwpD2P extends LitElement { preselectedTab() { const params = new URLSearchParams(window.location.search); const plan = params.get('plan'); - if (plan === TAB_INDIVIDUALS || plan === TAB_BUSINESS || plan === TAB_EDUCATION) { + if ( + plan === TAB_INDIVIDUALS || + plan === TAB_BUSINESS || + plan === TAB_EDUCATION + ) { return plan; } else { return TAB_INDIVIDUALS; @@ -220,7 +224,7 @@ export class MerchTwpD2P extends LitElement { if (!this.singleCard) return; this.singleCard.setAttribute( 'slot', - this.singleCard.getAttribute('data-slot') + this.singleCard.getAttribute('data-slot'), ); this.singleCard.removeAttribute('data-slot'); this.step = 1; @@ -321,15 +325,15 @@ export class MerchTwpD2P extends LitElement { this.addEventListener(EVENT_MERCH_CARD_READY, this.merchTwpReady); this.subscriptionPanel.addEventListener( EVENT_OFFER_SELECTED, - this.#handleOfferSelected + this.#handleOfferSelected, ); this.addEventListener( EVENT_MERCH_QUANTITY_SELECTOR_CHANGE, - this.handleQuantityChange + this.handleQuantityChange, ); this.addEventListener( EVENT_MERCH_STORAGE_CHANGE, - this.handleStorageChange + this.handleStorageChange, ); } @@ -338,11 +342,11 @@ export class MerchTwpD2P extends LitElement { this.removeEventListener(EVENT_MERCH_CARD_READY, this.merchTwpReady); this.subscriptionPanel.removeEventListener( EVENT_OFFER_SELECTED, - this.#handleOfferSelected + this.#handleOfferSelected, ); this.removeEventListener( EVENT_MERCH_STORAGE_CHANGE, - this.handleStorageChange + this.handleStorageChange, ); } @@ -370,17 +374,28 @@ export class MerchTwpD2P extends LitElement { } get preselectedCardId() { - const preselectedCardIds = parseState()['select-cards']?.split(',').reduce((res, item) => { - const formattedItem = decodeURIComponent(item.trim().toLowerCase()); - formattedItem && res.push(formattedItem); - return res; - }, []) || []; + const preselectedCardIds = + parseState() + ['select-cards']?.split(',') + .reduce((res, item) => { + const formattedItem = decodeURIComponent( + item.trim().toLowerCase(), + ); + formattedItem && res.push(formattedItem); + return res; + }, []) || []; if (preselectedCardIds.length && this.selectedTab === TAB_INDIVIDUALS) { return preselectedCardIds[0]; - } else if (preselectedCardIds.length > 1 && this.selectedTab === TAB_BUSINESS) { + } else if ( + preselectedCardIds.length > 1 && + this.selectedTab === TAB_BUSINESS + ) { return preselectedCardIds[1]; - } else if (preselectedCardIds.length > 2 && this.selectedTab === TAB_EDUCATION) { + } else if ( + preselectedCardIds.length > 2 && + this.selectedTab === TAB_EDUCATION + ) { return preselectedCardIds[2]; } } @@ -390,8 +405,15 @@ export class MerchTwpD2P extends LitElement { ?.querySelector('slot') .assignedElements() .find((cardEl) => { - const cardTitle = cardEl.querySelector('.heading-xs')?.textContent.trim().toLowerCase() || ''; - return this.preselectedCardId && cardTitle.includes(this.preselectedCardId) + const cardTitle = + cardEl + .querySelector('.heading-xs') + ?.textContent.trim() + .toLowerCase() || ''; + return ( + this.preselectedCardId && + cardTitle.includes(this.preselectedCardId) + ); }); } @@ -445,7 +467,7 @@ export class MerchTwpD2P extends LitElement { await this.tabElement?.updateComplete; this.selectCard( allCards.length === 1 ? allCards[0] : this.firstCardInSelectedTab, - true + true, ); } diff --git a/web-components/src/plans-modal.js b/web-components/src/plans-modal.js index 0764f0fd..30b6fb48 100644 --- a/web-components/src/plans-modal.js +++ b/web-components/src/plans-modal.js @@ -106,7 +106,7 @@ export default class PlansModal extends LitElement { if (changedProperties.has('includesLimit')) { this.style.setProperty( '--consonant-plan-modal-includes-limit', - this.includesLimit + this.includesLimit, ); } } @@ -163,7 +163,7 @@ export default class PlansModal extends LitElement { }; const overlay = await Overlay.open( this.shadowRoot.querySelector('sp-dialog-wrapper'), - options + options, ); this.shadowRoot.querySelector('sp-theme').append(overlay); } diff --git a/web-components/src/sidenav/merch-sidenav-checkbox-group.js b/web-components/src/sidenav/merch-sidenav-checkbox-group.js index 192bc883..2cb976fa 100644 --- a/web-components/src/sidenav/merch-sidenav-checkbox-group.js +++ b/web-components/src/sidenav/merch-sidenav-checkbox-group.js @@ -1,5 +1,5 @@ import { html, LitElement, css } from 'lit'; -import { parseState, pushStateFromComponent } from '../deeplink.js'; +import { parseState, pushStateFromComponent } from '@adobe/mas-commons'; export class MerchSidenavCheckboxGroup extends LitElement { static properties = { @@ -91,5 +91,5 @@ export class MerchSidenavCheckboxGroup extends LitElement { customElements.define( 'merch-sidenav-checkbox-group', - MerchSidenavCheckboxGroup + MerchSidenavCheckboxGroup, ); diff --git a/web-components/src/sidenav/merch-sidenav-list.js b/web-components/src/sidenav/merch-sidenav-list.js index ac8f5c04..45d95455 100644 --- a/web-components/src/sidenav/merch-sidenav-list.js +++ b/web-components/src/sidenav/merch-sidenav-list.js @@ -1,5 +1,5 @@ import { html, LitElement, css } from 'lit'; -import { parseState, pushStateFromComponent } from '../deeplink'; +import { parseState, pushStateFromComponent } from '@adobe/mas-commons'; import { headingStyles } from './merch-sidenav-heading.css.js'; import { debounce } from '../utils'; @@ -76,7 +76,7 @@ export class MerchSidenavList extends LitElement { const value = state[this.deeplink] ?? 'all'; if (value) { const element = this.querySelector( - `sp-sidenav-item[value="${value}"]` + `sp-sidenav-item[value="${value}"]`, ); if (!element) return; this.updateComplete.then(() => { @@ -101,7 +101,7 @@ export class MerchSidenavList extends LitElement { item.selected = true; parentNode .querySelectorAll( - 'sp-sidenav-item[expanded],sp-sidenav-item[selected]' + 'sp-sidenav-item[expanded],sp-sidenav-item[selected]', ) .forEach((item) => { if (item.value !== value) { @@ -118,7 +118,7 @@ export class MerchSidenavList extends LitElement { */ selectionChanged({ target: { value, parentNode } }) { this.selectElement( - this.querySelector(`sp-sidenav-item[value="${value}"]`) + this.querySelector(`sp-sidenav-item[value="${value}"]`), ); pushStateFromComponent(this, value); } diff --git a/web-components/src/sidenav/merch-sidenav.js b/web-components/src/sidenav/merch-sidenav.js index 4f1bd7f1..977d68f7 100644 --- a/web-components/src/sidenav/merch-sidenav.js +++ b/web-components/src/sidenav/merch-sidenav.js @@ -149,7 +149,7 @@ export class MerchSideNav extends LitElement { }; const overlay = await window.__merch__spectrum_Overlay.open( this.dialog, - options + options, ); overlay.addEventListener('close', () => { this.modal = false; diff --git a/web-components/src/utils.js b/web-components/src/utils.js index 324ff564..2118d8c6 100644 --- a/web-components/src/utils.js +++ b/web-components/src/utils.js @@ -23,7 +23,7 @@ export const getSlotText = (element, name) => export const dispatchAsyncEvent = ( target, type, - { bubbles = true, cancelable, composed, detail } = {} + { bubbles = true, cancelable, composed, detail } = {}, ) => window.setTimeout(() => target?.dispatchEvent( @@ -32,8 +32,8 @@ export const dispatchAsyncEvent = ( cancelable, composed, detail, - }) - ) + }), + ), ); /** @@ -114,7 +114,7 @@ export function showOffers(offers, filter = () => true) { for (const offer of offers.values()) { offer.container?.classList.toggle( CLASS_NAME_HIDDEN, - !filter(offer, i++) + !filter(offer, i++), ); } } @@ -137,3 +137,21 @@ export function getTextNodes(element) { findTextNodes(element); return textNodes; } + +/** + * Helper function to create an element with attributes + * @param {string} tag + * @param {Object} attributes + * @param {*} innerHTML + * @returns {HTMLElement} + */ +export function createTag(tag, attributes = {}, innerHTML) { + const element = document.createElement(tag); + element.innerHTML = innerHTML; + + // Set attributes + for (const [key, value] of Object.entries(attributes)) { + element.setAttribute(key, value); + } + return element; +} diff --git a/web-components/test/img/cc-logo.png b/web-components/test/img/cc-logo.png deleted file mode 100644 index fc156557..00000000 Binary files a/web-components/test/img/cc-logo.png and /dev/null differ diff --git a/web-components/test/merch-card-collection.test.html.js b/web-components/test/merch-card-collection.test.html.js index c738fb8e..faf34e88 100644 --- a/web-components/test/merch-card-collection.test.html.js +++ b/web-components/test/merch-card-collection.test.html.js @@ -1,11 +1,11 @@ import { runTests } from '@web/test-runner-mocha'; import { expect } from '@esm-bundle/chai'; -import { mockLana } from '/test/mocks/lana.js'; -import { mockFetch } from '/test/mocks/fetch.js'; -import { mockConfig } from '/test/mocks/config.js'; +import { mockLana } from './mocks/lana.js'; +import { mockFetch } from './mocks/fetch.js'; +import { mockConfig } from './mocks/config.js'; -import { init } from '@wcms/commerce'; +import { pushState } from '@adobe/mas-commons'; import { appendMiloStyles, @@ -13,21 +13,21 @@ import { keyDown, toggleLargeDesktop, } from './utils.js'; -import { pushState } from '../src/deeplink.js'; -import '../src/merch-card.js'; import '../src/sidenav/merch-sidenav.js'; import '../src/merch-card-collection.js'; -import '../src/merch-icon.js'; import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from '../src/focus.js'; +import { withWcs } from './mocks/wcs.js'; +import { withLiterals } from './mocks/literals.js'; +import mas from './mocks/mas.js'; const searchParams = new URLSearchParams(document.location.search); const prepareTemplate = ( id, updateSearch = true, - content = document.getElementById('content') + content = document.getElementById('content'), ) => { content.innerHTML = ''; const template = document.getElementById(id); @@ -50,10 +50,10 @@ const sidenav = document.getElementById('sidenav'); if (sidenav) { const templates = [...document.getElementsByTagName('template')].map( ({ id, title }) => - `` + ``, ); sidenav.appendChild( - document.createRange().createContextualFragment(templates.join('\n')) + document.createRange().createContextualFragment(templates.join('\n')), ); const currentTemplate = searchParams.get('template'); if (currentTemplate) { @@ -81,8 +81,8 @@ const shouldSkipTests = runTests(async () => { await toggleLargeDesktop(); mockLana(); - await mockFetch(); - await init(mockConfig()); + await mockFetch(withWcs, withLiterals); + await mas(); if (shouldSkipTests !== 'true') { describe('merch-card-collection web component', () => { let render; @@ -146,7 +146,7 @@ runTests(async () => { await delay(100); expect(visibleCards().length).to.equal(1); expect(merchCards.resultTextSlotName).to.equal( - 'searchResultText' + 'searchResultText', ); }); @@ -158,19 +158,19 @@ runTests(async () => { await delay(100); expect(visibleCards().length).to.equal(10); expect(merchCards.resultTextSlotName).to.equal( - 'searchResultsText' + 'searchResultsText', ); pushState({ search: 'stager' }); await delay(100); expect(visibleCards().length).to.equal(1); expect(merchCards.resultTextSlotName).to.equal( - 'searchResultText' + 'searchResultText', ); pushState({ search: 'cafebabe' }); await delay(100); expect(visibleCards().length).to.equal(0); expect(merchCards.resultTextSlotName).to.equal( - 'noSearchResultsText' + 'noSearchResultsText', ); }); @@ -192,7 +192,7 @@ runTests(async () => { await keyDown(ARROW_DOWN); await keyDown(ARROW_DOWN); expect(document.activeElement.title).to.equal( - 'Lightroom (1TB)' + 'Lightroom (1TB)', ); await keyDown(ARROW_LEFT); expect(document.activeElement.title).to.equal('After Effects'); @@ -216,16 +216,16 @@ runTests(async () => { expect(document.activeElement.title).to.equal('Acrobat Reader'); await keyDown(ARROW_UP); expect(document.activeElement.title).to.equal( - 'Acrobat PDF Pack' + 'Acrobat PDF Pack', ); await keyDown(ARROW_DOWN); await keyDown(ARROW_DOWN); expect(document.activeElement.title).to.equal( - 'Acrobat Standard' + 'Acrobat Standard', ); await keyDown(ARROW_DOWN); expect(document.activeElement.title).to.equal( - 'Adobe Embedded Print Engine' + 'Adobe Embedded Print Engine', ); await keyDown(ARROW_RIGHT); expect(document.activeElement.title).to.equal('Adobe Express'); diff --git a/web-components/test/merch-card.mini-compare.test.html b/web-components/test/merch-card.mini-compare.test.html index 10f68969..3c96ed48 100644 --- a/web-components/test/merch-card.mini-compare.test.html +++ b/web-components/test/merch-card.mini-compare.test.html @@ -93,18 +93,18 @@
<