From 9a46a15def2afecf1d782a93b2be4b95d259edc8 Mon Sep 17 00:00:00 2001 From: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> Date: Thu, 13 Jan 2022 20:16:06 +0330 Subject: [PATCH 01/37] Fix useFacet(...) customQuery implemention (#413) --- packages/composables/src/composables/useFacet/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/composables/src/composables/useFacet/index.ts b/packages/composables/src/composables/useFacet/index.ts index 0d074b200..f42468cc0 100644 --- a/packages/composables/src/composables/useFacet/index.ts +++ b/packages/composables/src/composables/useFacet/index.ts @@ -94,7 +94,7 @@ const factoryParams = { currentPage: productParams.page, }; - const { data } = await context.$magento.api.products(productSearchParams); + const { data } = await context.$magento.api.products(productSearchParams, params?.input.customQuery || {}); Logger.debug('[Result]:', { data }); From ea72b73126245813ea585f04b7510f7b9477c327 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Thu, 20 Jan 2022 08:06:46 +0100 Subject: [PATCH 02/37] chore: release 1.0.0-rc.5.3 (#437) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add gitflow actions (#379) * chore: added base gitflow actions * chore: added base gitflow actions * chore: fixed versioning process * docs: added roadmap to the docs (#380) closes #323 * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * fix(theme): fix preselection sort order when query param is available (#385) Co-authored-by: Bartosz Herba * fix: broken cart after placing order as guest (#386) * fix(theme): passing the email instead of the user-object for creating a guest-cart * fix(composables): remove empty params in array, fails on Magento * test(theme): updated test for attaching guest email address to cart * Update packages/composables/src/composables/useShipping/index.ts Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski Co-authored-by: Heitor Ramon Ribeiro * fix(theme): fix flashing category page (#387) Co-authored-by: Bartosz Herba * fix(theme): fix flashing category page (#388) Co-authored-by: Bartosz Herba * fix: default billing information does not appear on address (#382) * fix(theme): added badge for default-shipping and default-sbilling address * fix(composables): sort addresses, put default shipping and billing address to top * fix(theme): default billing and shipping text can be translated * chore(theme): added translations * fix(composables): removed console.log * chore: upgraded vsf core to 2.5.4 (#389) * chore: updated VSF core version to 2.5.4 * build: updated test GH action * fix(composables): update url resolver clearing patter to remove locale prefix (#390) Co-authored-by: Bartosz Herba * fix(theme): fix links to catch current locale (#391) * fix(theme): M2-25 fix links to catch current locale * Apply suggestions from code review Co-authored-by: Heitor Ramon Ribeiro * test(test-utils): added localePath global mock to the test-utils Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski * style(theme): aligned titles in my account menu (#400) * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): update localisation for all :link bindings (#416) Co-authored-by: Bartosz Herba * docs(theme): update custom queries documentation to be more friendly and explicit (#418) Co-authored-by: Bartosz Herba * chore(theme): removed html-validator (#414) * refactor: update dependencies (#420) * refactor(eslint): updated dependencies - Updated `eslint-plugin-unicorn` to `40.0.0` * refactor(eslint-import): updated dependencies - Updated `eslint-plugin-import` to `2.25.4` * refactor(eslint-jest): updated dependencies - Updated `eslint-plugin-jest` to `25.3.4` * refactor(eslint-typescript): updated dependencies - Updated `@typescript-eslint/eslint-plugin` to `5.9.1` - Updated `@typescript-eslint/parser` to `5.9.1` * refactor(eslint-vue): updated dependencies - Updated `eslint-plugin-vue` to `8.3.0` * refactor(api-client): updated dependencies - Updated `@apollo/client` to `3.5.7` - Updated `dotenv` to `12.0.1` * refactor(theme): updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `babel-jest` to `27.4.6` - Updated `cypress` to `9.2.1` - Updated `dotenv` to `12.0.1` - Updated `jest` to `27.4.7` - Updated `jest-environment-jsdom` to `27.4.6` - Updated `lint-staged` to `12.1.7` - Updated `mocha` to `9.1.4` - Updated `npm-check-updates` to `12.1.0` - Updated `ts-jest` to `27.1.3` * refactor: updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `@babel/plugin-proposal-private-methods` to `7.16.7` - Updated `@commitlint/cli` to `16.0.2` - Updated `@commitlint/config-conventional` to `16.0.0` - Updated `@commitlint/config-lerna-scopes` to `16.0.0` - Updated `@graphql-codegen/cli` to `2.3.1` - Updated `@graphql-codegen/typescript` to `2.4.2` - Updated `@graphql-codegen/typescript-operations` to `2.2.2` - Updated `@graphql-tools/utils` to `8.6.1` - Updated `@rollup/plugin-node-resolve` to `13.1.3` - Updated `@types/jest` to `27.4.0` - Updated `@types/node` to `17.0.8` - Updated `@typescript-eslint/parser` to `5.9.1` - Updated `@vue/eslint-config-typescript` to `10.0.0` - Updated `eslin` to `8.6.0` - Updated `jest` to `27.4.7` - Updated `lint-staged` to `12.1.7` - Updated `npm-check-updates` to `12.1.0` - Updated `rollup` to `2.64.0` - Updated `shx` to `0.3.4` - Updated `ts-jest` to `27.1.3``` * refactor(theme): enables currency switcher on TopBar.vue (#421) * fix(theme): fix 404 issue when redirecting to address details page (#424) Co-authored-by: Bartosz Herba * test: scaffold unit tests in composables and api client package (#419) * test(composables): added jest config * tests(composables): rewritten test + fix in productGetter * tests(composables): updated configuration in jest.config.js * tests(api-client): added tests for api-client + move general config to jest.base.config.js * tests(api-client): added jest configuration + simple test * chore: removed jest-environment-jsdom-sixteen * tests(theme): reverted back and removed jest.base.config.json * test(composables): reverted back and removed jest.base.config.json * test(api-client): reverted back and removed jest.base.config.json * chore: removed jest.base.config.json Co-authored-by: Marcin Kwiatkowski * fix(theme): fix disappearing category sidebar filter change (#423) Co-authored-by: Bartosz Herba * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix(api-client): update default mutation error handling for apollo client (#429) Co-authored-by: Bartosz Herba * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * Fix useFacet(...) customQuery implemention (#413) * chore: updated version number to rc.5.3, updated yarn.lock, fixed cloud action * fix(theme): update localisation for all :link bindings (#449) Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Kevin Gorjan Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> --- .../workflows/deploy-vue-storefront-cloud.yml | 1 + .github/workflows/draft-release-pr.yml | 48 + .github/workflows/merge-release.yml | 49 + .../{publish.yml => publish-npm.yml} | 0 .github/workflows/test.yml | 4 +- .gitignore | 1 + .yarnrc.yml | 1 + docs/.vuepress/config.js | 2 + docs/guide/configuration.md | 35 +- docs/guide/override-queries.md | 90 +- docs/guide/roadmap.md | 33 + docs/plugins/i18n-plugin-diagram.png | Bin 0 -> 229350 bytes docs/plugins/index.md | 28 + docs/yarn.lock | 21048 +++---- internals/eslint-import/package.json | 2 +- internals/eslint-jest/package.json | 2 +- internals/eslint-typescript/package.json | 4 +- internals/eslint-vue/package.json | 2 +- internals/eslint/package.json | 2 +- jest.base.config.js | 58 - lerna.json | 3 +- package.json | 43 +- .../api/storeConfig/storeConfig.spec.ts | 70 + .../__tests__/mockData/api/storeConfig.ts | 58 + .../api-client/__tests__/setup/handlers.ts | 12 + packages/api-client/__tests__/setup/index.ts | 0 .../api-client/__tests__/setup/request.ts | 11 + packages/api-client/__tests__/setup/server.ts | 4 + packages/api-client/jest.config.js | 72 +- packages/api-client/jest.setup.ts | 11 + packages/api-client/package.json | 9 +- .../src/helpers/apiClient/defaultSettings.ts | 2 + packages/api-client/src/index.server.ts | 8 + packages/api-client/src/types/setup.ts | 2 + .../__tests__/getters/productHelpers.spec.ts | 204 +- packages/composables/jest.config.js | 75 +- packages/composables/nuxt/defaultConfig.js | 1 + packages/composables/nuxt/plugin.js | 53 +- packages/composables/package.json | 6 +- .../src/composables/useBilling/index.ts | 2 +- .../src/composables/useCart/index.ts | 4 +- .../src/composables/useConfig/index.ts | 2 +- .../src/composables/useShipping/index.ts | 2 +- .../src/composables/useStore/index.ts | 6 +- .../src/composables/useUrlResolver/index.ts | 2 +- packages/composables/src/dataTypes.ts | 1 + .../composables/src/getters/cartGetters.ts | 14 +- .../composables/src/getters/productGetters.ts | 4 +- .../src/getters/storeConfigGetters.ts | 4 +- .../src/getters/userAddressesGetters.ts | 4 +- packages/theme/components/AppHeader.vue | 10 +- .../theme/components/BottomNavigation.vue | 8 +- packages/theme/components/CartSidebar.vue | 40 +- .../theme/components/CurrencySelector.vue | 29 +- packages/theme/components/LoginModal.vue | 7 - packages/theme/components/SearchResults.vue | 6 +- .../{LocaleSelector.vue => StoreSwitcher.vue} | 94 +- packages/theme/components/TopBar.vue | 18 +- .../theme/components/UserAddressDetails.vue | 32 +- .../components/__tests__/CartSidebar.spec.js | 94 + .../composables/useMagentoConfiguration.ts | 1 + .../composables/useUiNotification/index.ts | 22 +- packages/theme/enums/cookieNameEnum.js | 1 + packages/theme/enums/stockStatusEnum.js | 4 + packages/theme/helpers/cart/addToCart.ts | 9 +- packages/theme/jest.config.js | 41 +- packages/theme/lang/de.js | 3 + packages/theme/lang/en.js | 4 + packages/theme/layouts/default.vue | 7 +- packages/theme/nuxt.config.js | 34 +- packages/theme/package.json | 34 +- packages/theme/pages/Category.vue | 57 +- packages/theme/pages/Checkout.vue | 5 +- packages/theme/pages/Checkout/Billing.vue | 6 +- packages/theme/pages/Checkout/Payment.vue | 6 +- packages/theme/pages/Checkout/Shipping.vue | 6 +- packages/theme/pages/Checkout/UserAccount.vue | 7 +- .../Checkout/__tests__/UserAccount.spec.js | 8 +- packages/theme/pages/MyAccount.vue | 7 +- .../pages/MyAccount/AddressesDetails.vue | 15 +- packages/theme/pages/MyAccount/MyWishlist.vue | 7 +- .../theme/pages/MyAccount/OrderHistory.vue | 4 +- packages/theme/pages/Product.vue | 6 +- packages/theme/pages/Shipping.vue | 2 +- packages/theme/plugins/__tests__/i18n.spec.js | 118 + .../plugins/__tests__/token-expired.spec.js | 71 + packages/theme/plugins/i18n.ts | 91 + packages/theme/plugins/token-expired.js | 27 + .../icons/langs/{de-DE.webp => de_DE.webp} | Bin .../icons/langs/{en-US.webp => en_US.webp} | Bin .../icons/langs/{nl-NL.webp => nl_NL.webp} | Bin packages/theme/test-utils.js | 15 +- .../theme/test-utils/mocks/cartGetters.js | 11 + packages/theme/test-utils/mocks/index.js | 3 + packages/theme/test-utils/mocks/useCart.js | 301 + packages/theme/test-utils/mocks/useUiState.js | 7 + yarn.lock | 46429 +++++++++------- 97 files changed, 37126 insertions(+), 32680 deletions(-) create mode 100644 .github/workflows/draft-release-pr.yml create mode 100644 .github/workflows/merge-release.yml rename .github/workflows/{publish.yml => publish-npm.yml} (100%) create mode 100644 .yarnrc.yml create mode 100644 docs/guide/roadmap.md create mode 100644 docs/plugins/i18n-plugin-diagram.png create mode 100644 docs/plugins/index.md delete mode 100644 jest.base.config.js create mode 100644 packages/api-client/__tests__/api/storeConfig/storeConfig.spec.ts create mode 100644 packages/api-client/__tests__/mockData/api/storeConfig.ts create mode 100644 packages/api-client/__tests__/setup/handlers.ts create mode 100644 packages/api-client/__tests__/setup/index.ts create mode 100644 packages/api-client/__tests__/setup/request.ts create mode 100644 packages/api-client/__tests__/setup/server.ts create mode 100644 packages/api-client/jest.setup.ts rename packages/theme/components/{LocaleSelector.vue => StoreSwitcher.vue} (68%) create mode 100644 packages/theme/components/__tests__/CartSidebar.spec.js create mode 100644 packages/theme/enums/stockStatusEnum.js create mode 100644 packages/theme/lang/de.js create mode 100644 packages/theme/plugins/__tests__/i18n.spec.js create mode 100644 packages/theme/plugins/__tests__/token-expired.spec.js create mode 100644 packages/theme/plugins/i18n.ts create mode 100644 packages/theme/plugins/token-expired.js rename packages/theme/static/icons/langs/{de-DE.webp => de_DE.webp} (100%) rename packages/theme/static/icons/langs/{en-US.webp => en_US.webp} (100%) rename packages/theme/static/icons/langs/{nl-NL.webp => nl_NL.webp} (100%) create mode 100644 packages/theme/test-utils/mocks/cartGetters.js create mode 100644 packages/theme/test-utils/mocks/useCart.js create mode 100644 packages/theme/test-utils/mocks/useUiState.js diff --git a/.github/workflows/deploy-vue-storefront-cloud.yml b/.github/workflows/deploy-vue-storefront-cloud.yml index 330e5a1a7..b72bd0865 100644 --- a/.github/workflows/deploy-vue-storefront-cloud.yml +++ b/.github/workflows/deploy-vue-storefront-cloud.yml @@ -4,6 +4,7 @@ on: branches: - main - develop + - release/* jobs: build: diff --git a/.github/workflows/draft-release-pr.yml b/.github/workflows/draft-release-pr.yml new file mode 100644 index 000000000..238db9d58 --- /dev/null +++ b/.github/workflows/draft-release-pr.yml @@ -0,0 +1,48 @@ +name: "Draft new release" + +on: + workflow_dispatch: + inputs: + version: + description: 'The version you want to release.' + required: true + +jobs: + draft-new-release: + name: "Draft a new release" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Initialize mandatory git config + run: | + git config user.name "GitHub actions" + git config user.email noreply@github.com + + - name: Create release branch + run: git checkout -b release/${{ github.event.inputs.version }} + + - name: Bump version in package.json + run: lerna version "${{ github.event.inputs.version }}" --no-git-tag-version --no-changelog --ignore-changes "*/internals/**" -y + + - name: Commit changelog and manifest files + id: make-commit + run: | + git add . + git commit --message "chore: release ${{ github.event.inputs.version }}" + echo "::set-output name=commit::$(git rev-parse HEAD)" + - name: Push new branch + run: git push origin release/${{ github.event.inputs.version }} + + - name: Create pull request + uses: thomaseizinger/create-pull-request@1.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + head: release/${{ github.event.inputs.version }} + base: main + title: "chore: release version ${{ github.event.inputs.version }}" + reviewers: ${{ github.actor }} + body: | + Hey @${{ github.actor }}! + Remeber to update this PR with the correct information, before merging it :) diff --git a/.github/workflows/merge-release.yml b/.github/workflows/merge-release.yml new file mode 100644 index 000000000..572bf2d0d --- /dev/null +++ b/.github/workflows/merge-release.yml @@ -0,0 +1,49 @@ +name: "Publish new release" + +on: + pull_request: + branches: + - main + types: + - closed + +jobs: + release: + name: Publish new release + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true + steps: + - name: Extract version from branch name (for release branches) + if: startsWith(github.event.pull_request.head.ref, 'release/') + run: | + BRANCH_NAME="${{ github.event.pull_request.head.ref }}" + VERSION=${BRANCH_NAME#release/} + echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV + - name: Extract version from branch name (for hotfix branches) + if: startsWith(github.event.pull_request.head.ref, 'hotfix/') + run: | + BRANCH_NAME="${{ github.event.pull_request.head.ref }}" + VERSION=${BRANCH_NAME#hotfix/} + echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV + - name: Create Release + uses: thomaseizinger/create-release@1.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + target_commitish: ${{ github.event.pull_request.merge_commit_sha }} + tag_name: ${{ env.RELEASE_VERSION }} + name: ${{ env.RELEASE_VERSION }} + draft: false + prerelease: false + + - name: Merge main into develop branch + uses: thomaseizinger/create-pull-request@1.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + head: main + base: develop + title: Merge main into develop branch + body: | + This PR merges the main branch back into develop. + This happens to ensure that the updates that happend on the release branch, i.e. CHANGELOG and manifest updates are also present on the develop branch. diff --git a/.github/workflows/publish.yml b/.github/workflows/publish-npm.yml similarity index 100% rename from .github/workflows/publish.yml rename to .github/workflows/publish-npm.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c8955cada..67f469d92 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,11 +23,11 @@ jobs: - name: Setup node uses: actions/setup-node@v2 with: - node-version: '16' + node-version: '16.13.0' cache: 'yarn' - name: Install dependencies - run: yarn install --frozen-lockfile + run: yarn install - name: Build packages run: yarn build diff --git a/.gitignore b/.gitignore index 5a28cf1cb..11f332738 100644 --- a/.gitignore +++ b/.gitignore @@ -109,6 +109,7 @@ dist .yarn/install-state.gz .pnp.* .vscode/* +.vscode !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 000000000..3186f3f07 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 3e4911718..2ff16e994 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -58,6 +58,7 @@ module.exports = { ['/guide/environments', 'Environments'], ['/guide/functional-catalog', 'Functional catalog'], ['/guide/about', 'About'], + ['/guide/roadmap', 'Roadmap'], ] }, { @@ -105,6 +106,7 @@ module.exports = { { title: 'Reference', children: [ + ['/plugins/', 'Plugins'], ['/api-reference/', 'API Reference'], ] }, diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index 75b81c9e7..5015ec053 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -32,9 +32,42 @@ Then on the `config` folder create a file `dev.json` with your configurations. { "magentoGraphQl": "https://{YOUR_SITE_FRONT_URL}/graphql", // Define Magento GraphQL endpoint "enableMagentoExternalCheckout": false, // Flag if VSF will use External Checkout - "externalCheckoutUrl": "https://{YOUR_SITE_FRONT_URL}", // External checkout URL + "externalCheckoutUrl": "https://{YOUR_SITE_FRONT_URL}", // External checkout URL "externalCheckoutSyncPath": "/vue/cart/sync", // External Checkout synchronization path "nuxtAppEnvironment": "development", // Define nuxt application environment "nuxtAppPort": 3000 // Define nuxt port } ``` + +## Multistore and localization + +Each Magento Store View need to have corresponding locale configuration object in `i18n.locales` array in `nuxt.config.js`. + +### Locale configuration object reference + +`code` (required) - unique identifier of the locale - corresponding to Magento store view code +For other properties please follow official [nuxt-i18n docs](https://i18n.nuxtjs.org/options-reference#locales) + +### Sample configuration + +```json +locales: [ + { + code: 'default', + file: 'en.js', + iso: 'en_US', + }, + { + code: 'german', + file: 'de.js', + iso: 'de_DE', + }, +], + ``` +So for this configuration you need to have two Magento store views with corresponding store codes: `default` and `german` + +## Translations + +There are two steps to translate whole storefront: +1. Add translations in Magento for products and categories if necessary +2. Add translations to files in the `lang` directory diff --git a/docs/guide/override-queries.md b/docs/guide/override-queries.md index 3c2336abd..3e5d6a1ae 100644 --- a/docs/guide/override-queries.md +++ b/docs/guide/override-queries.md @@ -4,47 +4,70 @@ To override one or multiple queries without creating a custom composable for eac ## Examples +### Overriding query +In this example we will override `products` query by adding `image` field and one `custom_attribute`. + +--- +Because queries can be long so it will be best to keep all custom queries in a dedicated directory. +Inside the theme's root create `customQueries` directory, then copy `productList.ts` file from api-client lib into the created directory. Now you can easily modify the query inside your custom queries catalog. As we wanted to add `image` and `custom_attribute`file after the modification will look like the following example: +```typescript +import gql from 'graphql-tag'; + +export default gql` + query productsList($search: String = "", $filter: ProductAttributeFilterInput, $pageSize: Int = 10, $currentPage: Int = 1, $sort: ProductAttributeSortInput) { + products(search: $search, filter: $filter, pageSize: $pageSize, currentPage: $currentPage, sort: $sort) { + aggregations { + attribute_code + label + options { + label + value + count + } + } + items { + ... + image { + url + position + disabled + label + } + custom_attribute + ... + } + page_info { + current_page + page_size + total_pages + } + total_count + } + } +`; + +``` + +Once you prepared custom query you must register it so the application will know where it is and how to use it. Inside the theme's `middleware.config.js`, under `integrations.magento` add `customQueries` field. Import your custom query and configure it as in the following example: + ```js +import customProductsQuery from './customQueries/productList'; + const config = require('./config.js'); const cookieNames = require('./enums/cookieNameEnum'); -import gql from 'graphql-tag'; module.exports = { integrations: { magento: { customQueries: { - /********************** - ** HERE : use the default query key to override it. - ***********************/ - 'products': ({ query, variables, metadata }) => { - query = gql` - ... - `; - return { query, variables } - } - }, - location: '@vue-storefront/magento-api/server', - configuration: { - api: config.get('magentoGraphQl'), - cookies: { - ...cookieNames, - }, - defaultStore: 'default', - externalCheckout: { - enable: config.get('enableMagentoExternalCheckout'), - cmsUrl: config.get('externalCheckoutUrl'), - syncUrlPath: config.get('externalCheckoutSyncPath'), - stores: { - default: config.get('enableMagentoExternalCheckout'), - }, - }, - facets: { - available: ['color', 'size', 'price'], - }, - customApolloHttpLinkOptions: { - useGETForQueries: false, + /** ******************** + ** HERE : use the default query key to override it. + ********************** */ + products: ({ query, variables }) => { + return { query: customProductsQuery, variables }; // Your custom query }, }, + ... }, }, }; @@ -52,3 +75,8 @@ module.exports = { ``` +**Important** + +Keep in mind that only attributes present on `ProductInterface` are accessible via GraphQL without any additional modification on the Magento side. To be able to get any custom attributes you must extend GraphQL schema in the Magento2. Follow [Magento 2 documentation](https://devdocs.magento.com/guides/v2.4/graphql/develop/extend-existing-schema.html) to achieve that. + + diff --git a/docs/guide/roadmap.md b/docs/guide/roadmap.md new file mode 100644 index 000000000..d8d0abb94 --- /dev/null +++ b/docs/guide/roadmap.md @@ -0,0 +1,33 @@ +# Roadmap + +The current goal is to release a stable 1.0.0 version by the end of February. Details below. + +## January 2022 + +- finish multi-store functionality +- performance improvements + - analysis + - improve the speed of communication with Magento + - Redis Caching + - CDNs +- Design QA & improvements + +## February 2022 + +- performance improvements + - meet web core vitals or at least 80 score +- Unit & integration tests for crucial functionalities +- quality assurance +- user acceptance tests +- load tests + +### Milestone: Release stable 1.0.0 version by the end of February + +## March 2022 + +- Accessibility tests & improvements +- extensibility + - improve docs + - add the possibility to add plugins + - add the possibility to install external extensions + - theming diff --git a/docs/plugins/i18n-plugin-diagram.png b/docs/plugins/i18n-plugin-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..aad4d041ee928d2709734c49a1964388038acd8d GIT binary patch literal 229350 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 z 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 z

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 F{vTg{=+yuK literal 0 HcmV?d00001 diff --git a/docs/plugins/index.md b/docs/plugins/index.md new file mode 100644 index 000000000..9308aab00 --- /dev/null +++ b/docs/plugins/index.md @@ -0,0 +1,28 @@ +# Plugins + +Here you can find documentation for global Middlewares + +## i18n + +i18n plugin is responsible for handling store changes after URL changes. + +It checks if locale in i18n module is changes and update `vsf-store` and `vsf-locale` cookie to match new store on both +client and server side. + +### Flow +1. Start: load middleware +2. Read current Magento Store Code from vsf-store cookie +3. Is store code found? + 2. No: Set default locale if isn't already set + 1. End +4. Yes: Check if current store code has corresponding locale in Nuxt.config.js + 1. No: Set default locale if isn't already set + 1. End +5. Yes: If corresponded locale is different than current locale + 1. No: End +6. Yes: set new locale +7. Go forward (load the page with correct locale and date) +8. End + + +![i18n flow](./i18n-plugin-diagram.png) diff --git a/docs/yarn.lock b/docs/yarn.lock index ad6f1cdd0..374b01998 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -1,12018 +1,9030 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 5 - cacheKey: 8 - -"@apollo/client@npm:^3.2.9": - version: 3.4.11 - resolution: "@apollo/client@npm:3.4.11" - dependencies: - "@graphql-typed-document-node/core": ^3.0.0 - "@wry/context": ^0.6.0 - "@wry/equality": ^0.5.0 - "@wry/trie": ^0.3.0 - graphql-tag: ^2.12.3 - hoist-non-react-statics: ^3.3.2 - optimism: ^0.16.1 - prop-types: ^15.7.2 - symbol-observable: ^4.0.0 - ts-invariant: ^0.9.0 - tslib: ^2.3.0 - zen-observable-ts: ~1.1.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 - react: ^16.8.0 || ^17.0.0 - subscriptions-transport-ws: ^0.9.0 - peerDependenciesMeta: - react: - optional: true - subscriptions-transport-ws: - optional: true - checksum: 8e068f737a506d4aae6cc63743fd44d20a0afdeda32b4eb84114a23f863331eeb7a7b8098fcdd08817ec2fbad4515d5d89b7a0ac5a915be60cdd4899d8bcf72f - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/code-frame@npm:7.12.13" - dependencies: - "@babel/highlight": ^7.12.13 - checksum: d0491bb59fb8d7a763cb175c5504818cfd3647321d8eedb9173336d5c47dccce248628ee68b3ed3586c5efc753d8d990ceafe956f707dcf92572a1661b92b1ef - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.13.12, @babel/compat-data@npm:^7.13.15, @babel/compat-data@npm:^7.13.8": - version: 7.13.15 - resolution: "@babel/compat-data@npm:7.13.15" - checksum: f43046d95a78a05b3e69264fcf86afaa547318ba5c49e4bf511df2418f107ed0e64f2e6622c63662c8be3af2ba2b1fd98718c0e128c9c81511b0af8cacc19dbd - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.0, @babel/core@npm:^7.8.4": - version: 7.13.15 - resolution: "@babel/core@npm:7.13.15" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.9 - "@babel/helper-compilation-targets": ^7.13.13 - "@babel/helper-module-transforms": ^7.13.14 - "@babel/helpers": ^7.13.10 - "@babel/parser": ^7.13.15 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.15 - "@babel/types": ^7.13.14 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.1.2 - semver: ^6.3.0 - source-map: ^0.5.0 - checksum: bd331d9dfa33a1e39f881d6afac00d288d46f241e31c61830c341b843ec9f35cfadf5646f522c76f26f5e7a78a01507729a105d8c426329761b163853ca4a467 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.13.9": - version: 7.13.9 - resolution: "@babel/generator@npm:7.13.9" - dependencies: - "@babel/types": ^7.13.0 - jsesc: ^2.5.1 - source-map: ^0.5.0 - checksum: 1b0e9fa1b5ea6656f0abeeedc99ff7bffa455d7bf118f4d17a75d80c439206b4ba3e1071c104b486b7447689512969286cbde505e6169ab38cf437e13ca54225 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: c85c2cf08c18fe2c59cbc2f2f4ae227136c3400263a139c6c689c575aea301ad3f8260e709d2f58b6fb2ee180fdceec508280675f216bac7614c998478184bf1 - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.12.13" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: 798177396af89e801005c125375b624eed6c6d922abc0c0f04361852a87cd81e207d14ed4cfac0884effdb356b71fd0ef5ae2ec31c6a881f1efab974b1565964 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.13, @babel/helper-compilation-targets@npm:^7.13.8, @babel/helper-compilation-targets@npm:^7.9.6": - version: 7.13.13 - resolution: "@babel/helper-compilation-targets@npm:7.13.13" - dependencies: - "@babel/compat-data": ^7.13.12 - "@babel/helper-validator-option": ^7.12.17 - browserslist: ^4.14.5 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5448567b1170827a4d16f362f506a1b44321d2fe7cf7f69285ab22c45289bd0e9d3e277b009b270457217d745df8734236016affcaff18d0c832048c45f6377a - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.13.0, @babel/helper-create-class-features-plugin@npm:^7.13.11": - version: 7.13.11 - resolution: "@babel/helper-create-class-features-plugin@npm:7.13.11" - dependencies: - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-member-expression-to-functions": ^7.13.0 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/helper-replace-supers": ^7.13.0 - "@babel/helper-split-export-declaration": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 98bec2806f9ba562bd223e8e720ae2e8099d774c983e1e85617814922197c55e8f5920b061278d01bb9e386741812a2dd407c0ec07763f4cdef15e0b62c04ecc - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.12.13": - version: 7.12.17 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.17" - dependencies: - "@babel/helper-annotate-as-pure": ^7.12.13 - regexpu-core: ^4.7.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 376a92fd8a84c7f6424be26f14e9d97e931b79fd90398ee708ccf08955122f752b24d38d3db932d918d939ae8224e749e4cf8e3798ba588a16c803ba0d759877 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.2.0": - version: 0.2.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.2.0" - dependencies: - "@babel/helper-compilation-targets": ^7.13.0 - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/traverse": ^7.13.0 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 844c87dbddee896183a3d46a57f3ece936082b77aec7e2e6351493485922b4d26ea0600f71502f86062644d0fdd1ba4fe60a6d5291e7ddfa5c5ef81388d73c20 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.12.13": - version: 7.13.0 - resolution: "@babel/helper-explode-assignable-expression@npm:7.13.0" - dependencies: - "@babel/types": ^7.13.0 - checksum: c386a8197322aeebc097abf3869debddfffecad41dfd86b2f20c5f49bd8fe7a4d5e81a60b147967b9869d2a3b2ff3d6023bc25e1c2f2df3c7e944071880d32be - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-function-name@npm:7.12.13" - dependencies: - "@babel/helper-get-function-arity": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: d7bf4ad3c6af1e718ef5560d505147d0a96b95824000336fd4de729a110d79426867a3d97c1eea39945f110ca943316791bcdf192b006a9e367b32c126ee8265 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-get-function-arity@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: 847ef9f4d4b2dc38574db6b0732c3add1cd65d54bab94c24d319188f2066c9b9ab2b0dda539cae7281d12ec302e3335b11ca3dcfb555566138d213905d00f711 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-hoist-variables@npm:7.13.0" - dependencies: - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 14980ab95c9687f8df72d2ce4a074e2560d16b03de5c5e10382c06b779e1982c99da0625ec338a82fa2fd63048f97a25d46a692e83f5524cab5f9f1402743aff - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.13.0, @babel/helper-member-expression-to-functions@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" - dependencies: - "@babel/types": ^7.13.12 - checksum: 76a5ad6ae60bec5cbef56dc2ef0e08269a985c41137e50bce642dd6c1d228c5454f656ba0de4ec819dfcbced007ec516f3c1ceaffff8d17c3957e4608be0fc8c - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12, @babel/helper-module-imports@npm:^7.8.3": - version: 7.13.12 - resolution: "@babel/helper-module-imports@npm:7.13.12" - dependencies: - "@babel/types": ^7.13.12 - checksum: 9abb5e3acb5630bf519b4205b7784947b64f93d573ed13579d894611392e48cac40b598f67b34c7b342fc6ac6d2262dcdecf125cac8806888328e914b2775c43 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.13.14": - version: 7.13.14 - resolution: "@babel/helper-module-transforms@npm:7.13.14" - dependencies: - "@babel/helper-module-imports": ^7.13.12 - "@babel/helper-replace-supers": ^7.13.12 - "@babel/helper-simple-access": ^7.13.12 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/helper-validator-identifier": ^7.12.11 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.13 - "@babel/types": ^7.13.14 - checksum: 6f708533a79a0879ed3f58d8113cc46361b54e37b67d9548b4314b3e533d693aec5e2416318ba8c599b38dfe681177e59d1e333f0e633f10e376b13def9bed53 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: 9925679d67a809c42b990825ee31f5f02787f385e27301da3343487f6a84482c7e2ebdd2b6d1ed066c309218750f2b7f78ab44dbb25ea6152f71d22839962a35 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/helper-plugin-utils@npm:7.13.0" - checksum: 24f7a44e94662a5dc8bd98ab12625ccd96b11e789ef3f9efd4f6f0eeaf01a13b051a148e709fb1c4e1cacdb536987ea75f4b78509567a0117246ea917195a86b - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-remap-async-to-generator@npm:7.13.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.12.13 - "@babel/helper-wrap-function": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 40589d882990e38cd6d0ac860ded522bcacc9b064e14d3db01d2c661fdae28ee6c5e76bc55ddd0769edd5464b38ce8a396a353ae7f030d187eee9448327e508a - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0, @babel/helper-replace-supers@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-replace-supers@npm:7.13.12" - dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.12 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.12 - checksum: 9ac99070152157e74ecca16e161a3d5977f346cff19109d0ebb943553c3e5e064c4f3319e5517948406ca1990e8feff704726772b54e1b08951261023e072000 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.12.13, @babel/helper-simple-access@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-simple-access@npm:7.13.12" - dependencies: - "@babel/types": ^7.13.12 - checksum: afd0a8d1c7530a5184cd6fc23175d765a3eeb16f35c83090a90cec1010fcca684d238287c2e0f7ea9c0939d52235603986bd73c61e689d600f5dd1d1ef0ca204 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" - dependencies: - "@babel/types": ^7.12.1 - checksum: 9be6093eabc83b43b9af4c736c69d3c5da4497456575654741308f6f6886d8ebd17eacdddf32f1eb0ecc81f66a5562fb7f3b734c5340418da4e8138a958dafc0 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-split-export-declaration@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: adc8954a0b7e44548425f62ce4dc865d3efa288f016852539d3eddaeec13cf4baff3f397b494dc0f609aab51942480891cbe1adc955e05fe048b7f92db2bcf20 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: e604c6bf890704fc46c1ae13bf23afb242b810224ec3403bba67cdbf0d8dabfec4b82123d6dfb18135a0ee3f7f79218583c819363ebb5e04a0a49d8418db7fce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.15.7": - version: 7.15.7 - resolution: "@babel/helper-validator-identifier@npm:7.15.7" - checksum: f041c28c531d1add5cc345b25d5df3c29c62bce3205b4d4a93dcd164ccf630350acba252d374fad8f5d8ea526995a215829f27183ba7ce7ce141843bf23068a6 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/helper-validator-option@npm:7.12.17" - checksum: 940e7b78dc05508d726b721e06dfdbfd56fd8a56522ee37e9d6f3ed9bef6df5dba82a1d74434e7670b0e5e5caa699f1454a63254199df3cddc2a0829acf75e36 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-wrap-function@npm:7.13.0" - dependencies: - "@babel/helper-function-name": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: dab4018cd2ec18056035f2771cb0f9bbdbaaeebaa33e022b76412b768157ad0ff9e3ff6a5cf6eeab6f3c43986a1c1e09610714bb5cdc5259607baf9bdb36fbd5 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.13.10": - version: 7.13.10 - resolution: "@babel/helpers@npm:7.13.10" - dependencies: - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 3f55d6b7b051d7e172c70576c42be8c1df21e2447455baabc1074967dbc71c6990bcf42a31ebaf4319aae0e2e8259103568616478b3f4b2976162d4286ff7d2b - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.12.13": - version: 7.13.10 - resolution: "@babel/highlight@npm:7.13.10" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 2f33624c8e0947101fd72ca8d2af291cd9560bcb3ed63299e5f95a70e64c2a435922d915ede6760f30ff23942589fe42b962b6b8138f868abaa6f7abd4d4f5e9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.12.13, @babel/parser@npm:^7.13.15": - version: 7.13.15 - resolution: "@babel/parser@npm:7.13.15" - bin: - parser: ./bin/babel-parser.js - checksum: 3e97fb0e3e7a007d96b0245d6b7da7c38fd041a502f8127d78acc4939f1fa0243eb76f2263c7ccad7a0f909e53216fe71b846c8ed791b5dea6416d174013e2ad - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.13.12" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 4064a70fcdd6552596404a57e4e50ac5300a9eb8792e86719199f2b2a610e9f6412a0509d32c8d249818d7b6387715b57a6a5b3c4316e6ed4af60e38e87b1e0a - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.13.15": - version: 7.13.15 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.15" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-remap-async-to-generator": ^7.13.0 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b604fbbae496361f58cdd94e5137040375a057f2de6e6b5d4df27103d2c6d53830a8380da45cfb759cc91516884a7183c61d41e99521e2a024aa93f1983d55a7 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/plugin-proposal-class-properties@npm:7.13.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e3cdfacb2d36c66204e3bf99b85feb521daed6e2c3d424f10eb3f722fe20ca0a2560fe9f5a01e5170a34a4f160e9ff02eb678bed81ee130f1c9d990ce8cd711c - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.8.3": - version: 7.13.15 - resolution: "@babel/plugin-proposal-decorators@npm:7.13.15" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.13.11 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-decorators": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4df254970a30bdf862325ef6bb0eeef9016b28e1e920e72475f7fb95324476e0cd532a10ae38226d43229609ff5f7d3cbab814260007e388f9aa3f05b42505b5 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.13.8" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3f780fd496fee7e38ac9e76520dcfd95e23e3601d08b1c19a167e49f0e7456b20564e8076b649df21091a9d6098896b3e520da0f711571d6dff9298ba2d31cdd - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abca5e051c129cbe929f8b1b339622e3805f623f9b0ca91f838f33c8efd6c757cc259895c59e60af364b3a874ae6a90d168e63ce9bd8e8ed729dcfebcfce8df0 - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-json-strings@npm:7.13.8" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ad4e3021685d78d510963415fc11a350828e0ada4567de20d2cbe50ca49d07b021a5c547b630290f5f17e7b6e9d3a1470f1c8a3180cf04a88fa43de6990ccfbc - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.13.8" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b5cf7b2e8d0a5e7f874a922db6062f3a80748fe06e4327df53b9d89fa24bc8ccf1e6ba591a93231dd364b57e5ea6415d16476b1cee986b886356e78329eedf0b - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.13.8" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 89e5af79e29f19ae3a3b7fcce4f66c436df72441c17e8f0d366e0ad275406f74fe044f15d78e985f27bd4ea785065ff92aa8ef983d1b38dfabf90fc3387d70ea - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5885b8c8ffca56f6d9b5cf7430b6dbb5526c1f07664b584f79069d1d87ca6ad6a9eeb987e71b07def8c5d79cf527734be530c3907c0c3a74faa0a214c6c53b42 - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.13.8" - dependencies: - "@babel/compat-data": ^7.13.8 - "@babel/helper-compilation-targets": ^7.13.8 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ae92617c672e1d47979c809bd90b20c4e7d269769776dd705f519634a165d113de8ef05739a557b3aad0cb6884986b82d287dcb63211c07b66dca43ac66c8bb - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.13.8" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e690499fe20baaa493c88457e59624d032ae573cfccd0eafc3dd6b1ba45efa2a8393085afe0c61d5037eaeb2a1cdc58a2cac6e5d569330bdc86b47e360a7235c - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.13.12" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f427936174cb2846727d6c06da1bfe5745528905f2ddf8c123e2b3b6280815e7534cb5d2b52b12bed4c4c24102f0a1cd7d222fc9c796808665a742d6a525fcb0 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-proposal-private-methods@npm:7.13.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3c8cdc29b371d16898a0dc01dd67f4269bb6b2985e79ff11449428414a3993a52b24ab61dbfe080352548a72bab28b9e99fe2108c40eacb8f5f9dfa9cb50f7d5 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.12.13, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c93f96c65f3ba21ad5eb203f1e47c15e1c3addf57d7a27463a82bd7487835ecc081a7ddb8602f87721ecc1a9e2f01d65ee9d286bfeb93d8e8b2c54d3897769e2 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-decorators@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-decorators@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ac7e977d8e2b3ecc7cd30e4165d280e237642d399724df48eaac52ea2dc414b1a5f23db3d95b7400ef5900d7237c0e1d54cb16fbbf215c0cd45ece0b243e71c3 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.2.0, @babel/plugin-syntax-jsx@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-jsx@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 30697ad4607a9339b06c2648c2d128ce6865c3d2d14049b422c5ca060d6532978bb1008e086df402d365fda04fbafe9bd4ad9f62d78ef2e7a7063459b59645c0 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 74cf8c8b8715ec0de6c55b96af4907cfa3bbf87dbaecdc4c30acac8c30d281d62c578001faf8f99e1884e1ccb933f5a919eb184c542b92fcef7bdefe64482c39 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbff8005c7f855990e0a1d9ce3e9d8836118bcc53da5e27f8449d89e1328ec0abbd91e16520f6eb60d8c95c037acddef246a6c84ec2d1ab6ae838d20691c933b - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.13.0" - dependencies: - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-remap-async-to-generator": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d2c5930781d7a5b93fcbec2b28e6de2fe5af44263840310e9042402e832829844bab4c2e561bf48e3538ad4c77264b4896fd679e930c8c489f760719c6050c85 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a0e843afe18a83308a786e8838f9aa2274ffee3b3385c62d61ccc36267273b043700c180050cc944af64281c55870ba7a1eaed6d2866ca1bbc59789c42a86d6f - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoping@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f4a96cd1acd6b32e7b294998bd9febbbd10ac4bad550623fc596692ea339156c4ebf09c7ac10b6951792412ce8dfb40df3c6a39d52c67f9968745651e213d4e6 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-classes@npm:7.13.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.12.13 - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-replace-supers": ^7.13.0 - "@babel/helper-split-export-declaration": ^7.12.13 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d627424baf2e1667a872c9b9995855a05f4795e94477440320d9c21a92e8af224c82c896c5d212d65c1be4aa8b8c8918b675f571b9ef9f1ea4a38f664aeab365 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-computed-properties@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 258663c9f10b28f91dbedf17dc1346fc7b0341db859bbd6fe199bb663f97f65cfd33673728939a5008ac7a600afeaba79851a0fdb65b5d2e434e4e3a697d26af - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5e580ee25221134d612be714d1d4faa30429bd9789e9311ea44eff6d3ea660a0264ed29ee15e0c22ce8357d78855950524a228a826bf4b697f12f91d4cc7017c - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.12.13, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 084f028be4a1e534b8b4e96176656fca2a2d2603564f7df434934d11b7cd154feaae8f12a443f5522c9d09e96b4214194d1bc84745832b6ff4029a8eef85879a - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 11a7a5f905ab4a2cef70eae6ee01d700fd6c8c7d83ffca3b5bca6c95dc4e367c2b44780b1f765f3d4f1719429c90fdac54cc314c54ce3d9e480b22bcc45fc261 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.13" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5e7db7df2ad944ab52f7669a70a2a1d58a6af239be9cbe46cf2b85291d848fce27923f4f5e6594cce813ea3a7d3ce7a124db490ab18b88061c463e86f67eb9d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-for-of@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9441f12520b2446f7ec2010f7b5cb6c193ba71b8bb65359b85e7e8616783d830850a4ac05d966f720497e6621835cf27ab8ff967db28c59c5535b6b311672e8f - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-function-name@npm:7.12.13" - dependencies: - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1330ba357664efd17050bc89a2c3a0bc0c31aa82c4aa42616fbbfdf6aff2093aa2f07a8f486fde493fa3859a8b6f2986b5a583cf392bfa8ddfcd47a71f05d253 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13ac72edd9c960d0d248c6a73fa2ba7b748e5051a21fd409cb48ab9d133b852ef0d281d6dc6f803e8b619236284d8171c50f025b7721aff9bf719ec39792521c - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 922d24402d6d79aef19ab53879f45cb0ae4dd6756634d36bd77e8fc95d2003fab7b156e41dd7fccca1dd296363ba43c14b5344ded282e17e9fd9f02701a2f54e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-modules-amd@npm:7.13.0" - dependencies: - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6397f52013e6ac28fd5500dc62ce00603fafdc624d37a3f7ad4c5220fe11a75e3221e8674c186d95937b4038f993a4a08fd428fcc98a558d46b3ce66ec91cc0b - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.13.8" - dependencies: - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-simple-access": ^7.12.13 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 19c7d8bbca37b21fd5b4134e7cbc3fceddd9b1fc2b58a9f824775acde00bb50709f3357ada9c79bf6578f94c3a147d7da93be1eb726a4d8b7b199cd75102199e - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.13.8" - dependencies: - "@babel/helper-hoist-variables": ^7.13.0 - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-validator-identifier": ^7.12.11 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 36628a3398bebd138c23adb4ad2505ddfecd0f9a8fce3915a727f9bb9afac3a42b94d0bed73a79e3cd34b21eb9dbd3baebd212299302e567a856ba870b0deff8 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-modules-umd@npm:7.13.0" - dependencies: - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 08d2bf8eac8f8ad1836c6c8c4811848a41d43bcc43dd4e2dd8fd40ff30e38f1261b2a51eba9c4b1b3b19f08b45b90b0aa5b9f0bf7bc54b558d8c42d2fbe249d6 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8ef970be543c3c52a58171f98359472b7015a1572fd19005d7a98f2d783d80b5c7f99ebeaf2cc531e034ccf83baad80927722d9b1067eb1d1033b9292d265cdd - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-new-target@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ecc3d910d42dac6bc2e02fa2e58285c1bf8c79295172fbbade8b13217f3d305209f24c29ff93c28745122b46fdbb93aaea9e9ebd390337a36949ddc48d1e1da8 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-object-super@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - "@babel/helper-replace-supers": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 558d660ad0d8121da3c6f874a06335309009a329179642f50afe2ff1b6a326cc552c849711dae79a8a755ca3c640e17cfc1a4fa58bd731c6c84b65dceca2e80d - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-parameters@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 277c914ce5580f06ee0ed06fb3e80df38be0f7dad41b3632ae6f7ea4cd2c6e1ecc2bb93342a719e8957bf4b4f98188f8d035f38aad2de6b5920507a1042bbd84 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-property-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6cca236d52d7ba7e506bf9448ff7ef9ac135e7c912aaa882a2f6cb8cda2acf97fc7f87fc0975f0375848db64151e1bf4f370aad0e88501a33c8848f1b838705 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.13.15": - version: 7.13.15 - resolution: "@babel/plugin-transform-regenerator@npm:7.13.15" - dependencies: - regenerator-transform: ^0.14.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e4c253945bc27c6ae9a41b1190b62b03d8f951879f41c58b097b3e63006e3b24dc93e8754d9cb4f95693851e669208329ea281f4a9a79a5dd33043fb45300c2a - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-reserved-words@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 61bee23ba9659e79da585d886a70340c1ec64d02bd37d18952249b6f0b62015bc81c04a25f34c7960916fe3fac72f091a15fc55d6220cb194a053b2d0c0e9539 - languageName: node - linkType: hard - -"@babel/plugin-transform-runtime@npm:^7.11.0": - version: 7.13.15 - resolution: "@babel/plugin-transform-runtime@npm:7.13.15" - dependencies: - "@babel/helper-module-imports": ^7.13.12 - "@babel/helper-plugin-utils": ^7.13.0 - babel-plugin-polyfill-corejs2: ^0.2.0 - babel-plugin-polyfill-corejs3: ^0.2.0 - babel-plugin-polyfill-regenerator: ^0.2.0 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d52bda711815a82674e390b8ef4887dbf8116eb66eca3c23b3ae4b3ed37022a09b80aed86b44d2a3399b281d8ca341329293e12d6f4aea9991459434537131ba - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 32322d9a3bc9426e717b19c83bc224f20c766fe4b99a5a8a68cdc2b6d24403d017d6340ea50c5b9e6c31a4f7a8427bc7d0bb9cabf9f8d80762af081cad1a2d60 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-spread@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-skip-transparent-expression-wrappers": ^7.12.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f885e68cc4f91f8e3fb2f0a4b182ab52182a542b2d3511360313965053410c89058ff0de64007cae3ee212787f63074730d8c9b3888c6dfbbf039fad694c792b - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 41b9e016589441e985db2e5a7c7e907bbbbeb19876d82efc9482db9beb929c29e3f1ad8edbab7906a406bc41a55aee6708147c2ed3e4f9a7a3285aa9e723b7b4 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-template-literals@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": ^7.13.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 463c8462fcfb33c8875d4ebc7d2826d2a5019b00bd5c05a6c890d969e72c9010c33a1033a934347d8b51734854602b8afc96f3439d1402890787d988bfc935dd - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6dbe460c12d6924348ae4e75f34143d39db73cb7a52bcd16a61de78cf9f9d000e7b95be0e2221d75a79150f703195a895c436782b72442c4456a1ea30a061ecd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cfc34c5ab4438e89cb50c93059066d78aa6eaf957e33a00eb7aae76fe1de53aa8c956a6be9cd9d956a3a4df8090b490bcc5021958546e61785095e492f5bb180 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.12.13 - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b472c8403b33dbd707f33e0c819433299bbfb0b776dae241b2285b684e8c705bb3afb78bebec18475d4678a845826525288b354568c425112139b885cda730c2 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.11.0": - version: 7.13.15 - resolution: "@babel/preset-env@npm:7.13.15" - dependencies: - "@babel/compat-data": ^7.13.15 - "@babel/helper-compilation-targets": ^7.13.13 - "@babel/helper-plugin-utils": ^7.13.0 - "@babel/helper-validator-option": ^7.12.17 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.13.12 - "@babel/plugin-proposal-async-generator-functions": ^7.13.15 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-dynamic-import": ^7.13.8 - "@babel/plugin-proposal-export-namespace-from": ^7.12.13 - "@babel/plugin-proposal-json-strings": ^7.13.8 - "@babel/plugin-proposal-logical-assignment-operators": ^7.13.8 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-numeric-separator": ^7.12.13 - "@babel/plugin-proposal-object-rest-spread": ^7.13.8 - "@babel/plugin-proposal-optional-catch-binding": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-proposal-private-methods": ^7.13.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.12.13 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-top-level-await": ^7.12.13 - "@babel/plugin-transform-arrow-functions": ^7.13.0 - "@babel/plugin-transform-async-to-generator": ^7.13.0 - "@babel/plugin-transform-block-scoped-functions": ^7.12.13 - "@babel/plugin-transform-block-scoping": ^7.12.13 - "@babel/plugin-transform-classes": ^7.13.0 - "@babel/plugin-transform-computed-properties": ^7.13.0 - "@babel/plugin-transform-destructuring": ^7.13.0 - "@babel/plugin-transform-dotall-regex": ^7.12.13 - "@babel/plugin-transform-duplicate-keys": ^7.12.13 - "@babel/plugin-transform-exponentiation-operator": ^7.12.13 - "@babel/plugin-transform-for-of": ^7.13.0 - "@babel/plugin-transform-function-name": ^7.12.13 - "@babel/plugin-transform-literals": ^7.12.13 - "@babel/plugin-transform-member-expression-literals": ^7.12.13 - "@babel/plugin-transform-modules-amd": ^7.13.0 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/plugin-transform-modules-systemjs": ^7.13.8 - "@babel/plugin-transform-modules-umd": ^7.13.0 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.12.13 - "@babel/plugin-transform-new-target": ^7.12.13 - "@babel/plugin-transform-object-super": ^7.12.13 - "@babel/plugin-transform-parameters": ^7.13.0 - "@babel/plugin-transform-property-literals": ^7.12.13 - "@babel/plugin-transform-regenerator": ^7.13.15 - "@babel/plugin-transform-reserved-words": ^7.12.13 - "@babel/plugin-transform-shorthand-properties": ^7.12.13 - "@babel/plugin-transform-spread": ^7.13.0 - "@babel/plugin-transform-sticky-regex": ^7.12.13 - "@babel/plugin-transform-template-literals": ^7.13.0 - "@babel/plugin-transform-typeof-symbol": ^7.12.13 - "@babel/plugin-transform-unicode-escapes": ^7.12.13 - "@babel/plugin-transform-unicode-regex": ^7.12.13 - "@babel/preset-modules": ^0.1.4 - "@babel/types": ^7.13.14 - babel-plugin-polyfill-corejs2: ^0.2.0 - babel-plugin-polyfill-corejs3: ^0.2.0 - babel-plugin-polyfill-regenerator: ^0.2.0 - core-js-compat: ^3.9.0 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ac936e6154c90ec683c573cf48070a41931a8993e8a73c3e2a231130b3ef969c368e2e44b2c3ad288a089fb34ef67b31ec9bc191f3bc13a0c5aafb53e7aed4b6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.4": - version: 0.1.4 - resolution: "@babel/preset-modules@npm:0.1.4" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7c6500be06be9a341e377eb63292a4a22d0da2b4fb8c68714aff703ddb341cbd58e37d4119d64fc3e602f73801103af471fca2c60b4c1e48e08eea3e6b1afc93 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.11.0, @babel/runtime@npm:^7.8.4": - version: 7.13.10 - resolution: "@babel/runtime@npm:7.13.10" - dependencies: - regenerator-runtime: ^0.13.4 - checksum: 9229c12ad2b0ba28f64fb920ef132a04742ad860939cc2a163dd2472831e40b4a72aba2b9eb3bcf02e3f03c773a06a6a8d829440d3888c1493f81198133f2152 - languageName: node - linkType: hard - -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/parser": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: e0377316317ff55c794ec79f70d8f27b5cd3323ce76278ade525c264af669952b09613288221c76ee4abd49626a5f014a60ec4a637694c9121a1b77f820792d0 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.13, @babel/traverse@npm:^7.13.15": - version: 7.13.15 - resolution: "@babel/traverse@npm:7.13.15" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.9 - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.13.15 - "@babel/types": ^7.13.14 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3892ca8afedd2bbbfacee395ab29498f3155ed53a8e0eef8ed8299ab722f741a851e000dad1ce1c687352e99868656603d33491dd3d87d28b66a41e049d61061 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.14, @babel/types@npm:^7.4.4": - version: 7.13.14 - resolution: "@babel/types@npm:7.13.14" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 - to-fast-properties: ^2.0.0 - checksum: ba3d0415572de602e7cfdfb64cd541c1391cefccdcbdb226eb5a4c2d06a9cdb86defc7789bc19d45cae38580b04a5ddef6a9db67284c398af30217fe489fe802 - languageName: node - linkType: hard - -"@babel/types@npm:^7.8.3": - version: 7.16.0 - resolution: "@babel/types@npm:7.16.0" - dependencies: - "@babel/helper-validator-identifier": ^7.15.7 - to-fast-properties: ^2.0.0 - checksum: 5b483da5c6e6f2394fba7ee1da8787a0c9cddd33491271c4da702e49e6faf95ce41d7c8bf9a4ee47f2ef06bdb35096f4d0f6ae4b5bea35ebefe16309d22344b7 - languageName: node - linkType: hard - -"@commercetools/sdk-auth@npm:^3.0.1": - version: 3.0.12 - resolution: "@commercetools/sdk-auth@npm:3.0.12" - dependencies: - "@commercetools/sdk-middleware-http": ^6.0.11 - lodash.defaultsdeep: ^4.6.0 - qss: 2.0.3 - checksum: 2a000f7805c76104db136a58065fd0a187478bcd3eccc9f3909066a6a08ba6ca1af7279e52f30b60c888edd3e9c99d7d1eebdac50293ef2f13deb274a5cd537d - languageName: node - linkType: hard - -"@commercetools/sdk-middleware-http@npm:^6.0.11": - version: 6.0.11 - resolution: "@commercetools/sdk-middleware-http@npm:6.0.11" - checksum: f80cce845d31e0fd148f00b77d513f4e4e49d967a2728d41fa3e1518e6bacf757c19451d8ff3bc24d3399ce69e99ed458637cca1779d3309d0f1454299a94391 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.0.1": - version: 1.1.2 - resolution: "@gar/promisify@npm:1.1.2" - checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217 - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:^3.0.0": - version: 3.1.0 - resolution: "@graphql-typed-document-node/core@npm:3.1.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 582eb2006012a29bdcf72d223e3fec1a1ccdac8f4e249bd92cb68412e9881b4f7aa9ed9c74a495a2aa988904aaa4b8aa7b21bf0cb8c7aed700b8150f5818ef3f - languageName: node - linkType: hard - -"@microsoft/api-documenter@npm:^7.13.7": - version: 7.13.49 - resolution: "@microsoft/api-documenter@npm:7.13.49" - dependencies: - "@microsoft/api-extractor-model": 7.13.7 - "@microsoft/tsdoc": 0.13.2 - "@rushstack/node-core-library": 3.40.2 - "@rushstack/ts-command-line": 4.9.0 - colors: ~1.2.1 - js-yaml: ~3.13.1 - resolve: ~1.17.0 - bin: - api-documenter: bin/api-documenter - checksum: 132be239950661d23b18ce7dd16f5cd09c5680c7461c49c0f3737849c27afc3d9dcdebe49c6b959ac00ca12a993dfc60672a24d53b429ead6fed5e7e87096b3b - languageName: node - linkType: hard - -"@microsoft/api-extractor-model@npm:7.13.7": - version: 7.13.7 - resolution: "@microsoft/api-extractor-model@npm:7.13.7" - dependencies: - "@microsoft/tsdoc": 0.13.2 - "@microsoft/tsdoc-config": ~0.15.2 - "@rushstack/node-core-library": 3.40.2 - checksum: 84fef85fb201ba228e6fb37c947f390826ba640ac3c8bf8ec4479c813d5529781b27be23e89bc29f54c1434cfc492aec1e6a2753b4384a1f90a4413cd1d3ade2 - languageName: node - linkType: hard - -"@microsoft/api-extractor@npm:^7.18.3": - version: 7.18.9 - resolution: "@microsoft/api-extractor@npm:7.18.9" - dependencies: - "@microsoft/api-extractor-model": 7.13.7 - "@microsoft/tsdoc": 0.13.2 - "@microsoft/tsdoc-config": ~0.15.2 - "@rushstack/node-core-library": 3.40.2 - "@rushstack/rig-package": 0.3.0 - "@rushstack/ts-command-line": 4.9.0 - colors: ~1.2.1 - lodash: ~4.17.15 - resolve: ~1.17.0 - semver: ~7.3.0 - source-map: ~0.6.1 - typescript: ~4.3.5 - bin: - api-extractor: bin/api-extractor - checksum: 97661c0cbe7529ee506ebf90b17674785e945f3f6c167b82afc059042b509247a08673821d64af9ef737c954fce201b30fca470716ed3fffa8b86f63ec218fe3 - languageName: node - linkType: hard - -"@microsoft/tsdoc-config@npm:~0.15.2": - version: 0.15.2 - resolution: "@microsoft/tsdoc-config@npm:0.15.2" - dependencies: - "@microsoft/tsdoc": 0.13.2 - ajv: ~6.12.6 - jju: ~1.4.0 - resolve: ~1.19.0 - checksum: 85eb7808d4e4541199437f39e6aed235aaece0a6d0fd05c0b923067d494d20baca483fc6871880d09630f6d4e62b8bb99af0fde503eb2b2ded1b7ae5f74dfaf3 - languageName: node - linkType: hard - -"@microsoft/tsdoc@npm:0.13.2": - version: 0.13.2 - resolution: "@microsoft/tsdoc@npm:0.13.2" - checksum: 70948c5647495ef99752ff500e0f612c1fcf3476ea663ace19937e4d2f86fd78f0ad92ea5876d67e06b421f347d571b3d9e49c444935dc267768d5afd15581f8 - languageName: node - linkType: hard - -"@mrmlnc/readdir-enhanced@npm:^2.2.1": - version: 2.2.1 - resolution: "@mrmlnc/readdir-enhanced@npm:2.2.1" - dependencies: - call-me-maybe: ^1.0.1 - glob-to-regexp: ^0.3.0 - checksum: d3b82b29368821154ce8e10bef5ccdbfd070d3e9601643c99ea4607e56f3daeaa4e755dd6d2355da20762c695c1b0570543d9f84b48f70c211ec09c4aaada2e1 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:^1.1.2": - version: 1.1.3 - resolution: "@nodelib/fs.stat@npm:1.1.3" - checksum: 318deab369b518a34778cdaa0054dd28a4381c0c78e40bbd20252f67d084b1d7bf9295fea4423de2c19ac8e1a34f120add9125f481b2a710f7068bcac7e3e305 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^1.0.0": - version: 1.1.0 - resolution: "@npmcli/fs@npm:1.1.0" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: e435b883b4f8da8c95a820f458cabb7d86582406eed5ad79fc689000d3e2df17e1f475c4903627272c001357cabc70d8b4c62520cbdae8cfab1dfdd51949f408 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 - languageName: node - linkType: hard - -"@rushstack/node-core-library@npm:3.40.2": - version: 3.40.2 - resolution: "@rushstack/node-core-library@npm:3.40.2" - dependencies: - "@types/node": 10.17.13 - colors: ~1.2.1 - fs-extra: ~7.0.1 - import-lazy: ~4.0.0 - jju: ~1.4.0 - resolve: ~1.17.0 - semver: ~7.3.0 - timsort: ~0.3.0 - z-schema: ~3.18.3 - checksum: 16b8df209cd67405cd82c0c653b79d02635f1a57cb6405942393ee4093704041f647e8928d0717aade19f66c125855dfee22c157ed3ae7ce00b8965fe4440013 - languageName: node - linkType: hard - -"@rushstack/rig-package@npm:0.3.0": - version: 0.3.0 - resolution: "@rushstack/rig-package@npm:0.3.0" - dependencies: - resolve: ~1.17.0 - strip-json-comments: ~3.1.1 - checksum: 7b25fbb7ce3daf9f6f9a885dcc392be8ef65a8c42d65a21b68a1cf019b119b6d3845eeae4892eb01116521d2b05d7dcce68b134eaaaf23b59974a06a2af1621c - languageName: node - linkType: hard - -"@rushstack/ts-command-line@npm:4.9.0": - version: 4.9.0 - resolution: "@rushstack/ts-command-line@npm:4.9.0" - dependencies: - "@types/argparse": 1.0.38 - argparse: ~1.0.9 - colors: ~1.2.1 - string-argv: ~0.3.1 - checksum: b9964f6f5d4cc045778ce6912c3ef878eb3dfebcc08e38c76e9b782ed77579b9b5f7f0e76b22ec569ada0653d6d961fcf6acd21f5e6986cc860bb8bbcd5a475a - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^0.14.0": - version: 0.14.0 - resolution: "@sindresorhus/is@npm:0.14.0" - checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^1.1.2": - version: 1.1.2 - resolution: "@szmarczak/http-timer@npm:1.1.2" - dependencies: - defer-to-connect: ^1.0.1 - checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - -"@types/argparse@npm:1.0.38": - version: 1.0.38 - resolution: "@types/argparse@npm:1.0.38" - checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1": - version: 7.1.3 - resolution: "@types/glob@npm:7.1.3" - dependencies: - "@types/minimatch": "*" - "@types/node": "*" - checksum: e0eef12285f548f15d887145590594a04ccce7f7e645fb047cbac18cb093f25d507ffbcc725312294c224bb78cf980fce33e5807de8d6f8a868b4186253499d4 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.5": - version: 7.0.7 - resolution: "@types/json-schema@npm:7.0.7" - checksum: ea3b409235862d28122751158f4054e729e31ad844bd7b8b23868f38c518047b1c0e8e4e7cc293e02c31a2fb8cfc8a4506c2de2a745cf78b218e064fb8898cd4 - languageName: node - linkType: hard - -"@types/keyv@npm:^3.1.1": - version: 3.1.3 - resolution: "@types/keyv@npm:3.1.3" - dependencies: - "@types/node": "*" - checksum: b5f8aa592cc21c16d99e69aec0976f12b893b055e4456d90148a610a6b6088e297b2ba5f38f8c8280cef006cfd8f9ec99e069905020882619dc5fc8aa46f5f27 - languageName: node - linkType: hard - -"@types/minimatch@npm:*": - version: 3.0.4 - resolution: "@types/minimatch@npm:3.0.4" - checksum: 583a174116b56f405e8f45680fd06ee674442543cd875b8570a046bd2695fdcfb84ffd8b7ef4c84e11e2ba0fe7e467fc6fd95e134d389ebcefc2ddefd01ea9c8 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 14.14.41 - resolution: "@types/node@npm:14.14.41" - checksum: 8fc205d411742fba8f12bf255423427481bdb371035b2c32db7167642fc1cff2bdfc2007ffc5ddbfe2c09f0df851d2df9f2199fac1f2b0046c1d6ccb2894cffd - languageName: node - linkType: hard - -"@types/node@npm:10.17.13": - version: 10.17.13 - resolution: "@types/node@npm:10.17.13" - checksum: fe9f1574869344b0e58f5877c13903e4445356b921c976ca63ea2c8d286c3d4aded317011030dd4be7b94d5e3766a601cb7cfe3eda496bd6aef1846ab8c6c09b - languageName: node - linkType: hard - -"@types/node@npm:>=6": - version: 16.9.1 - resolution: "@types/node@npm:16.9.1" - checksum: 41afcf183a22d59323a0199dd7e0f46591247f45fc08a4434edb26d56dc279ae4fdb80f37989ddd7a0f45e3857c4933e6e82057ede09c5a829f77e373e680375 - languageName: node - linkType: hard - -"@types/q@npm:^1.5.1": - version: 1.5.4 - resolution: "@types/q@npm:1.5.4" - checksum: 0842d7d71b5f102dcc2d78f893d0b42c1149f8cdc194d09e7a00be3187999ee3041e535357344818f8fee1b5e216b06bb7df7754d0fe08bd8aca38d3c45f1af6 - languageName: node - linkType: hard - -"@types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" - dependencies: - "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 - languageName: node - linkType: hard - -"@types/zen-observable@npm:0.8.0": - version: 0.8.0 - resolution: "@types/zen-observable@npm:0.8.0" - checksum: fa3f1b3d82948d83f33f9fedc858e39f9c57cfd31d995a81ffc69bc0b51e16d28cad0ea9147aaddcd9809c70c2c3be88b496a3ea17c65f8b4ced59b764273b65 - languageName: node - linkType: hard - -"@types/zen-observable@npm:0.8.3, @types/zen-observable@npm:^0.8.0": - version: 0.8.3 - resolution: "@types/zen-observable@npm:0.8.3" - checksum: 08c88354abcf03a2176a2ec32e07da1f25fdad94fbc2f419bea53d77deb04ad4759518b4fe3fc695e61065dd4bdf7c8bd26b5211a6cd5be2233872806bdee48d - languageName: node - linkType: hard - -"@vue-storefront/commercetools-api@npm:~1.2.0": - version: 1.2.4 - resolution: "@vue-storefront/commercetools-api@npm:1.2.4" - dependencies: - "@apollo/client": ^3.2.9 - "@commercetools/sdk-auth": ^3.0.1 - "@vue-storefront/core": ^2.3.4 - apollo-cache-inmemory: ^1.6.6 - apollo-client: ^2.6.10 - apollo-link: ^1.2.14 - apollo-link-context: ^1.0.20 - apollo-link-error: ^1.1.13 - apollo-link-http: ^1.5.17 - apollo-link-retry: ^2.2.16 - graphql: ^14.5.8 - graphql-tag: ^2.10.1 - isomorphic-fetch: ^2.2.1 - checksum: caf3d63f78ab2037a7a1424592c5773f5493bbf2b78282cd7ea77b99d46632991fd77388ea0863a02ba04697f14a8d48a435d6272c340a6e0d8a2cc60b6f6568 - languageName: node - linkType: hard - -"@vue-storefront/core@npm:^2.3.4": - version: 2.4.1 - resolution: "@vue-storefront/core@npm:2.4.1" - dependencies: - "@vue/composition-api": 1.0.0-beta.21 - axios: 0.21.1 - express: ^4.17.1 - is-https: ^3.0.2 - lodash-es: ^4.17.15 - vue: ^2.6.11 - checksum: 3d5893076bf24322aee77407cd1726c4838191603d55f3cb89c88fd1f6c81bb3facbcd05bf0315b3404d1b92fafc0ccf987802d06a704c50f7880f44af8a3fb5 - languageName: node - linkType: hard - -"@vue/babel-helper-vue-jsx-merge-props@npm:^1.2.1": - version: 1.2.1 - resolution: "@vue/babel-helper-vue-jsx-merge-props@npm:1.2.1" - checksum: 1fad42dfb93d6d008705f6d302df202596ebbf6a910f50627e42ea66efa624b828cbdc4f626937500e9c92dc31c59e3f1e19206e4b388e8464e64afe863354f4 - languageName: node - linkType: hard - -"@vue/babel-helper-vue-transform-on@npm:^1.0.2": - version: 1.0.2 - resolution: "@vue/babel-helper-vue-transform-on@npm:1.0.2" - checksum: 5a03d293ad8841d276c86cc1071f3bcd3e8d47571e5f9a8ca1c0147a7a8c50c65768fc416140b5edda7d429bdd8e8ab1bf52ff010540e61015ac3f0cd6da6f4e - languageName: node - linkType: hard - -"@vue/babel-plugin-jsx@npm:^1.0.3": - version: 1.0.5 - resolution: "@vue/babel-plugin-jsx@npm:1.0.5" - dependencies: - "@babel/helper-module-imports": ^7.0.0 - "@babel/plugin-syntax-jsx": ^7.0.0 - "@babel/template": ^7.0.0 - "@babel/traverse": ^7.0.0 - "@babel/types": ^7.0.0 - "@vue/babel-helper-vue-transform-on": ^1.0.2 - camelcase: ^6.0.0 - html-tags: ^3.1.0 - svg-tags: ^1.0.0 - checksum: 8a4745db9778484c0e1376eed34aeddd25d377c9d4058c5c53cd30a3d820ad4f280e12a9126c2403943aa82a570cd733b5de53268216bba72e29cedd28d0b654 - languageName: node - linkType: hard - -"@vue/babel-plugin-transform-vue-jsx@npm:^1.2.1": - version: 1.2.1 - resolution: "@vue/babel-plugin-transform-vue-jsx@npm:1.2.1" - dependencies: - "@babel/helper-module-imports": ^7.0.0 - "@babel/plugin-syntax-jsx": ^7.2.0 - "@vue/babel-helper-vue-jsx-merge-props": ^1.2.1 - html-tags: ^2.0.0 - lodash.kebabcase: ^4.1.1 - svg-tags: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d00b7b02ce73b434c44e7068dc1f3d81037511fa3b99f9ae4105224ce78b99619b9c8e4c47aba55a41e2844478e2c27a96fc8b667aa94d11c7d50e77ca82aa87 - languageName: node - linkType: hard - -"@vue/babel-preset-app@npm:^4.1.2": - version: 4.5.12 - resolution: "@vue/babel-preset-app@npm:4.5.12" - dependencies: - "@babel/core": ^7.11.0 - "@babel/helper-compilation-targets": ^7.9.6 - "@babel/helper-module-imports": ^7.8.3 - "@babel/plugin-proposal-class-properties": ^7.8.3 - "@babel/plugin-proposal-decorators": ^7.8.3 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-jsx": ^7.8.3 - "@babel/plugin-transform-runtime": ^7.11.0 - "@babel/preset-env": ^7.11.0 - "@babel/runtime": ^7.11.0 - "@vue/babel-plugin-jsx": ^1.0.3 - "@vue/babel-preset-jsx": ^1.2.4 - babel-plugin-dynamic-import-node: ^2.3.3 - core-js: ^3.6.5 - core-js-compat: ^3.6.5 - semver: ^6.1.0 - peerDependencies: - "@babel/core": "*" - core-js: ^3 - vue: ^2 || ^3.0.0-0 - peerDependenciesMeta: - core-js: - optional: true - vue: - optional: true - checksum: 804f01a7f019f8e5a57e2080fd5cfd3081fb5fc94131a37ecfbeb37f79226d38970157ffeaa1b28d300e37237165faa8d4c0bf2a76c7f411352c84ad4df23f94 - languageName: node - linkType: hard - -"@vue/babel-preset-jsx@npm:^1.2.4": - version: 1.2.4 - resolution: "@vue/babel-preset-jsx@npm:1.2.4" - dependencies: - "@vue/babel-helper-vue-jsx-merge-props": ^1.2.1 - "@vue/babel-plugin-transform-vue-jsx": ^1.2.1 - "@vue/babel-sugar-composition-api-inject-h": ^1.2.1 - "@vue/babel-sugar-composition-api-render-instance": ^1.2.4 - "@vue/babel-sugar-functional-vue": ^1.2.2 - "@vue/babel-sugar-inject-h": ^1.2.2 - "@vue/babel-sugar-v-model": ^1.2.3 - "@vue/babel-sugar-v-on": ^1.2.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 304b521ba9ac143c797f28675d2f1542e686a78dd64417ef184b34f2fecd960bdd9d2fcdcfbb3a558cb95e773dd3853b96fd7a1daa7c8c73d554a54616f154b7 - languageName: node - linkType: hard - -"@vue/babel-sugar-composition-api-inject-h@npm:^1.2.1": - version: 1.2.1 - resolution: "@vue/babel-sugar-composition-api-inject-h@npm:1.2.1" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f3a6fa8b9626acf11c2a28ac13056904cb09a1bc58a98d06483b549d4a0aa690e48b6ebe7305fa81fa9f4ccd1519f880b8b14e876fc28c91c202c7a7fc7b1bd8 - languageName: node - linkType: hard - -"@vue/babel-sugar-composition-api-render-instance@npm:^1.2.4": - version: 1.2.4 - resolution: "@vue/babel-sugar-composition-api-render-instance@npm:1.2.4" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 73e86378222a6e2aaf91e6bcfacf40208195c7c8cad616f083fb61fd07123a3a159f47bd4439ff3d679d340f228e4b915eaebfcf026d0f6e9a5deb0a87a99751 - languageName: node - linkType: hard - -"@vue/babel-sugar-functional-vue@npm:^1.2.2": - version: 1.2.2 - resolution: "@vue/babel-sugar-functional-vue@npm:1.2.2" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d188419e891e712de4865104ae205cee18a6b98e090628fe125e0744b1bb0982db1516d63c6b67bf4d7acb11960407cd3838b4285f4a23ea559a47b249d67b46 - languageName: node - linkType: hard - -"@vue/babel-sugar-inject-h@npm:^1.2.2": - version: 1.2.2 - resolution: "@vue/babel-sugar-inject-h@npm:1.2.2" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fe63c4c06c7f4709b3ed0d9756d6830257f53276a3d417ce827dba376d4ae8dd5d647134550624a0f8c58d0fdd3fd662bfc8347d192081640f4c7d584a90bd2 - languageName: node - linkType: hard - -"@vue/babel-sugar-v-model@npm:^1.2.3": - version: 1.2.3 - resolution: "@vue/babel-sugar-v-model@npm:1.2.3" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - "@vue/babel-helper-vue-jsx-merge-props": ^1.2.1 - "@vue/babel-plugin-transform-vue-jsx": ^1.2.1 - camelcase: ^5.0.0 - html-tags: ^2.0.0 - svg-tags: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6af4d076cedecf1f23577088f8f62e987fb936f9cfadb3ab3465b8605ca313bd4549169536efb2aed7ebd972b1b04d38297a96bc65b40021356e184dfc9043a5 - languageName: node - linkType: hard - -"@vue/babel-sugar-v-on@npm:^1.2.3": - version: 1.2.3 - resolution: "@vue/babel-sugar-v-on@npm:1.2.3" - dependencies: - "@babel/plugin-syntax-jsx": ^7.2.0 - "@vue/babel-plugin-transform-vue-jsx": ^1.2.1 - camelcase: ^5.0.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3c7330502f02b318b37ed6a2827f3c4caa6af02f73cea3e80b3c640be38d610d8813cb079e6f8d4a73728e269eb50518d58b26900223a408aee90590205b1de3 - languageName: node - linkType: hard - -"@vue/component-compiler-utils@npm:^3.1.0": - version: 3.2.0 - resolution: "@vue/component-compiler-utils@npm:3.2.0" - dependencies: - consolidate: ^0.15.1 - hash-sum: ^1.0.2 - lru-cache: ^4.1.2 - merge-source-map: ^1.1.0 - postcss: ^7.0.14 - postcss-selector-parser: ^6.0.2 - prettier: ^1.18.2 - source-map: ~0.6.1 - vue-template-es2015-compiler: ^1.9.0 - dependenciesMeta: - prettier: - optional: true - checksum: 26ac79b12b414cfb21f7eba8e7827254a28f1e491002f36eeb67ff8e4a014d2008b56d5da0ccb6a23353ec095b089c4e581679793dafd69a2d852f115838ada5 - languageName: node - linkType: hard - -"@vue/composition-api@npm:1.0.0-beta.21": - version: 1.0.0-beta.21 - resolution: "@vue/composition-api@npm:1.0.0-beta.21" - dependencies: - tslib: ^2.0.1 - peerDependencies: - vue: ">= 2.5 < 3" - checksum: b2cd180358e291b237f0f91f79e1bc15d8d257224bd4835ed6b6361120b7c90707a829c98e6406d78637b3646630fe616eb3592cf19f639ab0dd410c6530f7db - languageName: node - linkType: hard - -"@vuepress/core@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/core@npm:1.8.2" - dependencies: - "@babel/core": ^7.8.4 - "@vue/babel-preset-app": ^4.1.2 - "@vuepress/markdown": 1.8.2 - "@vuepress/markdown-loader": 1.8.2 - "@vuepress/plugin-last-updated": 1.8.2 - "@vuepress/plugin-register-components": 1.8.2 - "@vuepress/shared-utils": 1.8.2 - autoprefixer: ^9.5.1 - babel-loader: ^8.0.4 - cache-loader: ^3.0.0 - chokidar: ^2.0.3 - connect-history-api-fallback: ^1.5.0 - copy-webpack-plugin: ^5.0.2 - core-js: ^3.6.4 - cross-spawn: ^6.0.5 - css-loader: ^2.1.1 - file-loader: ^3.0.1 - js-yaml: ^3.13.1 - lru-cache: ^5.1.1 - mini-css-extract-plugin: 0.6.0 - optimize-css-assets-webpack-plugin: ^5.0.1 - portfinder: ^1.0.13 - postcss-loader: ^3.0.0 - postcss-safe-parser: ^4.0.1 - toml: ^3.0.0 - url-loader: ^1.0.1 - vue: ^2.6.10 - vue-loader: ^15.7.1 - vue-router: ^3.4.5 - vue-server-renderer: ^2.6.10 - vue-template-compiler: ^2.6.10 - vuepress-html-webpack-plugin: ^3.2.0 - vuepress-plugin-container: ^2.0.2 - webpack: ^4.8.1 - webpack-chain: ^6.0.0 - webpack-dev-server: ^3.5.1 - webpack-merge: ^4.1.2 - webpackbar: 3.2.0 - checksum: 062f2b82ea95ec0ca500a676eeb8e11ea0ca49c5221239a0331a74be2594ac0bebe9f3264a1804d772e056fd8155b575fba0536a7fe55f10aac0bf00e7de262c - languageName: node - linkType: hard - -"@vuepress/markdown-loader@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/markdown-loader@npm:1.8.2" - dependencies: - "@vuepress/markdown": 1.8.2 - loader-utils: ^1.1.0 - lru-cache: ^5.1.1 - checksum: 91f049ee025d990a39cbfc05ac3ca4081b057779b1050a8b67d1397d3e541e70f7f25ed7c1c193f83f8a92ea500877530fef3f861bdc898ef0cc85055a937f21 - languageName: node - linkType: hard - -"@vuepress/markdown@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/markdown@npm:1.8.2" - dependencies: - "@vuepress/shared-utils": 1.8.2 - markdown-it: ^8.4.1 - markdown-it-anchor: ^5.0.2 - markdown-it-chain: ^1.3.0 - markdown-it-emoji: ^1.4.0 - markdown-it-table-of-contents: ^0.4.0 - prismjs: ^1.13.0 - checksum: ce5795cc77e3827c2a8d5ab7c29af9cb87a54fb17a31a99b572a3921d392d04196ee4b00e7920d31d361f9fd1bd0567d8032d937f79006cc7f368cf418619364 - languageName: node - linkType: hard - -"@vuepress/plugin-active-header-links@npm:1.8.2, @vuepress/plugin-active-header-links@npm:^1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-active-header-links@npm:1.8.2" - dependencies: - lodash.debounce: ^4.0.8 - checksum: d997a5b90e9d7df7fca55f67aa35203eeec647859e4677ffed78632364e928d604d50153b74c33ef2c5ef0f99f14ae551206a475e38fcdb58600346247d286d3 - languageName: node - linkType: hard - -"@vuepress/plugin-back-to-top@npm:^1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-back-to-top@npm:1.8.2" - dependencies: - lodash.debounce: ^4.0.8 - checksum: 1e286e7ecb408887d4ca18f4d95f3dcb1b4e5f93b807432372a71820c457f30b9d988a3b0d74e37c7eb3199201bf4eed0187b56b424f19f8a9912e8fe3020c24 - languageName: node - linkType: hard - -"@vuepress/plugin-last-updated@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-last-updated@npm:1.8.2" - dependencies: - cross-spawn: ^6.0.5 - checksum: 054abf076759c70f992dd01c2a550452c658a98d03528dea896e0b751654534db88dbcb0781abf12f74c5b45c9624f69717a8e1459acc480676d152924ee766f - languageName: node - linkType: hard - -"@vuepress/plugin-medium-zoom@npm:^1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-medium-zoom@npm:1.8.2" - dependencies: - medium-zoom: ^1.0.4 - checksum: 5540f286c24b1d9cb5741a5e85863a2a0c1c2451d80b1d1ec23406d17715d05a849d75353c126b97a8c2d6479ba7346216379b725a6cbafdd643226ea1323c78 - languageName: node - linkType: hard - -"@vuepress/plugin-nprogress@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-nprogress@npm:1.8.2" - dependencies: - nprogress: ^0.2.0 - checksum: 16839e052fbe459823488c67ee81d0eb550e1e3477f22a6eaac8a1c9ffc7ba3cf6b44c70665478728b6795f0ddff63be8300621808f86d0da2e17c8b55c350ab - languageName: node - linkType: hard - -"@vuepress/plugin-register-components@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-register-components@npm:1.8.2" - dependencies: - "@vuepress/shared-utils": 1.8.2 - checksum: a9de3d88388522e718edffc839543973c1856dbc12dc88cac83622a8fb5d3e9fc6ee452c896094b7d6e32ef99c90e537c675476d74354c4fdf953b6becc98836 - languageName: node - linkType: hard - -"@vuepress/plugin-search@npm:1.8.2, @vuepress/plugin-search@npm:^1.8.2": - version: 1.8.2 - resolution: "@vuepress/plugin-search@npm:1.8.2" - checksum: ce4d55b54f1bfd3f66a66ced96e8887a7e8ed7d56582da76339ff97769e3a15320be07014bd98032af9a4a580d06d3ccaf603a3b0bf9a71dca57f0c9345ae72b - languageName: node - linkType: hard - -"@vuepress/shared-utils@npm:1.8.2, @vuepress/shared-utils@npm:^1.2.0": - version: 1.8.2 - resolution: "@vuepress/shared-utils@npm:1.8.2" - dependencies: - chalk: ^2.3.2 - escape-html: ^1.0.3 - fs-extra: ^7.0.1 - globby: ^9.2.0 - gray-matter: ^4.0.1 - hash-sum: ^1.0.2 - semver: ^6.0.0 - toml: ^3.0.0 - upath: ^1.1.0 - checksum: 27cfec2b35645e231685d6f0eaf1bf84dde3c50c4b7be878379c714d83b2915f93aa00844af75a2d4466e5ed4180e2bdb703f299a93cc877025d326a32f9ee98 - languageName: node - linkType: hard - -"@vuepress/theme-default@npm:1.8.2": - version: 1.8.2 - resolution: "@vuepress/theme-default@npm:1.8.2" - dependencies: - "@vuepress/plugin-active-header-links": 1.8.2 - "@vuepress/plugin-nprogress": 1.8.2 - "@vuepress/plugin-search": 1.8.2 - docsearch.js: ^2.5.2 - lodash: ^4.17.15 - stylus: ^0.54.8 - stylus-loader: ^3.0.2 - vuepress-plugin-container: ^2.0.2 - vuepress-plugin-smooth-scroll: ^0.0.3 - checksum: 897c0c3c44e3ee8403eac2c43b0c23584041264565336f7b85216e3827de79af5cc3ef91eccf58b7319bf3774e3ba8c616b4db6e9d1574630d8ba5f4d7b11413 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ast@npm:1.9.0" - dependencies: - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 - checksum: 8a9838dc7fdac358aee8daa75eefa35934ab18dafb594092ff7be79c467ebe9dabb2543e58313c905fd802bdcc3cb8320e4e19af7444e49853a7a24e25138f75 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" - checksum: d3aeb19bc30da26f639698daa28e44e0c18d5aa135359ef3c54148e194eec46451a912d0506099d479a71a94bc3eef6ef52d6ec234799528a25a9744789852de - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" - checksum: 9179d3148639cc202e89a118145b485cf834613260679a99af6ec487bbc15f238566ca713207394b336160a41bf8c1b75cf2e853b3e96f0cc73c1e5c735b3f64 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" - checksum: dcb85f630f8a2e22b7346ad4dd58c3237a2cad1457699423e8fd19592a0bd3eacbc2639178a1b9a873c3ac217bfc7a23a134ff440a099496b590e82c7a4968d5 - languageName: node - linkType: hard - -"@webassemblyjs/helper-code-frame@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" - dependencies: - "@webassemblyjs/wast-printer": 1.9.0 - checksum: a28fa057f7beff0fd14bff716561520f8edb8c9c56c7a5559451e6765acfb70aaeb8af718ea2bd2262e7baeba597545af407e28eb2eff8329235afe8605f20d1 - languageName: node - linkType: hard - -"@webassemblyjs/helper-fsm@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" - checksum: 374cc510c8f5a7a07d4fe9eb7036cc475a96a670b5d25c31f16757ac8295be8d03a2f29657ff53eaefa9e8315670a48824d430ed910e7c1835788ac79f93124e - languageName: node - linkType: hard - -"@webassemblyjs/helper-module-context@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - checksum: 55e8f89c7ea1beaa78fad88403f3753b8413b0f3b6bb32d898ce95078b3e1d1b48ade0919c00b82fc2e3813c0ab6901e415f7a4d4fa9be50944e2431adde75a5 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" - checksum: 280da4df3c556f73a1a02053277f8a4be481de32df4aa21050b015c8f4d27c46af89f0417eb88e486df117e5df4bccffae593f78cb1e79f212d3b3d4f3ed0f04 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - checksum: b8f7bb45d4194074c82210211a5d3e402a5b5fa63ecae26d2c356ae3978af5a530e91192fb260f32f9d561b18e2828b3da2e2f41c59efadb5f3c6d72446807f0 - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ieee754@npm:1.9.0" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 7fe4a217ba0f7051e2cfef92919d4a64fac1a63c65411763779bd50907820f33f440255231a474fe3ba03bd1d9ee0328662d1eae3fce4c59b91549d6b62b839b - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/leb128@npm:1.9.0" - dependencies: - "@xtuc/long": 4.2.2 - checksum: 4ca7cbb869530d78d42a414f34ae53249364cb1ecebbfb6ed5d562c2f209fce857502f088822ee82a23876f653a262ddc34ab64e45a7962510a263d39bb3f51a - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/utf8@npm:1.9.0" - checksum: e328a30ac8a503bbd015d32e75176e0dedcb45a21d4be051c25dfe89a00035ca7a6dbd8937b442dd5b4b334de3959d4f5fe0b330037bd226a28b9814cd49e84f - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/helper-wasm-section": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-opt": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - "@webassemblyjs/wast-printer": 1.9.0 - checksum: 1997e0c2f4051c33239587fb143242919320bc861a0af03a873c7150a27d6404bd2e063c658193288b0aa88c35aadbe0c4fde601fe642bae0743a8c8eda52717 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - checksum: 2456e84e8e6bedb7ab47f6333a0ee170f7ef62842c90862ca787c08528ca8041061f3f8bc257fc2a01bf6e8d1a76fddaddd43418c738f681066e5b50f88fe7df - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - checksum: 91242205bdbd1aa8045364a5338bfb34880cb2c65f56db8dd19382894209673699fb31a0e5279f25c7e5bcd8f3097d6c9ca84d8969d9613ef2cf166450cc3515 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - checksum: 493f6cfc63a5e16073056c81ff0526a9936f461327379ef3c83cc841000e03623b6352704f6bf9f7cb5b3610f0032020a61f9cca78c91b15b8e995854b29c098 - languageName: node - linkType: hard - -"@webassemblyjs/wast-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-parser@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/floating-point-hex-parser": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-code-frame": 1.9.0 - "@webassemblyjs/helper-fsm": 1.9.0 - "@xtuc/long": 4.2.2 - checksum: 705dd48fbbceec7f6bed299b8813631b242fd9312f9594dbb2985dda86c9688048692357d684f6080fc2c5666287cefaa26b263d01abadb6a9049d4c8978b9db - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-printer@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 - "@xtuc/long": 4.2.2 - checksum: 3d1e1b2e84745a963f69acd1c02425b321dd2e608e11dabc467cae0c9a808962bc769ec9afc46fbcea7188cc1e47d72370da762d258f716fb367cb1a7865c54b - languageName: node - linkType: hard - -"@wry/context@npm:^0.4.0": - version: 0.4.4 - resolution: "@wry/context@npm:0.4.4" - dependencies: - "@types/node": ">=6" - tslib: ^1.9.3 - checksum: ad0a978ee23943b5fc3dbc087e935bd2bc477d688aeb1f88c161604d2b8f7bf7aefcfe61b585aeddc6fd3d1c0bbf77f501436d3c150dc8390a43a8ad57418831 - languageName: node - linkType: hard - -"@wry/context@npm:^0.6.0": - version: 0.6.1 - resolution: "@wry/context@npm:0.6.1" - dependencies: - tslib: ^2.3.0 - checksum: 4187863175061a8f54659f124e3e5c202e010b2b65bf886b4de9777ce8a45cf183b6f6d88f1f537002cbcbea52103a2eadc337d494106490def10acaf9522c5d - languageName: node - linkType: hard - -"@wry/equality@npm:^0.1.2": - version: 0.1.11 - resolution: "@wry/equality@npm:0.1.11" - dependencies: - tslib: ^1.9.3 - checksum: 1a26a0fd11e3e3a6a197d9a54a5bec523caf693daa24ad2709f496e43dd3cd12290a0d17df81f8a783437795f6c64a1ca2717cdac6e79022bde4450c11e705c9 - languageName: node - linkType: hard - -"@wry/equality@npm:^0.5.0": - version: 0.5.2 - resolution: "@wry/equality@npm:0.5.2" - dependencies: - tslib: ^2.3.0 - checksum: 19a01043a0583663924ed9f4ea109818b9b4cb540877ca75ea49545689f54c6bfc69e725a8b3b129a2ac15ea368fd40bbb94c22e7a5e4ec370f7c4697e64b8b1 - languageName: node - linkType: hard - -"@wry/trie@npm:^0.3.0": - version: 0.3.1 - resolution: "@wry/trie@npm:0.3.1" - dependencies: - tslib: ^2.3.0 - checksum: c3f6b200aefc64b5cd9976b7ed0dd22852eb826d835c5dccd3d03ef788d258af50ca64e8de654e5f812134afdb9d5890f334c8de2276d0dca1751785694654f9 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec - languageName: node - linkType: hard - -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.7": - version: 1.3.7 - resolution: "accepts@npm:1.3.7" - dependencies: - mime-types: ~2.1.24 - negotiator: 0.6.2 - checksum: 27fc8060ffc69481ff6719cd3ee06387d2b88381cb0ce626f087781bbd02201a645a9febc8e7e7333558354b33b1d2f922ad13560be4ec1b7ba9e76fc1c1241d - languageName: node - linkType: hard - -"acorn@npm:^6.4.1": - version: 6.4.2 - resolution: "acorn@npm:6.4.2" - bin: - acorn: bin/acorn - checksum: 44b07053729db7f44d28343eed32247ed56dc4a6ec6dff2b743141ecd6b861406bbc1c20bf9d4f143ea7dd08add5dc8c290582756539bc03a8db605050ce2fb4 - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^2.2.0": - version: 2.2.0 - resolution: "agentkeepalive@npm:2.2.0" - checksum: f781322103c600df4b8af2f8a58263d3fafc30f3b78ab3072b690396948c98bd570d33aa929f1accaad4b4cc0bb71756b599154874920a24cb2db4c24f756ee9 - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.1.3": - version: 4.1.4 - resolution: "agentkeepalive@npm:4.1.4" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: d49c24d4b333e9507119385895a583872f4f53d62764a89be165926e824056a126955bae4a6d3c6f7cd26f4089621a40f7b27675f7868214d82118f744b9e82d - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-errors@npm:^1.0.0": - version: 1.0.1 - resolution: "ajv-errors@npm:1.0.1" - peerDependencies: - ajv: ">=5.0.0" - checksum: 2c9fc02cf58f9aae5bace61ebd1b162e1ea372ae9db5999243ba5e32a9a78c0d635d29ae085f652c61c941a43af0b2b1acdb255e29d44dc43a6e021085716d8c - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 - languageName: node - linkType: hard - -"ajv@npm:^6.1.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:~6.12.6": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: ^3.1.1 - fast-json-stable-stringify: ^2.0.0 - json-schema-traverse: ^0.4.1 - uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"algoliasearch@npm:^3.24.5": - version: 3.35.1 - resolution: "algoliasearch@npm:3.35.1" - dependencies: - agentkeepalive: ^2.2.0 - debug: ^2.6.9 - envify: ^4.0.0 - es6-promise: ^4.1.0 - events: ^1.1.0 - foreach: ^2.0.5 - global: ^4.3.2 - inherits: ^2.0.1 - isarray: ^2.0.1 - load-script: ^1.0.0 - object-keys: ^1.0.11 - querystring-es3: ^0.2.1 - reduce: ^1.0.1 - semver: ^5.1.0 - tunnel-agent: ^0.6.0 - checksum: 9d8ef7d206e298063041176326bb28698adfae0f808b933d3bd96b12c7de39ea4fc2887a551eb15486f1da3293168327d3b74ba6cdfda735f8bfb0a885c0f5e0 - languageName: node - linkType: hard - -"alphanum-sort@npm:^1.0.0": - version: 1.0.2 - resolution: "alphanum-sort@npm:1.0.2" - checksum: 5a32d0b3c0944e65d22ff3ae2f88d7a4f8d88a78a703033caeae33f2944915e053d283d02f630dc94823edc7757148ecdcf39fd687a5117bda5c10133a03a7d8 - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-align@npm:3.0.0" - dependencies: - string-width: ^3.0.0 - checksum: 6bc5f3712d28a899063845a15c5da75b2f350dda8ffac6098581619b80a85d249cdd23c3dc7b596cd31e44477382bcdedff47e31201eaa10bb9708c9fce45330 - languageName: node - linkType: hard - -"ansi-colors@npm:^3.0.0": - version: 3.2.4 - resolution: "ansi-colors@npm:3.2.4" - checksum: 026c51880e9f8eb59b112669a87dbea4469939ff94b131606303bbd697438a6691b16b9db3027aa9bf132a244214e83ab1508b998496a34d2aea5b437ac9e62d - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.1.0": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-html@npm:0.0.7": - version: 0.0.7 - resolution: "ansi-html@npm:0.0.7" - bin: - ansi-html: ./bin/ansi-html - checksum: 9b839ce99650b4c2d83621d67d68622d27e7948b54f7a4386f2218a3997ee4e684e5a6e8d290880c3f3260e8d90c2613c59c7028f04992ad5c8d99d3a0fcc02c - languageName: node - linkType: hard - -"ansi-regex@npm:^2.0.0": - version: 2.1.1 - resolution: "ansi-regex@npm:2.1.1" - checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 - languageName: node - linkType: hard - -"ansi-regex@npm:^4.1.0": - version: 4.1.0 - resolution: "ansi-regex@npm:4.1.0" - checksum: 97aa4659538d53e5e441f5ef2949a3cffcb838e57aeaad42c4194e9d7ddb37246a6526c4ca85d3940a9d1e19b11cc2e114530b54c9d700c8baf163c31779baf8 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-regex@npm:5.0.0" - checksum: b1bb4e992a5d96327bb4f72eaba9f8047f1d808d273ad19d399e266bfcc7fb19a4d1a127a32f7bc61fe46f1a94a4d04ec4c424e3fbe184929aa866323d8ed4ce - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-styles@npm:^2.2.1": - version: 2.2.1 - resolution: "ansi-styles@npm:2.2.1" - checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.1": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"apollo-cache-inmemory@npm:^1.6.6": - version: 1.6.6 - resolution: "apollo-cache-inmemory@npm:1.6.6" - dependencies: - apollo-cache: ^1.3.5 - apollo-utilities: ^1.3.4 - optimism: ^0.10.0 - ts-invariant: ^0.4.0 - tslib: ^1.10.0 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 32ffde758d249b4cb56645ba7d60328c6d2580711c037c68e742074a9d75ebbfe351eab73970571bee340fe66471333f241331ac42548d07ab243454276ff7b1 - languageName: node - linkType: hard - -"apollo-cache@npm:1.3.5, apollo-cache@npm:^1.3.5": - version: 1.3.5 - resolution: "apollo-cache@npm:1.3.5" - dependencies: - apollo-utilities: ^1.3.4 - tslib: ^1.10.0 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 99664f93950c4821b3ada8542730428f178a13767a0efc66d52678bafbd2543ccc292ffd2c30ad0321834b71becc6188891e76fff63a297e89d2bd0c6de75cfb - languageName: node - linkType: hard - -"apollo-client@npm:^2.6.10": - version: 2.6.10 - resolution: "apollo-client@npm:2.6.10" - dependencies: - "@types/zen-observable": ^0.8.0 - apollo-cache: 1.3.5 - apollo-link: ^1.0.0 - apollo-utilities: 1.3.4 - symbol-observable: ^1.0.2 - ts-invariant: ^0.4.0 - tslib: ^1.10.0 - zen-observable: ^0.8.0 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 88a7cd10ac6ae8e18ac67d272ad497a06adb85de1fe5931b0968372fb0d68d27a44c616d725808fa8032b32ef3269012503a547c706ddaf724bc455a4355caef - languageName: node - linkType: hard - -"apollo-link-context@npm:^1.0.20": - version: 1.0.20 - resolution: "apollo-link-context@npm:1.0.20" - dependencies: - apollo-link: ^1.2.14 - tslib: ^1.9.3 - checksum: 5e905e3dd364dafb8683beb07d60cc84378a96247f21b735194bd2aa70c8f0f8b7b066177a9a7e5549ca08f60901c58243e56fa61a1969436a61fdb9d0cb582b - languageName: node - linkType: hard - -"apollo-link-error@npm:^1.1.13": - version: 1.1.13 - resolution: "apollo-link-error@npm:1.1.13" - dependencies: - apollo-link: ^1.2.14 - apollo-link-http-common: ^0.2.16 - tslib: ^1.9.3 - checksum: b417b77acbf464d8246eb79312c6d755f9d398c6c9f560c9e2270260519df639c3f0a8b9454ccc55c7f54eb57490706275ede120ecd7f475ec4627012feaf4b2 - languageName: node - linkType: hard - -"apollo-link-http-common@npm:^0.2.16": - version: 0.2.16 - resolution: "apollo-link-http-common@npm:0.2.16" - dependencies: - apollo-link: ^1.2.14 - ts-invariant: ^0.4.0 - tslib: ^1.9.3 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 46672f2b10a01f495ed91d32b9d21ed0747bf23c8c23a2041ca41dd92a05e0e18d7842d29c958f6ddfaee03bd89202788f593cdcb96d4167191aff125f109c67 - languageName: node - linkType: hard - -"apollo-link-http@npm:^1.5.17": - version: 1.5.17 - resolution: "apollo-link-http@npm:1.5.17" - dependencies: - apollo-link: ^1.2.14 - apollo-link-http-common: ^0.2.16 - tslib: ^1.9.3 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: dd7683cb55b9994e2101e7074009a7eb14d0b1571f5638fb016e1b7317d190cf6564be16fc36d9ec3eec11064606ab2415b5aa19e2df00596290f1afde1f881f - languageName: node - linkType: hard - -"apollo-link-retry@npm:^2.2.16": - version: 2.2.16 - resolution: "apollo-link-retry@npm:2.2.16" - dependencies: - "@types/zen-observable": 0.8.0 - apollo-link: ^1.2.14 - tslib: ^1.9.3 - checksum: 48cc0b55e79720e4f53b4f775809dd39412ecaf69f745dd18b3c2ddfc667e883f6083e1f3144026671aecfefeb718c7d2a36524e15cb1e9507ec19b3cfa08029 - languageName: node - linkType: hard - -"apollo-link@npm:^1.0.0, apollo-link@npm:^1.2.14": - version: 1.2.14 - resolution: "apollo-link@npm:1.2.14" - dependencies: - apollo-utilities: ^1.3.0 - ts-invariant: ^0.4.0 - tslib: ^1.9.3 - zen-observable-ts: ^0.8.21 - peerDependencies: - graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: ad8d051ffceb270cdbbcc71d499bce2fda437a65fac6edc859a9e2dc0dbcb10b6a3f4da41789e786270aa358719c8b71315f383a698a74957df0d7aeea042918 - languageName: node - linkType: hard - -"apollo-utilities@npm:1.3.4, apollo-utilities@npm:^1.3.0, apollo-utilities@npm:^1.3.4": - version: 1.3.4 - resolution: "apollo-utilities@npm:1.3.4" - dependencies: - "@wry/equality": ^0.1.2 - fast-json-stable-stringify: ^2.0.0 - ts-invariant: ^0.4.0 - tslib: ^1.10.0 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 6e0192a3420782909c930f5230808d7fbbdbcdfccddd960120e19bab251b77a16e590b05dbb4a7da2c27c59077fbfd53e56819a9fae694debe7f898e8b0ec1e9 - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"aproba@npm:^1.1.1": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - -"argparse@npm:^1.0.7, argparse@npm:~1.0.9": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b - languageName: node - linkType: hard - -"array-flatten@npm:^2.1.0": - version: 2.1.2 - resolution: "array-flatten@npm:2.1.2" - checksum: e8988aac1fbfcdaae343d08c9a06a6fddd2c6141721eeeea45c3cf523bf4431d29a46602929455ed548c7a3e0769928cdc630405427297e7081bd118fdec9262 - languageName: node - linkType: hard - -"array-union@npm:^1.0.1, array-union@npm:^1.0.2": - version: 1.0.2 - resolution: "array-union@npm:1.0.2" - dependencies: - array-uniq: ^1.0.1 - checksum: 82cec6421b6e6766556c484835a6d476a873f1b71cace5ab2b4f1b15b1e3162dc4da0d16f7a2b04d4aec18146c6638fe8f661340b31ba8e469fd811a1b45dc8d - languageName: node - linkType: hard - -"array-uniq@npm:^1.0.1": - version: 1.0.3 - resolution: "array-uniq@npm:1.0.3" - checksum: 1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - -"asn1.js@npm:^5.2.0": - version: 5.4.1 - resolution: "asn1.js@npm:5.4.1" - dependencies: - bn.js: ^4.0.0 - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - safer-buffer: ^2.1.0 - checksum: 3786a101ac6f304bd4e9a7df79549a7561950a13d4bcaec0c7790d44c80d147c1a94ba3d4e663673406064642a40b23fcd6c82a9952468e386c1a1376d747f9a - languageName: node - linkType: hard - -"asn1@npm:~0.2.3": - version: 0.2.4 - resolution: "asn1@npm:0.2.4" - dependencies: - safer-buffer: ~2.1.0 - checksum: aa5d6f77b1e0597df53824c68cfe82d1d89ce41cb3520148611f025fbb3101b2d25dd6a40ad34e4fac10f6b19ed5e8628cd4b7d212261e80e83f02b39ee5663c - languageName: node - linkType: hard - -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": - version: 1.0.0 - resolution: "assert-plus@npm:1.0.0" - checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 - languageName: node - linkType: hard - -"assert@npm:^1.1.1": - version: 1.5.0 - resolution: "assert@npm:1.5.0" - dependencies: - object-assign: ^4.1.1 - util: 0.10.3 - checksum: 9be48435f726029ae7020c5888a3566bf4d617687aab280827f2e4029644b6515a9519ea10d018b342147c02faf73d9e9419e780e8937b3786ee4945a0ca71e5 - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - -"async-each@npm:^1.0.1": - version: 1.0.3 - resolution: "async-each@npm:1.0.3" - checksum: 868651cfeb209970b367fbb96df1e1c8dc0b22c681cda7238417005ab2a5fbd944ee524b43f2692977259a57b7cc2547e03ff68f2b5113dbdf953d48cc078dc3 - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - -"async@npm:^2.6.2": - version: 2.6.3 - resolution: "async@npm:2.6.3" - dependencies: - lodash: ^4.17.14 - checksum: 5e5561ff8fca807e88738533d620488ac03a5c43fce6c937451f7e35f943d33ad06c24af3f681a48cca3d2b0002b3118faff0a128dc89438a9bf0226f712c499 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"autocomplete.js@npm:0.36.0": - version: 0.36.0 - resolution: "autocomplete.js@npm:0.36.0" - dependencies: - immediate: ^3.2.3 - checksum: b820cb7d388c1cea759fadf9757e36c8449b16077b990da68cfcce49a9a8b7c0217ef07c5bddf618769d8e78d989385935b1d28b1005eed607a12a1c485f9752 - languageName: node - linkType: hard - -"autoprefixer@npm:^9.5.1": - version: 9.8.6 - resolution: "autoprefixer@npm:9.8.6" - dependencies: - browserslist: ^4.12.0 - caniuse-lite: ^1.0.30001109 - colorette: ^1.2.1 - normalize-range: ^0.1.2 - num2fraction: ^1.2.2 - postcss: ^7.0.32 - postcss-value-parser: ^4.1.0 - bin: - autoprefixer: bin/autoprefixer - checksum: 46987bc3de6612f0276c3643061901e33cc5721d07aaeb6f0daf237554448884a59c0b17087bf0f00a07d940abcb5a6eaf2203b962c24fe33d52f76aa845cb70 - languageName: node - linkType: hard - -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 - languageName: node - linkType: hard - -"aws4@npm:^1.8.0": - version: 1.11.0 - resolution: "aws4@npm:1.11.0" - checksum: 5a00d045fd0385926d20ebebcfba5ec79d4482fe706f63c27b324d489a04c68edb0db99ed991e19eda09cb8c97dc2452059a34d97545cebf591d7a2b5a10999f - languageName: node - linkType: hard - -"axios@npm:0.21.1": - version: 0.21.1 - resolution: "axios@npm:0.21.1" - dependencies: - follow-redirects: ^1.10.0 - checksum: c87915fa0b18c15c63350112b6b3563a3e2ae524d7707de0a73d2e065e0d30c5d3da8563037bc29d4cc1b7424b5a350cb7274fa52525c6c04a615fe561c6ab11 - languageName: node - linkType: hard - -"babel-loader@npm:^8.0.4": - version: 8.2.2 - resolution: "babel-loader@npm:8.2.2" - dependencies: - find-cache-dir: ^3.3.1 - loader-utils: ^1.4.0 - make-dir: ^3.1.0 - schema-utils: ^2.6.5 - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: df5092ef9886bb49aacb7c58ac40ed0681ced031c8d91e49d680cedace2aa1703390a31fbe7c0e409f739836e911c5c991119133d90d9289f681c0a8ff2447a1 - languageName: node - linkType: hard - -"babel-plugin-dynamic-import-node@npm:^2.3.3": - version: 2.3.3 - resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" - dependencies: - object.assign: ^4.1.0 - checksum: c9d24415bcc608d0db7d4c8540d8002ac2f94e2573d2eadced137a29d9eab7e25d2cbb4bc6b9db65cf6ee7430f7dd011d19c911a9a778f0533b4a05ce8292c9b - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.2.0": - version: 0.2.0 - resolution: "babel-plugin-polyfill-corejs2@npm:0.2.0" - dependencies: - "@babel/compat-data": ^7.13.11 - "@babel/helper-define-polyfill-provider": ^0.2.0 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 429c96fea278d44ae7469ea9ce580572bdf963d710c883b01956cbcf1a0b8c069a7ff26fa0d1174ca63e14a7cc7f61ca5b70ecbf7daa4c5a4e4ed9ee417b2e1d - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.2.0": - version: 0.2.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.2.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.2.0 - core-js-compat: ^3.9.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9ddada641ee463f89651a36afe5dcc5d91f8985cd1dd0e639d5586a85bbf11f3dbf0ec056265043accb831e3f204a34bfa59a870e40a1f72ece43a765dfbd946 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.2.0": - version: 0.2.0 - resolution: "babel-plugin-polyfill-regenerator@npm:0.2.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.2.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85a39fe4d82eeea7238a1b9d57c3978c34329b355078c124e9a48b1be5cb932d1f52956a0576195c6896a3298766cd4571600a4f04ec638596b792c4ea608f6f - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base64-js@npm:^1.0.2": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"batch@npm:0.6.1": - version: 0.6.1 - resolution: "batch@npm:0.6.1" - checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f - languageName: node - linkType: hard - -"bcrypt-pbkdf@npm:^1.0.0": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" - dependencies: - tweetnacl: ^0.14.3 - checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 - languageName: node - linkType: hard - -"big.js@npm:^3.1.3": - version: 3.2.0 - resolution: "big.js@npm:3.2.0" - checksum: 299449e40555625a308f01d74378677036b2ec98b30aaa89794b3afbd4eaa104b7456a989affadfd7f630dc14b3f1df250de9bddc4a6fc664e60727887bb33e7 - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node - linkType: hard - -"binary-extensions@npm:^1.0.0": - version: 1.13.1 - resolution: "binary-extensions@npm:1.13.1" - checksum: ad7747f33c07e94ba443055de130b50c8b8b130a358bca064c580d91769ca6a69c7ac65ca008ff044ed4541d2c6ad45496e1fadbef5218a68770996b6a2194d7 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"bindings@npm:^1.5.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: 1.0.0 - checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 - languageName: node - linkType: hard - -"bluebird@npm:^3.1.1, bluebird@npm:^3.5.5": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef - languageName: node - linkType: hard - -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 - languageName: node - linkType: hard - -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": - version: 5.2.0 - resolution: "bn.js@npm:5.2.0" - checksum: 6117170393200f68b35a061ecbf55d01dd989302e7b3c798a3012354fa638d124f0b2f79e63f77be5556be80322a09c40339eda6413ba7468524c0b6d4b4cb7a - languageName: node - linkType: hard - -"body-parser@npm:1.19.0": - version: 1.19.0 - resolution: "body-parser@npm:1.19.0" - dependencies: - bytes: 3.1.0 - content-type: ~1.0.4 - debug: 2.6.9 - depd: ~1.1.2 - http-errors: 1.7.2 - iconv-lite: 0.4.24 - on-finished: ~2.3.0 - qs: 6.7.0 - raw-body: 2.4.0 - type-is: ~1.6.17 - checksum: 490231b4c89bbd43112762f7ba8e5342c174a6c9f64284a3b0fcabf63277e332f8316765596f1e5b15e4f3a6cf0422e005f4bb3149ed3a224bb025b7a36b9ac1 - languageName: node - linkType: hard - -"bonjour@npm:^3.5.0": - version: 3.5.0 - resolution: "bonjour@npm:3.5.0" - dependencies: - array-flatten: ^2.1.0 - deep-equal: ^1.0.1 - dns-equal: ^1.0.0 - dns-txt: ^2.0.2 - multicast-dns: ^6.0.1 - multicast-dns-service-types: ^1.1.0 - checksum: 2cfbe9fa861f4507b5ff3853eeae3ef03a231ede2b7363efedd80880ea3c0576f64416f98056c96e429ed68ff38dc4a70c0583d1eb4dab72e491ca44a0f03444 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 - languageName: node - linkType: hard - -"boxen@npm:^4.2.0": - version: 4.2.0 - resolution: "boxen@npm:4.2.0" - dependencies: - ansi-align: ^3.0.0 - camelcase: ^5.3.1 - chalk: ^3.0.0 - cli-boxes: ^2.2.0 - string-width: ^4.1.0 - term-size: ^2.1.0 - type-fest: ^0.8.1 - widest-line: ^3.1.0 - checksum: ce2b565a2e44b33d11336155675cf4f7f0e13dbf7412928845aefd6a2cf65e0da2dbb0a2cb198b7620a2ae714416a2eb710926b780f15d19f6250a19633b29af - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"braces@npm:^2.3.1, braces@npm:^2.3.2": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - -"braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be - languageName: node - linkType: hard - -"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: ^1.0.3 - cipher-base: ^1.0.0 - create-hash: ^1.1.0 - evp_bytestokey: ^1.0.3 - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 - languageName: node - linkType: hard - -"browserify-cipher@npm:^1.0.0": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" - dependencies: - browserify-aes: ^1.0.4 - browserify-des: ^1.0.0 - evp_bytestokey: ^1.0.0 - checksum: 2d8500acf1ee535e6bebe808f7a20e4c3a9e2ed1a6885fff1facbfd201ac013ef030422bec65ca9ece8ffe82b03ca580421463f9c45af6c8415fd629f4118c13 - languageName: node - linkType: hard - -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" - dependencies: - cipher-base: ^1.0.1 - des.js: ^1.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: b15a3e358a1d78a3b62ddc06c845d02afde6fc826dab23f1b9c016e643e7b1fda41de628d2110b712f6a44fb10cbc1800bc6872a03ddd363fb50768e010395b7 - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" - dependencies: - bn.js: ^5.0.0 - randombytes: ^2.0.1 - checksum: 155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 - languageName: node - linkType: hard - -"browserify-sign@npm:^4.0.0": - version: 4.2.1 - resolution: "browserify-sign@npm:4.2.1" - dependencies: - bn.js: ^5.1.1 - browserify-rsa: ^4.0.1 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - elliptic: ^6.5.3 - inherits: ^2.0.4 - parse-asn1: ^5.1.5 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707 - languageName: node - linkType: hard - -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" - dependencies: - pako: ~1.0.5 - checksum: 5cd9d6a665190fedb4a97dfbad8dabc8698d8a507298a03f42c734e96d58ca35d3c7d4085e283440bbca1cd1938cff85031728079bedb3345310c58ab1ec92d6 - languageName: node - linkType: hard - -"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.14.5, browserslist@npm:^4.16.4": - version: 4.16.4 - resolution: "browserslist@npm:4.16.4" - dependencies: - caniuse-lite: ^1.0.30001208 - colorette: ^1.2.2 - electron-to-chromium: ^1.3.712 - escalade: ^3.1.1 - node-releases: ^1.1.71 - bin: - browserslist: cli.js - checksum: e35cab68c52c5e3a00610146e26fdd9e86449721e291e26d210d689ac751624dd8494d684164c1018084f35d104aaf733a463a74262857c2257d16962a6f62a6 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 - languageName: node - linkType: hard - -"buffer-indexof@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-indexof@npm:1.1.1" - checksum: 0967abc2981a8e7d776324c6b84811e4d84a7ead89b54a3bb8791437f0c4751afd060406b06db90a436f1cf771867331b5ecf5c4aca95b4ccb9f6cb146c22ebc - languageName: node - linkType: hard - -"buffer-json@npm:^2.0.0": - version: 2.0.0 - resolution: "buffer-json@npm:2.0.0" - checksum: 9b8601d25f50341a02c42cb7ffbd6d6801d961f2beda5648c86da815b3019dd8503ebf106cdc2ff2b98f78a463d8b6754f6797419d25ec60a90bb9192fccf40c - languageName: node - linkType: hard - -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a - languageName: node - linkType: hard - -"buffer@npm:^4.3.0": - version: 4.9.2 - resolution: "buffer@npm:4.9.2" - dependencies: - base64-js: ^1.0.2 - ieee754: ^1.1.4 - isarray: ^1.0.0 - checksum: 8801bc1ba08539f3be70eee307a8b9db3d40f6afbfd3cf623ab7ef41dffff1d0a31de0addbe1e66e0ca5f7193eeb667bfb1ecad3647f8f1b0750de07c13295c3 - languageName: node - linkType: hard - -"builtin-status-codes@npm:^3.0.0": - version: 3.0.0 - resolution: "builtin-status-codes@npm:3.0.0" - checksum: 1119429cf4b0d57bf76b248ad6f529167d343156ebbcc4d4e4ad600484f6bc63002595cbb61b67ad03ce55cd1d3c4711c03bbf198bf24653b8392420482f3773 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - -"bytes@npm:3.1.0": - version: 3.1.0 - resolution: "bytes@npm:3.1.0" - checksum: 7c3b21c5d9d44ed455460d5d36a31abc6fa2ce3807964ba60a4b03fd44454c8cf07bb0585af83bfde1c5cc2ea4bbe5897bc3d18cd15e0acf25a3615a35aba2df - languageName: node - linkType: hard - -"cac@npm:^6.5.6": - version: 6.7.2 - resolution: "cac@npm:6.7.2" - checksum: 2707a4c0b942782794909f3a5ab1f8ba1670985cb5a4f006a95f0753ff0b857ec4a4824e83d0f052705f489264af7d44d87529441cc752440f734072434e4960 - languageName: node - linkType: hard - -"cacache@npm:^12.0.2, cacache@npm:^12.0.3": - version: 12.0.4 - resolution: "cacache@npm:12.0.4" - dependencies: - bluebird: ^3.5.5 - chownr: ^1.1.1 - figgy-pudding: ^3.5.1 - glob: ^7.1.4 - graceful-fs: ^4.1.15 - infer-owner: ^1.0.3 - lru-cache: ^5.1.1 - mississippi: ^3.0.0 - mkdirp: ^0.5.1 - move-concurrently: ^1.0.1 - promise-inflight: ^1.0.1 - rimraf: ^2.6.3 - ssri: ^6.0.1 - unique-filename: ^1.1.1 - y18n: ^4.0.0 - checksum: c88a72f36939b2523533946ffb27828443db5bf5995d761b35ae17af1eb6c8e20ac55b00b74c2ca900b2e1e917f0afba6847bf8cc16bee05ccca6aa150e0830c - languageName: node - linkType: hard - -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 - infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 - unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - -"cache-loader@npm:^3.0.0": - version: 3.0.1 - resolution: "cache-loader@npm:3.0.1" - dependencies: - buffer-json: ^2.0.0 - find-cache-dir: ^2.1.0 - loader-utils: ^1.2.3 - mkdirp: ^0.5.1 - neo-async: ^2.6.1 - schema-utils: ^1.0.0 - peerDependencies: - webpack: ^4.0.0 - checksum: 9065470637fc067d426c7aafcca2d07017a5e3fc45859cfcc2d16a7449493328e2e6bc017fac87221482df0291fc41fa17dbe153d4613c09bde82ad046f0e25b - languageName: node - linkType: hard - -"cacheable-request@npm:^6.0.0": - version: 6.1.0 - resolution: "cacheable-request@npm:6.1.0" - dependencies: - clone-response: ^1.0.2 - get-stream: ^5.1.0 - http-cache-semantics: ^4.0.0 - keyv: ^3.0.0 - lowercase-keys: ^2.0.0 - normalize-url: ^4.1.0 - responselike: ^1.0.2 - checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"call-me-maybe@npm:^1.0.1": - version: 1.0.1 - resolution: "call-me-maybe@npm:1.0.1" - checksum: d19e9d6ac2c6a83fb1215718b64c5e233f688ebebb603bdfe4af59cde952df1f2b648530fab555bf290ea910d69d7d9665ebc916e871e0e194f47c2e48e4886b - languageName: node - linkType: hard - -"caller-callsite@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-callsite@npm:2.0.0" - dependencies: - callsites: ^2.0.0 - checksum: b685e9d126d9247b320cfdfeb3bc8da0c4be28d8fb98c471a96bc51aab3130099898a2fe3bf0308f0fe048d64c37d6d09f563958b9afce1a1e5e63d879c128a2 - languageName: node - linkType: hard - -"caller-path@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-path@npm:2.0.0" - dependencies: - caller-callsite: ^2.0.0 - checksum: 3e12ccd0c71ec10a057aac69e3ec175b721ca858c640df021ef0d25999e22f7c1d864934b596b7d47038e9b56b7ec315add042abbd15caac882998b50102fb12 - languageName: node - linkType: hard - -"callsites@npm:^2.0.0": - version: 2.0.0 - resolution: "callsites@npm:2.0.0" - checksum: be2f67b247df913732b7dec1ec0bbfcdbaea263e5a95968b19ec7965affae9496b970e3024317e6d4baa8e28dc6ba0cec03f46fdddc2fdcc51396600e53c2623 - languageName: node - linkType: hard - -"camel-case@npm:3.0.x": - version: 3.0.0 - resolution: "camel-case@npm:3.0.0" - dependencies: - no-case: ^2.2.0 - upper-case: ^1.1.1 - checksum: 4190ed6ab8acf4f3f6e1a78ad4d0f3f15ce717b6bfa1b5686d58e4bcd29960f6e312dd746b5fa259c6d452f1413caef25aee2e10c9b9a580ac83e516533a961a - languageName: node - linkType: hard - -"camelcase@npm:^5.0.0, camelcase@npm:^5.2.0, camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.0.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 - languageName: node - linkType: hard - -"caniuse-api@npm:^3.0.0": - version: 3.0.0 - resolution: "caniuse-api@npm:3.0.0" - dependencies: - browserslist: ^4.0.0 - caniuse-lite: ^1.0.0 - lodash.memoize: ^4.1.2 - lodash.uniq: ^4.5.0 - checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001208": - version: 1.0.30001211 - resolution: "caniuse-lite@npm:1.0.30001211" - checksum: aa6148eca1fc4b771a233808ae9a264442c5bb131c08eecff52f825189c2c1b42e4622dfe05d3adf4be0a695087e65d495c29e702aa3d965ee6b6726548f4853 - languageName: node - linkType: hard - -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 - languageName: node - linkType: hard - -"chalk@npm:^1.1.3": - version: 1.1.3 - resolution: "chalk@npm:1.1.3" - dependencies: - ansi-styles: ^2.2.1 - escape-string-regexp: ^1.0.2 - has-ansi: ^2.0.0 - strip-ansi: ^3.0.0 - supports-color: ^2.0.0 - checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.3.2, chalk@npm:^2.4.1, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 - languageName: node - linkType: hard - -"chokidar@npm:^2.0.3, chokidar@npm:^2.1.8": - version: 2.1.8 - resolution: "chokidar@npm:2.1.8" - dependencies: - anymatch: ^2.0.0 - async-each: ^1.0.1 - braces: ^2.3.2 - fsevents: ^1.2.7 - glob-parent: ^3.1.0 - inherits: ^2.0.3 - is-binary-path: ^1.0.0 - is-glob: ^4.0.0 - normalize-path: ^3.0.0 - path-is-absolute: ^1.0.0 - readdirp: ^2.2.1 - upath: ^1.1.1 - dependenciesMeta: - fsevents: - optional: true - checksum: 0c43e89cbf0268ef1e1f41ce8ec5233c7ba022c6f3282c2ef6530e351d42396d389a1148c5a040f291cf1f4083a4c6b2f51dad3f31c726442ea9a337de316bcf - languageName: node - linkType: hard - -"chokidar@npm:^3.4.1": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" - dependencies: - anymatch: ~3.1.1 - braces: ~3.0.2 - fsevents: ~2.3.1 - glob-parent: ~5.1.0 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.5.0 - dependenciesMeta: - fsevents: - optional: true - checksum: b7774e6e3aeca084d39e8542041555a11452414c744122436101243f89580fad97154ae11525e46bfa816313ae32533e2a88e8587e4d50b14ea716a9e6538978 - languageName: node - linkType: hard - -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 - languageName: node - linkType: hard - -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 - languageName: node - linkType: hard - -"ci-info@npm:^3.0.0": - version: 3.1.1 - resolution: "ci-info@npm:3.1.1" - checksum: 638bc0d84ce5567ce048d77cefb5d606e36b4929cc72c32f2102e24b0ac4fb3e378fee1821d71246f6a2f029c96b3c6c1c183348f894133f788f33cbe82258fa - languageName: node - linkType: hard - -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - -"clean-css@npm:4.2.x": - version: 4.2.3 - resolution: "clean-css@npm:4.2.3" - dependencies: - source-map: ~0.6.0 - checksum: 613129973a038b8bb13e3975ad6b679feccb8c98f2a9d03e6bec9e60291ef1e6b5037ee8cb09a3470751adc52f43782b1dcb4cb049360230b48062d6e3314072 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.0": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 - languageName: node - linkType: hard - -"clipboard@npm:^2.0.0": - version: 2.0.8 - resolution: "clipboard@npm:2.0.8" - dependencies: - good-listener: ^1.2.2 - select: ^1.1.2 - tiny-emitter: ^2.0.0 - checksum: 13bda94d102cbab9f214c546358a27405f79bcaa58b1bd364f1ef9b9b44e2b3a2b0345bbaad5ce72b24fe89e9b0e6d8aaec0a59157721c47143010238e815a24 - languageName: node - linkType: hard - -"cliui@npm:^5.0.0": - version: 5.0.0 - resolution: "cliui@npm:5.0.0" - dependencies: - string-width: ^3.1.0 - strip-ansi: ^5.2.0 - wrap-ansi: ^5.1.0 - checksum: 0bb8779efe299b8f3002a73619eaa8add4081eb8d1c17bc4fedc6240557fb4eacdc08fe87c39b002eacb6cfc117ce736b362dbfd8bf28d90da800e010ee97df4 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: ^2.0.4 - kind-of: ^6.0.2 - shallow-clone: ^3.0.0 - checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"clone-response@npm:^1.0.2": - version: 1.0.2 - resolution: "clone-response@npm:1.0.2" - dependencies: - mimic-response: ^1.0.0 - checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda - languageName: node - linkType: hard - -"coa@npm:^2.0.2": - version: 2.0.2 - resolution: "coa@npm:2.0.2" - dependencies: - "@types/q": ^1.5.1 - chalk: ^2.4.1 - q: ^1.1.2 - checksum: 44736914aac2160d3d840ed64432a90a3bb72285a0cd6a688eb5cabdf15d15a85eee0915b3f6f2a4659d5075817b1cb577340d3c9cbb47d636d59ab69f819552 - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0, color-convert@npm:^1.9.1": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-string@npm:^1.5.4": - version: 1.5.5 - resolution: "color-string@npm:1.5.5" - dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: 4f19c2042c8953973a3c71a53e53da9fa54194cc1e0270bdbe431b14476b3faed054eb1c960910a8c2b631e7c67daccf79f8579eaa2d16dc99c3739c66f98ab1 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"color@npm:^3.0.0": - version: 3.1.3 - resolution: "color@npm:3.1.3" - dependencies: - color-convert: ^1.9.1 - color-string: ^1.5.4 - checksum: d52a77ae239e1cdb55d9920e73d730df69a05cec9cb5d9b83a3e311b23009fd4053f4a88e7f6152207db498838f10e3ba4b1661a64a3acb41a50b14944214f26 - languageName: node - linkType: hard - -"colorette@npm:^1.2.1, colorette@npm:^1.2.2": - version: 1.2.2 - resolution: "colorette@npm:1.2.2" - checksum: 69fec14ddaedd0f5b00e4bae40dc4bc61f7050ebdc82983a595d6fd64e650b9dc3c033fff378775683138e992e0ddd8717ac7c7cec4d089679dcfbe3cd921b04 - languageName: node - linkType: hard - -"colors@npm:~1.2.1": - version: 1.2.5 - resolution: "colors@npm:1.2.5" - checksum: b6e23de735f68b72d5cdf6fd854ca43d1b66d82dcf54bda0b788083b910164a040f2c4edf23c670d36a7a2d8f1b7d6e62e3292703e4642691e6ccaa1c62d8f74 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"commander@npm:2.17.x": - version: 2.17.1 - resolution: "commander@npm:2.17.1" - checksum: 22e7ed5b422079a13a496e5eb8f73f36c15b5809d46f738e168e20f9ad485c12951bdc2cb366a36eb5f4927dae4f17b355b8adb96a5b9093f5fa4c439e8b9419 - languageName: node - linkType: hard - -"commander@npm:^2.20.0, commander@npm:^2.7.1": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"commander@npm:~2.19.0": - version: 2.19.0 - resolution: "commander@npm:2.19.0" - checksum: d52ffb0b31528784005356f879591b5a4875d3e88806c115fb30a8de0994d2fa9ca3f72a3cb880cdaf1bfb9df185f928cfcbbc656fa831f9c6109a209569ef6d - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"concat-stream@npm:^1.5.0": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - -"configstore@npm:^5.0.1": - version: 5.0.1 - resolution: "configstore@npm:5.0.1" - dependencies: - dot-prop: ^5.2.0 - graceful-fs: ^4.1.2 - make-dir: ^3.0.0 - unique-string: ^2.0.0 - write-file-atomic: ^3.0.0 - xdg-basedir: ^4.0.0 - checksum: 60ef65d493b63f96e14b11ba7ec072fdbf3d40110a94fb7199d1c287761bdea5c5244e76b2596325f30c1b652213aa75de96ea20afd4a5f82065e61ea090988e - languageName: node - linkType: hard - -"connect-history-api-fallback@npm:^1.5.0, connect-history-api-fallback@npm:^1.6.0": - version: 1.6.0 - resolution: "connect-history-api-fallback@npm:1.6.0" - checksum: 804ca2be28c999032ecd37a9f71405e5d7b7a4b3defcebbe41077bb8c5a0a150d7b59f51dcc33b2de30bc7e217a31d10f8cfad27e8e74c2fc7655eeba82d6e7e - languageName: node - linkType: hard - -"consola@npm:^2.6.0": - version: 2.15.3 - resolution: "consola@npm:2.15.3" - checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28 - languageName: node - linkType: hard - -"console-browserify@npm:^1.1.0": - version: 1.2.0 - resolution: "console-browserify@npm:1.2.0" - checksum: 226591eeff8ed68e451dffb924c1fb750c654d54b9059b3b261d360f369d1f8f70650adecf2c7136656236a4bfeb55c39281b5d8a55d792ebbb99efd3d848d52 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"consolidate@npm:^0.15.1": - version: 0.15.1 - resolution: "consolidate@npm:0.15.1" - dependencies: - bluebird: ^3.1.1 - checksum: 5a44ee975f8403dd3ff8ff3472fda7db0484b19f153eaac38e784465505a0741939c72d703befda7c75649739fc7a68f9659a86e2a62469336a8d531bd7a10df - languageName: node - linkType: hard - -"constants-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "constants-browserify@npm:1.0.0" - checksum: f7ac8c6d0b6e4e0c77340a1d47a3574e25abd580bfd99ad707b26ff7618596cf1a5e5ce9caf44715e9e01d4a5d12cb3b4edaf1176f34c19adb2874815a56e64f - languageName: node - linkType: hard - -"content-disposition@npm:0.5.3": - version: 0.5.3 - resolution: "content-disposition@npm:0.5.3" - dependencies: - safe-buffer: 5.1.2 - checksum: 95bf164c0b0b8199d3f44b7631e51b37f683c6a90b9baa4315bd3d405a6d1bc81b7346f0981046aa004331fb3d7a28b629514d01fc209a5251573fc7e4d33380 - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: ~5.1.1 - checksum: bcd2e3ea7d37f96b85a6e362c8a89402ccc73757256e3ee53aa2c22fe915adb854c66b1f81111be815a3a6a6ce3c58e8001858e883c9d5b4fe08a853fa865967 - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a - languageName: node - linkType: hard - -"cookie@npm:0.4.0": - version: 0.4.0 - resolution: "cookie@npm:0.4.0" - checksum: 760384ba0aef329c52523747e36a452b5e51bc49b34160363a6934e7b7df3f93fcc88b35e33450361535d40a92a96412da870e1816aba9aa6cc556a9fedd8492 - languageName: node - linkType: hard - -"copy-concurrently@npm:^1.0.0": - version: 1.0.5 - resolution: "copy-concurrently@npm:1.0.5" - dependencies: - aproba: ^1.1.1 - fs-write-stream-atomic: ^1.0.8 - iferr: ^0.1.5 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.0 - checksum: 63c169f582e09445260988f697b2d07793d439dfc31e97c8999707bd188dd94d1c7f2ca3533c7786fb75f03a3f2f54ad1ee08055f95f61bb8d2e862498c1d460 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"copy-webpack-plugin@npm:^5.0.2": - version: 5.1.2 - resolution: "copy-webpack-plugin@npm:5.1.2" - dependencies: - cacache: ^12.0.3 - find-cache-dir: ^2.1.0 - glob-parent: ^3.1.0 - globby: ^7.1.1 - is-glob: ^4.0.1 - loader-utils: ^1.2.3 - minimatch: ^3.0.4 - normalize-path: ^3.0.0 - p-limit: ^2.2.1 - schema-utils: ^1.0.0 - serialize-javascript: ^4.0.0 - webpack-log: ^2.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: e398884dee1891311bc1661ba980ef8e6cc6aaf807dd49f782cb37aa66b0c53ef844360c5a0406373eda0ab444b2d6d8743b35a1f7634577ae34619dd19e231e - languageName: node - linkType: hard - -"core-js-compat@npm:^3.6.5, core-js-compat@npm:^3.9.0, core-js-compat@npm:^3.9.1": - version: 3.10.2 - resolution: "core-js-compat@npm:3.10.2" - dependencies: - browserslist: ^4.16.4 - semver: 7.0.0 - checksum: 14d7ed4fb4296db00fb01560c6ed9a1430a616d8edb812d1203ee0c9ef03d33daf94622a9957f7894c799a3e4c7854e510987dedd53a195c817b3bc1862de072 - languageName: node - linkType: hard - -"core-js@npm:^3.6.4, core-js@npm:^3.6.5": - version: 3.10.2 - resolution: "core-js@npm:3.10.2" - checksum: b432c827d707c694f03d142e74c144e522c1f6a8632539913bd1f3660f522693b83a474409bb0dd6ccab7878c2ed91014082ce9938664e90f62193b90ce72501 - languageName: node - linkType: hard - -"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": - version: 1.0.2 - resolution: "core-util-is@npm:1.0.2" - checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab - languageName: node - linkType: hard - -"cosmiconfig@npm:^5.0.0": - version: 5.2.1 - resolution: "cosmiconfig@npm:5.2.1" - dependencies: - import-fresh: ^2.0.0 - is-directory: ^0.3.1 - js-yaml: ^3.13.1 - parse-json: ^4.0.0 - checksum: 8b6f1d3c8a5ffdf663a952f17af0761adf210b7a5933d0fe8988f3ca3a1f0e1e5cbbb74d5b419c15933dd2fdcaec31dbc5cc85cb8259a822342b93b529eff89c - languageName: node - linkType: hard - -"create-ecdh@npm:^4.0.0": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" - dependencies: - bn.js: ^4.1.0 - elliptic: ^6.5.3 - checksum: 0dd7fca9711d09e152375b79acf1e3f306d1a25ba87b8ff14c2fd8e68b83aafe0a7dd6c4e540c9ffbdd227a5fa1ad9b81eca1f233c38bb47770597ba247e614b - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: ^1.0.1 - inherits: ^2.0.1 - md5.js: ^1.3.4 - ripemd160: ^2.0.1 - sha.js: ^2.4.0 - checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: ^1.0.3 - create-hash: ^1.1.0 - inherits: ^2.0.1 - ripemd160: ^2.0.0 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.0, cross-spawn@npm:^6.0.5": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: ^1.0.4 - path-key: ^2.0.1 - semver: ^5.5.0 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 - languageName: node - linkType: hard - -"crypto-browserify@npm:^3.11.0": - version: 3.12.0 - resolution: "crypto-browserify@npm:3.12.0" - dependencies: - browserify-cipher: ^1.0.0 - browserify-sign: ^4.0.0 - create-ecdh: ^4.0.0 - create-hash: ^1.1.0 - create-hmac: ^1.1.0 - diffie-hellman: ^5.0.0 - inherits: ^2.0.1 - pbkdf2: ^3.0.3 - public-encrypt: ^4.0.0 - randombytes: ^2.0.0 - randomfill: ^1.0.3 - checksum: c1609af82605474262f3eaa07daa0b2140026bd264ab316d4bf1170272570dbe02f0c49e29407fe0d3634f96c507c27a19a6765fb856fed854a625f9d15618e2 - languageName: node - linkType: hard - -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 - languageName: node - linkType: hard - -"css-color-names@npm:0.0.4, css-color-names@npm:^0.0.4": - version: 0.0.4 - resolution: "css-color-names@npm:0.0.4" - checksum: 9c6106320430a9da3a13daab8d8b4def39113edbfb68042444585d9a214af5fd5cb384b9be45124bc75f88261d461b517e00e278f4d2e0ab5a619b182f9f0e2d - languageName: node - linkType: hard - -"css-declaration-sorter@npm:^4.0.1": - version: 4.0.1 - resolution: "css-declaration-sorter@npm:4.0.1" - dependencies: - postcss: ^7.0.1 - timsort: ^0.3.0 - checksum: c38c00245c6706bd1127a6a2807bbdea3a2621c1f4e4bcb4710f6736c15c4ec414e02213adeab2171623351616090cb96374f683b90ec2aad18903066c4526d7 - languageName: node - linkType: hard - -"css-loader@npm:^2.1.1": - version: 2.1.1 - resolution: "css-loader@npm:2.1.1" - dependencies: - camelcase: ^5.2.0 - icss-utils: ^4.1.0 - loader-utils: ^1.2.3 - normalize-path: ^3.0.0 - postcss: ^7.0.14 - postcss-modules-extract-imports: ^2.0.0 - postcss-modules-local-by-default: ^2.0.6 - postcss-modules-scope: ^2.1.0 - postcss-modules-values: ^2.0.0 - postcss-value-parser: ^3.3.0 - schema-utils: ^1.0.0 - peerDependencies: - webpack: ^4.0.0 - checksum: 7add5c85669e706563e2aa512fac0e6f74dc4927529771ab01d91ec85e9be2a21f94f72cb3a768db7148e9b7cab2220e52d05fa0eb5b39b5f672b59191a08405 - languageName: node - linkType: hard - -"css-parse@npm:~2.0.0": - version: 2.0.0 - resolution: "css-parse@npm:2.0.0" - dependencies: - css: ^2.0.0 - checksum: e6b23721364f6d7028538463f2388200430f32331fbbd8cd3b2c545e4b17a270594b74986aa1d6f2ad9dd206cbdad1c5e2331a16c06f4a7213f07494a32cca2b - languageName: node - linkType: hard - -"css-select-base-adapter@npm:^0.1.1": - version: 0.1.1 - resolution: "css-select-base-adapter@npm:0.1.1" - checksum: c107e9cfa53a23427e4537451a67358375e656baa3322345a982d3c2751fb3904002aae7e5d72386c59f766fe6b109d1ffb43eeab1c16f069f7a3828eb17851c - languageName: node - linkType: hard - -"css-select@npm:^2.0.0, css-select@npm:^2.0.2": - version: 2.1.0 - resolution: "css-select@npm:2.1.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^3.2.1 - domutils: ^1.7.0 - nth-check: ^1.0.2 - checksum: 0c4099910f2411e2a9103cf92ea6a4ad738b57da75bcf73d39ef2c14a00ef36e5f16cb863211c901320618b24ace74da6333442d82995cafd5040077307de462 - languageName: node - linkType: hard - -"css-tree@npm:1.0.0-alpha.37": - version: 1.0.0-alpha.37 - resolution: "css-tree@npm:1.0.0-alpha.37" - dependencies: - mdn-data: 2.0.4 - source-map: ^0.6.1 - checksum: 0e419a1388ec0fbbe92885fba4a557f9fb0e077a2a1fad629b7245bbf7b4ef5df49e6877401b952b09b9057ffe1a3dba74f6fdfbf7b2223a5a35bce27ff2307d - languageName: node - linkType: hard - -"css-tree@npm:^1.1.2": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" - dependencies: - mdn-data: 2.0.14 - source-map: ^0.6.1 - checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f - languageName: node - linkType: hard - -"css-what@npm:^3.2.1": - version: 3.4.2 - resolution: "css-what@npm:3.4.2" - checksum: 26bb5ec3ae718393d418016365c849fa14bd0de408c735dea3ddf58146b6cc54f3b336fb4afd31d95c06ca79583acbcdfec7ee93d31ff5c1a697df135b38dfeb - languageName: node - linkType: hard - -"css@npm:^2.0.0": - version: 2.2.4 - resolution: "css@npm:2.2.4" - dependencies: - inherits: ^2.0.3 - source-map: ^0.6.1 - source-map-resolve: ^0.5.2 - urix: ^0.1.0 - checksum: a35d483c5ccc04bcde3b1e7393d58ad3eee1dd6956df0f152de38e46a17c0ee193c30eec6b1e59831ad0e74599385732000e95987fcc9cb2b16c6d951bae49e1 - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - -"cssnano-preset-default@npm:^4.0.8": - version: 4.0.8 - resolution: "cssnano-preset-default@npm:4.0.8" - dependencies: - css-declaration-sorter: ^4.0.1 - cssnano-util-raw-cache: ^4.0.1 - postcss: ^7.0.0 - postcss-calc: ^7.0.1 - postcss-colormin: ^4.0.3 - postcss-convert-values: ^4.0.1 - postcss-discard-comments: ^4.0.2 - postcss-discard-duplicates: ^4.0.2 - postcss-discard-empty: ^4.0.1 - postcss-discard-overridden: ^4.0.1 - postcss-merge-longhand: ^4.0.11 - postcss-merge-rules: ^4.0.3 - postcss-minify-font-values: ^4.0.2 - postcss-minify-gradients: ^4.0.2 - postcss-minify-params: ^4.0.2 - postcss-minify-selectors: ^4.0.2 - postcss-normalize-charset: ^4.0.1 - postcss-normalize-display-values: ^4.0.2 - postcss-normalize-positions: ^4.0.2 - postcss-normalize-repeat-style: ^4.0.2 - postcss-normalize-string: ^4.0.2 - postcss-normalize-timing-functions: ^4.0.2 - postcss-normalize-unicode: ^4.0.1 - postcss-normalize-url: ^4.0.1 - postcss-normalize-whitespace: ^4.0.2 - postcss-ordered-values: ^4.1.2 - postcss-reduce-initial: ^4.0.3 - postcss-reduce-transforms: ^4.0.2 - postcss-svgo: ^4.0.3 - postcss-unique-selectors: ^4.0.1 - checksum: eb32c9fdd8bd4683e33d62284b6a9c4eb705b745235f4bb51a5571e1eb6738f636958fc9a6218fb51de43e0e2f74386a705b4c7ff2d1dcc611647953ba6ce159 - languageName: node - linkType: hard - -"cssnano-util-get-arguments@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-util-get-arguments@npm:4.0.0" - checksum: 34222a1e848d573b74892eda7d7560c5422efa56f87d2b5242f9791593c6aa4ddc9d55e8e1708fb2f0d6f87c456314b78d93d3eec97d946ff756c63b09b72222 - languageName: node - linkType: hard - -"cssnano-util-get-match@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-util-get-match@npm:4.0.0" - checksum: 56eacea0eb3d923359c9714ab25edde5eb4859e495954615d5529e81cdfabc2d41b57055c7f6a2f08e7d89df3a2794ef659306b539505d7f4e7202b897396fc2 - languageName: node - linkType: hard - -"cssnano-util-raw-cache@npm:^4.0.1": - version: 4.0.1 - resolution: "cssnano-util-raw-cache@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: 66a23e5e5255ff65d0f49f135d0ddfdb96433aeceb2708a31e4b4a652110755f103f6c91e0f439c8f3052818eb2b04ebf6334680a810296290e2c3467c14202b - languageName: node - linkType: hard - -"cssnano-util-same-parent@npm:^4.0.0": - version: 4.0.1 - resolution: "cssnano-util-same-parent@npm:4.0.1" - checksum: 97c6b3f670ee9d1d6342b6a1daf9867d5c08644365dc146bd76defd356069112148e382ca86fc3e6c55adf0687974f03535bba34df95efb468b266d2319c7b66 - languageName: node - linkType: hard - -"cssnano@npm:^4.1.10": - version: 4.1.11 - resolution: "cssnano@npm:4.1.11" - dependencies: - cosmiconfig: ^5.0.0 - cssnano-preset-default: ^4.0.8 - is-resolvable: ^1.0.0 - postcss: ^7.0.0 - checksum: 2453fbe9f9f9e2ffe87dc5c718578f1b801fc7b82eaad12f5564c84bb0faf1774ea52e01874ecd29d1782aa7d0d84f0dbc95001eed9866ebd9bc523638999c9b - languageName: node - linkType: hard - -"csso@npm:^4.0.2": - version: 4.2.0 - resolution: "csso@npm:4.2.0" - dependencies: - css-tree: ^1.1.2 - checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 - languageName: node - linkType: hard - -"cyclist@npm:^1.0.1": - version: 1.0.1 - resolution: "cyclist@npm:1.0.1" - checksum: 3cc2fdeb358599ca0ea96f5ecf2fc530ccab7ed1f8aa1a894aebfacd2009281bd7380cb9b30db02a18cdd00b3ed1d7ce81a3b11fe56e33a6a0fe4424dc592fbe - languageName: node - linkType: hard - -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" - dependencies: - assert-plus: ^1.0.0 - checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 - languageName: node - linkType: hard - -"de-indent@npm:^1.0.2": - version: 1.0.2 - resolution: "de-indent@npm:1.0.2" - checksum: 8deacc0f4a397a4414a0fc4d0034d2b7782e7cb4eaf34943ea47754e08eccf309a0e71fa6f56cc48de429ede999a42d6b4bca761bf91683be0095422dbf24611 - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.3.1": - version: 4.3.3 - resolution: "debug@npm:4.3.3" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 - languageName: node - linkType: hard - -"debug@npm:^3.1.1, debug@npm:^3.2.6": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"debug@npm:^4.1.0, debug@npm:^4.1.1": - version: 4.3.1 - resolution: "debug@npm:4.3.1" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 2c3352e37d5c46b0d203317cd45ea0e26b2c99f2d9dfec8b128e6ceba90dfb65425f5331bf3020fe9929d7da8c16758e737f4f3bfc0fce6b8b3d503bae03298b - languageName: node - linkType: hard - -"debug@npm:~3.1.0": - version: 3.1.0 - resolution: "debug@npm:3.1.0" - dependencies: - ms: 2.0.0 - checksum: 0b52718ab957254a5b3ca07fc34543bc778f358620c206a08452251eb7fc193c3ea3505072acbf4350219c14e2d71ceb7bdaa0d3370aa630b50da790458d08b3 - languageName: node - linkType: hard - -"decamelize@npm:^1.2.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 - languageName: node - linkType: hard - -"decompress-response@npm:^3.3.0": - version: 3.3.0 - resolution: "decompress-response@npm:3.3.0" - dependencies: - mimic-response: ^1.0.0 - checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 - languageName: node - linkType: hard - -"deep-equal@npm:^1.0.1": - version: 1.1.1 - resolution: "deep-equal@npm:1.1.1" - dependencies: - is-arguments: ^1.0.4 - is-date-object: ^1.0.1 - is-regex: ^1.0.4 - object-is: ^1.0.1 - object-keys: ^1.1.1 - regexp.prototype.flags: ^1.2.0 - checksum: f92686f2c5bcdf714a75a5fa7a9e47cb374a8ec9307e717b8d1ce61f56a75aaebf5619c2a12b8087a705b5a2f60d0292c35f8b58cb1f72e3268a3a15cab9f78d - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deepmerge@npm:^1.5.2": - version: 1.5.2 - resolution: "deepmerge@npm:1.5.2" - checksum: 5ecfe328e0105f2c554b90af555cbba052ab4468f1893e3b26800cb8869d3c1a1c590a5bbe1fdf481a8cc89b1bc47b5ac73a7153d5a0e4b702ea6eca081038a8 - languageName: node - linkType: hard - -"default-gateway@npm:^4.2.0": - version: 4.2.0 - resolution: "default-gateway@npm:4.2.0" - dependencies: - execa: ^1.0.0 - ip-regex: ^2.1.0 - checksum: 1f5be765471689c6bab33e0c8b87363c3e2485cc1ab78904d383a8a8293a79f684da2a3303744b112503f986af4ea87d917c63a468ed913e9b0c31588c02d6a4 - languageName: node - linkType: hard - -"defer-to-connect@npm:^1.0.1": - version: 1.1.3 - resolution: "defer-to-connect@npm:1.1.3" - checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - -"del@npm:^4.1.1": - version: 4.1.1 - resolution: "del@npm:4.1.1" - dependencies: - "@types/glob": ^7.1.1 - globby: ^6.1.0 - is-path-cwd: ^2.0.0 - is-path-in-cwd: ^2.0.0 - p-map: ^2.0.0 - pify: ^4.0.1 - rimraf: ^2.6.3 - checksum: 521f7da44bd79da841c06d573923d1f64f423aee8b8219c973478d3150ce1dcc024d03ad605929292adbff56d6448bca60d96dcdd2d8a53b46dbcb27e265c94b - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegate@npm:^3.1.2": - version: 3.2.0 - resolution: "delegate@npm:3.2.0" - checksum: d943058fe05897228b158cbd1bab05164df28c8f54127873231d6b03b0a5acc1b3ee1f98ac70ccc9b79cd84aa47118a7de111fee2923753491583905069da27d - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:^1.1.2, depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"des.js@npm:^1.0.0": - version: 1.0.1 - resolution: "des.js@npm:1.0.1" - dependencies: - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - checksum: 1ec2eedd7ed6bd61dd5e0519fd4c96124e93bb22de8a9d211b02d63e5dd152824853d919bb2090f965cc0e3eb9c515950a9836b332020d810f9c71feb0fd7df4 - languageName: node - linkType: hard - -"destroy@npm:~1.0.4": - version: 1.0.4 - resolution: "destroy@npm:1.0.4" - checksum: da9ab4961dc61677c709da0c25ef01733042614453924d65636a7db37308fef8a24cd1e07172e61173d471ca175371295fbc984b0af5b2b4ff47cd57bd784c03 - languageName: node - linkType: hard - -"detect-node@npm:^2.0.4": - version: 2.0.5 - resolution: "detect-node@npm:2.0.5" - checksum: 1a53096f6c3d1c4a82db2e97440d7a38eff7d8e635a5613ac1fff870135b709c5a4e6af789cda17bd6f4b6f036d30a913a0fe2dec125b565f5f7767e3e401c46 - languageName: node - linkType: hard - -"diffie-hellman@npm:^5.0.0": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: ^4.1.0 - miller-rabin: ^4.0.0 - randombytes: ^2.0.0 - checksum: 0e620f322170c41076e70181dd1c24e23b08b47dbb92a22a644f3b89b6d3834b0f8ee19e37916164e5eb1ee26d2aa836d6129f92723995267250a0b541811065 - languageName: node - linkType: hard - -"dir-glob@npm:^2.0.0, dir-glob@npm:^2.2.2": - version: 2.2.2 - resolution: "dir-glob@npm:2.2.2" - dependencies: - path-type: ^3.0.0 - checksum: 3aa48714a9f7845ffc30ab03a5c674fe760477cc55e67b0847333371549227d93953e6627ec160f75140c5bea5c5f88d13c01de79bd1997a588efbcf06980842 - languageName: node - linkType: hard - -"dns-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "dns-equal@npm:1.0.0" - checksum: a8471ac849c7c13824f053babea1bc26e2f359394dd5a460f8340d8abd13434be01e3327a5c59d212f8c8997817450efd3f3ac77bec709b21979cf0235644524 - languageName: node - linkType: hard - -"dns-packet@npm:^1.3.1": - version: 1.3.1 - resolution: "dns-packet@npm:1.3.1" - dependencies: - ip: ^1.1.0 - safe-buffer: ^5.0.1 - checksum: 6575edeea6e6e719823a1574cd1adcfebdc96f870cb1b367d6168490dc36c9826a97bf57ad009e6fdcd3dc5000cc43de7cb72a2102ba05b83178c8d0300c5a6e - languageName: node - linkType: hard - -"dns-txt@npm:^2.0.2": - version: 2.0.2 - resolution: "dns-txt@npm:2.0.2" - dependencies: - buffer-indexof: ^1.0.0 - checksum: 80130b665379ecd991687ae079fbee25d091e03e4c4cef41e7643b977849ac48c2f56bfcb3727e53594d29029b833749811110d9f3fbee1b26a6e6f8096a5cef - languageName: node - linkType: hard - -"docsearch.js@npm:^2.5.2": - version: 2.6.3 - resolution: "docsearch.js@npm:2.6.3" - dependencies: - algoliasearch: ^3.24.5 - autocomplete.js: 0.36.0 - hogan.js: ^3.0.2 - request: ^2.87.0 - stack-utils: ^1.0.1 - to-factory: ^1.0.0 - zepto: ^1.2.0 - checksum: e6a84727f0e6b8a094c9bc88066d0584ad7e43d327f230dc85bc051619019ac22a75d3aba609cfd048c4f17ad92a35fe4b65d942d33f973598e6fb1847400438 - languageName: node - linkType: hard - -"dom-converter@npm:^0.2": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 - languageName: node - linkType: hard - -"dom-serializer@npm:0": - version: 0.2.2 - resolution: "dom-serializer@npm:0.2.2" - dependencies: - domelementtype: ^2.0.1 - entities: ^2.0.0 - checksum: 376344893e4feccab649a14ca1a46473e9961f40fe62479ea692d4fee4d9df1c00ca8654811a79c1ca7b020096987e1ca4fb4d7f8bae32c1db800a680a0e5d5e - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 - languageName: node - linkType: hard - -"domain-browser@npm:^1.1.1": - version: 1.2.0 - resolution: "domain-browser@npm:1.2.0" - checksum: 8f1235c7f49326fb762f4675795246a6295e7dd566b4697abec24afdba2460daa7dfbd1a73d31efbf5606b3b7deadb06ce47cf06f0a476e706153d62a4ff2b90 - languageName: node - linkType: hard - -"domelementtype@npm:1, domelementtype@npm:^1.3.1": - version: 1.3.1 - resolution: "domelementtype@npm:1.3.1" - checksum: 7893da40218ae2106ec6ffc146b17f203487a52f5228b032ea7aa470e41dfe03e1bd762d0ee0139e792195efda765434b04b43cddcf63207b098f6ae44b36ad6 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1": - version: 2.2.0 - resolution: "domelementtype@npm:2.2.0" - checksum: 24cb386198640cd58aa36f8c987f2ea61859929106d06ffcc8f547e70cb2ed82a6dc56dcb8252b21fba1f1ea07df6e4356d60bfe57f77114ca1aed6828362629 - languageName: node - linkType: hard - -"domhandler@npm:^2.3.0": - version: 2.4.2 - resolution: "domhandler@npm:2.4.2" - dependencies: - domelementtype: 1 - checksum: 49bd70c9c784f845cd047e1dfb3611bd10891c05719acfc93f01fc726a419ed09fbe0b69f9064392d556a63fffc5a02010856cedae9368f4817146d95a97011f - languageName: node - linkType: hard - -"domutils@npm:^1.5.1, domutils@npm:^1.7.0": - version: 1.7.0 - resolution: "domutils@npm:1.7.0" - dependencies: - dom-serializer: 0 - domelementtype: 1 - checksum: f60a725b1f73c1ae82f4894b691601ecc6ecb68320d87923ac3633137627c7865725af813ae5d188ad3954283853bcf46779eb50304ec5d5354044569fcefd2b - languageName: node - linkType: hard - -"dot-prop@npm:^5.2.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea - languageName: node - linkType: hard - -"duplexer3@npm:^0.1.4": - version: 0.1.4 - resolution: "duplexer3@npm:0.1.4" - checksum: c2fd6969314607d23439c583699aaa43c4100d66b3e161df55dccd731acc57d5c81a64bb4f250805fbe434ddb1d2623fee2386fb890f5886ca1298690ec53415 - languageName: node - linkType: hard - -"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": - version: 3.7.1 - resolution: "duplexify@npm:3.7.1" - dependencies: - end-of-stream: ^1.0.0 - inherits: ^2.0.1 - readable-stream: ^2.0.0 - stream-shift: ^1.0.0 - checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 - languageName: node - linkType: hard - -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" - dependencies: - jsbn: ~0.1.0 - safer-buffer: ^2.1.0 - checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.3.712": - version: 1.3.717 - resolution: "electron-to-chromium@npm:1.3.717" - checksum: d1762acc1cdd9eff6832321b0172438cfa363437b660e16666e6ac7d04483db5d2ab44331628e9d6fbdcfd93bf691d9e37f4378f4fa73ae706051f4570a864e1 - languageName: node - linkType: hard - -"elliptic@npm:^6.5.3": - version: 6.5.4 - resolution: "elliptic@npm:6.5.4" - dependencies: - bn.js: ^4.11.9 - brorand: ^1.1.0 - hash.js: ^1.0.0 - hmac-drbg: ^1.0.1 - inherits: ^2.0.4 - minimalistic-assert: ^1.0.1 - minimalistic-crypto-utils: ^1.0.1 - checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f4 - languageName: node - linkType: hard - -"emoji-regex@npm:^7.0.1": - version: 7.0.3 - resolution: "emoji-regex@npm:7.0.3" - checksum: 9159b2228b1511f2870ac5920f394c7e041715429a68459ebe531601555f11ea782a8e1718f969df2711d38c66268174407cbca57ce36485544f695c2dfdc96e - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emojis-list@npm:^2.0.0": - version: 2.1.0 - resolution: "emojis-list@npm:2.1.0" - checksum: fb61fa6356dfcc9fbe6db8e334c29da365a34d3d82a915cb59621883d3023d804fd5edad5acd42b8eec016936e81d3b38e2faf921b32e073758374253afe1272 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.11, encoding@npm:^0.1.12": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"enhanced-resolve@npm:^4.5.0": - version: 4.5.0 - resolution: "enhanced-resolve@npm:4.5.0" - dependencies: - graceful-fs: ^4.1.2 - memory-fs: ^0.5.0 - tapable: ^1.0.0 - checksum: 4d87488584c4d67d356ef4ba04978af4b2d4d18190cb859efac8e8475a34d5d6c069df33faa5a0a22920b0586dbf330f6a08d52bb15a8771a9ce4d70a2da74ba - languageName: node - linkType: hard - -"entities@npm:^1.1.1, entities@npm:~1.1.1": - version: 1.1.2 - resolution: "entities@npm:1.1.2" - checksum: d537b02799bdd4784ffd714d000597ed168727bddf4885da887c5a491d735739029a00794f1998abbf35f3f6aeda32ef5c15010dca1817d401903a501b6d3e05 - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envify@npm:^4.0.0": - version: 4.1.0 - resolution: "envify@npm:4.1.0" - dependencies: - esprima: ^4.0.0 - through: ~2.3.4 - bin: - envify: bin/envify - checksum: ee48873a56a117b812fb5e4d50870bf4440f5ba3462db4f4677e041fbdf2d05c70d72baa59af5f584373ab54d751b6543087a9afd4313774e058f020486728b8 - languageName: node - linkType: hard - -"envinfo@npm:^7.2.0": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"errno@npm:^0.1.3, errno@npm:~0.1.7": - version: 0.1.8 - resolution: "errno@npm:0.1.8" - dependencies: - prr: ~1.0.1 - bin: - errno: cli.js - checksum: 1271f7b9fbb3bcbec76ffde932485d1e3561856d21d847ec613a9722ee924cdd4e523a62dc71a44174d91e898fe21fdc8d5b50823f4b5e0ce8c35c8271e6ef4a - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.0-next.2": - version: 1.18.0 - resolution: "es-abstract@npm:1.18.0" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.2 - is-callable: ^1.2.3 - is-negative-zero: ^2.0.1 - is-regex: ^1.1.2 - is-string: ^1.0.5 - object-inspect: ^1.9.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - string.prototype.trimend: ^1.0.4 - string.prototype.trimstart: ^1.0.4 - unbox-primitive: ^1.0.0 - checksum: 6783bea97f372fd4f1fc77e4e294d024b9f40559a83b40c46b69565511cf13d462a6189b822228c6bb818bd09d2f23b33500206d39bbdc69f7cc7ffebf6640a1 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"es6-promise@npm:^4.1.0": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-goat@npm:^2.0.0": - version: 2.1.1 - resolution: "escape-goat@npm:2.1.1" - checksum: ce05c70c20dd7007b60d2d644b625da5412325fdb57acf671ba06cb2ab3cd6789e2087026921a05b665b0a03fadee2955e7fc0b9a67da15a6551a980b260eba7 - languageName: node - linkType: hard - -"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - -"eslint-scope@npm:^4.0.3": - version: 4.0.3 - resolution: "eslint-scope@npm:4.0.3" - dependencies: - esrecurse: ^4.1.0 - estraverse: ^4.1.1 - checksum: c5f835f681884469991fe58d76a554688d9c9e50811299ccd4a8f79993a039f5bcb0ee6e8de2b0017d97c794b5832ef3b21c9aac66228e3aa0f7a0485bcfb65b - languageName: node - linkType: hard - -"esprima@npm:^4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 - languageName: node - linkType: hard - -"esrecurse@npm:^4.1.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.2.0 - resolution: "estraverse@npm:5.2.0" - checksum: ec11b70d946bf5d7f76f91db38ef6f08109ac1b36cda293a26e678e58df4719f57f67b9ec87042afdd1f0267cee91865be3aa48d2161765a93defab5431be7b8 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.0": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 - languageName: node - linkType: hard - -"events@npm:^1.1.0": - version: 1.1.1 - resolution: "events@npm:1.1.1" - checksum: 40431eb005cc4c57861b93d44c2981a49e7feb99df84cf551baed299ceea4444edf7744733f6a6667e942af687359b1f4a87ec1ec4f21d5127dac48a782039b9 - languageName: node - linkType: hard - -"events@npm:^3.0.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"eventsource@npm:^1.0.7": - version: 1.1.0 - resolution: "eventsource@npm:1.1.0" - dependencies: - original: ^1.0.0 - checksum: 78338b7e75ec471cb793efb3319e0c4d2bf00fb638a2e3f888ad6d98cd1e3d4492a29f554c0921c7b2ac5130c3a732a1a0056739f6e2f548d714aec685e5da7e - languageName: node - linkType: hard - -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: ^1.3.4 - node-gyp: latest - safe-buffer: ^5.1.1 - checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 - languageName: node - linkType: hard - -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: ^6.0.0 - get-stream: ^4.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"express@npm:^4.17.1": - version: 4.17.1 - resolution: "express@npm:4.17.1" - dependencies: - accepts: ~1.3.7 - array-flatten: 1.1.1 - body-parser: 1.19.0 - content-disposition: 0.5.3 - content-type: ~1.0.4 - cookie: 0.4.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: ~1.1.2 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: ~1.1.2 - fresh: 0.5.2 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.5 - qs: 6.7.0 - range-parser: ~1.2.1 - safe-buffer: 5.1.2 - send: 0.17.1 - serve-static: 1.14.1 - setprototypeof: 1.1.1 - statuses: ~1.5.0 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: d964e9e17af331ea6fa2f84999b063bc47189dd71b4a735df83f9126d3bb2b92e830f1cb1d7c2742530eb625e2689d7a9a9c71f0c3cc4dd6015c3cd32a01abd5 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - -"extend@npm:~3.0.2": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - -"extsprintf@npm:1.3.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 - languageName: node - linkType: hard - -"extsprintf@npm:^1.2.0": - version: 1.4.0 - resolution: "extsprintf@npm:1.4.0" - checksum: 184dc8a413eb4b1ff16bdce797340e7ded4d28511d56a1c9afa5a95bcff6ace154063823eaf0206dbbb0d14059d74f382a15c34b7c0636fa74a7e681295eb67e - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^2.2.6": - version: 2.2.7 - resolution: "fast-glob@npm:2.2.7" - dependencies: - "@mrmlnc/readdir-enhanced": ^2.2.1 - "@nodelib/fs.stat": ^1.1.2 - glob-parent: ^3.1.0 - is-glob: ^4.0.0 - merge2: ^1.2.3 - micromatch: ^3.1.10 - checksum: 304ccff1d437fcc44ae0168b0c3899054b92e0fd6af6ad7c3ccc82ab4ddd210b99c7c739d60ee3686da2aa165cd1a31810b31fd91f7c2a575d297342a9fc0534 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"faye-websocket@npm:^0.11.3": - version: 0.11.3 - resolution: "faye-websocket@npm:0.11.3" - dependencies: - websocket-driver: ">=0.5.1" - checksum: d7b2d68546812ea24e3079bd1e08bf1d79cd6d6137bfcea565d1cb1f6a5fc8fc29b689df2c1aff8b8b291d60fc808e1b27aa2896b86ba77ded10f1d9734c8e9f - languageName: node - linkType: hard - -"figgy-pudding@npm:^3.5.1": - version: 3.5.2 - resolution: "figgy-pudding@npm:3.5.2" - checksum: 4090bd66193693dcda605e44d6b8715d8fb5c92a67acd57826e55cf816a342f550d57e5638f822b39366e1b2fdb244e99b3068a37213aa1d6c1bf602b8fde5ae - languageName: node - linkType: hard - -"figures@npm:^3.0.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: ^1.0.5 - checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b - languageName: node - linkType: hard - -"file-loader@npm:^3.0.1": - version: 3.0.1 - resolution: "file-loader@npm:3.0.1" - dependencies: - loader-utils: ^1.0.2 - schema-utils: ^1.0.0 - peerDependencies: - webpack: ^4.0.0 - checksum: dbd818445d36453f2e79892b67fbb67fbe81aaa84c305eabffa86c82b2dfec26a6ec10068b0ed29f3fed789b0cf1574a9a86440a6a6adab8b40ec69698f22519 - languageName: node - linkType: hard - -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"finalhandler@npm:~1.1.2": - version: 1.1.2 - resolution: "finalhandler@npm:1.1.2" - dependencies: - debug: 2.6.9 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - statuses: ~1.5.0 - unpipe: ~1.0.0 - checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.1 - resolution: "find-cache-dir@npm:3.3.1" - dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 0f7c22b65e07f9b486b4560227d014fab1e79ffbbfbafb87d113a2e878510bd620ef6fdff090e5248bb2846d28851d19e42bfdc7c50687966acc106328e7abf1 - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"flush-write-stream@npm:^1.0.0": - version: 1.1.1 - resolution: "flush-write-stream@npm:1.1.1" - dependencies: - inherits: ^2.0.3 - readable-stream: ^2.3.6 - checksum: 42e07747f83bcd4e799da802e621d6039787749ffd41f5517f8c4f786ee967e31ba32b09f8b28a9c6f67bd4f5346772e604202df350e8d99f4141771bae31279 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.0.0": - version: 1.13.3 - resolution: "follow-redirects@npm:1.13.3" - peerDependenciesMeta: - debug: - optional: true - checksum: 4b5aaa91a0f938547a083d001a572da4d6b7586b699f330da8794ae2cf8b0d8628bcde794f9b205fbe6c6dcab30272454e723aed8f5540bf47a41fa8c7e36441 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.10.0": - version: 1.14.3 - resolution: "follow-redirects@npm:1.14.3" - peerDependenciesMeta: - debug: - optional: true - checksum: b4d89339afd119b5e6fd92f0e81ae7d3621a5421af7d4a7d94539765c1d5546cf61d2f3219d40596e53c7c253307fbaf5dc772254aa9170fdfe1f9d7731732a9 - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - -"foreach@npm:^2.0.5": - version: 2.0.5 - resolution: "foreach@npm:2.0.5" - checksum: dab4fbfef0b40b69ee5eab81bcb9626b8fa8b3469c8cfa26480f3e5e1ee08c40eae07048c9a967c65aeda26e774511ccc70b3f10a604c01753c6ef24361f0fc8 - languageName: node - linkType: hard - -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 - languageName: node - linkType: hard - -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 - languageName: node - linkType: hard - -"forwarded@npm:~0.1.2": - version: 0.1.2 - resolution: "forwarded@npm:0.1.2" - checksum: 54695c574292f9bc6bfa52111844337bc2e61cfcc5ec82f16b816d721a67a0c76b4849a34b57e38e51d64ddbb81aef974f393579f610ed1b990470e75abad2e0 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"from2@npm:^2.1.0": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: ^2.0.1 - readable-stream: ^2.0.0 - checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b - languageName: node - linkType: hard - -"fs-extra@npm:^7.0.1, fs-extra@npm:~7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-write-stream-atomic@npm:^1.0.8": - version: 1.0.10 - resolution: "fs-write-stream-atomic@npm:1.0.10" - dependencies: - graceful-fs: ^4.1.2 - iferr: ^0.1.5 - imurmurhash: ^0.1.4 - readable-stream: 1 || 2 - checksum: 43c2d6817b72127793abc811ebf87a135b03ac7cbe41cdea9eeacf59b23e6e29b595739b083e9461303d525687499a1aaefcec3e5ff9bc82b170edd3dc467ccc - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^1.2.7": - version: 1.2.13 - resolution: "fsevents@npm:1.2.13" - dependencies: - bindings: ^1.5.0 - nan: ^2.12.1 - checksum: ae855aa737aaa2f9167e9f70417cf6e45a5cd11918e1fee9923709a0149be52416d765433b4aeff56c789b1152e718cd1b13ddec6043b78cdda68260d86383c1 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@npm:~2.3.1": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^1.2.7#~builtin": - version: 1.2.13 - resolution: "fsevents@patch:fsevents@npm%3A1.2.13#~builtin::version=1.2.13&hash=18f3a7" - dependencies: - bindings: ^1.5.0 - nan: ^2.12.1 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@~2.3.1#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"gauge@npm:^4.0.0": - version: 4.0.0 - resolution: "gauge@npm:4.0.0" - dependencies: - ansi-regex: ^5.0.1 - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 637b34c84f518defa89319dbef68211a24e9302182ad2a619e3be1be5b7dcf2a962c8359e889294af667440f4722e7e6e61671859e00bd8ec280a136ded89b25 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.1": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 - languageName: node - linkType: hard - -"get-stream@npm:^4.0.0, get-stream@npm:^4.1.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^5.1.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" - dependencies: - assert-plus: ^1.0.0 - checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 - languageName: node - linkType: hard - -"glob-parent@npm:^3.1.0": - version: 3.1.0 - resolution: "glob-parent@npm:3.1.0" - dependencies: - is-glob: ^3.1.0 - path-dirname: ^1.0.0 - checksum: 653d559237e89a11b9934bef3f392ec42335602034c928590544d383ff5ef449f7b12f3cfa539708e74bc0a6c28ab1fe51d663cc07463cdf899ba92afd85a855 - languageName: node - linkType: hard - -"glob-parent@npm:~5.1.0": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.3.0": - version: 0.3.0 - resolution: "glob-to-regexp@npm:0.3.0" - checksum: d34b3219d860042d508c4893b67617cd16e2668827e445ff39cff9f72ef70361d3dc24f429e003cdfb6607c75c9664b8eadc41d2eeb95690af0b0d3113c1b23b - languageName: node - linkType: hard - -"glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.1.6 - resolution: "glob@npm:7.1.6" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6 - languageName: node - linkType: hard - -"global-dirs@npm:^2.0.1": - version: 2.1.0 - resolution: "global-dirs@npm:2.1.0" - dependencies: - ini: 1.3.7 - checksum: f80b74032c0359a6af7f37d153b8ced67710135ed7ab45b03efe688f5792ef859b660561beeb79ecce3106071c2547196c0971dfecdb2332139892129487233d - languageName: node - linkType: hard - -"global@npm:^4.3.2": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: ^2.19.0 - process: ^0.11.10 - checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globby@npm:^6.1.0": - version: 6.1.0 - resolution: "globby@npm:6.1.0" - dependencies: - array-union: ^1.0.1 - glob: ^7.0.3 - object-assign: ^4.0.1 - pify: ^2.0.0 - pinkie-promise: ^2.0.0 - checksum: 18109d6b9d55643d2b98b59c3cfae7073ccfe39829632f353d516cc124d836c2ddebe48a23f04af63d66a621b6d86dd4cbd7e6af906f2458a7fe510ffc4bd424 - languageName: node - linkType: hard - -"globby@npm:^7.1.1": - version: 7.1.1 - resolution: "globby@npm:7.1.1" - dependencies: - array-union: ^1.0.1 - dir-glob: ^2.0.0 - glob: ^7.1.2 - ignore: ^3.3.5 - pify: ^3.0.0 - slash: ^1.0.0 - checksum: f0eba08a08ae7c98149a4411661c0bf08c4717d81e6f355cf624fb01880b249737eb8e951bf86124cb3af8ea1c793c0a9d363ed5cdec99bb2c6b68f8a323025f - languageName: node - linkType: hard - -"globby@npm:^9.2.0": - version: 9.2.0 - resolution: "globby@npm:9.2.0" - dependencies: - "@types/glob": ^7.1.1 - array-union: ^1.0.2 - dir-glob: ^2.2.2 - fast-glob: ^2.2.6 - glob: ^7.1.3 - ignore: ^4.0.3 - pify: ^4.0.1 - slash: ^2.0.0 - checksum: 9b4cb70aa0b43bf89b18cf0e543695185e16d8dd99c17bdc6a1df0a9f88ff9dc8d2467aebace54c3842fc451a564882948c87a3b4fbdb1cacf3e05fd54b6ac5d - languageName: node - linkType: hard - -"good-listener@npm:^1.2.2": - version: 1.2.2 - resolution: "good-listener@npm:1.2.2" - dependencies: - delegate: ^3.1.2 - checksum: f39fb82c4e41524f56104cfd2d7aef1a88e72f3f75139115fbdf98cc7d844e0c1b39218b2e83438c6188727bf904ed78c7f0f2feff67b32833bc3af7f0202b33 - languageName: node - linkType: hard - -"got@npm:^9.6.0": - version: 9.6.0 - resolution: "got@npm:9.6.0" - dependencies: - "@sindresorhus/is": ^0.14.0 - "@szmarczak/http-timer": ^1.1.2 - cacheable-request: ^6.0.0 - decompress-response: ^3.3.0 - duplexer3: ^0.1.4 - get-stream: ^4.1.0 - lowercase-keys: ^1.0.1 - mimic-response: ^1.0.1 - p-cancelable: ^1.0.0 - to-readable-stream: ^1.0.0 - url-parse-lax: ^3.0.0 - checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6": - version: 4.2.6 - resolution: "graceful-fs@npm:4.2.6" - checksum: 792e64aafda05a151289f83eaa16aff34ef259658cefd65393883d959409f5a2389b0ec9ebf28f3d21f1b0ddc8f594a1162ae9b18e2b507a6799a70706ec573d - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.8 - resolution: "graceful-fs@npm:4.2.8" - checksum: 5d224c8969ad0581d551dfabdb06882706b31af2561bd5e2034b4097e67cc27d05232849b8643866585fd0a41c7af152950f8776f4dd5579e9853733f31461c6 - languageName: node - linkType: hard - -"graphql-tag@npm:^2.10.1, graphql-tag@npm:^2.12.3": - version: 2.12.5 - resolution: "graphql-tag@npm:2.12.5" - dependencies: - tslib: ^2.1.0 - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 7afe8b0a261bc81278e8350cbc48a641986665fa88521ece137feb8d1d62aacbe79afd4e159b618d56af106291ae8369592e46584fd8fbaf4f440201ea884fdd - languageName: node - linkType: hard - -"graphql@npm:^14.5.8": - version: 14.7.0 - resolution: "graphql@npm:14.7.0" - dependencies: - iterall: ^1.2.2 - checksum: e5f4e60799421a573904f390e1ec0aa76360f751688dbbe62e9c35baa0d3727c8d59a659bfc524f126dffe3518da87fd8ecaa78c94fd5c0fe4e035c670745242 - languageName: node - linkType: hard - -"gray-matter@npm:^4.0.1": - version: 4.0.2 - resolution: "gray-matter@npm:4.0.2" - dependencies: - js-yaml: ^3.11.0 - kind-of: ^6.0.2 - section-matter: ^1.0.0 - strip-bom-string: ^1.0.0 - checksum: b9c0ac42eb025f26ff2fc5a9a5f6b482acae78ca6f96ad5f31613636ab018a9c42d9d9e1d9012555fa2de45394b237138593ca4a691cf5b8bbc6ce07fd1ae8df - languageName: node - linkType: hard - -"handle-thing@npm:^2.0.0": - version: 2.0.1 - resolution: "handle-thing@npm:2.0.1" - checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c - languageName: node - linkType: hard - -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.0 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee - languageName: node - linkType: hard - -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: ^6.12.3 - har-schema: ^2.0.0 - checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 - languageName: node - linkType: hard - -"has-ansi@npm:^2.0.0": - version: 2.0.0 - resolution: "has-ansi@npm:2.0.0" - dependencies: - ansi-regex: ^2.0.0 - checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - -"has-yarn@npm:^2.1.0": - version: 2.1.0 - resolution: "has-yarn@npm:2.1.0" - checksum: 5eb1d0bb8518103d7da24532bdbc7124ffc6d367b5d3c10840b508116f2f1bcbcf10fd3ba843ff6e2e991bdf9969fd862d42b2ed58aade88343326c950b7e7f7 - languageName: node - linkType: hard - -"has@npm:^1.0.0, has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc - languageName: node - linkType: hard - -"hash-sum@npm:^1.0.2": - version: 1.0.2 - resolution: "hash-sum@npm:1.0.2" - checksum: 268553ba6c84333f502481d101a7d65cd39f61963544f12fc3ce60264718f471796dbc37348cee08c5529f04fafeba041886a4d35721e34d6440a48a42629283 - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.1 - checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f - languageName: node - linkType: hard - -"he@npm:1.2.x, he@npm:^1.1.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"hex-color-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "hex-color-regex@npm:1.1.0" - checksum: 44fa1b7a26d745012f3bfeeab8015f60514f72d2fcf10dce33068352456b8d71a2e6bc5a17f933ab470da2c5ab1e3e04b05caf3fefe3c1cabd7e02e516fc8784 - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: ^1.0.3 - minimalistic-assert: ^1.0.0 - minimalistic-crypto-utils: ^1.0.1 - checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 - languageName: node - linkType: hard - -"hogan.js@npm:^3.0.2": - version: 3.0.2 - resolution: "hogan.js@npm:3.0.2" - dependencies: - mkdirp: 0.3.0 - nopt: 1.0.10 - bin: - hulk: ./bin/hulk - checksum: c7bbff84faa9ca265c39f4a2100546ba0388fcc9c5bac8526f488592ce3fcaa042eba6ac25db277f4478ec3855b9bc28ce59acffbf6e8a28d45a17df7590c6aa - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.3.2": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: ^16.7.0 - checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 - languageName: node - linkType: hard - -"hpack.js@npm:^2.1.6": - version: 2.1.6 - resolution: "hpack.js@npm:2.1.6" - dependencies: - inherits: ^2.0.1 - obuf: ^1.0.0 - readable-stream: ^2.0.1 - wbuf: ^1.1.0 - checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e - languageName: node - linkType: hard - -"hsl-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsl-regex@npm:1.0.0" - checksum: de9ee1bf39de1b83cc3fa0fa1cc337f29f14911e79411d66347365c54fab6b109eea2dd741eaa02486e24de31627ad7bf4453f22224fb55a2fe2b58166fa63b8 - languageName: node - linkType: hard - -"hsla-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsla-regex@npm:1.0.0" - checksum: 9aa6eb9ff6c102d2395435aa5d1d91eae20043c4b1497c543d8db501c05f3edacd9a07fb34a987059d7902dba415af4cb4e610f751859ae8e7525df4ffcd085f - languageName: node - linkType: hard - -"html-entities@npm:^1.3.1": - version: 1.4.0 - resolution: "html-entities@npm:1.4.0" - checksum: 4b73ffb9eead200f99146e4fbe70acb0af2fea136901a131fc3a782e9ef876a7cbb07dec303ca1f8804232b812249dbf3643a270c9c524852065d9224a8dcdd0 - languageName: node - linkType: hard - -"html-minifier@npm:^3.2.3": - version: 3.5.21 - resolution: "html-minifier@npm:3.5.21" - dependencies: - camel-case: 3.0.x - clean-css: 4.2.x - commander: 2.17.x - he: 1.2.x - param-case: 2.1.x - relateurl: 0.2.x - uglify-js: 3.4.x - bin: - html-minifier: ./cli.js - checksum: 66a86841a8b919a11a13d9b80176845cfbc5dda6e88efea2cf312ecc07427d9eab4aca70537357583e5e66ee1e62da14e035792eea000f8f3a9ca1856b2fb2b2 - languageName: node - linkType: hard - -"html-tags@npm:^2.0.0": - version: 2.0.0 - resolution: "html-tags@npm:2.0.0" - checksum: a02b47dd71de5572f16c9a1d88e2876fcc4d60bb36b7effce48cd3cd0bdd8fdcbf2602d968d2268d134767620d876edc08d8a6fc0abd9dc59a05e89d56251fbb - languageName: node - linkType: hard - -"html-tags@npm:^3.1.0": - version: 3.1.0 - resolution: "html-tags@npm:3.1.0" - checksum: 67587f2d4022390d7bc34b1313773ecb0b0e0c79fb331aa3e20023eb4c862c7188a1ff775d126fcd75f4e4f08f956666a1c57688c4d24d85a77f9d4b1a42f345 - languageName: node - linkType: hard - -"htmlparser2@npm:^3.10.1": - version: 3.10.1 - resolution: "htmlparser2@npm:3.10.1" - dependencies: - domelementtype: ^1.3.1 - domhandler: ^2.3.0 - domutils: ^1.5.1 - entities: ^1.1.1 - inherits: ^2.0.1 - readable-stream: ^3.1.1 - checksum: 6875f7dd875aa10be17d9b130e3738cd8ed4010b1f2edaf4442c82dfafe9d9336b155870dcc39f38843cbf7fef5e4fcfdf0c4c1fd4db3a1b91a1e0ee8f6c3475 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-deceiver@npm:^1.2.7": - version: 1.2.7 - resolution: "http-deceiver@npm:1.2.7" - checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 - languageName: node - linkType: hard - -"http-errors@npm:1.7.2": - version: 1.7.2 - resolution: "http-errors@npm:1.7.2" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.1 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.0 - checksum: 5534b0ae08e77f5a45a2380f500e781f6580c4ff75b816cb1f09f99a290b57e78a518be6d866db1b48cca6b052c09da2c75fc91fb16a2fe3da3c44d9acbb9972 - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: ">= 1.4.0 < 2" - checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c - languageName: node - linkType: hard - -"http-errors@npm:~1.7.2": - version: 1.7.3 - resolution: "http-errors@npm:1.7.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.0 - checksum: a59f359473f4b3ea78305beee90d186268d6075432622a46fb7483059068a2dd4c854a20ac8cd438883127e06afb78c1309168bde6cdfeed1e3700eb42487d99 - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.3 - resolution: "http-parser-js@npm:0.5.3" - checksum: 6f3142c5f60ad995a6895a1dc4f70f8cef0910745366e97cbcb99caa604590dbcc11006b00989ad306837d6b820e9bfc6e801c4060ed19a0e4df83caa8577cb5 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - -"http-proxy-middleware@npm:0.19.1": - version: 0.19.1 - resolution: "http-proxy-middleware@npm:0.19.1" - dependencies: - http-proxy: ^1.17.0 - is-glob: ^4.0.0 - lodash: ^4.17.11 - micromatch: ^3.1.10 - checksum: 64df0438417a613bb22b3689d9652a1b7a56f10b145a463f95f4e8a9b9a351f2c63bc5fd3a9cd710baec224897733b6f299cb7f974ea82769b2a4f1e074764ac - languageName: node - linkType: hard - -"http-proxy@npm:^1.17.0": - version: 1.18.1 - resolution: "http-proxy@npm:1.18.1" - dependencies: - eventemitter3: ^4.0.0 - follow-redirects: ^1.0.0 - requires-port: ^1.0.0 - checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 - languageName: node - linkType: hard - -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" - dependencies: - assert-plus: ^1.0.0 - jsprim: ^1.2.2 - sshpk: ^1.7.0 - checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c - languageName: node - linkType: hard - -"https-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "https-browserify@npm:1.0.0" - checksum: 09b35353e42069fde2435760d13f8a3fb7dd9105e358270e2e225b8a94f811b461edd17cb57594e5f36ec1218f121c160ddceeec6e8be2d55e01dcbbbed8cbae - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" - dependencies: - agent-base: 6 - debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"icss-replace-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "icss-replace-symbols@npm:1.1.0" - checksum: 24575b2c2f7e762bfc6f4beee31be9ba98a01cad521b5aa9954090a5de2b5e1bf67814c17e22f9e51b7d798238db8215a173d6c2b4726ce634ce06b68ece8045 - languageName: node - linkType: hard - -"icss-utils@npm:^4.1.0": - version: 4.1.1 - resolution: "icss-utils@npm:4.1.1" - dependencies: - postcss: ^7.0.14 - checksum: a4ca2c6b82cb3eb879d635bd4028d74bca174edc49ee48ef5f01988489747d340a389d5a0ac6f6887a5c24ab8fc4386c781daab32a7ade5344a2edff66207635 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.4": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"iferr@npm:^0.1.5": - version: 0.1.5 - resolution: "iferr@npm:0.1.5" - checksum: a18d19b6ad06a2d5412c0d37f6364869393ef6d1688d59d00082c1f35c92399094c031798340612458cd832f4f2e8b13bc9615934a7d8b0c53061307a3816aa1 - languageName: node - linkType: hard - -"ignore@npm:^3.3.5": - version: 3.3.10 - resolution: "ignore@npm:3.3.10" - checksum: 23e8cc776e367b56615ab21b78decf973a35dfca5522b39d9b47643d8168473b0d1f18dd1321a1bab466a12ea11a2411903f3b21644f4d5461ee0711ec8678bd - languageName: node - linkType: hard - -"ignore@npm:^4.0.3": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 - languageName: node - linkType: hard - -"immediate@npm:^3.2.3": - version: 3.3.0 - resolution: "immediate@npm:3.3.0" - checksum: 634b4305101e2452eba6c07d485bf3e415995e533c94b9c3ffbc37026fa1be34def6e4f2276b0dc2162a3f91628564a4bfb26280278b89d3ee54624e854d2f5f - languageName: node - linkType: hard - -"import-cwd@npm:^2.0.0": - version: 2.1.0 - resolution: "import-cwd@npm:2.1.0" - dependencies: - import-from: ^2.1.0 - checksum: b8786fa3578f3df55370352bf61f99c2d8e6ee9b5741a07503d5a73d99281d141330a8faf87078e67527be4558f758356791ee5efb4b0112ac5eaed0f07de544 - languageName: node - linkType: hard - -"import-fresh@npm:^2.0.0": - version: 2.0.0 - resolution: "import-fresh@npm:2.0.0" - dependencies: - caller-path: ^2.0.0 - resolve-from: ^3.0.0 - checksum: 610255f9753cc6775df00be08e9f43691aa39f7703e3636c45afe22346b8b545e600ccfe100c554607546fc8e861fa149a0d1da078c8adedeea30fff326eef79 - languageName: node - linkType: hard - -"import-from@npm:^2.1.0": - version: 2.1.0 - resolution: "import-from@npm:2.1.0" - dependencies: - resolve-from: ^3.0.0 - checksum: 91f6f89f46a07227920ef819181bb52eb93023ccc0bdf00224fdfb326f8f753e279ad06819f39a02bb88c9d3a4606adc85b0cc995285e5d65feeb59f1421a1d4 - languageName: node - linkType: hard - -"import-lazy@npm:^2.1.0": - version: 2.1.0 - resolution: "import-lazy@npm:2.1.0" - checksum: 05294f3b9dd4971d3a996f0d2f176410fb6745d491d6e73376429189f5c1c3d290548116b2960a7cf3e89c20cdf11431739d1d2d8c54b84061980795010e803a - languageName: node - linkType: hard - -"import-lazy@npm:~4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - -"import-local@npm:^2.0.0": - version: 2.0.0 - resolution: "import-local@npm:2.0.0" - dependencies: - pkg-dir: ^3.0.0 - resolve-cwd: ^2.0.0 - bin: - import-local-fixture: fixtures/cli.js - checksum: b8469252483624379fd65d53c82f3658b32a1136f7168bfeea961a4ea7ca10a45786ea2b02e0006408f9cd22d2f33305a6f17a64e4d5a03274a50942c5e7c949 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"indexes-of@npm:^1.0.1": - version: 1.0.1 - resolution: "indexes-of@npm:1.0.1" - checksum: 4f9799b1739a62f3e02d09f6f4162cf9673025282af7fa36e790146e7f4e216dad3e776a25b08536c093209c9fcb5ea7bd04b082d42686a45f58ff401d6da32e - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.3, infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"inherits@npm:2.0.1": - version: 2.0.1 - resolution: "inherits@npm:2.0.1" - checksum: 6536b9377296d4ce8ee89c5c543cb75030934e61af42dba98a428e7d026938c5985ea4d1e3b87743a5b834f40ed1187f89c2d7479e9d59e41d2d1051aefba07b - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - -"ini@npm:1.3.7": - version: 1.3.7 - resolution: "ini@npm:1.3.7" - checksum: f8f3801e8eb039f9e03cdc27ceb494a7ac6e6ca7b2dd8394a9ef97ed5ae66930fadefd5ec908e41e4b103d3c9063b5788d47de5e8e892083c7a67b489f3b962d - languageName: node - linkType: hard - -"ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"internal-ip@npm:^4.3.0": - version: 4.3.0 - resolution: "internal-ip@npm:4.3.0" - dependencies: - default-gateway: ^4.2.0 - ipaddr.js: ^1.9.0 - checksum: c970433c84d9a6b46e2c9f5ab7785d3105b856d0a566891bf919241b5a884c5c1c9bf8e915aebb822a86c14b1b6867e58c1eaf5cd49eb023368083069d1a4a9a - languageName: node - linkType: hard - -"ip-regex@npm:^2.1.0": - version: 2.1.0 - resolution: "ip-regex@npm:2.1.0" - checksum: 331d95052aa53ce245745ea0fc3a6a1e2e3c8d6da65fa8ea52bf73768c1b22a9ac50629d1d2b08c04e7b3ac4c21b536693c149ce2c2615ee4796030e5b3e3cba - languageName: node - linkType: hard - -"ip@npm:^1.1.0, ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1, ipaddr.js@npm:^1.9.0": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 - languageName: node - linkType: hard - -"is-absolute-url@npm:^2.0.0": - version: 2.1.0 - resolution: "is-absolute-url@npm:2.1.0" - checksum: 781e8cf8a2af54b1b7a92f269244d96c66224030d91120e734ebeebbce044c167767e1389789d8aaf82f9e429cb20ae93d6d0acfe6c4b53d2bd6ebb47a236d76 - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.3": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 5159b51d065d9ad29e16a2f78d6c0e41c43227caf90a45e659c54ea6fd50ef0595b1871ce392e84b1df7cfdcad9a8e66eec0813a029112188435abf115accb16 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.1.0 - resolution: "is-arguments@npm:1.1.0" - dependencies: - call-bind: ^1.0.0 - checksum: c32f8b5052061de83b2cd17e0e87ec914ac96e55bbd184e07f9b78b8360d80f7f9a34060d44ee8684249664609213f57447e0f63798e7c265ec811fd242b0077 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: 04aa6fde59d2b7929df865acb89c8d7f89f919cc149b8be11e3560b1aab8667e5d939cc8954097c496f7dda80fd5bb67f829ca80ab66cc68918e41e2c1b9c5d7 - languageName: node - linkType: hard - -"is-binary-path@npm:^1.0.0": - version: 1.0.1 - resolution: "is-binary-path@npm:1.0.1" - dependencies: - binary-extensions: ^1.0.0 - checksum: a803c99e9d898170c3b44a86fbdc0736d3d7fcbe737345433fb78e810b9fe30c982657782ad0e676644ba4693ddf05601a7423b5611423218663d6b533341ac9 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" - dependencies: - call-bind: ^1.0.0 - checksum: 3ead0446176ee42a69f87658bf12d53c135095336d34765fa65f137f378ea125429bf777f91f6dd3407db80829d742bc4fb2fdaf8d2cf6ba82a2de2a07fbbac7 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.3": - version: 1.2.3 - resolution: "is-callable@npm:1.2.3" - checksum: 084a732afd78e14a40cd5f6f34001edd500f43bb542991c1305b88842cab5f2fb6b48f0deed4cd72270b2e71cab3c3a56c69b324e3a02d486f937824bb7de553 - languageName: node - linkType: hard - -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: ^2.0.0 - bin: - is-ci: bin.js - checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 - languageName: node - linkType: hard - -"is-color-stop@npm:^1.0.0": - version: 1.1.0 - resolution: "is-color-stop@npm:1.1.0" - dependencies: - css-color-names: ^0.0.4 - hex-color-regex: ^1.1.0 - hsl-regex: ^1.0.0 - hsla-regex: ^1.0.0 - rgb-regex: ^1.0.1 - rgba-regex: ^1.0.0 - checksum: 778dd52a603ab8da827925aa4200fe6733b667b216495a04110f038b925dc5ef58babe759b94ffc4e44fcf439328695770873937f59d6045f676322b97f3f92d - languageName: node - linkType: hard - -"is-core-module@npm:^2.1.0": - version: 2.6.0 - resolution: "is-core-module@npm:2.6.0" - dependencies: - has: ^1.0.3 - checksum: 183b3b96fed19822b13959876b0317e61fc2cb5ebcbc21639904c81f7ae328af57f8e18cc4750a9c4abebd686130c70d34a89521e57dbe002edfa4614507ce18 - languageName: node - linkType: hard - -"is-core-module@npm:^2.2.0": - version: 2.2.0 - resolution: "is-core-module@npm:2.2.0" - dependencies: - has: ^1.0.3 - checksum: 61e2aff4a7db4f8f7d5a97b484808af17290f4197b34a797cd3d3d27b6b448951064f8d3d6ceae4394fa9b7e6cf08aacd2ba7a17ef6352e922fe803580fbde56 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-date-object@npm:1.0.2" - checksum: ac859426e5df031abd9d1eeed32a41cc0de06e47227bd972b8bc716460a9404654b3dba78f41e8171ccf535c4bfa6d72a8d1d15a0873f9646698af415e92c2fb - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-directory@npm:^0.3.1": - version: 0.3.1 - resolution: "is-directory@npm:0.3.1" - checksum: dce9a9d3981e38f2ded2a80848734824c50ee8680cd09aa477bef617949715cfc987197a2ca0176c58a9fb192a1a0d69b535c397140d241996a609d5906ae524 - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-glob@npm:^3.1.0": - version: 3.1.0 - resolution: "is-glob@npm:3.1.0" - dependencies: - is-extglob: ^2.1.0 - checksum: 9d483bca84f16f01230f7c7c8c63735248fe1064346f292e0f6f8c76475fd20c6f50fc19941af5bec35f85d6bf26f4b7768f39a48a5f5fdc72b408dc74e07afc - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.1 - resolution: "is-glob@npm:4.0.1" - dependencies: - is-extglob: ^2.1.1 - checksum: 84627cad11b4e745f5db5a163f32c47b711585a5ff6e14f8f8d026db87f4cdd3e2c95f6fa1f94ad22e469f36d819ae2814f03f9c668b164422ac3354a94672d3 - languageName: node - linkType: hard - -"is-https@npm:^3.0.2": - version: 3.0.2 - resolution: "is-https@npm:3.0.2" - checksum: 12bf354bb87eca2ae4f3c218d04a9d0f7c22d86f8ddbe5d1770affe9cbeb833b77de2fec1282fdb0f6204490cd6829858825d7bd20df2e8fc93a46ab5d379a73 - languageName: node - linkType: hard - -"is-installed-globally@npm:^0.3.1": - version: 0.3.2 - resolution: "is-installed-globally@npm:0.3.2" - dependencies: - global-dirs: ^2.0.1 - is-path-inside: ^3.0.1 - checksum: 7f7489ae3026cc3b9f61426108d5911c864ac545bc90ef46e2eda4461c34a1f287a64f765895893398f0769235c59e63f25283c939c661bfe9be5250b1ed99cb - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: a46f2e0cb5e16fdb8f2011ed488979386d7e68d381966682e3f4c98fc126efe47f26827912baca2d06a02a644aee458b9cba307fb389f6b161e759125db7a3b8 - languageName: node - linkType: hard - -"is-npm@npm:^4.0.0": - version: 4.0.0 - resolution: "is-npm@npm:4.0.0" - checksum: c0d1550266c5e6fa35c1c1063ccd60fde9a5235686551ca0b1fc54ac10dd021911e2466fbee3c328f0aee1ea2ddb33b8034c062538b064dc32f93ad885ba54f8 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: d8e4525b5c151f1830872bf217901b58b3a9f66d93fe2f71c2087418e03d7f5c19a3ad64afa0feb70dafd93f7b97e205e3520a8ff007be665e54b377f5b736a8 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - -"is-path-cwd@npm:^2.0.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 - languageName: node - linkType: hard - -"is-path-in-cwd@npm:^2.0.0": - version: 2.1.0 - resolution: "is-path-in-cwd@npm:2.1.0" - dependencies: - is-path-inside: ^2.1.0 - checksum: 6b01b3f8c9172e9682ea878d001836a0cc5a78cbe6236024365d478c2c9e384da2417e5f21f2ad2da2761d0465309fc5baf6e71187d2a23f0058da69790f7f48 - languageName: node - linkType: hard - -"is-path-inside@npm:^2.1.0": - version: 2.1.0 - resolution: "is-path-inside@npm:2.1.0" - dependencies: - path-is-inside: ^1.0.2 - checksum: 6ca34dbd84d5c50a3ee1547afb6ada9b06d556a4ff42da9b303797e4acc3ac086516a4833030aa570f397f8c58dacabd57ee8e6c2ce8b2396a986ad2af10fcaf - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.1": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:^1.0.0": - version: 1.1.0 - resolution: "is-plain-obj@npm:1.1.0" - checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-regex@npm:^1.0.4, is-regex@npm:^1.1.2": - version: 1.1.2 - resolution: "is-regex@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-symbols: ^1.0.1 - checksum: a1e5a451b6b2207c04e2591417499fed013630dbe96c051f0a39a3b266b16ab691c0345128223573f3cd45796e0f561a2241f4a7f1840b06574eebb7100b68aa - languageName: node - linkType: hard - -"is-resolvable@npm:^1.0.0": - version: 1.1.0 - resolution: "is-resolvable@npm:1.1.0" - checksum: 2ddff983be0cabc2c8d60246365755f8fb322f5fb9db834740d3e694c635c1b74c1bd674cf221e072fc4bd911ef3f08f2247d390e476f7e80af9092443193c68 - languageName: node - linkType: hard - -"is-stream@npm:^1.0.1, is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae - languageName: node - linkType: hard - -"is-string@npm:^1.0.5": - version: 1.0.5 - resolution: "is-string@npm:1.0.5" - checksum: 68d77a991f55592721cc7d5800ff95cdb2c4f242e3a98fdc939c409879f7b8f297b8352184032b6b2183994b4c457f42df8de004c58b5b43655c8b2f3e3ecc17 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" - dependencies: - has-symbols: ^1.0.1 - checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^1.1.0": - version: 1.1.0 - resolution: "is-wsl@npm:1.1.0" - checksum: ea157d232351e68c92bd62fc541771096942fe72f69dff452dd26dcc31466258c570a3b04b8cda2e01cd2968255b02951b8670d08ea4ed76d6b1a646061ac4fe - languageName: node - linkType: hard - -"is-yarn-global@npm:^0.3.0": - version: 0.3.0 - resolution: "is-yarn-global@npm:0.3.0" - checksum: bca013d65fee2862024c9fbb3ba13720ffca2fe750095174c1c80922fdda16402b5c233f5ac9e265bc12ecb5446e7b7f519a32d9541788f01d4d44e24d2bf481 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isarray@npm:^2.0.1": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isomorphic-fetch@npm:^2.2.1": - version: 2.2.1 - resolution: "isomorphic-fetch@npm:2.2.1" - dependencies: - node-fetch: ^1.0.1 - whatwg-fetch: ">=0.10.0" - checksum: bb5daa7c3785d6742f4379a81e55b549a469503f7c9bf9411b48592e86632cf5e8fe8ea878dba185c0f33eb7c510c23abdeb55aebfdf5d3c70f031ced68c5424 - languageName: node - linkType: hard - -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 - languageName: node - linkType: hard - -"iterall@npm:^1.2.2": - version: 1.3.0 - resolution: "iterall@npm:1.3.0" - checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b - languageName: node - linkType: hard - -"javascript-stringify@npm:^1.6.0": - version: 1.6.0 - resolution: "javascript-stringify@npm:1.6.0" - checksum: bcf0516485e7ebe5318aa4ee27b6875c1d12bcef180fb6a7b5e0c9d4fba9fb7b2050fbe84ec1c27b3980cb34816d9d6c092b6c91ef354d61a8e5f9bfa73f191c - languageName: node - linkType: hard - -"javascript-stringify@npm:^2.0.1": - version: 2.1.0 - resolution: "javascript-stringify@npm:2.1.0" - checksum: 009981ec84299da88795fc764221ed213e3d52251cc93a396430a7a02ae09f1163a9be36a36808689681a8e6113cf00fe97ec2eea2552df48111f79be59e9358 - languageName: node - linkType: hard - -"jju@npm:~1.4.0": - version: 1.4.0 - resolution: "jju@npm:1.4.0" - checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^3.11.0, js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - -"js-yaml@npm:~3.13.1": - version: 3.13.1 - resolution: "js-yaml@npm:3.13.1" - dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: 7511b764abb66d8aa963379f7d2a404f078457d106552d05a7b556d204f7932384e8477513c124749fa2de52eb328961834562bd09924902c6432e40daa408bc - languageName: node - linkType: hard - -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.0": - version: 3.0.0 - resolution: "json-buffer@npm:3.0.0" - checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa - languageName: node - linkType: hard - -"json-parse-better-errors@npm:^1.0.1, json-parse-better-errors@npm:^1.0.2": - version: 1.0.2 - resolution: "json-parse-better-errors@npm:1.0.2" - checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema@npm:0.2.3": - version: 0.2.3 - resolution: "json-schema@npm:0.2.3" - checksum: bbc2070988fb5f2a2266a31b956f1b5660e03ea7eaa95b33402901274f625feb586ae0c485e1df854fde40a7f0dc679f3b3ca8e5b8d31f8ea07a0d834de785c7 - languageName: node - linkType: hard - -"json-stringify-safe@npm:~5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"json3@npm:^3.3.3": - version: 3.3.3 - resolution: "json3@npm:3.3.3" - checksum: 55eda204a4c70d11b7d5caa5cb64c76a3aa54d5df72d07bdf446b922fd7cb8657b0732f68e0c36790f55e195e0a429c299144ff05430bbe93bc2a7c81ad3472b - languageName: node - linkType: hard - -"json5@npm:^0.5.0": - version: 0.5.1 - resolution: "json5@npm:0.5.1" - bin: - json5: lib/cli.js - checksum: 9b85bf06955b23eaa4b7328aa8892e3887e81ca731dd27af04a5f5f1458fbc5e1de57a24442e3272f8a888dd1abe1cb68eb693324035f6b3aeba4fcab7667d62 - languageName: node - linkType: hard - -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - -"json5@npm:^2.1.2": - version: 2.2.0 - resolution: "json5@npm:2.2.0" - dependencies: - minimist: ^1.2.5 - bin: - json5: lib/cli.js - checksum: e88fc5274bb58fc99547baa777886b069d2dd96d9cfc4490b305fd16d711dabd5979e35a4f90873cefbeb552e216b041a304fe56702bedba76e19bc7845f208d - languageName: node - linkType: hard - -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e - languageName: node - linkType: hard - -"jsprim@npm:^1.2.2": - version: 1.4.1 - resolution: "jsprim@npm:1.4.1" - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.2.3 - verror: 1.10.0 - checksum: 6bcb20ec265ae18bb48e540a6da2c65f9c844f7522712d6dfcb01039527a49414816f4869000493363f1e1ea96cbad00e46188d5ecc78257a19f152467587373 - languageName: node - linkType: hard - -"keyv@npm:^3.0.0": - version: 3.1.0 - resolution: "keyv@npm:3.1.0" - dependencies: - json-buffer: 3.0.0 - checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 - languageName: node - linkType: hard - -"killable@npm:^1.0.1": - version: 1.0.1 - resolution: "killable@npm:1.0.1" - checksum: 911a85c6e390c19d72c4e3149347cf44042cbd7d18c3c6c5e4f706fdde6e0ed532473392e282c7ef27f518407e6cb7d2a0e71a2ae8d8d8f8ffdb68891a29a68a - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"last-call-webpack-plugin@npm:^3.0.0": - version: 3.0.0 - resolution: "last-call-webpack-plugin@npm:3.0.0" - dependencies: - lodash: ^4.17.5 - webpack-sources: ^1.1.0 - checksum: 23c25a2397c9f75b769b5238ab798873e857baf2363d471d186c9f05212457943f0de16181f33aeecbfd42116b72a0f343fe8910d5d8010f24956d95d536c743 - languageName: node - linkType: hard - -"latest-version@npm:^5.0.0": - version: 5.1.0 - resolution: "latest-version@npm:5.1.0" - dependencies: - package-json: ^6.3.0 - checksum: fbc72b071eb66c40f652441fd783a9cca62f08bf42433651937f078cd9ef94bf728ec7743992777826e4e89305aef24f234b515e6030503a2cbee7fc9bdc2c0f - languageName: node - linkType: hard - -"linkify-it@npm:^2.0.0": - version: 2.2.0 - resolution: "linkify-it@npm:2.2.0" - dependencies: - uc.micro: ^1.0.1 - checksum: d198871d0b3f3cfdb745dae564bfd6743474f20cd0ef1057e6ca29451834749e7f3da52b59b4de44e98f31a1e5c71bdad160490d4ae54de251cbcde57e4d7837 - languageName: node - linkType: hard - -"load-script@npm:^1.0.0": - version: 1.0.0 - resolution: "load-script@npm:1.0.0" - checksum: 8458e3f07b4a86f8d9d66e47a987811491a5d013af23ba7b371c6d3c9dc899885b072ccf65abf7874c10cb197d4975eacd8a7a125bfb38dbbcb267539f5dc1e9 - languageName: node - linkType: hard - -"loader-runner@npm:^2.4.0": - version: 2.4.0 - resolution: "loader-runner@npm:2.4.0" - checksum: e27eebbca5347a03f6b1d1bce5b2736a4984fb742f872c0a4d68e62de10f7637613e79a464d3bcd77c246d9c70fcac112bb4a3123010eb527e8b203a614647db - languageName: node - linkType: hard - -"loader-utils@npm:^0.2.16": - version: 0.2.17 - resolution: "loader-utils@npm:0.2.17" - dependencies: - big.js: ^3.1.3 - emojis-list: ^2.0.0 - json5: ^0.5.0 - object-assign: ^4.0.1 - checksum: 3045c83ef8b19d66d4c25e3245120c579883f473fe0d0559552f55502be913725c4d558a7c866191a74b19ef2af20b094afe3b144ae1e717ea4c245d52f60a09 - languageName: node - linkType: hard - -"loader-utils@npm:^1.0.2, loader-utils@npm:^1.1.0, loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": - version: 1.4.0 - resolution: "loader-utils@npm:1.4.0" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^1.0.1 - checksum: d150b15e7a42ac47d935c8b484b79e44ff6ab4c75df7cc4cb9093350cf014ec0b17bdb60c5d6f91a37b8b218bd63b973e263c65944f58ca2573e402b9a27e717 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"lodash-es@npm:^4.17.15": - version: 4.17.21 - resolution: "lodash-es@npm:4.17.21" - checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 - languageName: node - linkType: hard - -"lodash._reinterpolate@npm:^3.0.0": - version: 3.0.0 - resolution: "lodash._reinterpolate@npm:3.0.0" - checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 - languageName: node - linkType: hard - -"lodash.clonedeep@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489 - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash.defaultsdeep@npm:^4.6.0": - version: 4.6.1 - resolution: "lodash.defaultsdeep@npm:4.6.1" - checksum: 1f346f16158b760545ca99553cb13e907a28b281425751af6bfe681387b9e5685438a7ddbfd36a8d5cc8bda066867a134aa31416f17e318db8c461c377810a76 - languageName: node - linkType: hard - -"lodash.get@npm:^4.0.0": - version: 4.4.2 - resolution: "lodash.get@npm:4.4.2" - checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.0.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 - languageName: node - linkType: hard - -"lodash.kebabcase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.kebabcase@npm:4.1.1" - checksum: 5a6c59161914e1bae23438a298c7433e83d935e0f59853fa862e691164696bc07f6dfa4c313d499fbf41ba8d53314e9850416502376705a357d24ee6ca33af78 - languageName: node - linkType: hard - -"lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 - languageName: node - linkType: hard - -"lodash.template@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.template@npm:4.5.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - lodash.templatesettings: ^4.0.0 - checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 - languageName: node - linkType: hard - -"lodash.templatesettings@npm:^4.0.0": - version: 4.2.0 - resolution: "lodash.templatesettings@npm:4.2.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 - languageName: node - linkType: hard - -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d - languageName: node - linkType: hard - -"lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.3, lodash@npm:^4.17.5, lodash@npm:~4.17.15": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"loglevel@npm:^1.6.8": - version: 1.7.1 - resolution: "loglevel@npm:1.7.1" - checksum: 715a4ae69ad75d4d3bd04e4f6e9edbc4cae4db34d1e7f54f426d8cebe2dd9fef891ca3789e839d927cdbc5fad73d789e998db0af2f11f4c40219c272bc923823 - languageName: node - linkType: hard - -"loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case@npm:^1.1.1": - version: 1.1.4 - resolution: "lower-case@npm:1.1.4" - checksum: 1ca9393b5eaef94a64e3f89e38b63d15bc7182a91171e6ad1550f51d710ec941540a065b274188f2e6b4576110cc2d11b50bc4bb7c603a040ddeb1db4ca95197 - languageName: node - linkType: hard - -"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "lowercase-keys@npm:1.0.1" - checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 - languageName: node - linkType: hard - -"lowercase-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "lowercase-keys@npm:2.0.0" - checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 - languageName: node - linkType: hard - -"lru-cache@npm:^4.1.2": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: ^1.0.2 - yallist: ^2.1.2 - checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: ^4.0.1 - semver: ^5.6.0 - checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab - languageName: node - linkType: hard - -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.2.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"markdown-it-anchor@npm:^5.0.2": - version: 5.3.0 - resolution: "markdown-it-anchor@npm:5.3.0" - peerDependencies: - markdown-it: "*" - checksum: e1092fe45001ec9fb6df24afcada4f0cb774eebbe76db7c57943bcd84e0977c85764c5e6cd539617eef2a0f0c7abed59890f748b55c7379e2e4c45ff8b69f813 - languageName: node - linkType: hard - -"markdown-it-chain@npm:^1.3.0": - version: 1.3.0 - resolution: "markdown-it-chain@npm:1.3.0" - dependencies: - webpack-chain: ^4.9.0 - peerDependencies: - markdown-it: ">=5.0.0" - checksum: 5dbdcf110f9edfdadcfe21f3e4763433c7bb7f9118203b1c98d5aa5ba25f90c949c3097df5583c194f1ddf897f0d12d9e84df91caf6610f7c3bc853ac16e2115 - languageName: node - linkType: hard - -"markdown-it-container@npm:^2.0.0": - version: 2.0.0 - resolution: "markdown-it-container@npm:2.0.0" - checksum: 3f3f3da5a72fc3e885d349da4ea7209b8fab89fa5d95b1866ed8a01a14322f6c87c6c224d67c3d59237f9331d494b8dea6aaba94c1721abc8210af23ee462cd7 - languageName: node - linkType: hard - -"markdown-it-emoji@npm:^1.4.0": - version: 1.4.0 - resolution: "markdown-it-emoji@npm:1.4.0" - checksum: b76aa7f3e419c33d7802fe8dbc3b54e2881ee24035343c2552096e3807d5cac9cb9cf662f3d9765729c60479dc749852cae627d4853bcffb38aecd7119815f18 - languageName: node - linkType: hard - -"markdown-it-table-of-contents@npm:^0.4.0": - version: 0.4.4 - resolution: "markdown-it-table-of-contents@npm:0.4.4" - checksum: 26b3071836aa7ecda07d7d0832a30a3abb0da70afd9836202618929ab1e3d3c5668db8cdd21edd85c0404ba0288a7c9b8086c49924141f95da58239ab7b08cd3 - languageName: node - linkType: hard - -"markdown-it@npm:^8.4.1": - version: 8.4.2 - resolution: "markdown-it@npm:8.4.2" - dependencies: - argparse: ^1.0.7 - entities: ~1.1.1 - linkify-it: ^2.0.0 - mdurl: ^1.0.1 - uc.micro: ^1.0.5 - bin: - markdown-it: bin/markdown-it.js - checksum: ad171466933d6ce33fcdddf32f641fc7ff238820a11397f07d45ab293e3fd6d83de14eaa59bfdc67dc4a715e73aa08bae9b2a38e44b119d7340d8ae691ca4b2d - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c - languageName: node - linkType: hard - -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 - languageName: node - linkType: hard - -"mdn-data@npm:2.0.4": - version: 2.0.4 - resolution: "mdn-data@npm:2.0.4" - checksum: add3c95e6d03d301b8a8bcfee3de33f4d07e4c5eee5b79f18d6d737de717e22472deadf67c1a8563983c0b603e10d7df40aa8e5fddf18884dfe118ccec7ae329 - languageName: node - linkType: hard - -"mdurl@npm:^1.0.1": - version: 1.0.1 - resolution: "mdurl@npm:1.0.1" - checksum: 71731ecba943926bfbf9f9b51e28b5945f9411c4eda80894221b47cc105afa43ba2da820732b436f0798fd3edbbffcd1fc1415843c41a87fea08a41cc1e3d02b - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"medium-zoom@npm:^1.0.4": - version: 1.0.6 - resolution: "medium-zoom@npm:1.0.6" - checksum: 728b9f661262fd084da26f401ffe9bf98afc6d14ad93d4bfb08b95d32f9c4494a97dc8cb3a62353e8d350dc09c84a3f6f686a0fec321bfb609e5ba5e24bdb9d2 - languageName: node - linkType: hard - -"memory-fs@npm:^0.4.1": - version: 0.4.1 - resolution: "memory-fs@npm:0.4.1" - dependencies: - errno: ^0.1.3 - readable-stream: ^2.0.1 - checksum: 6db6c8682eff836664ca9b5b6052ae38d21713dda9d0ef4700fa5c0599a8bc16b2093bee75ac3dedbe59fb2222d368f25bafaa62ba143c41051359cbcb005044 - languageName: node - linkType: hard - -"memory-fs@npm:^0.5.0": - version: 0.5.0 - resolution: "memory-fs@npm:0.5.0" - dependencies: - errno: ^0.1.3 - readable-stream: ^2.0.1 - checksum: a9f25b0a8ecfb7324277393f19ef68e6ba53b9e6e4b526bbf2ba23055c5440fbf61acc7bf66bfd980e9eb4951a4790f6f777a9a3abd36603f22c87e8a64d3d6b - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 - languageName: node - linkType: hard - -"merge-source-map@npm:^1.1.0": - version: 1.1.0 - resolution: "merge-source-map@npm:1.1.0" - dependencies: - source-map: ^0.6.1 - checksum: 945a83dcc59eff77dde709be1d3d6cb575c11cd7164a7ccdc1c6f0d463aad7c12750a510bdf84af2c05fac4615c4305d97ac90477975348bb901a905c8e92c4b - languageName: node - linkType: hard - -"merge2@npm:^1.2.3": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a - languageName: node - linkType: hard - -"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" - dependencies: - bn.js: ^4.0.0 - brorand: ^1.0.1 - bin: - miller-rabin: bin/miller-rabin - checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece - languageName: node - linkType: hard - -"mime-db@npm:1.47.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.47.0 - resolution: "mime-db@npm:1.47.0" - checksum: 6808235243c39b3142e677af86972cf32de8ebbec81178491475a79aa07caf67646cd9b559972d22c3c372ddca4a093e58bb0ba10376d75a1efbd0e07be82de2 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24": - version: 2.1.30 - resolution: "mime-types@npm:2.1.30" - dependencies: - mime-db: 1.47.0 - checksum: 53c36729b1c4f6029fd5957d5859e62eff4b86311a6e1dce87937583dc8971fec9f359ffcff4be93d26bb5ddd03f1b5ffc7626912031ce0a63510d7896521b2e - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - -"mime@npm:^2.0.3, mime@npm:^2.4.4": - version: 2.5.2 - resolution: "mime@npm:2.5.2" - bin: - mime: cli.js - checksum: dd3c93d433d41a09f6a1cfa969b653b769899f3bd573e7bfcea33bdc8b0cc4eba57daa2f95937369c2bd2b6d39d62389b11a4309fe40d1d3a1b736afdedad0ff - languageName: node - linkType: hard - -"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": - version: 1.0.1 - resolution: "mimic-response@npm:1.0.1" - checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: ^0.1.0 - checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 - languageName: node - linkType: hard - -"mini-css-extract-plugin@npm:0.6.0": - version: 0.6.0 - resolution: "mini-css-extract-plugin@npm:0.6.0" - dependencies: - loader-utils: ^1.1.0 - normalize-url: ^2.0.1 - schema-utils: ^1.0.0 - webpack-sources: ^1.1.0 - peerDependencies: - webpack: ^4.4.0 - checksum: 6703d4de8c788c467dea1baacaa8843ddfd3e6895912635f01d568d2f60017df631badd3a757089ab5c4cdac97c60cc7167a6e941b2c36f6f634d00254ea6d6a - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": - version: 3.1.6 - resolution: "minipass@npm:3.1.6" - dependencies: - yallist: ^4.0.0 - checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77 - languageName: node - linkType: hard - -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mississippi@npm:^3.0.0": - version: 3.0.0 - resolution: "mississippi@npm:3.0.0" - dependencies: - concat-stream: ^1.5.0 - duplexify: ^3.4.2 - end-of-stream: ^1.1.0 - flush-write-stream: ^1.0.0 - from2: ^2.1.0 - parallel-transform: ^1.1.0 - pump: ^3.0.0 - pumpify: ^1.3.3 - stream-each: ^1.1.0 - through2: ^2.0.0 - checksum: 84b3d9889621d293f9a596bafe60df863b330c88fc19215ced8f603c605fc7e1bf06f8e036edf301bd630a03fd5d9d7d23d5d6b9a4802c30ca864d800f0bd9f8 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - -"mkdirp@npm:0.3.0": - version: 0.3.0 - resolution: "mkdirp@npm:0.3.0" - checksum: 3ec9cda8bd89b64892728e5092bc79e88382e444d4bbde040c2fb8d7034dc70682cfdd729e93241fd5243d2397324c420ef68c717d806db51bf96c0fc80f4b1d - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" - dependencies: - minimist: ^1.2.5 - bin: - mkdirp: bin/cmd.js - checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4, mkdirp@npm:~1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"move-concurrently@npm:^1.0.1": - version: 1.0.1 - resolution: "move-concurrently@npm:1.0.1" - dependencies: - aproba: ^1.1.1 - copy-concurrently: ^1.0.0 - fs-write-stream-atomic: ^1.0.8 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.3 - checksum: 4ea3296c150b09e798177847f673eb5783f8ca417ba806668d2c631739f653e1a735f19fb9b6e2f5e25ee2e4c0a6224732237a8e4f84c764e99d7462d258209e - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"multicast-dns-service-types@npm:^1.1.0": - version: 1.1.0 - resolution: "multicast-dns-service-types@npm:1.1.0" - checksum: 0979fca1cce85484d256e4db3af591d941b41a61f134da3607213d2624c12ed5b8a246565cb19a9b3cb542819e8fbc71a90b07e77023ee6a9515540fe1d371f7 - languageName: node - linkType: hard - -"multicast-dns@npm:^6.0.1": - version: 6.2.3 - resolution: "multicast-dns@npm:6.2.3" - dependencies: - dns-packet: ^1.3.1 - thunky: ^1.0.2 - bin: - multicast-dns: cli.js - checksum: f515b49ca964429ab48a4ac8041fcf969c927aeb49ab65288bd982e52c849a870fc3b03565780b0d194a1a02da8821f28b6425e48e95b8107bc9fcc92f571a6f - languageName: node - linkType: hard - -"nan@npm:^2.12.1": - version: 2.14.2 - resolution: "nan@npm:2.14.2" - dependencies: - node-gyp: latest - checksum: 7a269139b66a7d37470effb7fb36a8de8cc3b5ffba6e40bb8e0545307911fe5ebf94797ec62f655ecde79c237d169899f8bd28256c66a32cbc8284faaf94c3f4 - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - -"negotiator@npm:0.6.2, negotiator@npm:^0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: dfddaff6c06792f1c4c3809e29a427b8daef8cd437c83b08dd51d7ee11bbd1c29d9512d66b801144d6c98e910ffd8723f2432e0cbf8b18d41d2a09599c975ab3 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 - languageName: node - linkType: hard - -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff - languageName: node - linkType: hard - -"no-case@npm:^2.2.0": - version: 2.3.2 - resolution: "no-case@npm:2.3.2" - dependencies: - lower-case: ^1.1.1 - checksum: 856487731936fef44377ca74fdc5076464aba2e0734b56a4aa2b2a23d5b154806b591b9b2465faa59bb982e2b5c9391e3685400957fb4eeb38f480525adcf3dd - languageName: node - linkType: hard - -"node-fetch@npm:^1.0.1": - version: 1.7.3 - resolution: "node-fetch@npm:1.7.3" - dependencies: - encoding: ^0.1.11 - is-stream: ^1.0.1 - checksum: 3bb0528c05d541316ebe52770d71ee25a6dce334df4231fd55df41a644143e07f068637488c18a5b0c43f05041dbd3346752f9e19b50df50569a802484544d5b - languageName: node - linkType: hard - -"node-forge@npm:^0.10.0": - version: 0.10.0 - resolution: "node-forge@npm:0.10.0" - checksum: 5aa6dc9922e424a20ef101d2f517418e2bc9cfc0255dd22e0701c0fad1568445f510ee67f6f3fcdf085812c4ca1b847b8ba45683b34776828e41f5c1794e42e1 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 - languageName: node - linkType: hard - -"node-libs-browser@npm:^2.2.1": - version: 2.2.1 - resolution: "node-libs-browser@npm:2.2.1" - dependencies: - assert: ^1.1.1 - browserify-zlib: ^0.2.0 - buffer: ^4.3.0 - console-browserify: ^1.1.0 - constants-browserify: ^1.0.0 - crypto-browserify: ^3.11.0 - domain-browser: ^1.1.1 - events: ^3.0.0 - https-browserify: ^1.0.0 - os-browserify: ^0.3.0 - path-browserify: 0.0.1 - process: ^0.11.10 - punycode: ^1.2.4 - querystring-es3: ^0.2.0 - readable-stream: ^2.3.3 - stream-browserify: ^2.0.1 - stream-http: ^2.7.2 - string_decoder: ^1.0.0 - timers-browserify: ^2.0.4 - tty-browserify: 0.0.0 - url: ^0.11.0 - util: ^0.11.0 - vm-browserify: ^1.0.1 - checksum: 41fa7927378edc0cb98a8cc784d3f4a47e43378d3b42ec57a23f81125baa7287c4b54d6d26d062072226160a3ce4d8b7a62e873d2fb637aceaddf71f5a26eca0 - languageName: node - linkType: hard - -"node-releases@npm:^1.1.71": - version: 1.1.71 - resolution: "node-releases@npm:1.1.71" - checksum: a6ab18069e43d70b811fa7f12b397619f2003f78ac2ed0affa30876880ca3036a191d33679d93baac166afa12a7b1b1716e13f3c82c0f0fa09e2c83db3f91faf - languageName: node - linkType: hard - -"nopt@npm:1.0.10": - version: 1.0.10 - resolution: "nopt@npm:1.0.10" - dependencies: - abbrev: 1 - bin: - nopt: ./bin/nopt.js - checksum: f62575aceaa3be43f365bf37a596b89bbac2e796b001b6d2e2a85c2140a4e378ff919e2753ccba959c4fd344776fc88c29b393bc167fa939fb1513f126f4cd45 - languageName: node - linkType: hard - -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: 1 - bin: - nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"normalize-range@npm:^0.1.2": - version: 0.1.2 - resolution: "normalize-range@npm:0.1.2" - checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 - languageName: node - linkType: hard - -"normalize-url@npm:^2.0.1": - version: 2.0.1 - resolution: "normalize-url@npm:2.0.1" - dependencies: - prepend-http: ^2.0.0 - query-string: ^5.0.1 - sort-keys: ^2.0.0 - checksum: 30e337ee03fc7f360c7d2b966438657fabd2628925cc58bffc893982fe4d2c59b397ae664fa2c319cd83565af73eee88906e80bc5eec91bc32b601920e770d75 - languageName: node - linkType: hard - -"normalize-url@npm:^3.0.0": - version: 3.3.0 - resolution: "normalize-url@npm:3.3.0" - checksum: f6aa4a1a94c3b799812f3e7fc987fb4599d869bfa8e9a160b6f2c5a2b4e62ada998d64dca30d9e20769d8bd95d3da1da3d4841dba2cc3c4d85364e1eb46219a2 - languageName: node - linkType: hard - -"normalize-url@npm:^4.1.0": - version: 4.5.0 - resolution: "normalize-url@npm:4.5.0" - checksum: 34e9d01095df5c9348bf75f6cf0552c01438a29119aecdb747eead6ccd36a386209acdc093fc993edd32731b3056ff2977ffab44e4b8eed4d8aafdf0feae90c7 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.0 - resolution: "npmlog@npm:6.0.0" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.0 - set-blocking: ^2.0.0 - checksum: 33d8a7fe3d63bf83b16655b6588ae7ba10b5f37b067a661e7cab6508660d7c3204ae716ee2c5ce4eb9626fd1489cf2fa7645d789bc3b704f8c3ccb04a532a50b - languageName: node - linkType: hard - -"nprogress@npm:^0.2.0": - version: 0.2.0 - resolution: "nprogress@npm:0.2.0" - checksum: 66b7bec5d563ecf2d1c3d2815e6d5eb74ed815eee8563e0afa63d3f185ab1b9cf2ddd97e1ded263b9995c5019d26d600320e849e50f3747984daa033744619dc - languageName: node - linkType: hard - -"nth-check@npm:^1.0.2": - version: 1.0.2 - resolution: "nth-check@npm:1.0.2" - dependencies: - boolbase: ~1.0.0 - checksum: 59e115fdd75b971d0030f42ada3aac23898d4c03aa13371fa8b3339d23461d1badf3fde5aad251fb956aaa75c0a3b9bfcd07c08a34a83b4f9dadfdce1d19337c - languageName: node - linkType: hard - -"num2fraction@npm:^1.2.2": - version: 1.2.2 - resolution: "num2fraction@npm:1.2.2" - checksum: 1da9c6797b505d3f5b17c7f694c4fa31565bdd5c0e5d669553253aed848a580804cd285280e8a73148bd9628839267daee4967f24b53d4e893e44b563e412635 - languageName: node - linkType: hard - -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 - languageName: node - linkType: hard - -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-inspect@npm:^1.9.0": - version: 1.10.2 - resolution: "object-inspect@npm:1.10.2" - checksum: ddd414048e97ca721bc281ba2a0e867fff433d62b70dd87f0ed7495dfe51dd3f649b86d4515ff2d0999507eeed03a829f89dbbbf5884ca8cc5a6d6ce8f91d6cf - languageName: node - linkType: hard - -"object-is@npm:^1.0.1": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - -"object-keys@npm:^1.0.11, object-keys@npm:^1.0.12, object-keys@npm:^1.1.0, object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 - object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 - languageName: node - linkType: hard - -"object.getownpropertydescriptors@npm:^2.0.3, object.getownpropertydescriptors@npm:^2.1.0": - version: 2.1.2 - resolution: "object.getownpropertydescriptors@npm:2.1.2" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - checksum: 6c1c0162a2bea912f092dbf48699998d6f4b788a9884ee99ba41ddf25c3f0924ec56c6a55738c4ae3bd91d1203813a9a8e18e6fff1f477e2626cdbcd1a5f3ca8 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"object.values@npm:^1.1.0": - version: 1.1.3 - resolution: "object.values@npm:1.1.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - has: ^1.0.3 - checksum: 8b29bd0936a32c2c5dfeb39389f65c7c3f32253a2ad3e4605726cac6bda8f642b4f8ab1ef58279851b86b7ae7322b3cf9a464c346498a7deb8f0c3a0554015f0 - languageName: node - linkType: hard - -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": - version: 1.1.2 - resolution: "obuf@npm:1.1.2" - checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f - languageName: node - linkType: hard - -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"opencollective-postinstall@npm:^2.0.2": - version: 2.0.3 - resolution: "opencollective-postinstall@npm:2.0.3" - bin: - opencollective-postinstall: index.js - checksum: 0a68c5cef135e46d11e665d5077398285d1ce5311c948e8327b435791c409744d4a6bb9c55bd6507fb5f2ef34b0ad920565adcdaf974cbdae701aead6f32b396 - languageName: node - linkType: hard - -"opn@npm:^5.5.0": - version: 5.5.0 - resolution: "opn@npm:5.5.0" - dependencies: - is-wsl: ^1.1.0 - checksum: 35b677b5a1fd6c8cb1996b0607671ba79f7ce9fa029217d54eafaf6bee13eb7e700691c6a415009140fd02a435fffdfd143875f3b233b60f3f9d631c6f6b81a0 - languageName: node - linkType: hard - -"optimism@npm:^0.10.0": - version: 0.10.3 - resolution: "optimism@npm:0.10.3" - dependencies: - "@wry/context": ^0.4.0 - checksum: 2e3fa158b5525fcc7bb09d0eede419913625868fadb9bf5f6723c63b816d361b9f0f2db3a12fba59b6a0604ba15367e8c2d6073d2700e7971d4ea56039d2810f - languageName: node - linkType: hard - -"optimism@npm:^0.16.1": - version: 0.16.1 - resolution: "optimism@npm:0.16.1" - dependencies: - "@wry/context": ^0.6.0 - "@wry/trie": ^0.3.0 - checksum: 7506a3e5e37b8945059ffacd68039e920ad121aab3eeff27483b7a8b594f6f694f2a3b61a198aeecc43b81753d35c8cb32b7f662d2b5e2d2449fe7068da678e1 - languageName: node - linkType: hard - -"optimize-css-assets-webpack-plugin@npm:^5.0.1": - version: 5.0.4 - resolution: "optimize-css-assets-webpack-plugin@npm:5.0.4" - dependencies: - cssnano: ^4.1.10 - last-call-webpack-plugin: ^3.0.0 - peerDependencies: - webpack: ^4.0.0 - checksum: bcd509eaab2a6f0ed8396fe847f4f0da73655a54f4c418fa30dc1fc4a0b1b620f38e2fcd6bcb369e2a6cf4530995b371e9d12011566ac7ffe6ac6aec2ab0a4fb - languageName: node - linkType: hard - -"original@npm:^1.0.0": - version: 1.0.2 - resolution: "original@npm:1.0.2" - dependencies: - url-parse: ^1.4.3 - checksum: 8dca9311dab50c8953366127cb86b7c07bf547d6aa6dc6873a75964b7563825351440557e5724d9c652c5e99043b8295624f106af077f84bccf19592e421beb9 - languageName: node - linkType: hard - -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 16e37ba3c0e6a4c63443c7b55799ce4066d59104143cb637ecb9fce586d5da319cdca786ba1c867abbe3890d2cbf37953f2d51eea85e20dd6c4570d6c54bfebf - languageName: node - linkType: hard - -"p-cancelable@npm:^1.0.0": - version: 1.1.0 - resolution: "p-cancelable@npm:1.1.0" - checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0, p-limit@npm:^2.2.1": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-map@npm:^2.0.0": - version: 2.1.0 - resolution: "p-map@npm:2.1.0" - checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-retry@npm:^3.0.1": - version: 3.0.1 - resolution: "p-retry@npm:3.0.1" - dependencies: - retry: ^0.12.0 - checksum: 702efc63fc13ef7fc0bab9a1b08432ab38a0236efcbce64af0cf692030ba6ed8009f29ba66e3301cb98dc69ef33e7ccab29ba1ac2bea897f802f81f4f7e468dd - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json@npm:^6.3.0": - version: 6.5.0 - resolution: "package-json@npm:6.5.0" - dependencies: - got: ^9.6.0 - registry-auth-token: ^4.0.0 - registry-url: ^5.0.0 - semver: ^6.2.0 - checksum: cc9f890d3667d7610e6184decf543278b87f657d1ace0deb4a9c9155feca738ef88f660c82200763d3348010f4e42e9c7adc91e96ab0f86a770955995b5351e2 - languageName: node - linkType: hard - -"pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 - languageName: node - linkType: hard - -"parallel-transform@npm:^1.1.0": - version: 1.2.0 - resolution: "parallel-transform@npm:1.2.0" - dependencies: - cyclist: ^1.0.1 - inherits: ^2.0.3 - readable-stream: ^2.1.5 - checksum: ab6ddc1a662cefcfb3d8d546a111763d3b223f484f2e9194e33aefd8f6760c319d0821fd22a00a3adfbd45929b50d2c84cc121389732f013c2ae01c226269c27 - languageName: node - linkType: hard - -"param-case@npm:2.1.x": - version: 2.1.1 - resolution: "param-case@npm:2.1.1" - dependencies: - no-case: ^2.2.0 - checksum: 3a63dcb8d8dc7995a612de061afdc7bb6fe7bd0e6db994db8d4cae999ed879859fd24389090e1a0d93f4c9207ebf8c048c870f468a3f4767161753e03cb9ab58 - languageName: node - linkType: hard - -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": - version: 5.1.6 - resolution: "parse-asn1@npm:5.1.6" - dependencies: - asn1.js: ^5.2.0 - browserify-aes: ^1.0.0 - evp_bytestokey: ^1.0.0 - pbkdf2: ^3.0.3 - safe-buffer: ^5.1.1 - checksum: 9243311d1f88089bc9f2158972aa38d1abd5452f7b7cabf84954ed766048fe574d434d82c6f5a39b988683e96fb84cd933071dda38927e03469dc8c8d14463c7 - languageName: node - linkType: hard - -"parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-json@npm:4.0.0" - dependencies: - error-ex: ^1.3.1 - json-parse-better-errors: ^1.0.1 - checksum: 0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:0.0.1": - version: 0.0.1 - resolution: "path-browserify@npm:0.0.1" - checksum: ae8dcd45d0d3cfbaf595af4f206bf3ed82d77f72b4877ae7e77328079e1468c84f9386754bb417d994d5a19bf47882fd253565c18441cd5c5c90ae5187599e35 - languageName: node - linkType: hard - -"path-dirname@npm:^1.0.0": - version: 1.0.2 - resolution: "path-dirname@npm:1.0.2" - checksum: 0d2f6604ae05a252a0025318685f290e2764ecf9c5436f203cdacfc8c0b17c24cdedaa449d766beb94ab88cc7fc70a09ec21e7933f31abc2b719180883e5e33f - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-is-inside@npm:^1.0.2": - version: 1.0.2 - resolution: "path-is-inside@npm:1.0.2" - checksum: 0b5b6c92d3018b82afb1f74fe6de6338c4c654de4a96123cb343f2b747d5606590ac0c890f956ed38220a4ab59baddfd7b713d78a62d240b20b14ab801fa02cb - languageName: node - linkType: hard - -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd - languageName: node - linkType: hard - -"path-parse@npm:^1.0.6": - version: 1.0.6 - resolution: "path-parse@npm:1.0.6" - checksum: 962a85dd384d68d469ec5ba4010df8f8f9b7e936ce603bbe3211476c5615feb3c2b1ca61211a78445fadc833f0b1a86ea6484c861035ec4ac93011ba9aff9a11 - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce - languageName: node - linkType: hard - -"path-type@npm:^3.0.0": - version: 3.0.0 - resolution: "path-type@npm:3.0.0" - dependencies: - pify: ^3.0.0 - checksum: 735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 - languageName: node - linkType: hard - -"pbkdf2@npm:^3.0.3": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 - languageName: node - linkType: hard - -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": - version: 2.2.3 - resolution: "picomatch@npm:2.2.3" - checksum: 45e2b882b5265d3a322c6b7b854c1fdc33d5083011b9730296e9ad26332824ac356529f1ce1b0c1111f08a84c02e8525ea121d17c4bbe2970ca6665e587921fa - languageName: node - linkType: hard - -"pify@npm:^2.0.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pify@npm:^3.0.0": - version: 3.0.0 - resolution: "pify@npm:3.0.0" - checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b - languageName: node - linkType: hard - -"pinkie-promise@npm:^2.0.0": - version: 2.0.1 - resolution: "pinkie-promise@npm:2.0.1" - dependencies: - pinkie: ^2.0.0 - checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca - languageName: node - linkType: hard - -"pinkie@npm:^2.0.0": - version: 2.0.4 - resolution: "pinkie@npm:2.0.4" - checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"portfinder@npm:^1.0.13, portfinder@npm:^1.0.26": - version: 1.0.28 - resolution: "portfinder@npm:1.0.28" - dependencies: - async: ^2.6.2 - debug: ^3.1.1 - mkdirp: ^0.5.5 - checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - -"postcss-calc@npm:^7.0.1": - version: 7.0.5 - resolution: "postcss-calc@npm:7.0.5" - dependencies: - postcss: ^7.0.27 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.0.2 - checksum: 03640d493fb0e557634ab23e5d1eb527b014fb491ac3e62b45e28f5a6ef57e25a209f82040ce54c40d5a1a7307597a55d3fa6e8cece0888261a66bc75e39a68b - languageName: node - linkType: hard - -"postcss-colormin@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-colormin@npm:4.0.3" - dependencies: - browserslist: ^4.0.0 - color: ^3.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 9b2eab73cd227cbf296f1a2a6466047f6c70b918c3844535531fd87f31d7878e1a8d81e8803ffe2ee8c3330ea5bec65e358a0e0f33defcd758975064e07fe928 - languageName: node - linkType: hard - -"postcss-convert-values@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-convert-values@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 71cac73f5befeb8bc16274e2aaabe1b8e0cb42a8b8641dc2aa61b1c502697b872a682c36f370cce325553bbfc859c38f2b064fae6f6469b1cada79e733559261 - languageName: node - linkType: hard - -"postcss-discard-comments@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-comments@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - checksum: b087d47649160b7c6236aba028d27f1796a0dcb21e9ffd0da62271171fc31b7f150ee6c7a24fa97e3f5cd1af92e0dc41cb2e2680a175da53f1e536c441bda56a - languageName: node - linkType: hard - -"postcss-discard-duplicates@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-duplicates@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - checksum: bd83647a8e5ea34b0cfe563d0c1410a0c9e742011aa67955709c5ecd2d2bb03b7016053781e975e4c802127d2f9a0cd9c22f1f2783b9d7b1c35487d60f7ea540 - languageName: node - linkType: hard - -"postcss-discard-empty@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-empty@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: 529b177bd2417fa5c8887891369b4538b858d767461192974a796814265794e08e0e624a9f4c566ed9f841af3faddb7e7a9c05c45cbbe2fb1f092f65bd227f5c - languageName: node - linkType: hard - -"postcss-discard-overridden@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-overridden@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: b34d8cf58e4d13d99a3a9459f4833f1248ca897316bbb927375590feba35c24a0304084a6174a7bf3fe4ba3d5e5e9baf15ea938e7e5744e56915fa7ef6d91ee0 - languageName: node - linkType: hard - -"postcss-load-config@npm:^2.0.0": - version: 2.1.2 - resolution: "postcss-load-config@npm:2.1.2" - dependencies: - cosmiconfig: ^5.0.0 - import-cwd: ^2.0.0 - checksum: 2e6d3a499512a03c19b0090f4143861612d613511d57122879d9fd545558d2a9fcbe85a2b0faf2ec32bbce0e62d22d2b544d91cbc4d4dfb3f22f841f8271fbc6 - languageName: node - linkType: hard - -"postcss-loader@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-loader@npm:3.0.0" - dependencies: - loader-utils: ^1.1.0 - postcss: ^7.0.0 - postcss-load-config: ^2.0.0 - schema-utils: ^1.0.0 - checksum: a6a922cbcc225ef57fb88c8248f91195869cd11e0d2b0b0fe84bc89a3074437d592d79a9fc39e50218677b7ba3a41b0e1c7e8f9666e59d41a196d7ab022c5805 - languageName: node - linkType: hard - -"postcss-merge-longhand@npm:^4.0.11": - version: 4.0.11 - resolution: "postcss-merge-longhand@npm:4.0.11" - dependencies: - css-color-names: 0.0.4 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - stylehacks: ^4.0.0 - checksum: 45082b492d4d771c1607707d04dbcaece85a100011109886af9460a7868720de1121e290a6442360e2668db510edef579194197d1b534e9fb6c8df7a6cb86a4d - languageName: node - linkType: hard - -"postcss-merge-rules@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-merge-rules@npm:4.0.3" - dependencies: - browserslist: ^4.0.0 - caniuse-api: ^3.0.0 - cssnano-util-same-parent: ^4.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - vendors: ^1.0.0 - checksum: ed0f3880e1076e5b2a08e4cff35b50dc7dfbd337e6ba16a0ca157e28268cfa1d6c6d821e902d319757f32a7d36f944cad51be76f8b34858d1d7a637e7b585919 - languageName: node - linkType: hard - -"postcss-minify-font-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-font-values@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: add296b3bc88501283d65b54ad83552f47c98dd403740a70d8dfeef6d30a21d4a1f40191ffef1029a9474e9580a73e84ef644e99ede76c5a2474579b583f4b34 - languageName: node - linkType: hard - -"postcss-minify-gradients@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-gradients@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: ^4.0.0 - is-color-stop: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: b83de019cc392192d64182fa6f609383904ef69013d71cda5d06fadab92b4daa73f5be0d0254c5eb0805405e5e1b9c44e49ca6bc629c4c7a24a8164a30b40d46 - languageName: node - linkType: hard - -"postcss-minify-params@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-params@npm:4.0.2" - dependencies: - alphanum-sort: ^1.0.0 - browserslist: ^4.0.0 - cssnano-util-get-arguments: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - uniqs: ^2.0.0 - checksum: 15e7f196b3408ab3f55f1a7c9fa8aeea7949fdd02be28af232dd2e47bb7722e0e0a416d6b2c4550ba333a485b775da1bc35c19c9be7b6de855166d2e85d7b28f - languageName: node - linkType: hard - -"postcss-minify-selectors@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-selectors@npm:4.0.2" - dependencies: - alphanum-sort: ^1.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - checksum: a214809b620e50296417838804c3978d5f0a5ddfd48916780d77c1e0348c9ed0baa4b1f3905511b0f06b77340b5378088cc3188517c0848e8b7a53a71ef36c2b - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^2.0.0": - version: 2.0.0 - resolution: "postcss-modules-extract-imports@npm:2.0.0" - dependencies: - postcss: ^7.0.5 - checksum: 154790fe5954aaa12f300aa9aa782fae8b847138459c8f533ea6c8f29439dd66b4d9a49e0bf6f8388fa0df898cc03d61c84678e3b0d4b47cac5a4334a7151a9f - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^2.0.6": - version: 2.0.6 - resolution: "postcss-modules-local-by-default@npm:2.0.6" - dependencies: - postcss: ^7.0.6 - postcss-selector-parser: ^6.0.0 - postcss-value-parser: ^3.3.1 - checksum: 640c04ab3f2ca4c85a5b50cb676748bc0da91d1ea6bc9513c09286d46839d13cb6455905c4c1e83c746562ce257dee6194c1d391172dc95f7e626bfe75ebe9ea - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^2.1.0": - version: 2.2.0 - resolution: "postcss-modules-scope@npm:2.2.0" - dependencies: - postcss: ^7.0.6 - postcss-selector-parser: ^6.0.0 - checksum: c611181df924275ca1ffea261149c229488d6921054896879ca98feeb0913f9b00f4f160654beb2cb243a2989036c269baa96778eeacaaa399a4604b6e2fea17 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^2.0.0": - version: 2.0.0 - resolution: "postcss-modules-values@npm:2.0.0" - dependencies: - icss-replace-symbols: ^1.1.0 - postcss: ^7.0.6 - checksum: 39cf0c0d78ff543275f252c0df4c99497791bf0f5da6b3344d1093ad3578cfc4216987f2425846825f759c4145f4fba995a966f731280f541c6c4d76aa66fec2 - languageName: node - linkType: hard - -"postcss-normalize-charset@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-charset@npm:4.0.1" - dependencies: - postcss: ^7.0.0 - checksum: f233f48d61eb005da217e5bfa58f4143165cb525ceea2de4fd88e4172a33712e8b63258ffa089c867875a498c408f293a380ea9e6f40076de550d8053f50e5bc - languageName: node - linkType: hard - -"postcss-normalize-display-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-display-values@npm:4.0.2" - dependencies: - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: c5b857ca05f30a3efc6211cdaa5c9306f3eb0dbac141047d451a418d2bfd3e54be0bd4481d61c640096152d3078881a8dc3dec61913ff7f01ab4fc6df1a14732 - languageName: node - linkType: hard - -"postcss-normalize-positions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-positions@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: ^4.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 291612d0879e6913010937f1193ab56ae1cfd8a274665330ccbedbe72f59c36db3f688b0a3faa4c6689cfd03dff0c27702c6acfce9b1f697a022bfcee3cd4fc4 - languageName: node - linkType: hard - -"postcss-normalize-repeat-style@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-repeat-style@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: ^4.0.0 - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 2160b2a6fe4f9671ad5d044755f0e04cfb5f255db607505fd4c74e7c806315c9dca914e74bb02f5f768de7b70939359d05c3f9b23ae8f72551d8fdeabf79a1fb - languageName: node - linkType: hard - -"postcss-normalize-string@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-string@npm:4.0.2" - dependencies: - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 9d40753ceb4f7854ed690ecd5fe4ea142280b14441dd11e188e573e58af93df293efdc77311f1c599431df785a3bb614dfe4bdacc3081ee3fe8c95916c849b2f - languageName: node - linkType: hard - -"postcss-normalize-timing-functions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-timing-functions@npm:4.0.2" - dependencies: - cssnano-util-get-match: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 8dfd711f5cdb49b823a92d1cd56d40f66f3686e257804495ef59d5d7f71815b6d19412a1ff25d40971bf6e146b1fa0517a6cc1a4c286b36c5cee6ed08a1952db - languageName: node - linkType: hard - -"postcss-normalize-unicode@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-unicode@npm:4.0.1" - dependencies: - browserslist: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 2b1da17815f8402651a72012fd385b5111e84002baf98b649e0c1fc91298b65bb0e431664f6df8a99b23217259ecec242b169c0f18bf26e727af02eaf475fb07 - languageName: node - linkType: hard - -"postcss-normalize-url@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-url@npm:4.0.1" - dependencies: - is-absolute-url: ^2.0.0 - normalize-url: ^3.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: fcaab832d8b773568197b41406517a9e5fc7704f2fac7185bd0e13b19961e1ce9f1c762e4ffa470de7baa6a82ae8ae5ccf6b1bbeec6e95216d22ce6ab514fe04 - languageName: node - linkType: hard - -"postcss-normalize-whitespace@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-whitespace@npm:4.0.2" - dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 378a6eadb09ccc5ca2289e8daf98ce7366ae53342c4df7898ef5fae68138884d6c1241493531635458351b2805218bf55ceecae0fd289e5696ab15c78966abbb - languageName: node - linkType: hard - -"postcss-ordered-values@npm:^4.1.2": - version: 4.1.2 - resolution: "postcss-ordered-values@npm:4.1.2" - dependencies: - cssnano-util-get-arguments: ^4.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: 4a6f6a427a0165e1fa4f04dbe53a88708c73ea23e5b23ce312366ca8d85d83af450154a54f0e5df6c5712f945c180b6a364c3682dc995940b93228bb26658a96 - languageName: node - linkType: hard - -"postcss-reduce-initial@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-reduce-initial@npm:4.0.3" - dependencies: - browserslist: ^4.0.0 - caniuse-api: ^3.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - checksum: 5ad1a955cb20f5b1792ff8cc35894621edc23ee77397cc7e9692d269882fb4451655633947e0407fe20bd127d09d0b7e693034c64417bf8bf1034a83c6e71668 - languageName: node - linkType: hard - -"postcss-reduce-transforms@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-reduce-transforms@npm:4.0.2" - dependencies: - cssnano-util-get-match: ^4.0.0 - has: ^1.0.0 - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - checksum: e6a351d5da7ecf276ddda350635b15bce8e14af08aee1c8a0e8d9c2ab2631eab33b06f3c2f31c6f9c76eedbfc23f356d86da3539e011cde3e335a2cac9d91dc1 - languageName: node - linkType: hard - -"postcss-safe-parser@npm:^4.0.1": - version: 4.0.2 - resolution: "postcss-safe-parser@npm:4.0.2" - dependencies: - postcss: ^7.0.26 - checksum: b812832c06f9fc17b74b714f9c07de80fa770a1535a103b06b679f33b8e09caf60dff1e1eca489613f4ce2bb6439cd949b7d026c843aa9b45bb50f0168b75023 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^3.0.0": - version: 3.1.2 - resolution: "postcss-selector-parser@npm:3.1.2" - dependencies: - dot-prop: ^5.2.0 - indexes-of: ^1.0.1 - uniq: ^1.0.1 - checksum: 85b754bf3b5f671cddd75a199589e5b03da114ec119aa4628ab7f35f76134b25296d18a68f745e39780c379d66d3919ae7a1b6129aeec5049cedb9ba4c660803 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.0, postcss-selector-parser@npm:^6.0.2": - version: 6.0.5 - resolution: "postcss-selector-parser@npm:6.0.5" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 51aedc1b84491065844d6db3b7e9a6a152a98af5fdd2c34697479c659b1504cb667454a4776567bb8f06978df38042d67e5f695054cca0c49e549e97ef54a43d - languageName: node - linkType: hard - -"postcss-svgo@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-svgo@npm:4.0.3" - dependencies: - postcss: ^7.0.0 - postcss-value-parser: ^3.0.0 - svgo: ^1.0.0 - checksum: 6f5264241193ca3ba748fdf43c88ef692948d2ae38787398dc90089061fed884064ec14ee244fce07f19c419d1b058c77e135407d0932b09e93e528581ce3e10 - languageName: node - linkType: hard - -"postcss-unique-selectors@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-unique-selectors@npm:4.0.1" - dependencies: - alphanum-sort: ^1.0.0 - postcss: ^7.0.0 - uniqs: ^2.0.0 - checksum: 272eb1fa17d6ea513b5f4d2f694ef30fa690795ce388aef7bf3967fd3bcec7a9a3c8da380e74961ded8d98253a6ed18fb380b29da00e2fe03e74813e7765ea71 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^3.0.0, postcss-value-parser@npm:^3.3.0, postcss-value-parser@npm:^3.3.1": - version: 3.3.1 - resolution: "postcss-value-parser@npm:3.3.1" - checksum: 62cd26e1cdbcf2dcc6bcedf3d9b409c9027bc57a367ae20d31dd99da4e206f730689471fd70a2abe866332af83f54dc1fa444c589e2381bf7f8054c46209ce16 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0": - version: 4.1.0 - resolution: "postcss-value-parser@npm:4.1.0" - checksum: 68a9ea27c780fa3cc350be37b47cc46385c61dd9627990909230e0e9c3debf6d5beb49006bd743a2e506cdd6fa7d07637f2d9504a394f67cc3011d1ff0134886 - languageName: node - linkType: hard - -"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.14, postcss@npm:^7.0.26, postcss@npm:^7.0.27, postcss@npm:^7.0.32, postcss@npm:^7.0.5, postcss@npm:^7.0.6": - version: 7.0.35 - resolution: "postcss@npm:7.0.35" - dependencies: - chalk: ^2.4.2 - source-map: ^0.6.1 - supports-color: ^6.1.0 - checksum: 6b197769057f38b9d4d8778c7e3b8b4a56c0c2c3ac8edf7552b06ac964e1a3601567fa2c5335a54fba103492305b0fc1347ce786fd72e30903a22f09f86525ae - languageName: node - linkType: hard - -"prepend-http@npm:^2.0.0": - version: 2.0.0 - resolution: "prepend-http@npm:2.0.0" - checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea - languageName: node - linkType: hard - -"prettier@npm:^1.18.2": - version: 1.19.1 - resolution: "prettier@npm:1.19.1" - bin: - prettier: ./bin-prettier.js - checksum: bc78219e0f8173a808f4c6c8e0a137dd8ebd4fbe013e63fe1a37a82b48612f17b8ae8e18a992adf802ee2cf7428f14f084e7c2846ca5759cf4013c6e54810e1f - languageName: node - linkType: hard - -"pretty-error@npm:^2.0.2": - version: 2.1.2 - resolution: "pretty-error@npm:2.1.2" - dependencies: - lodash: ^4.17.20 - renderkid: ^2.0.4 - checksum: 16775d06f9a695d17103414d610b1281f9535ee1f2da1ce1e1b9be79584a114aa7eac6dcdcc5ef151756d3c014dfd4ac1c7303ed8016d0cec12437cfdf4021c6 - languageName: node - linkType: hard - -"pretty-time@npm:^1.1.0": - version: 1.1.0 - resolution: "pretty-time@npm:1.1.0" - checksum: a319e7009aadbc6cfedbd8b66861327d3a0c68bd3e8794bf5b86f62b40b01b9479c5a70c76bb368ad454acce52a1216daee460cc825766e2442c04f3a84a02c9 - languageName: node - linkType: hard - -"prismjs@npm:^1.13.0": - version: 1.23.0 - resolution: "prismjs@npm:1.23.0" - dependencies: - clipboard: ^2.0.0 - dependenciesMeta: - clipboard: - optional: true - checksum: 8c3cf69150418170aceb6d935e61a12e49802ca6c6abc98e3331921cac8cc992e0cd477bd77fdea1a06a3f16cd3d2615a3aadcefa0db3efb159f2c2ef403a2c4 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"prop-types@npm:^15.7.2": - version: 15.7.2 - resolution: "prop-types@npm:15.7.2" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.8.1 - checksum: 5eef82fdda64252c7e75aa5c8cc28a24bbdece0f540adb60ce67c205cf978a5bd56b83e4f269f91c6e4dcfd80b36f2a2dec24d362e278913db2086ca9c6f9430 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.5": - version: 2.0.6 - resolution: "proxy-addr@npm:2.0.6" - dependencies: - forwarded: ~0.1.2 - ipaddr.js: 1.9.1 - checksum: 2bad9b7a56b847faf606a19328aaaf5fca3e561ebb4e933969a580d94a20f77e74fb21196028a6e417851b3d9d95a0c704732a3362e3ef515d45d96859ac7eb9 - languageName: node - linkType: hard - -"prr@npm:~1.0.1": - version: 1.0.1 - resolution: "prr@npm:1.0.1" - checksum: 3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 - languageName: node - linkType: hard - -"pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 - languageName: node - linkType: hard - -"psl@npm:^1.1.28": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 - languageName: node - linkType: hard - -"public-encrypt@npm:^4.0.0": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: ^4.1.0 - browserify-rsa: ^4.0.0 - create-hash: ^1.1.0 - parse-asn1: ^5.0.0 - randombytes: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 215d446e43cef021a20b67c1df455e5eea134af0b1f9b8a35f9e850abf32991b0c307327bc5b9bc07162c288d5cdb3d4a783ea6c6640979ed7b5017e3e0c9935 - languageName: node - linkType: hard - -"pump@npm:^2.0.0": - version: 2.0.1 - resolution: "pump@npm:2.0.1" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931 - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"pumpify@npm:^1.3.3": - version: 1.5.1 - resolution: "pumpify@npm:1.5.1" - dependencies: - duplexify: ^3.6.0 - inherits: ^2.0.3 - pump: ^2.0.0 - checksum: 26ca412ec8d665bd0d5e185c1b8f627728eff603440d75d22a58e421e3c66eaf86ec6fc6a6efc54808ecef65979279fa8e99b109a23ec1fa8d79f37e6978c9bd - languageName: node - linkType: hard - -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 - languageName: node - linkType: hard - -"punycode@npm:^1.2.4": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"pupa@npm:^2.0.1": - version: 2.1.1 - resolution: "pupa@npm:2.1.1" - dependencies: - escape-goat: ^2.0.0 - checksum: 49529e50372ffdb0cccf0efa0f3b3cb0a2c77805d0d9cc2725bd2a0f6bb414631e61c93a38561b26be1259550b7bb6c2cb92315aa09c8bf93f3bdcb49f2b2fb7 - languageName: node - linkType: hard - -"q@npm:^1.1.2": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 - languageName: node - linkType: hard - -"qs@npm:6.7.0": - version: 6.7.0 - resolution: "qs@npm:6.7.0" - checksum: dfd5f6adef50e36e908cfa70a6233871b5afe66fbaca37ecc1da352ba29eb2151a3797991948f158bb37fccde51bd57845cb619a8035287bfc24e4591172c347 - languageName: node - linkType: hard - -"qs@npm:~6.5.2": - version: 6.5.2 - resolution: "qs@npm:6.5.2" - checksum: 24af7b9928ba2141233fba2912876ff100403dba1b08b20c3b490da9ea6c636760445ea2211a079e7dfa882a5cf8f738337b3748c8bdd0f93358fa8881d2db8f - languageName: node - linkType: hard - -"qss@npm:2.0.3": - version: 2.0.3 - resolution: "qss@npm:2.0.3" - checksum: 35cbdbb1c27e62aac2f8c0322bda283214d49adbf2c949904364e200938e60913fa01d57edee30e6b029a8e815614eb118a41f805e3343f71768daba57e68c01 - languageName: node - linkType: hard - -"query-string@npm:^5.0.1": - version: 5.1.1 - resolution: "query-string@npm:5.1.1" - dependencies: - decode-uri-component: ^0.2.0 - object-assign: ^4.1.0 - strict-uri-encode: ^1.0.0 - checksum: 4ac760d9778d413ef5f94f030ed14b1a07a1708dd13fd3bc54f8b9ef7b425942c7577f30de0bf5a7d227ee65a9a0350dfa3a43d1d266880882fb7ce4c434a4dd - languageName: node - linkType: hard - -"querystring-es3@npm:^0.2.0, querystring-es3@npm:^0.2.1": - version: 0.2.1 - resolution: "querystring-es3@npm:0.2.1" - checksum: 691e8d6b8b157e7cd49ae8e83fcf86de39ab3ba948c25abaa94fba84c0986c641aa2f597770848c64abce290ed17a39c9df6df737dfa7e87c3b63acc7d225d61 - languageName: node - linkType: hard - -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"randomfill@npm:^1.0.3": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: ^2.0.5 - safe-buffer: ^5.1.0 - checksum: 33734bb578a868d29ee1b8555e21a36711db084065d94e019a6d03caa67debef8d6a1bfd06a2b597e32901ddc761ab483a85393f0d9a75838f1912461d4dbfc7 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.4.0": - version: 2.4.0 - resolution: "raw-body@npm:2.4.0" - dependencies: - bytes: 3.1.0 - http-errors: 1.7.2 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 6343906939e018c6e633a34a938a5d6d1e93ffcfa48646e00207d53b418e941953b521473950c079347220944dc75ba10e7b3c08bf97e3ac72c7624882db09bb - languageName: node - linkType: hard - -"rc@npm:^1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e - languageName: node - linkType: hard - -"react-is@npm:^16.7.0, react-is@npm:^16.8.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - -"readdirp@npm:^2.2.1": - version: 2.2.1 - resolution: "readdirp@npm:2.2.1" - dependencies: - graceful-fs: ^4.1.11 - micromatch: ^3.1.10 - readable-stream: ^2.0.2 - checksum: 3879b20f1a871e0e004a14fbf1776e65ee0b746a62f5a416010808b37c272ac49b023c47042c7b1e281cba75a449696635bc64c397ed221ea81d853a8f2ed79a - languageName: node - linkType: hard - -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: ^2.2.1 - checksum: 6b1a9341e295e15d4fb40c010216cbcb6266587cd0b3ce7defabd66fa1b4e35f9fba3d64c2187fd38fadd01ccbfc5f1b33fdfb1da63b3cbf66224b7c6d75ce5a - languageName: node - linkType: hard - -"reduce@npm:^1.0.1": - version: 1.0.2 - resolution: "reduce@npm:1.0.2" - dependencies: - object-keys: ^1.1.0 - checksum: a704c16c2d53424f324c8c189f2c04cc397907e554b6b13ad75743f6ec53ddd39c6e8830d55fac263786f4d9f20887e79ebd3d7de98b2227cf64715ba6ff497b - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^8.2.0": - version: 8.2.0 - resolution: "regenerate-unicode-properties@npm:8.2.0" - dependencies: - regenerate: ^1.4.0 - checksum: ee7db70ab25b95f2e3f39537089fc3eddba0b39fc9b982d6602f127996ce873d8c55584d5428486ca00dc0a85d174d943354943cd4a745cda475c8fe314b4f8a - languageName: node - linkType: hard - -"regenerate@npm:^1.4.0": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4": - version: 0.13.7 - resolution: "regenerator-runtime@npm:0.13.7" - checksum: 52b66e6669152c0b1bccd95c8e11aabbfe67bb97bdf00e223bdf723b0f0052d4da5c02001d4c4bef576bdc5bcdc38a20496d1b5363b65c950c8434ed5071d9e0 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.14.2": - version: 0.14.5 - resolution: "regenerator-transform@npm:0.14.5" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: a467a3b652b4ec26ff964e9c5f1817523a73fc44cb928b8d21ff11aebeac5d10a84d297fe02cea9f282bcec81a0b0d562237da69ef0f40a0160b30a4fa98bc94 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.2.0": - version: 1.3.1 - resolution: "regexp.prototype.flags@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 343595db5a6bbbb3bfbda881f9c74832cfa9fc0039e64a43843f6bb9158b78b921055266510800ed69d4997638890b17a46d55fd9f32961f53ae56ac3ec4dd05 - languageName: node - linkType: hard - -"regexpu-core@npm:^4.7.1": - version: 4.7.1 - resolution: "regexpu-core@npm:4.7.1" - dependencies: - regenerate: ^1.4.0 - regenerate-unicode-properties: ^8.2.0 - regjsgen: ^0.5.1 - regjsparser: ^0.6.4 - unicode-match-property-ecmascript: ^1.0.4 - unicode-match-property-value-ecmascript: ^1.2.0 - checksum: 368b4aab72132ba3c8bd114822572c920d390ae99d3d219e0c7f872c6a0a3b1fbe30c88188ff90ec6f8e681667fa8e51d84a78bb05c460996a0df6a060b7ae80 - languageName: node - linkType: hard - -"registry-auth-token@npm:^4.0.0": - version: 4.2.1 - resolution: "registry-auth-token@npm:4.2.1" - dependencies: - rc: ^1.2.8 - checksum: aa72060b573a50607cfd2dee16d0e51e13ca58b6a80442e74545325dc24d2c38896e6bad229bdcc1fc9759fa81b4066be8693d4d6f45927318e7c793a93e9cd0 - languageName: node - linkType: hard - -"registry-url@npm:^5.0.0": - version: 5.1.0 - resolution: "registry-url@npm:5.1.0" - dependencies: - rc: ^1.2.8 - checksum: bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 - languageName: node - linkType: hard - -"regjsgen@npm:^0.5.1": - version: 0.5.2 - resolution: "regjsgen@npm:0.5.2" - checksum: 87c83d8488affae2493a823904de1a29a1867a07433c5e1142ad749b5606c5589b305fe35bfcc0972cf5a3b0d66b1f7999009e541be39a5d42c6041c59e2fb52 - languageName: node - linkType: hard - -"regjsparser@npm:^0.6.4": - version: 0.6.9 - resolution: "regjsparser@npm:0.6.9" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 1c439ec46a0be7834ec82fbb109396e088b6b73f0e9562cd67c37e3bdf85cc7cffe0192b3324da4491c7f709ce2b06fb2d59e12f0f9836b2e0cf26d5e54263aa - languageName: node - linkType: hard - -"relateurl@npm:0.2.x": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"renderkid@npm:^2.0.4": - version: 2.0.5 - resolution: "renderkid@npm:2.0.5" - dependencies: - css-select: ^2.0.2 - dom-converter: ^0.2 - htmlparser2: ^3.10.1 - lodash: ^4.17.20 - strip-ansi: ^3.0.0 - checksum: 8b6f6bb30af69c425db37939de15da7d93e9f063db3722823f66ea619055d06873be75d999ed4a12440f4f2f6d7090c790018b26f2fdf7aa8aac32edd5b2e462 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - -"request@npm:^2.87.0": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: ~0.7.0 - aws4: ^1.8.0 - caseless: ~0.12.0 - combined-stream: ~1.0.6 - extend: ~3.0.2 - forever-agent: ~0.6.1 - form-data: ~2.3.2 - har-validator: ~5.1.3 - http-signature: ~1.2.0 - is-typedarray: ~1.0.0 - isstream: ~0.1.2 - json-stringify-safe: ~5.0.1 - mime-types: ~2.1.19 - oauth-sign: ~0.9.0 - performance-now: ^2.1.0 - qs: ~6.5.2 - safe-buffer: ^5.1.2 - tough-cookie: ~2.5.0 - tunnel-agent: ^0.6.0 - uuid: ^3.3.2 - checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - -"resolve-cwd@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-cwd@npm:2.0.0" - dependencies: - resolve-from: ^3.0.0 - checksum: e7c16880c460656e77f102d537a6dc82b3657d9173697cd6ea82ffce37df96f6c1fc79d0bb35fd73fff8871ac13f21b4396958b5f0a13e5b99c97d69f5e319fa - languageName: node - linkType: hard - -"resolve-from@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-from@npm:3.0.0" - checksum: fff9819254d2d62b57f74e5c2ca9c0bdd425ca47287c4d801bc15f947533148d858229ded7793b0f59e61e49e782fffd6722048add12996e1bd4333c29669062 - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.14.2, resolve@npm:^1.2.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe - languageName: node - linkType: hard - -"resolve@npm:~1.17.0": - version: 1.17.0 - resolution: "resolve@npm:1.17.0" - dependencies: - path-parse: ^1.0.6 - checksum: 9ceaf83b3429f2d7ff5d0281b8d8f18a1f05b6ca86efea7633e76b8f76547f33800799dfdd24434942dec4fbd9e651ed3aef577d9a6b5ec87ad89c1060e24759 - languageName: node - linkType: hard - -"resolve@npm:~1.19.0": - version: 1.19.0 - resolution: "resolve@npm:1.19.0" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: a05b356e47b85ad3613d9e2a39a824f3c27f4fcad9c9ff6c7cc71a2e314c5904a90ab37481ad0069d03cab9eaaac6eb68aca1bc3355fdb05f1045cd50e2aacea - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.2.0#~builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 - languageName: node - linkType: hard - -"resolve@patch:resolve@~1.17.0#~builtin": - version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#~builtin::version=1.17.0&hash=07638b" - dependencies: - path-parse: ^1.0.6 - checksum: 6fd799f282ddf078c4bc20ce863e3af01fa8cb218f0658d9162c57161a2dbafe092b13015b9a4c58d0e1e801cf7aa7a4f13115fea9db98c3f9a0c43e429bad6f - languageName: node - linkType: hard - -"resolve@patch:resolve@~1.19.0#~builtin": - version: 1.19.0 - resolution: "resolve@patch:resolve@npm%3A1.19.0#~builtin::version=1.19.0&hash=07638b" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: 2443b94d347e6946c87c85faf13071f605e609e0b54784829b0ed2b917d050bfc1cbaf4ecc6453f224cfa7d0c5dcd97cbb273454cd210bee68e4af15c1a5abc9 - languageName: node - linkType: hard - -"responselike@npm:^1.0.2": - version: 1.0.2 - resolution: "responselike@npm:1.0.2" - dependencies: - lowercase-keys: ^1.0.0 - checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"rgb-regex@npm:^1.0.1": - version: 1.0.1 - resolution: "rgb-regex@npm:1.0.1" - checksum: b270ce8bc14782d2d21d3184c1e6c65b465476d8f03e72b93ef57c95710a452b2fe280e1d516c88873aec06efd7f71373e673f114b9d99f3a4f9a0393eb00126 - languageName: node - linkType: hard - -"rgba-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "rgba-regex@npm:1.0.0" - checksum: 7f2cd271572700faea50753d82524cb2b98f17a5b9722965c7076f6cd674fe545f28145b7ef2cccabc9eca2475c793db16862cd5e7b3784a9f4b8d6496431057 - languageName: node - linkType: hard - -"rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 - languageName: node - linkType: hard - -"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": - version: 1.0.3 - resolution: "run-queue@npm:1.0.3" - dependencies: - aproba: ^1.1.1 - checksum: c4541e18b5e056af60f398f2f1b3d89aae5c093d1524bf817c5ee68bcfa4851ad9976f457a9aea135b1d0d72ee9a91c386e3d136bcd95b699c367cd09c70be53 - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:^2.1.2, safer-buffer@npm:~2.1.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"sass-loader@npm:^8.0.2": - version: 8.0.2 - resolution: "sass-loader@npm:8.0.2" - dependencies: - clone-deep: ^4.0.1 - loader-utils: ^1.2.3 - neo-async: ^2.6.1 - schema-utils: ^2.6.1 - semver: ^6.3.0 - peerDependencies: - fibers: ">= 3.1.0" - node-sass: ^4.0.0 - sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - checksum: 3e9ba97432fcf1092600a31501298f37a0a913f86086b841740f9f8371ee33de55b9740b31563b089524aeb9020fbc51126730fa51d18b2e724a4ada71e2ff81 - languageName: node - linkType: hard - -"sax@npm:~1.2.4": - version: 1.2.4 - resolution: "sax@npm:1.2.4" - checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe - languageName: node - linkType: hard - -"schema-utils@npm:^1.0.0": - version: 1.0.0 - resolution: "schema-utils@npm:1.0.0" - dependencies: - ajv: ^6.1.0 - ajv-errors: ^1.0.0 - ajv-keywords: ^3.1.0 - checksum: e8273b4f6eff9ddf4a4f4c11daf7b96b900237bf8859c86fa1e9b4fab416b72d7ea92468f8db89c18a3499a1070206e1c8a750c83b42d5325fc659cbb55eee88 - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.1, schema-utils@npm:^2.6.5": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": ^7.0.5 - ajv: ^6.12.4 - ajv-keywords: ^3.5.2 - checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b - languageName: node - linkType: hard - -"section-matter@npm:^1.0.0": - version: 1.0.0 - resolution: "section-matter@npm:1.0.0" - dependencies: - extend-shallow: ^2.0.1 - kind-of: ^6.0.0 - checksum: 3cc4131705493b2955729b075dcf562359bba66183debb0332752dc9cad35616f6da7a23e42b6cab45cd2e4bb5cda113e9e84c8f05aee77adb6b0289a0229101 - languageName: node - linkType: hard - -"select-hose@npm:^2.0.0": - version: 2.0.0 - resolution: "select-hose@npm:2.0.0" - checksum: d7e5fcc695a4804209d232a1b18624a5134be334d4e1114b0721f7a5e72bd73da483dcf41528c1af4f4f4892ad7cfd6a1e55c8ffb83f9c9fe723b738db609dbb - languageName: node - linkType: hard - -"select@npm:^1.1.2": - version: 1.1.2 - resolution: "select@npm:1.1.2" - checksum: 4346151e94f226ea6131e44e68e6d837f3fdee64831b756dd657cc0b02f4cb5107f867cb34a1d1216ab7737d0bf0645d44546afb030bbd8d64e891f5e4c4814e - languageName: node - linkType: hard - -"selfsigned@npm:^1.10.8": - version: 1.10.8 - resolution: "selfsigned@npm:1.10.8" - dependencies: - node-forge: ^0.10.0 - checksum: c7028385cb3c011c6d7a4fe56d0f94ac1511ad175a87b49e7192f8ea43d1363d5f24283b2831071c0ad2d26ad19b9a6e81dba7f052490c245001ee61a2541e7d - languageName: node - linkType: hard - -"semver-diff@npm:^3.1.1": - version: 3.1.1 - resolution: "semver-diff@npm:3.1.1" - dependencies: - semver: ^6.3.0 - checksum: 8bbe5a5d7add2d5e51b72314a9215cd294d71f41cdc2bf6bd59ee76411f3610b576172896f1d191d0d7294cb9f2f847438d2ee158adacc0c224dca79052812fe - languageName: node - linkType: hard - -"semver@npm:7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 272c11bf8d083274ef79fe40a81c55c184dff84dd58e3c325299d0927ba48cece1f020793d138382b85f89bab5002a35a5ba59a3a68a7eebbb597eb733838778 - languageName: node - linkType: hard - -"semver@npm:^5.1.0, semver@npm:^5.5.0, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:~7.3.0": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 - languageName: node - linkType: hard - -"send@npm:0.17.1": - version: 0.17.1 - resolution: "send@npm:0.17.1" - dependencies: - debug: 2.6.9 - depd: ~1.1.2 - destroy: ~1.0.4 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: ~1.7.2 - mime: 1.6.0 - ms: 2.1.1 - on-finished: ~2.3.0 - range-parser: ~1.2.1 - statuses: ~1.5.0 - checksum: d214c2fa42e7fae3f8fc1aa3931eeb3e6b78c2cf141574e09dbe159915c1e3a337269fc6b7512e7dfddcd7d6ff5974cb62f7c3637ba86a55bde20a92c18bdca0 - languageName: node - linkType: hard - -"serialize-javascript@npm:^3.1.0": - version: 3.1.0 - resolution: "serialize-javascript@npm:3.1.0" - dependencies: - randombytes: ^2.1.0 - checksum: 0fc0131a78168d6237cfe1b21564f20a3b9b72e8ceebb21935baacf026631ed636912c20c7e9fa721a8f27a247e6f9849e705f27032d19863333c2cfab16d1c9 - languageName: node - linkType: hard - -"serialize-javascript@npm:^4.0.0": - version: 4.0.0 - resolution: "serialize-javascript@npm:4.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 3273b3394b951671fcf388726e9577021870dfbf85e742a1183fb2e91273e6101bdccea81ff230724f6659a7ee4cef924b0ff9baca32b79d9384ec37caf07302 - languageName: node - linkType: hard - -"serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "serve-index@npm:1.9.1" - dependencies: - accepts: ~1.3.4 - batch: 0.6.1 - debug: 2.6.9 - escape-html: ~1.0.3 - http-errors: ~1.6.2 - mime-types: ~2.1.17 - parseurl: ~1.3.2 - checksum: e2647ce13379485b98a53ba2ea3fbad4d44b57540d00663b02b976e426e6194d62ac465c0d862cb7057f65e0de8ab8a684aa095427a4b8612412eca0d300d22f - languageName: node - linkType: hard - -"serve-static@npm:1.14.1": - version: 1.14.1 - resolution: "serve-static@npm:1.14.1" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.17.1 - checksum: c6b268e8486d39ecd54b86c7f2d0ee4a38cd7514ddd9c92c8d5793bb005afde5e908b12395898ae206782306ccc848193d93daa15b86afb3cbe5a8414806abe8 - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.4": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.1": - version: 1.1.1 - resolution: "setprototypeof@npm:1.1.1" - checksum: a8bee29c1c64c245d460ce53f7460af8cbd0aceac68d66e5215153992cc8b3a7a123416353e0c642060e85cc5fd4241c92d1190eec97eda0dcb97436e8fcca3b - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - bin: - sha.js: ./bin.js - checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: ^6.0.2 - checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2": - version: 3.0.3 - resolution: "signal-exit@npm:3.0.3" - checksum: f0169d3f1263d06df32ca072b0bf33b34c6f8f0341a7a1621558a2444dfbe8f5fec76b35537fcc6f0bc4944bdb5336fe0bdcf41a5422c4e45a1dba3f45475e6c - languageName: node - linkType: hard - -"simple-swizzle@npm:^0.2.2": - version: 0.2.2 - resolution: "simple-swizzle@npm:0.2.2" - dependencies: - is-arrayish: ^0.3.1 - checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 - languageName: node - linkType: hard - -"slash@npm:^1.0.0": - version: 1.0.0 - resolution: "slash@npm:1.0.0" - checksum: 4b6e21b1fba6184a7e2efb1dd173f692d8a845584c1bbf9dc818ff86f5a52fc91b413008223d17cc684604ee8bb9263a420b1182027ad9762e35388434918860 - languageName: node - linkType: hard - -"slash@npm:^2.0.0": - version: 2.0.0 - resolution: "slash@npm:2.0.0" - checksum: 512d4350735375bd11647233cb0e2f93beca6f53441015eea241fe784d8068281c3987fbaa93e7ef1c38df68d9c60013045c92837423c69115297d6169aa85e6 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.1.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"smoothscroll-polyfill@npm:^0.4.3": - version: 0.4.4 - resolution: "smoothscroll-polyfill@npm:0.4.4" - checksum: b99ff7d91689d563ec69cb1d29713b332a24c88ac3dc4ef9ef9fbe4137305336e67253211067c5f786478dbdabd2aa6c2033709d4d8feca327b09eca8d5a0e7b - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - -"sockjs-client@npm:^1.5.0": - version: 1.5.1 - resolution: "sockjs-client@npm:1.5.1" - dependencies: - debug: ^3.2.6 - eventsource: ^1.0.7 - faye-websocket: ^0.11.3 - inherits: ^2.0.4 - json3: ^3.3.3 - url-parse: ^1.5.1 - checksum: ae963d6fd24fb95e941c9c420626eb809ba6608b56b7c824f7ca14b8c6d63b5a71910542bef16eb6548cd8554fc3fda9e4cd32696764e96721a9c0b6d48e6fe5 - languageName: node - linkType: hard - -"sockjs@npm:^0.3.21": - version: 0.3.21 - resolution: "sockjs@npm:0.3.21" - dependencies: - faye-websocket: ^0.11.3 - uuid: ^3.4.0 - websocket-driver: ^0.7.4 - checksum: 9614e5dded95d38c08c42bba3505638801d0e88d9fec03dc1ae37296286ad5c31dff503b8c81a11e573bd0bea76b295db93d4f00cc336e749bc89f9f7cc7e6c9 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^6.0.0": - version: 6.1.1 - resolution: "socks-proxy-agent@npm:6.1.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.1 - socks: ^2.6.1 - checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c - languageName: node - linkType: hard - -"socks@npm:^2.6.1": - version: 2.6.1 - resolution: "socks@npm:2.6.1" - dependencies: - ip: ^1.1.5 - smart-buffer: ^4.1.0 - checksum: 2ca9d616e424f645838ebaabb04f85d94ea999e0f8393dc07f86c435af22ed88cb83958feeabd1bb7bc537c635ed47454255635502c6808a6df61af1f41af750 - languageName: node - linkType: hard - -"sort-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "sort-keys@npm:2.0.0" - dependencies: - is-plain-obj: ^1.0.0 - checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 - languageName: node - linkType: hard - -"source-list-map@npm:^2.0.0": - version: 2.0.1 - resolution: "source-list-map@npm:2.0.1" - checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938 - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0, source-map-resolve@npm:^0.5.2": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - -"source-map-support@npm:~0.5.12": - version: 0.5.19 - resolution: "source-map-support@npm:0.5.19" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: c72802fdba9cb62b92baef18cc14cc4047608b77f0353e6c36dd993444149a466a2845332c5540d4a6630957254f0f68f4ef5a0120c33d2e83974c51a05afbac - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:0.5.6": - version: 0.5.6 - resolution: "source-map@npm:0.5.6" - checksum: 390b3f5165c9631a74fb6fb55ba61e62a7f9b7d4026ae0e2bfc2899c241d71c1bccb8731c496dc7f7cb79a5f523406eb03d8c5bebe8448ee3fc38168e2d209c8 - languageName: node - linkType: hard - -"source-map@npm:^0.5.0, source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3": - version: 0.7.3 - resolution: "source-map@npm:0.7.3" - checksum: cd24efb3b8fa69b64bf28e3c1b1a500de77e84260c5b7f2b873f88284df17974157cc88d386ee9b6d081f08fdd8242f3fc05c953685a6ad81aad94c7393dedea - languageName: node - linkType: hard - -"spdy-transport@npm:^3.0.0": - version: 3.0.0 - resolution: "spdy-transport@npm:3.0.0" - dependencies: - debug: ^4.1.0 - detect-node: ^2.0.4 - hpack.js: ^2.1.6 - obuf: ^1.1.2 - readable-stream: ^3.0.6 - wbuf: ^1.7.3 - checksum: 0fcaad3b836fb1ec0bdd39fa7008b9a7a84a553f12be6b736a2512613b323207ffc924b9551cef0378f7233c85916cff1118652e03a730bdb97c0e042243d56c - languageName: node - linkType: hard - -"spdy@npm:^4.0.2": - version: 4.0.2 - resolution: "spdy@npm:4.0.2" - dependencies: - debug: ^4.1.0 - handle-thing: ^2.0.0 - http-deceiver: ^1.2.7 - select-hose: ^2.0.0 - spdy-transport: ^3.0.0 - checksum: 2c739d0ff6f56ad36d2d754d0261d5ec358457bea7cbf77b1b05b0c6464f2ce65b85f196305f50b7bd9120723eb94bae9933466f28e67e5cd8cde4e27f1d75f8 - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"sshpk@npm:^1.7.0": - version: 1.16.1 - resolution: "sshpk@npm:1.16.1" - dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 5e76afd1cedc780256f688b7c09327a8a650902d18e284dfeac97489a735299b03c3e72c6e8d22af03dbbe4d6f123fdfd5f3c4ed6bedbec72b9529a55051b857 - languageName: node - linkType: hard - -"ssri@npm:^6.0.1": - version: 6.0.2 - resolution: "ssri@npm:6.0.2" - dependencies: - figgy-pudding: ^3.5.1 - checksum: 7c2e5d442f6252559c8987b7114bcf389fe5614bf65de09ba3e6f9a57b9b65b2967de348fcc3acccff9c069adb168140dd2c5fc2f6f4a779e604a27ef1f7d551 - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 - languageName: node - linkType: hard - -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb - languageName: node - linkType: hard - -"stack-utils@npm:^1.0.1": - version: 1.0.5 - resolution: "stack-utils@npm:1.0.5" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: f82baf8d89536252a55c76866d5be3d04c96b09693a8d2ab3794b9fdec3674e05bd3f3d19345093e2cbba116a1f8f413858e0537bc3c81c605249261c3d26182 - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c - languageName: node - linkType: hard - -"std-env@npm:^2.2.1": - version: 2.3.0 - resolution: "std-env@npm:2.3.0" - dependencies: - ci-info: ^3.0.0 - checksum: da0b81e217d920770448e53d660b6b0800d3f6fde201812cb7f5505a6fffe578b21188301214fecc227cc2db6849eb736f6d1975e5fa7ee179e9240da81fc88b - languageName: node - linkType: hard - -"stream-browserify@npm:^2.0.1": - version: 2.0.2 - resolution: "stream-browserify@npm:2.0.2" - dependencies: - inherits: ~2.0.1 - readable-stream: ^2.0.2 - checksum: 8de7bcab5582e9a931ae1a4768be7efe8fa4b0b95fd368d16d8cf3e494b897d6b0a7238626de5d71686e53bddf417fd59d106cfa3af0ec055f61a8d1f8fc77b3 - languageName: node - linkType: hard - -"stream-each@npm:^1.1.0": - version: 1.2.3 - resolution: "stream-each@npm:1.2.3" - dependencies: - end-of-stream: ^1.1.0 - stream-shift: ^1.0.0 - checksum: f243de78e9fcc60757994efc4e8ecae9f01a4b2c6a505d786b11fcaa68b1a75ca54afc1669eac9e08f19ff0230792fc40d0f3e3e2935d76971b4903af18b76ab - languageName: node - linkType: hard - -"stream-http@npm:^2.7.2": - version: 2.8.3 - resolution: "stream-http@npm:2.8.3" - dependencies: - builtin-status-codes: ^3.0.0 - inherits: ^2.0.1 - readable-stream: ^2.3.6 - to-arraybuffer: ^1.0.0 - xtend: ^4.0.0 - checksum: f57dfaa21a015f72e6ce6b199cf1762074cfe8acf0047bba8f005593754f1743ad0a91788f95308d9f3829ad55742399ad27b4624432f2752a08e62ef4346e05 - languageName: node - linkType: hard - -"stream-shift@npm:^1.0.0": - version: 1.0.1 - resolution: "stream-shift@npm:1.0.1" - checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b - languageName: node - linkType: hard - -"strict-uri-encode@npm:^1.0.0": - version: 1.1.0 - resolution: "strict-uri-encode@npm:1.1.0" - checksum: 9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb3 - languageName: node - linkType: hard - -"string-argv@npm:~0.3.1": - version: 0.3.1 - resolution: "string-argv@npm:0.3.1" - checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^3.0.0, string-width@npm:^3.1.0": - version: 3.1.0 - resolution: "string-width@npm:3.1.0" - dependencies: - emoji-regex: ^7.0.1 - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^5.1.0 - checksum: 57f7ca73d201682816d573dc68bd4bb8e1dff8dc9fcf10470fdfc3474135c97175fec12ea6a159e67339b41e86963112355b64529489af6e7e70f94a7caf08b2 - languageName: node - linkType: hard - -"string-width@npm:^4.0.0, string-width@npm:^4.1.0": - version: 4.2.2 - resolution: "string-width@npm:4.2.2" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.0 - checksum: 343e089b0e66e0f72aab4ad1d9b6f2c9cc5255844b0c83fd9b53f2a3b3fd0421bdd6cb05be96a73117eb012db0887a6c1d64ca95aaa50c518e48980483fea0ab - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f - languageName: node - linkType: hard - -"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: ^2.0.0 - checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 - languageName: node - linkType: hard - -"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": - version: 5.2.0 - resolution: "strip-ansi@npm:5.2.0" - dependencies: - ansi-regex: ^4.1.0 - checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0": - version: 6.0.0 - resolution: "strip-ansi@npm:6.0.0" - dependencies: - ansi-regex: ^5.0.0 - checksum: 04c3239ede44c4d195b0e66c0ad58b932f08bec7d05290416d361ff908ad282ecdaf5d9731e322c84f151d427436bde01f05b7422c3ec26dd927586736b0e5d0 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-bom-string@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-bom-string@npm:1.0.0" - checksum: 5635a3656d8512a2c194d6c8d5dee7ef0dde6802f7be9413b91e201981ad4132506656d9cf14137f019fd50f0269390d91c7f6a2601b1bee039a4859cfce4934 - languageName: node - linkType: hard - -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 - languageName: node - linkType: hard - -"strip-json-comments@npm:~3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"stylehacks@npm:^4.0.0": - version: 4.0.3 - resolution: "stylehacks@npm:4.0.3" - dependencies: - browserslist: ^4.0.0 - postcss: ^7.0.0 - postcss-selector-parser: ^3.0.0 - checksum: 8acf28ea609bee6d7ba40121bcf53af8d899c1ec04f2c08de9349b8292b84b8aa7f82e14c623ae6956decf5b7a7eeea5472ab8e48de7bdcdb6d76640444f6753 - languageName: node - linkType: hard - -"stylus-loader@npm:^3.0.2": - version: 3.0.2 - resolution: "stylus-loader@npm:3.0.2" - dependencies: - loader-utils: ^1.0.2 - lodash.clonedeep: ^4.5.0 - when: ~3.6.x - peerDependencies: - stylus: ">=0.52.4" - checksum: f6b56f188e9f285d2b4bcd53ab9f903df9292f5e84600d158f85b1d65c0de67973a37c6beeffe7d348e0caf4f7d11432f594aed8c66bd18aa6617a354dd9e674 - languageName: node - linkType: hard - -"stylus@npm:^0.54.8": - version: 0.54.8 - resolution: "stylus@npm:0.54.8" - dependencies: - css-parse: ~2.0.0 - debug: ~3.1.0 - glob: ^7.1.6 - mkdirp: ~1.0.4 - safer-buffer: ^2.1.2 - sax: ~1.2.4 - semver: ^6.3.0 - source-map: ^0.7.3 - bin: - stylus: bin/stylus - checksum: 5b8fe13af9da74f6ef6e9b9e977d93c1ad3113eba807c7cc91445c6a111bbbab4e43542f4356e1a32ae5ae774b549da66932a259fb533b73a421ff0085906111 - languageName: node - linkType: hard - -"supports-color@npm:^2.0.0": - version: 2.0.0 - resolution: "supports-color@npm:2.0.0" - checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^6.1.0": - version: 6.1.0 - resolution: "supports-color@npm:6.1.0" - dependencies: - has-flag: ^3.0.0 - checksum: 74358f9535c83ee113fbaac354b11e808060f6e7d8722082ee43af3578469134e89d00026dce2a6b93ce4e5b89d0e9a10f638b2b9f64c7838c2fb2883a47b3d5 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"svg-tags@npm:^1.0.0": - version: 1.0.0 - resolution: "svg-tags@npm:1.0.0" - checksum: 407e5ef87cfa2fb81c61d738081c2decd022ce13b922d035b214b49810630bf5d1409255a4beb3a940b77b32f6957806deff16f1bf0ce1ab11c7a184115a0b7f - languageName: node - linkType: hard - -"svgo@npm:^1.0.0": - version: 1.3.2 - resolution: "svgo@npm:1.3.2" - dependencies: - chalk: ^2.4.1 - coa: ^2.0.2 - css-select: ^2.0.0 - css-select-base-adapter: ^0.1.1 - css-tree: 1.0.0-alpha.37 - csso: ^4.0.2 - js-yaml: ^3.13.1 - mkdirp: ~0.5.1 - object.values: ^1.1.0 - sax: ~1.2.4 - stable: ^0.1.8 - unquote: ~1.1.1 - util.promisify: ~1.0.0 - bin: - svgo: ./bin/svgo - checksum: 28a5680a61245eb4a1603bc03459095bb01ad5ebd23e95882d886c3c81752313c0a9a9fe48dd0bcbb9a27c52e11c603640df952971573b2b550d9e15a9ee6116 - languageName: node - linkType: hard - -"symbol-observable@npm:^1.0.2": - version: 1.2.0 - resolution: "symbol-observable@npm:1.2.0" - checksum: 48ffbc22e3d75f9853b3ff2ae94a44d84f386415110aea5effc24d84c502e03a4a6b7a8f75ebaf7b585780bda34eb5d6da3121f826a6f93398429d30032971b6 - languageName: node - linkType: hard - -"symbol-observable@npm:^4.0.0": - version: 4.0.0 - resolution: "symbol-observable@npm:4.0.0" - checksum: 212c7edce6186634d671336a88c0e0bbd626c2ab51ed57498dc90698cce541839a261b969c2a1e8dd43762133d47672e8b62e0b1ce9cf4157934ba45fd172ba8 - languageName: node - linkType: hard - -"tapable@npm:^1.0.0, tapable@npm:^1.1.3": - version: 1.1.3 - resolution: "tapable@npm:1.1.3" - checksum: 53ff4e7c3900051c38cc4faab428ebfd7e6ad0841af5a7ac6d5f3045c5b50e88497bfa8295b4b3fbcadd94993c9e358868b78b9fb249a76cb8b018ac8dccafd7 - languageName: node - linkType: hard - -"tar@npm:^6.0.2, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^3.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"term-size@npm:^2.1.0": - version: 2.2.1 - resolution: "term-size@npm:2.2.1" - checksum: 1ed981335483babc1e8206f843e06bd2bf89b85f0bf5a9a9d928033a0fcacdba183c03ba7d91814643015543ba002f1339f7112402a21da8f24b6c56b062a5a9 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^1.4.3": - version: 1.4.5 - resolution: "terser-webpack-plugin@npm:1.4.5" - dependencies: - cacache: ^12.0.2 - find-cache-dir: ^2.1.0 - is-wsl: ^1.1.0 - schema-utils: ^1.0.0 - serialize-javascript: ^4.0.0 - source-map: ^0.6.1 - terser: ^4.1.2 - webpack-sources: ^1.4.0 - worker-farm: ^1.7.0 - peerDependencies: - webpack: ^4.0.0 - checksum: 02aada80927d3c8105d69cb00384d307b73aed67d180db5d20023a8d649149f3803ad50f9cd2ef9eb2622005de87e677198ecc5088f51422bfac5d4d57472d0e - languageName: node - linkType: hard - -"terser@npm:^4.1.2": - version: 4.8.0 - resolution: "terser@npm:4.8.0" - dependencies: - commander: ^2.20.0 - source-map: ~0.6.1 - source-map-support: ~0.5.12 - bin: - terser: bin/terser - checksum: f980789097d4f856c1ef4b9a7ada37beb0bb022fb8aa3057968862b5864ad7c244253b3e269c9eb0ab7d0caf97b9521273f2d1cf1e0e942ff0016e0583859c71 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - -"through2@npm:^2.0.0": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 - languageName: node - linkType: hard - -"through@npm:~2.3.4": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"thunky@npm:^1.0.2": - version: 1.1.0 - resolution: "thunky@npm:1.1.0" - checksum: 993096c472b6b8f30e29dc777a8d17720e4cab448375041f20c0cb802a09a7fb2217f2a3e8cdc11851faa71c957e2db309357367fc9d7af3cb7a4d00f4b66034 - languageName: node - linkType: hard - -"timers-browserify@npm:^2.0.4": - version: 2.0.12 - resolution: "timers-browserify@npm:2.0.12" - dependencies: - setimmediate: ^1.0.4 - checksum: ec37ae299066bef6c464dcac29c7adafba1999e7227a9bdc4e105a459bee0f0b27234a46bfd7ab4041da79619e06a58433472867a913d01c26f8a203f87cee70 - languageName: node - linkType: hard - -"timsort@npm:^0.3.0, timsort@npm:~0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a - languageName: node - linkType: hard - -"tiny-emitter@npm:^2.0.0": - version: 2.1.0 - resolution: "tiny-emitter@npm:2.1.0" - checksum: fbcfb5145751a0e3b109507a828eb6d6d4501352ab7bb33eccef46e22e9d9ad3953158870a6966a59e57ab7c3f9cfac7cab8521db4de6a5e757012f4677df2dd - languageName: node - linkType: hard - -"to-arraybuffer@npm:^1.0.0": - version: 1.0.1 - resolution: "to-arraybuffer@npm:1.0.1" - checksum: 31433c10b388722729f5da04c6b2a06f40dc84f797bb802a5a171ced1e599454099c6c5bc5118f4b9105e7d049d3ad9d0f71182b77650e4fdb04539695489941 - languageName: node - linkType: hard - -"to-factory@npm:^1.0.0": - version: 1.0.0 - resolution: "to-factory@npm:1.0.0" - checksum: 33791593b3a83730c55f3d65dc990b612568dda64e325640762555944911411c55cf80ae5f71e54dbbca0c31fa9a0c6f3b572a12de3fa7cec8eeb8ee851424b9 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-readable-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "to-readable-stream@npm:1.0.0" - checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.0": - version: 1.0.0 - resolution: "toidentifier@npm:1.0.0" - checksum: 199e6bfca1531d49b3506cff02353d53ec987c9ee10ee272ca6484ed97f1fc10fb77c6c009079ca16d5c5be4a10378178c3cacdb41ce9ec954c3297c74c6053e - languageName: node - linkType: hard - -"toml@npm:^3.0.0": - version: 3.0.0 - resolution: "toml@npm:3.0.0" - checksum: 5d7f1d8413ad7780e9bdecce8ea4c3f5130dd53b0a4f2e90b93340979a137739879d7b9ce2ce05c938b8cc828897fe9e95085197342a1377dd8850bf5125f15f - languageName: node - linkType: hard - -"toposort@npm:^1.0.0": - version: 1.0.7 - resolution: "toposort@npm:1.0.7" - checksum: 68c074586ae4ad8eb518d5b5ebee7b3ef903ace180d822b9846b52bd945b14db00c1c5e1107ed77ea48705806291a6efda95c90ff5b31ce416257cdc21461a86 - languageName: node - linkType: hard - -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: ^1.1.28 - punycode: ^2.1.1 - checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.4.0": - version: 0.4.4 - resolution: "ts-invariant@npm:0.4.4" - dependencies: - tslib: ^1.9.3 - checksum: 58b32fb6b7c479e602e55b9eb63bb99a203c5db09367d3aa7c3cbe000ba62f919eea7f031f55172df9b6d362a6f1a87e906df84b04b8c74c88e507ac58f7a554 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.9.0": - version: 0.9.3 - resolution: "ts-invariant@npm:0.9.3" - dependencies: - tslib: ^2.1.0 - checksum: 593c096b8ae21073eb6a0faa76db76752c1e929ca9042b02cedab64dd78d67b8b73fb4b965857e889a2df492fdfb2f9737b486640e212d32dc6b39d188c9151c - languageName: node - linkType: hard - -"tslib@npm:^1.10.0, tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0": - version: 2.3.1 - resolution: "tslib@npm:2.3.1" - checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 - languageName: node - linkType: hard - -"tty-browserify@npm:0.0.0": - version: 0.0.0 - resolution: "tty-browserify@npm:0.0.0" - checksum: a06f746acc419cb2527ba19b6f3bd97b4a208c03823bfb37b2982629d2effe30ebd17eaed0d7e2fc741f3c4f2a0c43455bd5fb4194354b378e78cfb7ca687f59 - languageName: node - linkType: hard - -"tunnel-agent@npm:^0.6.0": - version: 0.6.0 - resolution: "tunnel-agent@npm:0.6.0" - dependencies: - safe-buffer: ^5.0.1 - checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 - languageName: node - linkType: hard - -"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": - version: 0.14.5 - resolution: "tweetnacl@npm:0.14.5" - checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"type-is@npm:~1.6.17, type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1 - languageName: node - linkType: hard - -"typescript@npm:^3.6.4": - version: 3.9.10 - resolution: "typescript@npm:3.9.10" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 46c842e2cd4797b88b66ef06c9c41dd21da48b95787072ccf39d5f2aa3124361bc4c966aa1c7f709fae0509614d76751455b5231b12dbb72eb97a31369e1ff92 - languageName: node - linkType: hard - -"typescript@npm:~4.3.5": - version: 4.3.5 - resolution: "typescript@npm:4.3.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: bab033b5e2b0790dd35b77fd005df976ef80b8d84fd2c6e63cc31808151875beae9216e5a315fe7068e8499905c3c354248fe83272cdfc13b7705635f0c66c97 - languageName: node - linkType: hard - -"typescript@patch:typescript@^3.6.4#~builtin": - version: 3.9.10 - resolution: "typescript@patch:typescript@npm%3A3.9.10#~builtin::version=3.9.10&hash=493e53" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: dc7141ab555b23a8650a6787f98845fc11692063d02b75ff49433091b3af2fe3d773650dea18389d7c21f47d620fb3b110ea363dab4ab039417a6ccbbaf96fc2 - languageName: node - linkType: hard - -"typescript@patch:typescript@~4.3.5#~builtin": - version: 4.3.5 - resolution: "typescript@patch:typescript@npm%3A4.3.5#~builtin::version=4.3.5&hash=493e53" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 61fc1a2ca5037420de5bbe17c6ddc4cbcc0d52301ed94f0a7b5821c55ff9eb96307f0816f745ca8f0fc87ed92f3951cde6d97cd6fd6bc6920c02ea63b5b26259 - languageName: node - linkType: hard - -"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": - version: 1.0.6 - resolution: "uc.micro@npm:1.0.6" - checksum: 6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a - languageName: node - linkType: hard - -"uglify-js@npm:3.4.x": - version: 3.4.10 - resolution: "uglify-js@npm:3.4.10" - dependencies: - commander: ~2.19.0 - source-map: ~0.6.1 - bin: - uglifyjs: bin/uglifyjs - checksum: dfc61c85b0660216432e021aac6a5f3ea0331720003d4d929b95f297daceb73bc9615875ca150516b49bc57ab60d3cf32415fc006cccf20f275c806f6686da0d - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.14.2 - resolution: "uglify-js@npm:3.14.2" - bin: - uglifyjs: bin/uglifyjs - checksum: 4d8e5c63b2c0455b598cc09ade538cd4fe6d68cb46a9bc563464d749650047592d96aff5a283c1c29a0c27a6ce8f9eb0b3a33525b3e7555b841a53b2b32d6219 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.0": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: ^1.1.1 - has-bigints: ^1.0.1 - has-symbols: ^1.0.2 - which-boxed-primitive: ^1.0.2 - checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-canonical-property-names-ecmascript@npm:1.0.4" - checksum: cc1973b18d0e1a151711e5551f87f4b3086c4f542cd5142aa691307d5720fd725fa7d36c24e12e944e108b91c72554237b0c236772d35592839434da5506c40f - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-match-property-ecmascript@npm:1.0.4" - dependencies: - unicode-canonical-property-names-ecmascript: ^1.0.4 - unicode-property-aliases-ecmascript: ^1.0.4 - checksum: 08e269fac71b5ace0f8331df9e87b9b533fe97b00c43ea58de69ae81816581490f846050e0c472279a3e7434524feba99915a93816f90dbbc0a30bcbd082da88 - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^1.2.0": - version: 1.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:1.2.0" - checksum: 2e663cfec8e2cf317b69613566314979f717034ea8f58a237dd63234795044a87337410064fe839774d71e1d7e12195520e9edd69ed8e28f2a9eb28a2db38595 - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^1.0.4": - version: 1.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:1.1.0" - checksum: 1a96dc462d251bb1c5237f7bc77956b29f01cefce7f3e7448430742930961557c3d1515a9669715ebb06209bf01072e2f78ba1627247017daa84346414bc02f1 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"uniq@npm:^1.0.1": - version: 1.0.1 - resolution: "uniq@npm:1.0.1" - checksum: 8206535f83745ea83f9da7035f3b983fd6ed5e35b8ed7745441944e4065b616bc67cf0d0a23a86b40ee0074426f0607f0a138f9b78e124eb6a7a6a6966055709 - languageName: node - linkType: hard - -"uniqs@npm:^2.0.0": - version: 2.0.0 - resolution: "uniqs@npm:2.0.0" - checksum: 5ace63e0521fd1ae2c161b3fa167cf6846fc45a71c00496729e0146402c3ae467c6f025a68fbd6766300a9bfbac9f240f2f0198164283bef48012b39db83f81f - languageName: node - linkType: hard - -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - -"unique-string@npm:^2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: ^2.0.0 - checksum: ef68f639136bcfe040cf7e3cd7a8dff076a665288122855148a6f7134092e6ed33bf83a7f3a9185e46c98dddc445a0da6ac25612afa1a7c38b8b654d6c02498e - languageName: node - linkType: hard - -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - -"unquote@npm:~1.1.1": - version: 1.1.1 - resolution: "unquote@npm:1.1.1" - checksum: 71745867d09cba44ba2d26cb71d6dda7045a98b14f7405df4faaf2b0c90d24703ad027a9d90ba9a6e0d096de2c8d56f864fd03f1c0498c0b7a3990f73b4c8f5f - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"upath@npm:^1.1.0, upath@npm:^1.1.1": - version: 1.2.0 - resolution: "upath@npm:1.2.0" - checksum: 4c05c094797cb733193a0784774dbea5b1889d502fc9f0572164177e185e4a59ba7099bf0b0adf945b232e2ac60363f9bf18aac9b2206fb99cbef971a8455445 - languageName: node - linkType: hard - -"update-notifier@npm:^4.0.0": - version: 4.1.3 - resolution: "update-notifier@npm:4.1.3" - dependencies: - boxen: ^4.2.0 - chalk: ^3.0.0 - configstore: ^5.0.1 - has-yarn: ^2.1.0 - import-lazy: ^2.1.0 - is-ci: ^2.0.0 - is-installed-globally: ^0.3.1 - is-npm: ^4.0.0 - is-yarn-global: ^0.3.0 - latest-version: ^5.0.0 - pupa: ^2.0.1 - semver-diff: ^3.1.1 - xdg-basedir: ^4.0.0 - checksum: 67652056e6a2634881e67ac91be4524262bd0bcba98ef71107289adec33e21b72cca0a1a5fbcd9b546f40dff20fa38ebd36ef846629a7f8d97c602221ae4cfc1 - languageName: node - linkType: hard - -"upper-case@npm:^1.1.1": - version: 1.1.3 - resolution: "upper-case@npm:1.1.3" - checksum: 991c845de75fa56e5ad983f15e58494dd77b77cadd79d273cc11e8da400067e9881ae1a52b312aed79b3d754496e2e0712e08d22eae799e35c7f9ba6f3d8a85d - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"url-loader@npm:^1.0.1": - version: 1.1.2 - resolution: "url-loader@npm:1.1.2" - dependencies: - loader-utils: ^1.1.0 - mime: ^2.0.3 - schema-utils: ^1.0.0 - peerDependencies: - webpack: ^3.0.0 || ^4.0.0 - bin: - url-loader: "" - checksum: 4bce3d5502863b208d5645df247c6f66c75050d32890970e11d33dbdad1d13218cefeef975f9fce98bd1c043314b182aea7e714c67a913755f9bf6af92965701 - languageName: node - linkType: hard - -"url-parse-lax@npm:^3.0.0": - version: 3.0.0 - resolution: "url-parse-lax@npm:3.0.0" - dependencies: - prepend-http: ^2.0.0 - checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 - languageName: node - linkType: hard - -"url-parse@npm:^1.4.3, url-parse@npm:^1.5.1": - version: 1.5.1 - resolution: "url-parse@npm:1.5.1" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: ce5c400db52d83b941944502000081e2338e46834cf16f2888961dc034ea5d49dbeb85ac8fdbe28c3fe738c09320a71a2f6d9286b748895cd464b1e208b6b991 - languageName: node - linkType: hard - -"url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util.promisify@npm:1.0.0": - version: 1.0.0 - resolution: "util.promisify@npm:1.0.0" - dependencies: - define-properties: ^1.1.2 - object.getownpropertydescriptors: ^2.0.3 - checksum: 482e857d676adee506c5c3a10212fd6a06a51d827a9b6d5396a8e593db53b4bb7064f77c5071357d8cd76072542de5cc1c08bc6d7c10cf43fa22dc3bc67556f1 - languageName: node - linkType: hard - -"util.promisify@npm:~1.0.0": - version: 1.0.1 - resolution: "util.promisify@npm:1.0.1" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.2 - has-symbols: ^1.0.1 - object.getownpropertydescriptors: ^2.1.0 - checksum: d823c75b3fc66510018596f128a6592c98991df38bc0464a633bdf9134e2de0a1a33199c5c21cc261048a3982d7a19e032ecff8835b3c587f843deba96063e37 - languageName: node - linkType: hard - -"util@npm:0.10.3": - version: 0.10.3 - resolution: "util@npm:0.10.3" - dependencies: - inherits: 2.0.1 - checksum: bd800f5d237a82caddb61723a6cbe45297d25dd258651a31335a4d5d981fd033cb4771f82db3d5d59b582b187cb69cfe727dc6f4d8d7826f686ee6c07ce611e0 - languageName: node - linkType: hard - -"util@npm:^0.11.0": - version: 0.11.1 - resolution: "util@npm:0.11.1" - dependencies: - inherits: 2.0.3 - checksum: 80bee6a2edf5ab08dcb97bfe55ca62289b4e66f762ada201f2c5104cb5e46474c8b334f6504d055c0e6a8fda10999add9bcbd81ba765e7f37b17dc767331aa55 - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 - languageName: node - linkType: hard - -"uuid@npm:^3.3.2, uuid@npm:^3.4.0": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f - languageName: node - linkType: hard - -"validator@npm:^8.0.0": - version: 8.2.0 - resolution: "validator@npm:8.2.0" - checksum: a249ffd5a565704d19ed213da3e5003509f3fb4181577892e1d4520d24e49ea1f0c260708df07c8532089d0937431c5ece8af347a65b1310a3fa4e3945928e62 - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"vendors@npm:^1.0.0": - version: 1.0.4 - resolution: "vendors@npm:1.0.4" - checksum: 4b16e0bc18dbdd7ac8dd745c776c08f6c73e9a7f620ffd9faf94a3d86a35feaf4c6cb1bbdb304d2381548a30d0abe69b83eeb1b7b1bf5bb33935e64b28812681 - languageName: node - linkType: hard - -"verror@npm:1.10.0": - version: 1.10.0 - resolution: "verror@npm:1.10.0" - dependencies: - assert-plus: ^1.0.0 - core-util-is: 1.0.2 - extsprintf: ^1.2.0 - checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea - languageName: node - linkType: hard - -"vm-browserify@npm:^1.0.1": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 10a1c50aab54ff8b4c9042c15fc64aefccce8d2fb90c0640403242db0ee7fb269f9b102bdb69cfb435d7ef3180d61fd4fb004a043a12709abaf9056cfd7e039d - languageName: node - linkType: hard - -"vsf-magento-integration-docs@workspace:.": - version: 0.0.0-use.local - resolution: "vsf-magento-integration-docs@workspace:." - dependencies: - "@microsoft/api-documenter": ^7.13.7 - "@microsoft/api-extractor": ^7.18.3 - "@vue-storefront/commercetools-api": ~1.2.0 - "@vuepress/plugin-active-header-links": ^1.8.2 - "@vuepress/plugin-back-to-top": ^1.8.2 - "@vuepress/plugin-medium-zoom": ^1.8.2 - "@vuepress/plugin-search": ^1.8.2 - handlebars: ^4.7.7 - sass-loader: ^8.0.2 - typescript: ^3.6.4 - vue-multiselect: ^2.1.6 - vuepress: ^1.2.0 - languageName: unknown - linkType: soft - -"vue-hot-reload-api@npm:^2.3.0": - version: 2.3.4 - resolution: "vue-hot-reload-api@npm:2.3.4" - checksum: 9befc0b3d6c1cc69430813fb7cfd2125c6a228730a36fad0653e4ddb60c8d4cf3ddc9649d2c9105c3d6044b42e8c8dce62b3c245bc65a6f187c1e2ca82a79252 - languageName: node - linkType: hard - -"vue-loader@npm:^15.7.1": - version: 15.9.6 - resolution: "vue-loader@npm:15.9.6" - dependencies: - "@vue/component-compiler-utils": ^3.1.0 - hash-sum: ^1.0.2 - loader-utils: ^1.1.0 - vue-hot-reload-api: ^2.3.0 - vue-style-loader: ^4.1.0 - peerDependencies: - css-loader: "*" - webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 - peerDependenciesMeta: - cache-loader: - optional: true - vue-template-compiler: - optional: true - checksum: 38ad9b5d569880122d1e6ded549a20b7ba2d7d2ccc751daea482ea12f532970fbf27df536c50ffda3dac0b6cb6f0a8d68d1c9591992a9e36c88670a02a841016 - languageName: node - linkType: hard - -"vue-multiselect@npm:^2.1.6": - version: 2.1.6 - resolution: "vue-multiselect@npm:2.1.6" - checksum: 582ba3df035e6d22cb58307233917b9d1564196b397f62bd352e0431b0448f578eedd480157ba5df7d699cc6983d999e39ab5aa77335db5d0f1bb1d4213529f9 - languageName: node - linkType: hard - -"vue-router@npm:^3.4.5": - version: 3.5.1 - resolution: "vue-router@npm:3.5.1" - checksum: 9dca79789517d7e70fb26edb47187a46a2aa2fbdecd8c0a91bb2c8e333c44406bc2a8c39283ab02031651630871e28666a368cd79fcd258025f3521bee30eea9 - languageName: node - linkType: hard - -"vue-server-renderer@npm:^2.6.10": - version: 2.6.12 - resolution: "vue-server-renderer@npm:2.6.12" - dependencies: - chalk: ^1.1.3 - hash-sum: ^1.0.2 - he: ^1.1.0 - lodash.template: ^4.5.0 - lodash.uniq: ^4.5.0 - resolve: ^1.2.0 - serialize-javascript: ^3.1.0 - source-map: 0.5.6 - checksum: 31a3504479f81d008843bb7259d6f94b22557d8c1651b305eb4ac004f254c7ac6490aa454ccead7bc8d81e49fb034181b2b3bc7aaf8a0ff364ac41c2b3276147 - languageName: node - linkType: hard - -"vue-style-loader@npm:^4.1.0": - version: 4.1.3 - resolution: "vue-style-loader@npm:4.1.3" - dependencies: - hash-sum: ^1.0.2 - loader-utils: ^1.0.2 - checksum: ef79d0c6329303d69c87f128f67e486bd37e9a8d416aa662edafae62fab727117b7452f50be8b11fe0c4cb43992344d5ef6a46b206f375fca4d37ae5a5b99185 - languageName: node - linkType: hard - -"vue-template-compiler@npm:^2.6.10": - version: 2.6.12 - resolution: "vue-template-compiler@npm:2.6.12" - dependencies: - de-indent: ^1.0.2 - he: ^1.1.0 - checksum: 55e996f9bc1045fe5afd6adbc951f28431624c6c9f6ab31c06f2c8257965b63a5ce6c171719f31cb5aae6978b97de7c0eb2770ccb868d6754a81a93100cb7912 - languageName: node - linkType: hard - -"vue-template-es2015-compiler@npm:^1.9.0": - version: 1.9.1 - resolution: "vue-template-es2015-compiler@npm:1.9.1" - checksum: ad1e85662783be3ee262c323b05d12e6a5036fca24f16dc0f7ab92736b675919cb4fa4b79b28753eac73119b709d1b36789bf60e8ae423f50c4db35de9370e8b - languageName: node - linkType: hard - -"vue@npm:^2.6.10": - version: 2.6.12 - resolution: "vue@npm:2.6.12" - checksum: a8959e30990c5464131e451d3f9c2a6e6964c2d1137a30fbcd2bc66174a6c2d6f63e4dcec9c17fa0f236580953ff1ad44c25437c5e02ee1cf74b588bbac1a0bf - languageName: node - linkType: hard - -"vue@npm:^2.6.11": - version: 2.6.14 - resolution: "vue@npm:2.6.14" - checksum: 23524a1bdca094d62cb3491a46317eed75184b5d61d28fa846ea5d2b241c1cc7084fc67ee259d47a50a6d0bbc33ecaceb7bb52bff81312fe7da07263f3419942 - languageName: node - linkType: hard - -"vuepress-html-webpack-plugin@npm:^3.2.0": - version: 3.2.0 - resolution: "vuepress-html-webpack-plugin@npm:3.2.0" - dependencies: - html-minifier: ^3.2.3 - loader-utils: ^0.2.16 - lodash: ^4.17.3 - pretty-error: ^2.0.2 - tapable: ^1.0.0 - toposort: ^1.0.0 - util.promisify: 1.0.0 - peerDependencies: - webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - checksum: 44494d1ad8ad1876746644c54d34ea97798847a8439f5ead63066973928b5786f7dea5ca345c60317cc0f68ccf77eaa5eaf4593d88c9840992fe5a7ac2b505c6 - languageName: node - linkType: hard - -"vuepress-plugin-container@npm:^2.0.2": - version: 2.1.5 - resolution: "vuepress-plugin-container@npm:2.1.5" - dependencies: - "@vuepress/shared-utils": ^1.2.0 - markdown-it-container: ^2.0.0 - checksum: 49a9e088ad7268fbf1a52cd152da2755c59bfa1e65f9c1c5f34c642847aae64f23f4f9727f244b30521a866496ae95dcfc6d4d62e4031469e02f96b4386bb165 - languageName: node - linkType: hard - -"vuepress-plugin-smooth-scroll@npm:^0.0.3": - version: 0.0.3 - resolution: "vuepress-plugin-smooth-scroll@npm:0.0.3" - dependencies: - smoothscroll-polyfill: ^0.4.3 - checksum: 4e7a2099a7a03a0400e735951ac3d4a82b708500e289067c64bc8cfe0d1d1c02f6bc1b7d2914e602a1dcf8497d40d9d751b55070beca29759d55374e5d7aae50 - languageName: node - linkType: hard - -"vuepress@npm:^1.2.0": - version: 1.8.2 - resolution: "vuepress@npm:1.8.2" - dependencies: - "@vuepress/core": 1.8.2 - "@vuepress/theme-default": 1.8.2 - cac: ^6.5.6 - envinfo: ^7.2.0 - opencollective-postinstall: ^2.0.2 - update-notifier: ^4.0.0 - bin: - vuepress: cli.js - checksum: ac61f14663e8a34c660ae0c610525b78ef6c19b465855e0218756f76256feb5f7f6e3f9a510bd6b89c503f084d141475ecc2e6d92b7cae510021d6574562a357 - languageName: node - linkType: hard - -"watchpack-chokidar2@npm:^2.0.1": - version: 2.0.1 - resolution: "watchpack-chokidar2@npm:2.0.1" - dependencies: - chokidar: ^2.1.8 - checksum: acf0f9ebca0c0b2fd1fe87ba557670477a6c0410bf1a653a726e68eb0620aa94fd9a43027a160a76bc793a21ea12e215e1e87dafe762682c13ef92ad4daf7b58 - languageName: node - linkType: hard - -"watchpack@npm:^1.7.4": - version: 1.7.5 - resolution: "watchpack@npm:1.7.5" - dependencies: - chokidar: ^3.4.1 - graceful-fs: ^4.1.2 - neo-async: ^2.5.0 - watchpack-chokidar2: ^2.0.1 - dependenciesMeta: - chokidar: - optional: true - watchpack-chokidar2: - optional: true - checksum: 8b7cb8c8df8f4dd0e8ac47693c0141c4f020a4b031411247d600eca31522fde6f1f9a3a6f6518b46e71f7971b0ed5734c08c60d7fdd2530e7262776286f69236 - languageName: node - linkType: hard - -"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": - version: 1.7.3 - resolution: "wbuf@npm:1.7.3" - dependencies: - minimalistic-assert: ^1.0.0 - checksum: 2abc306c96930b757972a1c4650eb6b25b5d99f24088714957f88629e137db569368c5de0e57986c89ea70db2f1df9bba11a87cb6d0c8694b6f53a0159fab3bf - languageName: node - linkType: hard - -"webpack-chain@npm:^4.9.0": - version: 4.12.1 - resolution: "webpack-chain@npm:4.12.1" - dependencies: - deepmerge: ^1.5.2 - javascript-stringify: ^1.6.0 - checksum: ec329d316dd944445f589ec93f97269870cba6fa6e5609d5d84680a4fabc172ef47c98ce0bea829c9eede0ceeb1be7f8c0f821aabda3d5bc502fc20979ea32ed - languageName: node - linkType: hard - -"webpack-chain@npm:^6.0.0": - version: 6.5.1 - resolution: "webpack-chain@npm:6.5.1" - dependencies: - deepmerge: ^1.5.2 - javascript-stringify: ^2.0.1 - checksum: 51ea287b13cd29fa61ef3942539e6f179a6e677b51bca42ecc9d5eba7ab318166fbb859be5701b0ac4e907d1db29a0b4d2b53b60eddac6f6c33783392c742e5f - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^3.7.2": - version: 3.7.3 - resolution: "webpack-dev-middleware@npm:3.7.3" - dependencies: - memory-fs: ^0.4.1 - mime: ^2.4.4 - mkdirp: ^0.5.1 - range-parser: ^1.2.1 - webpack-log: ^2.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: faa3cdd7b82d23c35b8f45903556eadd92b0795c76f3e08e234d53f7bab3de13331096a71968e7e9905770ae5de7a4f75ddf09f66d1e0bbabfecbb30db0f71e3 - languageName: node - linkType: hard - -"webpack-dev-server@npm:^3.5.1": - version: 3.11.2 - resolution: "webpack-dev-server@npm:3.11.2" - dependencies: - ansi-html: 0.0.7 - bonjour: ^3.5.0 - chokidar: ^2.1.8 - compression: ^1.7.4 - connect-history-api-fallback: ^1.6.0 - debug: ^4.1.1 - del: ^4.1.1 - express: ^4.17.1 - html-entities: ^1.3.1 - http-proxy-middleware: 0.19.1 - import-local: ^2.0.0 - internal-ip: ^4.3.0 - ip: ^1.1.5 - is-absolute-url: ^3.0.3 - killable: ^1.0.1 - loglevel: ^1.6.8 - opn: ^5.5.0 - p-retry: ^3.0.1 - portfinder: ^1.0.26 - schema-utils: ^1.0.0 - selfsigned: ^1.10.8 - semver: ^6.3.0 - serve-index: ^1.9.1 - sockjs: ^0.3.21 - sockjs-client: ^1.5.0 - spdy: ^4.0.2 - strip-ansi: ^3.0.1 - supports-color: ^6.1.0 - url: ^0.11.0 - webpack-dev-middleware: ^3.7.2 - webpack-log: ^2.0.0 - ws: ^6.2.1 - yargs: ^13.3.2 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: d2bfa2e9a33f96dc5af8f771e9978956e59c3efcad3deaca246ea7ff219c5587ebcf20ea0f0b6af251dec5e8111c0e473aa43a57bc9a88fb3ad8573f4a321805 - languageName: node - linkType: hard - -"webpack-log@npm:^2.0.0": - version: 2.0.0 - resolution: "webpack-log@npm:2.0.0" - dependencies: - ansi-colors: ^3.0.0 - uuid: ^3.3.2 - checksum: 4757179310995e20633ec2d77a8c1ac11e4135c84745f57148692f8195f1c0f8ec122c77d0dc16fc484b7d301df6674f36c9fc6b1ff06b5cf142abaaf5d24f4f - languageName: node - linkType: hard - -"webpack-merge@npm:^4.1.2": - version: 4.2.2 - resolution: "webpack-merge@npm:4.2.2" - dependencies: - lodash: ^4.17.15 - checksum: ce58bc8ab53a3dd5d9a0df65684571349eef53372bf8f224521072110485391335b26ab097c5f07829b88d0c146056944149566e5a953f05997b0fe2cbaf8dd6 - languageName: node - linkType: hard - -"webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1": - version: 1.4.3 - resolution: "webpack-sources@npm:1.4.3" - dependencies: - source-list-map: ^2.0.0 - source-map: ~0.6.1 - checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79 - languageName: node - linkType: hard - -"webpack@npm:^4.8.1": - version: 4.46.0 - resolution: "webpack@npm:4.46.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/wasm-edit": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - acorn: ^6.4.1 - ajv: ^6.10.2 - ajv-keywords: ^3.4.1 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^4.5.0 - eslint-scope: ^4.0.3 - json-parse-better-errors: ^1.0.2 - loader-runner: ^2.4.0 - loader-utils: ^1.2.3 - memory-fs: ^0.4.1 - micromatch: ^3.1.10 - mkdirp: ^0.5.3 - neo-async: ^2.6.1 - node-libs-browser: ^2.2.1 - schema-utils: ^1.0.0 - tapable: ^1.1.3 - terser-webpack-plugin: ^1.4.3 - watchpack: ^1.7.4 - webpack-sources: ^1.4.1 - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true - bin: - webpack: bin/webpack.js - checksum: 013fa24c00d4261e16ebca60353fa6f848e417b5a44bdf28c16ebebd67fa61e960420bb314c8df05cfe2dad9b90efabcf38fd6875f2361922769a0384085ef1e - languageName: node - linkType: hard - -"webpackbar@npm:3.2.0": - version: 3.2.0 - resolution: "webpackbar@npm:3.2.0" - dependencies: - ansi-escapes: ^4.1.0 - chalk: ^2.4.1 - consola: ^2.6.0 - figures: ^3.0.0 - pretty-time: ^1.1.0 - std-env: ^2.2.1 - text-table: ^0.2.0 - wrap-ansi: ^5.1.0 - peerDependencies: - webpack: ^3.0.0 || ^4.0.0 - checksum: b3ed95b81c206744a6c24ddc0109b19da1d832a3e0e612060f21854a8038133f42a6314c1ea17a51fdf2d51aaad7f388fc06fbc9a38f10eff297fd1a69a0a2fc - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: ">=0.5.1" - safe-buffer: ">=5.1.0" - websocket-extensions: ">=0.1.1" - checksum: fffe5a33fe8eceafd21d2a065661d09e38b93877eae1de6ab5d7d2734c6ed243973beae10ae48c6613cfd675f200e5a058d1e3531bc9e6c5d4f1396ff1f0bfb9 - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 5976835e68a86afcd64c7a9762ed85f2f27d48c488c707e67ba85e717b90fa066b98ab33c744d64255c9622d349eedecf728e65a5f921da71b58d0e9591b9038 - languageName: node - linkType: hard - -"whatwg-fetch@npm:>=0.10.0": - version: 3.6.2 - resolution: "whatwg-fetch@npm:3.6.2" - checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed - languageName: node - linkType: hard - -"when@npm:~3.6.x": - version: 3.6.4 - resolution: "when@npm:3.6.4" - checksum: fc36ebd79d6f50d55763e5f9aedab2535ff0bb2fc95d9efd72691a819f8da1376ea00716bd70ae02d05591bf1a19784342ce47d5d49afa34a1a7accb8bafaf87 - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - 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 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c - languageName: node - linkType: hard - -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: ^4.0.0 - checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 - languageName: node - linkType: hard - -"worker-farm@npm:^1.7.0": - version: 1.7.0 - resolution: "worker-farm@npm:1.7.0" - dependencies: - errno: ~0.1.7 - checksum: eab917530e1feddf157ec749e9c91b73a886142daa7fdf3490bccbf7b548b2576c43ab8d0a98e72ac755cbc101ca8647a7b1ff2485fddb9e8f53c40c77f5a719 - languageName: node - linkType: hard - -"wrap-ansi@npm:^5.1.0": - version: 5.1.0 - resolution: "wrap-ansi@npm:5.1.0" - dependencies: - ansi-styles: ^3.2.0 - string-width: ^3.0.0 - strip-ansi: ^5.0.0 - checksum: 9b48c862220e541eb0daa22661b38b947973fc57054e91be5b0f2dcc77741a6875ccab4ebe970a394b4682c8dfc17e888266a105fb8b0a9b23c19245e781ceae - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^6.2.1": - version: 6.2.1 - resolution: "ws@npm:6.2.1" - dependencies: - async-limiter: ~1.0.0 - checksum: 82f7512bb74ad6e94002b5016944aee2aeefd1c480477b5f55a03ee010d4a1bd5bb4a688e07695f0a727227a0591a1a7c70e31f97baad826e3c48f85be4db6a9 - languageName: node - linkType: hard - -"xdg-basedir@npm:^4.0.0": - version: 4.0.0 - resolution: "xdg-basedir@npm:4.0.0" - checksum: 0073d5b59a37224ed3a5ac0dd2ec1d36f09c49f0afd769008a6e9cd3cd666bd6317bd1c7ce2eab47e1de285a286bad11a9b038196413cd753b79770361855f3c - languageName: node - linkType: hard - -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a - languageName: node - linkType: hard - -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - -"yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yargs-parser@npm:^13.1.2": - version: 13.1.2 - resolution: "yargs-parser@npm:13.1.2" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: c8bb6f44d39a4acd94462e96d4e85469df865de6f4326e0ab1ac23ae4a835e5dd2ddfe588317ebf80c3a7e37e741bd5cb0dc8d92bcc5812baefb7df7c885e86b - languageName: node - linkType: hard - -"yargs@npm:^13.3.2": - version: 13.3.2 - resolution: "yargs@npm:13.3.2" - dependencies: - cliui: ^5.0.0 - find-up: ^3.0.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^3.0.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^13.1.2 - checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 - languageName: node - linkType: hard - -"z-schema@npm:~3.18.3": - version: 3.18.4 - resolution: "z-schema@npm:3.18.4" - dependencies: - commander: ^2.7.1 - lodash.get: ^4.0.0 - lodash.isequal: ^4.0.0 - validator: ^8.0.0 - dependenciesMeta: - commander: - optional: true - bin: - z-schema: ./bin/z-schema - checksum: 837f0a4794eacd589c0aca313f19caf8bed075ad77cd2af29e051d08e71131b375af5ff8d7f1c2cc3a7a916c4e4cc8ab6c30bf5c9882b9f7728515b2d2542c23 - languageName: node - linkType: hard - -"zen-observable-ts@npm:^0.8.21": - version: 0.8.21 - resolution: "zen-observable-ts@npm:0.8.21" - dependencies: - tslib: ^1.9.3 - zen-observable: ^0.8.0 - checksum: 2931628598937effcc77acf88ac8d3468c0584bbc4488726ae2c94f6a02615ff80e9d6dc0943b71bc874466ab371837737ce8245eed3bfea38daa466a2fdc6ce - languageName: node - linkType: hard - -"zen-observable-ts@npm:~1.1.0": - version: 1.1.0 - resolution: "zen-observable-ts@npm:1.1.0" - dependencies: - "@types/zen-observable": 0.8.3 - zen-observable: 0.8.15 - checksum: 1772727f2c96af228c52b008260e1e4ae512782abc9d4f4a78d1a61913aa3b55ae672ad343ecf6895d9b968b5e3f4a41b5a317702cdc6cd5f6f93bc0dacf8103 - languageName: node - linkType: hard - -"zen-observable@npm:0.8.15, zen-observable@npm:^0.8.0": - version: 0.8.15 - resolution: "zen-observable@npm:0.8.15" - checksum: b7289084bc1fc74a559b7259faa23d3214b14b538a8843d2b001a35e27147833f4107590b1b44bf5bc7f6dfe6f488660d3a3725f268e09b3925b3476153b7821 - languageName: node - linkType: hard - -"zepto@npm:^1.2.0": - version: 1.2.0 - resolution: "zepto@npm:1.2.0" - checksum: e24c8c4d1a2ac30f7e84b6cbcc3fa2b35da9db9105a94f513a128f80cd99435270f5657d9db800f188cb50837a0e8965004a6cadcd5bc41df09f541f9e12a283 - languageName: node - linkType: hard +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@apollo/client@^3.2.9": + version "3.5.7" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.7.tgz#38051c0a414ebf784319fa5131faa19df24fa9ec" + integrity sha512-HSLqTGp3sp/PVIWYLLr5v3fjQSr6Fxg6Z5RQj5Q9ALyseIVudD8GZk1jHplaUblTFMBueXGw3Z6DXObuVAr3tw== + dependencies: + "@graphql-typed-document-node/core" "^3.0.0" + "@wry/context" "^0.6.0" + "@wry/equality" "^0.5.0" + "@wry/trie" "^0.3.0" + graphql-tag "^2.12.3" + hoist-non-react-statics "^3.3.2" + optimism "^0.16.1" + prop-types "^15.7.2" + symbol-observable "^4.0.0" + ts-invariant "^0.9.4" + tslib "^2.3.0" + zen-observable-ts "^1.2.0" + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" + integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== + +"@babel/core@^7.11.0", "@babel/core@^7.8.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" + integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.7" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.16.7", "@babel/generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" + integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== + dependencies: + "@babel/types" "^7.16.8" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.9.6": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" + integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/highlight@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" + integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17" + integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz#922907d2e3e327f5b07d2246bcfc0bd438f360d2" + integrity sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.16.7" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" + integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3" + integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-runtime@^7.11.0": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz#3339368701103edae708f0fba9e4bfb70a3e5872" + integrity sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.11.0": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.8.tgz#e682fa0bcd1cf49621d64a8956318ddfb9a05af9" + integrity sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c" + integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.8" + "@babel/types" "^7.16.8" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.4.4": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" + integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@commercetools/sdk-auth@^3.0.1": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-auth/-/sdk-auth-3.0.12.tgz#6b6930f697f2311beeb909677df08bd5c7f523b8" + integrity sha512-t7F71oNK+A23hLGzlEYnjTtqhxDUFST8f4l9YAf7mmVCA9Qeu668pDvJ/kf5gVLMQVazEQM8Vjy4JyyeQctEkQ== + dependencies: + "@commercetools/sdk-middleware-http" "^6.0.11" + lodash.defaultsdeep "^4.6.0" + qss "2.0.3" + +"@commercetools/sdk-middleware-http@^6.0.11": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-http/-/sdk-middleware-http-6.1.0.tgz#e4aebc0a4865dab00cd986449d7b395dc86fe124" + integrity sha512-j/k66riaQv50Y3iK0CLJglHh56id7PfxGIDyL0PjlLSkQe2TPVGFnM//CZAQ8a6fHT9adQYLxDMYqlb1nWEDZw== + +"@graphql-typed-document-node/core@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" + integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + +"@microsoft/api-documenter@^7.13.7": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.14.1.tgz#e3b008c51fef4f31b9e53e3c4c8c81b87d89b9b4" + integrity sha512-IFwS3TzVxFh9LSGJuYOWiZ5V+AdYfnLE+WC/VKpeHnSsiW1goLEO+qkoqonvirJr/jQTNuC7NScIjXS2pXODMQ== + dependencies: + "@microsoft/api-extractor-model" "7.15.3" + "@microsoft/tsdoc" "0.13.2" + "@rushstack/node-core-library" "3.45.0" + "@rushstack/ts-command-line" "4.10.6" + colors "~1.2.1" + js-yaml "~3.13.1" + resolve "~1.17.0" + +"@microsoft/api-extractor-model@7.15.3": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.15.3.tgz#cf76deeeb2733d974da678f530c2dbaceb18a065" + integrity sha512-NkSjolmSI7NGvbdz0Y7kjQfdpD+j9E5CwXTxEyjDqxd10MI7GXV8DnAsQ57GFJcgHKgTjf2aUnYfMJ9w3aMicw== + dependencies: + "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc-config" "~0.15.2" + "@rushstack/node-core-library" "3.45.0" + +"@microsoft/api-extractor@^7.18.3": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.19.4.tgz#95d43d410a1dfb28a02062c4693bcb9c52afe9eb" + integrity sha512-iehC6YA3DGJvxTUaK7HUtQmP6hAQU07+Q/OR8TG4dVR6KpqCi9UPEVk8AgCvQkiK+6FbVEFQTx0qLuYk4EeuHg== + dependencies: + "@microsoft/api-extractor-model" "7.15.3" + "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc-config" "~0.15.2" + "@rushstack/node-core-library" "3.45.0" + "@rushstack/rig-package" "0.3.7" + "@rushstack/ts-command-line" "4.10.6" + colors "~1.2.1" + lodash "~4.17.15" + resolve "~1.17.0" + semver "~7.3.0" + source-map "~0.6.1" + typescript "~4.5.2" + +"@microsoft/tsdoc-config@~0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz#eb353c93f3b62ab74bdc9ab6f4a82bcf80140f14" + integrity sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA== + dependencies: + "@microsoft/tsdoc" "0.13.2" + ajv "~6.12.6" + jju "~1.4.0" + resolve "~1.19.0" + +"@microsoft/tsdoc@0.13.2": + version "0.13.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" + integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@rushstack/node-core-library@3.45.0": + version "3.45.0" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.0.tgz#8c86b39271b6d84260b1e70db87e1e265b54f620" + integrity sha512-YMuIJl19vQT1+g/OU9mLY6T5ZBT9uDlmeXExDQACpGuxTJW+LHNbk/lRX+eCApQI2eLBlaL4U68r3kZlqwbdmw== + dependencies: + "@types/node" "12.20.24" + colors "~1.2.1" + fs-extra "~7.0.1" + import-lazy "~4.0.0" + jju "~1.4.0" + resolve "~1.17.0" + semver "~7.3.0" + timsort "~0.3.0" + z-schema "~5.0.2" + +"@rushstack/rig-package@0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.7.tgz#3fa564b1d129d28689dd4309502792b15e84bf81" + integrity sha512-pzMsTSeTC8IiZ6EJLr53gGMvhT4oLWH+hxD7907cHyWuIUlEXFtu/2pK25vUQT13nKp5DJCWxXyYoGRk/h6rtA== + dependencies: + resolve "~1.17.0" + strip-json-comments "~3.1.1" + +"@rushstack/ts-command-line@4.10.6": + version "4.10.6" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.6.tgz#5669e481e4339ceb4e1428183eb0937d3bc3841b" + integrity sha512-Y3GkUag39sTIlukDg9mUp8MCHrrlJ27POrBNRQGc/uF+VVgX8M7zMzHch5zP6O1QVquWgD7Engdpn2piPYaS/g== + dependencies: + "@types/argparse" "1.0.38" + argparse "~1.0.9" + colors "~1.2.1" + string-argv "~0.3.1" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect-history-api-fallback@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/highlight.js@^9.7.0": + version "9.12.4" + resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.4.tgz#8c3496bd1b50cc04aeefd691140aa571d4dbfa34" + integrity sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww== + +"@types/http-proxy@^1.17.5": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/json-schema@^7.0.5": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + +"@types/markdown-it@^10.0.0": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-10.0.3.tgz#a9800d14b112c17f1de76ec33eff864a4815eec7" + integrity sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw== + dependencies: + "@types/highlight.js" "^9.7.0" + "@types/linkify-it" "*" + "@types/mdurl" "*" + highlight.js "^9.7.0" + +"@types/mdurl@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*", "@types/node@>=6": + version "17.0.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.9.tgz#0b7f161afb5b1cc12518d29b2cdc7175d5490628" + integrity sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ== + +"@types/node@12.20.24": + version "12.20.24" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" + integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/tapable@^1": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + +"@types/uglify-js@*": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" + integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== + dependencies: + source-map "^0.6.1" + +"@types/webpack-dev-server@^3": + version "3.11.6" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz#d8888cfd2f0630203e13d3ed7833a4d11b8a34dc" + integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ== + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/serve-static" "*" + "@types/webpack" "^4" + http-proxy-middleware "^1.0.0" + +"@types/webpack-sources@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4": + version "4.41.32" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" + integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + +"@types/zen-observable@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" + integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== + +"@types/zen-observable@^0.8.0": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" + integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== + +"@vue-storefront/commercetools-api@~1.2.0": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@vue-storefront/commercetools-api/-/commercetools-api-1.2.4.tgz#c85fb21dfc931143f1516f64aeac003a7de38a47" + integrity sha512-rHV3wXfIT85Si5po+hwrnUnP5KWtw7SbNt7akxMDWOSbkg3z+tMAhDDU9lwVOFIvsCiOdBmxty/gQFPbdFrcXw== + dependencies: + "@apollo/client" "^3.2.9" + "@commercetools/sdk-auth" "^3.0.1" + "@vue-storefront/core" "^2.3.4" + apollo-cache-inmemory "^1.6.6" + apollo-client "^2.6.10" + apollo-link "^1.2.14" + apollo-link-context "^1.0.20" + apollo-link-error "^1.1.13" + apollo-link-http "^1.5.17" + apollo-link-retry "^2.2.16" + graphql "^14.5.8" + graphql-tag "^2.10.1" + isomorphic-fetch "^2.2.1" + +"@vue-storefront/core@^2.3.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@vue-storefront/core/-/core-2.5.4.tgz#214ec0d2bdc3d2f18abdc45991ac7389aa9e1044" + integrity sha512-J/zzReZ5D1pwKibFyLbcm1355L8+DKYgBms32QZ79AmscoFeRRRhnBFQHQ+DoygtxU2cKNzyMddTIocYdtEBeQ== + dependencies: + axios "0.21.1" + express "^4.17.1" + is-https "^3.0.2" + lodash-es "^4.17.15" + vue "^2.6.11" + +"@vue/babel-helper-vue-jsx-merge-props@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" + integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== + +"@vue/babel-helper-vue-transform-on@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" + integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== + +"@vue/babel-plugin-jsx@^1.0.3": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" + integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + "@vue/babel-helper-vue-transform-on" "^1.0.2" + camelcase "^6.0.0" + html-tags "^3.1.0" + svg-tags "^1.0.0" + +"@vue/babel-plugin-transform-vue-jsx@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7" + integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^4.1.2": + version "4.5.15" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.15.tgz#f6bc08f8f674e98a260004234cde18b966d72eb0" + integrity sha512-J+YttzvwRfV1BPczf8r3qCevznYk+jh531agVF+5EYlHF4Sgh/cGXTz9qkkiux3LQgvhEGXgmCteg1n38WuuKg== + dependencies: + "@babel/core" "^7.11.0" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-decorators" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.11.0" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.0" + "@vue/babel-plugin-jsx" "^1.0.3" + "@vue/babel-preset-jsx" "^1.2.4" + babel-plugin-dynamic-import-node "^2.3.3" + core-js "^3.6.5" + core-js-compat "^3.6.5" + semver "^6.1.0" + +"@vue/babel-preset-jsx@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" + integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + "@vue/babel-sugar-composition-api-inject-h" "^1.2.1" + "@vue/babel-sugar-composition-api-render-instance" "^1.2.4" + "@vue/babel-sugar-functional-vue" "^1.2.2" + "@vue/babel-sugar-inject-h" "^1.2.2" + "@vue/babel-sugar-v-model" "^1.2.3" + "@vue/babel-sugar-v-on" "^1.2.3" + +"@vue/babel-sugar-composition-api-inject-h@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz#05d6e0c432710e37582b2be9a6049b689b6f03eb" + integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-composition-api-render-instance@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz#e4cbc6997c344fac271785ad7a29325c51d68d19" + integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-functional-vue@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658" + integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa" + integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz#fa1f29ba51ebf0aa1a6c35fa66d539bc459a18f2" + integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz#342367178586a69f392f04bfba32021d02913ada" + integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" + camelcase "^5.0.0" + +"@vue/component-compiler-utils@^3.1.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" + integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.36" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + +"@vuepress/core@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.9.6.tgz#9f76d82414155e75fce41176ae9fd7fd085c35e4" + integrity sha512-wZF6Ufz9MubmLgik0uYuNj97xIZ4PMp1DCJMMf2BNwH974CCsKiRmKODoYVEc260FOdnFUINEeqaPL/HscAaPA== + dependencies: + "@babel/core" "^7.8.4" + "@vue/babel-preset-app" "^4.1.2" + "@vuepress/markdown" "1.9.6" + "@vuepress/markdown-loader" "1.9.6" + "@vuepress/plugin-last-updated" "1.9.6" + "@vuepress/plugin-register-components" "1.9.6" + "@vuepress/shared-utils" "1.9.6" + "@vuepress/types" "1.9.6" + autoprefixer "^9.5.1" + babel-loader "^8.0.4" + bundle-require "2.1.8" + cache-loader "^3.0.0" + chokidar "^2.0.3" + connect-history-api-fallback "^1.5.0" + copy-webpack-plugin "^5.0.2" + core-js "^3.6.4" + cross-spawn "^6.0.5" + css-loader "^2.1.1" + esbuild "0.14.7" + file-loader "^3.0.1" + js-yaml "^3.13.1" + lru-cache "^5.1.1" + mini-css-extract-plugin "0.6.0" + optimize-css-assets-webpack-plugin "^5.0.1" + portfinder "^1.0.13" + postcss-loader "^3.0.0" + postcss-safe-parser "^4.0.1" + toml "^3.0.0" + url-loader "^1.0.1" + vue "^2.6.10" + vue-loader "^15.7.1" + vue-router "^3.4.5" + vue-server-renderer "^2.6.10" + vue-template-compiler "^2.6.10" + vuepress-html-webpack-plugin "^3.2.0" + vuepress-plugin-container "^2.0.2" + webpack "^4.8.1" + webpack-chain "^6.0.0" + webpack-dev-server "^3.5.1" + webpack-merge "^4.1.2" + webpackbar "3.2.0" + +"@vuepress/markdown-loader@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.9.6.tgz#dd39e4a70f5e8be94e4051b883b606d95de749c0" + integrity sha512-uPyVzYygBaCsmKPfke+u/c8a855GLJ3iykCkcuAQ5v7NAY9PNtCkND3V5PhmRUGqaN5tHNXJoF74aD0mN1FXOw== + dependencies: + "@vuepress/markdown" "1.9.6" + loader-utils "^1.1.0" + lru-cache "^5.1.1" + +"@vuepress/markdown@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.9.6.tgz#b987288030506969aa13e84dc81382ce539dd583" + integrity sha512-UOq/Wtr5BI5h0O2Iy25O7Xe9RNE1HiBXREOKdjnCDg4lsyenzev5UOVpGCPnbynUb2/kpE8KujEKCgy4a1dWNg== + dependencies: + "@vuepress/shared-utils" "1.9.6" + markdown-it "^8.4.1" + markdown-it-anchor "^5.0.2" + markdown-it-chain "^1.3.0" + markdown-it-emoji "^1.4.0" + markdown-it-table-of-contents "^0.4.0" + prismjs "^1.13.0" + +"@vuepress/plugin-active-header-links@1.9.6", "@vuepress/plugin-active-header-links@^1.8.2": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.6.tgz#4204f7d7d660031c7759a01892ff2a18e75a06e9" + integrity sha512-YETxkgEabpUYB56wy0K26tAsta0+MbP0uieTdykm3HpRzwx2pceJkDPV7axLAPHfvHj9MQ6n67Hv+vR+z36krw== + dependencies: + "@vuepress/types" "1.9.6" + lodash.debounce "^4.0.8" + +"@vuepress/plugin-back-to-top@^1.8.2": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.9.6.tgz#ab724adb646de6f0fc9e61c0c25944414b8601a3" + integrity sha512-GvLyXE8aDOzttwpr9t6EOOP/hEF5Yfr858K4ksRfY9AnGGfGXnNhFgK3uCRweeWQkUKlOAFSdzrmoAHX33DP9w== + dependencies: + "@vuepress/types" "1.9.6" + lodash.debounce "^4.0.8" + +"@vuepress/plugin-last-updated@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.6.tgz#b5b1db9474169e25a1844192bd36b37e6d4c7031" + integrity sha512-tKP90ujnnrIMa/qb6ErjVfhil7nf7uWIV/T5UZzMvZNBwx25lpdXLPcBtfnCBA1rmxe7PSexCK9wQfrgP6R0VQ== + dependencies: + "@vuepress/types" "1.9.6" + cross-spawn "^6.0.5" + +"@vuepress/plugin-medium-zoom@^1.8.2": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-1.9.6.tgz#1e9165f2a9dcd194b12ef447f95416967b44b6a2" + integrity sha512-jAJg/iO9rttr5OyTgbiH8zjhC5CXqoTgrusK1aEP1gX7TLlXfNPuNzYvfgDQScgJye0L1qG7NyKk4nrGdChD3A== + dependencies: + "@vuepress/types" "1.9.6" + medium-zoom "^1.0.4" + +"@vuepress/plugin-nprogress@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.6.tgz#413c069768b7295ba64f2b59e316fd9bd6298e2c" + integrity sha512-tNBwsR5H5kTQfTM6fE/UOUxC7J2xOmed6LGVF5ZcsjfnjiLcKHqOn0EPkaLVqgVMGWkV8ZqGS9sQWAEncYDa+Q== + dependencies: + "@vuepress/types" "1.9.6" + nprogress "^0.2.0" + +"@vuepress/plugin-register-components@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.9.6.tgz#033012d54bcdc66812e3ba4dd67a3f0af49a87b8" + integrity sha512-Efxb8xqinFathB5ZUMVjolY3uYXqM3lL4vNbZjwJVcDgtz13Vc9ZpHcqdEUfsYGtiwiMrwp796oTKw45RdPJMw== + dependencies: + "@vuepress/shared-utils" "1.9.6" + "@vuepress/types" "1.9.6" + +"@vuepress/plugin-search@1.9.6", "@vuepress/plugin-search@^1.8.2": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.9.6.tgz#580d8988c619ed05a929f6bf157745867757e56f" + integrity sha512-zDhSUZAhelJEIV7DwpSbmGI0jz+zzNQdWVfGdE0xj7Ca6SMPq9ay9imZYjNBEVG9MYu0McubsvB1gpaBpc1Umg== + dependencies: + "@vuepress/types" "1.9.6" + +"@vuepress/shared-utils@1.9.6", "@vuepress/shared-utils@^1.2.0": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.9.6.tgz#2c9add7d03535205b77ad6be49b911e40de44592" + integrity sha512-Bzn5q2Yjpji4ZF8zD9p1brTQFOTqNRCSOkoMDqR+oNt4L1SbreT08gi7BNjaeJTbNsr/S+SNSIcQHHgGO+5GOg== + dependencies: + chalk "^2.3.2" + escape-html "^1.0.3" + fs-extra "^7.0.1" + globby "^9.2.0" + gray-matter "^4.0.1" + hash-sum "^1.0.2" + semver "^6.0.0" + toml "^3.0.0" + upath "^1.1.0" + +"@vuepress/theme-default@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.9.6.tgz#11da7d1d0ba28660f77198992d51660992dcf213" + integrity sha512-bw4L2h5yZReQM5qbz8dqF8+VlohtEH/PS7OCBU0x4HEiCo3cr0KpWP+unfxEY+CWqHeFljywCwwQQH2ikp6luQ== + dependencies: + "@vuepress/plugin-active-header-links" "1.9.6" + "@vuepress/plugin-nprogress" "1.9.6" + "@vuepress/plugin-search" "1.9.6" + "@vuepress/types" "1.9.6" + docsearch.js "^2.5.2" + lodash "^4.17.15" + stylus "^0.54.8" + stylus-loader "^3.0.2" + vuepress-plugin-container "^2.0.2" + vuepress-plugin-smooth-scroll "^0.0.3" + +"@vuepress/types@1.9.6": + version "1.9.6" + resolved "https://registry.yarnpkg.com/@vuepress/types/-/types-1.9.6.tgz#72f27ade625a6504fa9fb14c90fe59231e89ad5f" + integrity sha512-xNhgCeH2/cCACeZyAXhZ2yTJcC1OsE8aBP6vIHme+69ZcpAs4ZkvAHADCrouqSzgz73IOhN1ZPV8jkMvTtyoNg== + dependencies: + "@types/markdown-it" "^10.0.0" + "@types/webpack-dev-server" "^3" + webpack-chain "^6.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@wry/context@^0.4.0": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" + integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag== + dependencies: + "@types/node" ">=6" + tslib "^1.9.3" + +"@wry/context@^0.6.0": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" + integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.1.2": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" + integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== + dependencies: + tslib "^1.9.3" + +"@wry/equality@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.2.tgz#72c8a7a7d884dff30b612f4f8464eba26c080e73" + integrity sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.1.tgz#2279b790f15032f8bcea7fc944d27988e5b3b139" + integrity sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw== + dependencies: + tslib "^2.3.0" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +agentkeepalive@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef" + integrity sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8= + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@~6.12.6: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +algoliasearch@^3.24.5: + version "3.35.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-3.35.1.tgz#297d15f534a3507cab2f5dfb996019cac7568f0c" + integrity sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ== + dependencies: + agentkeepalive "^2.2.0" + debug "^2.6.9" + envify "^4.0.0" + es6-promise "^4.1.0" + events "^1.1.0" + foreach "^2.0.5" + global "^4.3.2" + inherits "^2.0.1" + isarray "^2.0.1" + load-script "^1.0.0" + object-keys "^1.0.11" + querystring-es3 "^0.2.1" + reduce "^1.0.1" + semver "^5.1.0" + tunnel-agent "^0.6.0" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.1.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.0, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apollo-cache-inmemory@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz#56d1f2a463a6b9db32e9fa990af16d2a008206fd" + integrity sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A== + dependencies: + apollo-cache "^1.3.5" + apollo-utilities "^1.3.4" + optimism "^0.10.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +apollo-cache@1.3.5, apollo-cache@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.5.tgz#9dbebfc8dbe8fe7f97ba568a224bca2c5d81f461" + integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== + dependencies: + apollo-utilities "^1.3.4" + tslib "^1.10.0" + +apollo-client@^2.6.10: + version "2.6.10" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.10.tgz#86637047b51d940c8eaa771a4ce1b02df16bea6a" + integrity sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA== + dependencies: + "@types/zen-observable" "^0.8.0" + apollo-cache "1.3.5" + apollo-link "^1.0.0" + apollo-utilities "1.3.4" + symbol-observable "^1.0.2" + ts-invariant "^0.4.0" + tslib "^1.10.0" + zen-observable "^0.8.0" + +apollo-link-context@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.20.tgz#1939ac5dc65d6dff0c855ee53521150053c24676" + integrity sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA== + dependencies: + apollo-link "^1.2.14" + tslib "^1.9.3" + +apollo-link-error@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.13.tgz#c1a1bb876ffe380802c8df0506a32c33aad284cd" + integrity sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg== + dependencies: + apollo-link "^1.2.14" + apollo-link-http-common "^0.2.16" + tslib "^1.9.3" + +apollo-link-http-common@^0.2.16: + version "0.2.16" + resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" + integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== + dependencies: + apollo-link "^1.2.14" + ts-invariant "^0.4.0" + tslib "^1.9.3" + +apollo-link-http@^1.5.17: + version "1.5.17" + resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" + integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== + dependencies: + apollo-link "^1.2.14" + apollo-link-http-common "^0.2.16" + tslib "^1.9.3" + +apollo-link-retry@^2.2.16: + version "2.2.16" + resolved "https://registry.yarnpkg.com/apollo-link-retry/-/apollo-link-retry-2.2.16.tgz#745ff51e60a7a68b34c8d382832856c43a9c306c" + integrity sha512-7F9+meFAz4dw5gtgtLsRFqJW6QzNOhTzt5R5Hsy+yFhkTW9LddgYO7gxN9n7RN/7Ouosh3TcpUkdHs2laC+0sA== + dependencies: + "@types/zen-observable" "0.8.0" + apollo-link "^1.2.14" + tslib "^1.9.3" + +apollo-link@^1.0.0, apollo-link@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" + integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.21" + +apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" + integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7, argparse@~1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autocomplete.js@0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/autocomplete.js/-/autocomplete.js-0.36.0.tgz#94fe775fe64b6cd42e622d076dc7fd26bedd837b" + integrity sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q== + dependencies: + immediate "^3.2.3" + +autoprefixer@^9.5.1: + version "9.8.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axios@0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +babel-loader@^8.0.4: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" + integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.20.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.1.1, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.17.5, browserslist@^4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-json@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" + integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bundle-require@2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-2.1.8.tgz#28f6de9d4468a6b7b76fb5c9bf52e70f5091245d" + integrity sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +cac@^6.5.6: + version "6.7.12" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.12.tgz#6fb5ea2ff50bd01490dbda497f4ae75a99415193" + integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== + +cacache@^12.0.2, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-loader@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-3.0.1.tgz#cee6cf4b3cdc7c610905b26bad6c2fc439c821af" + integrity sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw== + dependencies: + buffer-json "^2.0.0" + find-cache-dir "^2.1.0" + loader-utils "^1.2.3" + mkdirp "^0.5.1" + neo-async "^2.6.1" + schema-utils "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286: + version "1.0.30001300" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz#11ab6c57d3eb6f964cba950401fd00a146786468" + integrity sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^2.0.3, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.1.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colors@~1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.20.0, commander@^2.7.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +consola@^2.6.0: + version "2.15.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@^5.0.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" + integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== + dependencies: + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" + globby "^7.1.1" + is-glob "^4.0.1" + loader-utils "^1.2.3" + minimatch "^3.0.4" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + webpack-log "^2.0.0" + +core-js-compat@^3.20.0, core-js-compat@^3.20.2, core-js-compat@^3.6.5: + version "3.20.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" + integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js@^3.6.4, core-js@^3.6.5: + version "3.20.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" + integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" + integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== + dependencies: + camelcase "^5.2.0" + icss-utils "^4.1.0" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.14" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^2.0.6" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^2.0.0" + postcss-value-parser "^3.3.0" + schema-utils "^1.0.0" + +css-parse@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" + integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + dependencies: + css "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0, dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +docsearch.js@^2.5.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/docsearch.js/-/docsearch.js-2.6.3.tgz#57cb4600d3b6553c677e7cbbe6a734593e38625d" + integrity sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A== + dependencies: + algoliasearch "^3.24.5" + autocomplete.js "0.36.0" + hogan.js "^3.0.2" + request "^2.87.0" + stack-utils "^1.0.1" + to-factory "^1.0.0" + zepto "^1.2.0" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.4.17: + version "1.4.47" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz#5d5535cdbca2b9264abee4d6ea121995e9554bbe" + integrity sha512-ZHc8i3/cgeCRK/vC7W2htAG6JqUmOUgDNn/f9yY9J8UjfLjwzwOVEt4MWmgJAdvmxyrsR5KIFA/6+kUHGY0eUA== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +envify@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/envify/-/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e" + integrity sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw== + dependencies: + esprima "^4.0.0" + through "~2.3.4" + +envinfo@^7.2.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.2, es-abstract@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" + integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.1" + is-string "^1.0.7" + is-weakref "^1.0.1" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.1.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +esbuild-android-arm64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.7.tgz#8c78cbb617f9f216abfb5a84cca453b51421a1b6" + integrity sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w== + +esbuild-darwin-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.7.tgz#7424bdb64c104556d36b7429af79ab51415ab8f4" + integrity sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ== + +esbuild-darwin-arm64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.7.tgz#6a243dc0132aeb11c1991f968a6a9e393f43c6bc" + integrity sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw== + +esbuild-freebsd-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.7.tgz#e7281e50522e724c4da502504dcd75be0db46c94" + integrity sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ== + +esbuild-freebsd-arm64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.7.tgz#31e513098efd181d76a3ba3ea285836d37f018a3" + integrity sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ== + +esbuild-linux-32@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.7.tgz#82cf96accbf55d3007c3338dc3b3144efa9ae108" + integrity sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A== + +esbuild-linux-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.7.tgz#67bdfe23a6ca918a0bb8e9558a3ee0fdf98c0bc0" + integrity sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg== + +esbuild-linux-arm64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.7.tgz#f79c69ff0c176559c418de8e59aa3cf388fff992" + integrity sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg== + +esbuild-linux-arm@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.7.tgz#3d665b35e1c27dbe1c9deb8bf956d7d1f191a21b" + integrity sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ== + +esbuild-linux-mips64le@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.7.tgz#226114a0cc6649ba0ffd3428118a8f622872f16d" + integrity sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA== + +esbuild-linux-ppc64le@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.7.tgz#5c67ae56517f2644d567b2ca5ecb97f9520cfc49" + integrity sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA== + +esbuild-netbsd-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.7.tgz#69dc0469ea089013956d8c6aa71c9e7fc25fc567" + integrity sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw== + +esbuild-openbsd-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.7.tgz#3a9d04ecf820708e2e5b7d26fa7332e3f19f6b6c" + integrity sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw== + +esbuild-sunos-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.7.tgz#7c33a682f0fd9565cae7df165d0e8736b7b62623" + integrity sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg== + +esbuild-windows-32@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.7.tgz#24ec706a5f25b4499048f56146bcff0ed3839dce" + integrity sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A== + +esbuild-windows-64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.7.tgz#dd6d5b5bace93cd7a9174d31fbd727ba21885abf" + integrity sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ== + +esbuild-windows-arm64@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.7.tgz#ecfd9ac289606f26760c4f737caaeeadfff3cfe3" + integrity sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw== + +esbuild@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.7.tgz#e85cead55b0e1001abf1b2ce4a11c1d4d709d13c" + integrity sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw== + optionalDependencies: + esbuild-android-arm64 "0.14.7" + esbuild-darwin-64 "0.14.7" + esbuild-darwin-arm64 "0.14.7" + esbuild-freebsd-64 "0.14.7" + esbuild-freebsd-arm64 "0.14.7" + esbuild-linux-32 "0.14.7" + esbuild-linux-64 "0.14.7" + esbuild-linux-arm "0.14.7" + esbuild-linux-arm64 "0.14.7" + esbuild-linux-mips64le "0.14.7" + esbuild-linux-ppc64le "0.14.7" + esbuild-netbsd-64 "0.14.7" + esbuild-openbsd-64 "0.14.7" + esbuild-sunos-64 "0.14.7" + esbuild-windows-32 "0.14.7" + esbuild-windows-64 "0.14.7" + esbuild-windows-arm64 "0.14.7" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.14.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" + integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.1, fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== + dependencies: + ini "1.3.7" + +global@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +graphql-tag@^2.10.1, graphql-tag@^2.12.3: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^14.5.8: + version "14.7.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" + integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== + dependencies: + iterall "^1.2.2" + +gray-matter@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight.js@^9.7.0: + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hogan.js@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/hogan.js/-/hogan.js-3.0.2.tgz#4cd9e1abd4294146e7679e41d7898732b02c7bfd" + integrity sha1-TNnhq9QpQUbnZ55B14mHMrAse/0= + dependencies: + mkdirp "0.3.0" + nopt "1.0.10" + +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy-middleware@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== + dependencies: + "@types/http-proxy" "^1.17.5" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.17.0, http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-lazy@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.1.0, is-core-module@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-https@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-https/-/is-https-3.0.2.tgz#4d24e002e47edd3f1b07f14bc722433354ccba49" + integrity sha512-jFgAKhbNF7J+lTMJxbq5z9bf1V9f8rXn9mP5RSY2GUEW5M0nOiVhVC9dNra96hQDjGpNzskIzusUnXwngqmhAA== + +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-shared-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" + integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-weakref@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +iterall@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +javascript-stringify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" + integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= + +javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== + +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +linkify-it@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + dependencies: + uc.micro "^1.0.1" + +load-script@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" + integrity sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ= + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash-es@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.defaultsdeep@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5, lodash@~4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-it-anchor@^5.0.2: + version "5.3.0" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" + integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== + +markdown-it-chain@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz#ccf6fe86c10266bafb4e547380dfd7f277cc17bc" + integrity sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ== + dependencies: + webpack-chain "^4.9.0" + +markdown-it-container@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-2.0.0.tgz#0019b43fd02eefece2f1960a2895fba81a404695" + integrity sha1-ABm0P9Au7+zi8ZYKKJX7qBpARpU= + +markdown-it-emoji@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" + integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw= + +markdown-it-table-of-contents@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz#3dc7ce8b8fc17e5981c77cc398d1782319f37fbc" + integrity sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw== + +markdown-it@^8.4.1: + version "8.4.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +medium-zoom@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" + integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +mini-css-extract-plugin@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" + integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== + dependencies: + loader-utils "^1.1.0" + normalize-url "^2.0.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + +nopt@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= + dependencies: + abbrev "1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.0, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimism@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" + integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw== + dependencies: + "@wry/context" "^0.4.0" + +optimism@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.1.tgz#7c8efc1f3179f18307b887e18c15c5b7133f6e7d" + integrity sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg== + dependencies: + "@wry/context" "^0.6.0" + "@wry/trie" "^0.3.0" + +optimize-css-assets-webpack-plugin@^5.0.1: + version "5.0.8" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" + integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +portfinder@^1.0.13, portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" + integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-value-parser "^3.3.1" + +postcss-modules-scope@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^7.0.6" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-safe-parser@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.8" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" + integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +"prettier@^1.18.2 || ^2.0.0": + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + +pretty-error@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prismjs@^1.13.0: + version "1.26.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47" + integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pupa@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +qss@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/qss/-/qss-2.0.3.tgz#630b38b120931b52d04704f3abfb0f861604a9ec" + integrity sha512-j48ZBT5IZbSqJiSU8EX4XrN8nXiflHvmMvv2XpFc31gh7n6EpSs75bNr6+oj3FOLWyT8m09pTmqLNl34L7/uPQ== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0, querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reduce@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b" + integrity sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ== + dependencies: + object-keys "^1.1.0" + +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpu-core@^4.7.1: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.14.2, resolve@^1.2.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + dependencies: + is-core-module "^2.8.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@~1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.1, schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: + version "1.10.14" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~7.3.0: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +smoothscroll-polyfill@^0.4.3: + version "0.4.4" + resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz#3a259131dc6930e6ca80003e1cb03b603b69abf8" + integrity sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3" + integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.5.3" + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +std-env@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1" + integrity sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g== + dependencies: + ci-info "^3.1.1" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-argv@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +stylus-loader@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== + dependencies: + loader-utils "^1.0.2" + lodash.clonedeep "^4.5.0" + when "~3.6.x" + +stylus@^0.54.8: + version "0.54.8" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" + integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== + dependencies: + css-parse "~2.0.0" + debug "~3.1.0" + glob "^7.1.6" + mkdirp "~1.0.4" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.3.0" + source-map "^0.7.3" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0, timsort@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-factory@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-factory/-/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1" + integrity sha1-hzivi9lxIK0dQEeXKtpVY7+UebE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +ts-invariant@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + +ts-invariant@^0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" + integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== + dependencies: + tslib "^2.1.0" + +tslib@^1.10.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.6.4: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + +typescript@~4.5.2: + version "4.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" + integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^3.1.4: + version "3.14.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859" + integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.0, upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^4.0.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== + dependencies: + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.4.tgz#e4f645a7e2a0852cc8a66b14b292a3e9a11a97fd" + integrity sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vue-hot-reload-api@^2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" + integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== + +vue-loader@^15.7.1: + version "15.9.8" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.8.tgz#4b0f602afaf66a996be1e534fb9609dc4ab10e61" + integrity sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog== + dependencies: + "@vue/component-compiler-utils" "^3.1.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +vue-multiselect@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/vue-multiselect/-/vue-multiselect-2.1.6.tgz#5be5d811a224804a15c43a4edbb7485028a89c7f" + integrity sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w== + +vue-router@^3.4.5: + version "3.5.3" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.3.tgz#041048053e336829d05dafacf6a8fb669a2e7999" + integrity sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg== + +vue-server-renderer@^2.6.10: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz#c8bffff152df6b47b858818ef8d524d2fc351654" + integrity sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA== + dependencies: + chalk "^1.1.3" + hash-sum "^1.0.2" + he "^1.1.0" + lodash.template "^4.5.0" + lodash.uniq "^4.5.0" + resolve "^1.2.0" + serialize-javascript "^3.1.0" + source-map "0.5.6" + +vue-style-loader@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" + integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.6.10: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" + integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vue@^2.6.10, vue@^2.6.11: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" + integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== + +vuepress-html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vuepress-html-webpack-plugin/-/vuepress-html-webpack-plugin-3.2.0.tgz#219be272ad510faa8750d2d4e70fd028bfd1c16e" + integrity sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A== + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +vuepress-plugin-container@^2.0.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.5.tgz#37fff05662fedbd63ffd3a5463b2592c7a7f3133" + integrity sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA== + dependencies: + "@vuepress/shared-utils" "^1.2.0" + markdown-it-container "^2.0.0" + +vuepress-plugin-smooth-scroll@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/vuepress-plugin-smooth-scroll/-/vuepress-plugin-smooth-scroll-0.0.3.tgz#6eff2d4c186cca917cc9f7df2b0af7de7c8c6438" + integrity sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg== + dependencies: + smoothscroll-polyfill "^0.4.3" + +vuepress@^1.2.0: + version "1.9.6" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.9.6.tgz#77e4cf32c2adf462c222294a2f350277d08104b3" + integrity sha512-iac2E2hUai5x23t+XwNgPEXR7Gt0Q0QDtxq/ZepyIXATsGK2SNyrsdK1pIbUzzv+m3wx/cZs7lwlOA0Putb8RA== + dependencies: + "@vuepress/core" "1.9.6" + "@vuepress/theme-default" "1.9.6" + "@vuepress/types" "1.9.6" + cac "^6.5.6" + envinfo "^7.2.0" + opencollective-postinstall "^2.0.2" + update-notifier "^4.0.0" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-chain@^4.9.0: + version "4.12.1" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" + integrity sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ== + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^1.6.0" + +webpack-chain@^6.0.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" + integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^2.0.1" + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.5.1: + version "3.11.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#8c86b9d2812bf135d3c9bce6f07b718e30f7c3d3" + integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA== + dependencies: + ansi-html-community "0.0.8" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.1.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.8.1: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +webpackbar@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-3.2.0.tgz#bdaad103fad11a4e612500e72aaae98b08ba493f" + integrity sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw== + dependencies: + ansi-escapes "^4.1.0" + chalk "^2.4.1" + consola "^2.6.0" + figures "^3.0.0" + pretty-time "^1.1.0" + std-env "^2.2.1" + text-table "^0.2.0" + wrap-ansi "^5.1.0" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-fetch@>=0.10.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +when@~3.6.x: + version "3.6.4" + resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + integrity sha1-RztRfsFZ4rhQBUl6E5g/CVQS404= + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + 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" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +z-schema@~5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.2.tgz#f410394b2c9fcb9edaf6a7511491c0bb4e89a504" + integrity sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw== + dependencies: + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" + optionalDependencies: + commander "^2.7.1" + +zen-observable-ts@^0.8.21: + version "0.8.21" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" + integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable-ts@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.3.tgz#c2f5ccebe812faf0cfcde547e6004f65b1a6d769" + integrity sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15, zen-observable@^0.8.0: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + +zepto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/zepto/-/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98" + integrity sha1-4Se9nmb9hGvl6rSME5SIL3wOT5g= diff --git a/internals/eslint-import/package.json b/internals/eslint-import/package.json index bd2f17d48..5f88c847d 100644 --- a/internals/eslint-import/package.json +++ b/internals/eslint-import/package.json @@ -30,7 +30,7 @@ ], "dependencies": { "eslint-import-resolver-typescript": "^2.5.0", - "eslint-plugin-import": "2.25.3" + "eslint-plugin-import": "2.25.4" }, "main": "index.js" } diff --git a/internals/eslint-jest/package.json b/internals/eslint-jest/package.json index c595c4721..b4207ddfb 100644 --- a/internals/eslint-jest/package.json +++ b/internals/eslint-jest/package.json @@ -29,7 +29,7 @@ "rules" ], "dependencies": { - "eslint-plugin-jest": "^25.3.0" + "eslint-plugin-jest": "^25.3.4" }, "main": "index.js" } diff --git a/internals/eslint-typescript/package.json b/internals/eslint-typescript/package.json index 5ec3af3fe..96ed88800 100644 --- a/internals/eslint-typescript/package.json +++ b/internals/eslint-typescript/package.json @@ -29,8 +29,8 @@ "rules" ], "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.8.0", - "@typescript-eslint/parser": "^5.8.0" + "@typescript-eslint/eslint-plugin": "^5.9.1", + "@typescript-eslint/parser": "^5.9.1" }, "main": "index.js" } diff --git a/internals/eslint-vue/package.json b/internals/eslint-vue/package.json index fce0eeea1..f36449a11 100644 --- a/internals/eslint-vue/package.json +++ b/internals/eslint-vue/package.json @@ -29,7 +29,7 @@ "rules" ], "dependencies": { - "eslint-plugin-vue": "^8.2.0" + "eslint-plugin-vue": "^8.3.0" }, "main": "index.js" } diff --git a/internals/eslint/package.json b/internals/eslint/package.json index b5ac86ac5..cf72558c9 100644 --- a/internals/eslint/package.json +++ b/internals/eslint/package.json @@ -34,7 +34,7 @@ "eslint-config-airbnb-typescript": "^16.1.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-unicorn": "39.0.0" + "eslint-plugin-unicorn": "40.0.0" }, "main": "index.js" } diff --git a/jest.base.config.js b/jest.base.config.js deleted file mode 100644 index eb526b980..000000000 --- a/jest.base.config.js +++ /dev/null @@ -1,58 +0,0 @@ -// For a detailed explanation regarding each configuration property, visit: -// https://jestjs.io/docs/en/configuration.html - -module.exports = { - globals: { - __DEV__: true, - }, - // noStackTrace: true, - // bail: true, - // cache: false, - // verbose: true, - // watch: true, - coverageReporters: ['lcov'], - - coverageThreshold: { - global: { - // branches: 50, - // functions: 50, - // lines: 50, - // statements: 50 - }, - }, - - coveragePathIgnorePatterns: ['/node_modules/', '.d.ts$', '/__mocks__/'], - - testEnvironment: 'jest-environment-jsdom-sixteen', - - transform: { - '^.+\\.(ts)$': 'ts-jest', - }, - - coverageDirectory: './coverage/', - - collectCoverageFrom: [ - 'src/**/*.ts', - ], - - setupFiles: [ - 'jest-date-mock', - 'jest-localstorage-mock', - ], - - transformIgnorePatterns: [ - 'node_modules', - '/node_modules', - ], - - testMatch: ['/**/__tests__/**/*spec.[jt]s?(x)'], - - watchPlugins: [ - 'jest-watch-typeahead/filename', - 'jest-watch-typeahead/testname', - ['jest-watch-toggle-config', { setting: 'verbose' }], - ['jest-watch-toggle-config', { setting: 'collectCoverage' }], - ['jest-watch-toggle-config', { setting: 'notify' }], - ['jest-watch-toggle-config', { setting: 'bail' }], - ], -}; diff --git a/lerna.json b/lerna.json index deb185c20..6bd7d296a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,6 @@ { "useWorkspaces": true, "npmClient": "yarn", - "version": "independent" + "version": "independent", + "ignoreChanges": ["internals/**"] } diff --git a/package.json b/package.json index 4f70f07a1..8eded3ac2 100644 --- a/package.json +++ b/package.json @@ -37,49 +37,48 @@ "update:update": "ncu -u && lerna run update:update --stream" }, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@commitlint/cli": "^15.0.0", - "@commitlint/config-conventional": "^15.0.0", - "@commitlint/config-lerna-scopes": "^15.0.0", - "@graphql-codegen/cli": "^2.3.0", - "@graphql-codegen/typescript": "^2.4.1", - "@graphql-codegen/typescript-operations": "^2.2.1", - "@graphql-tools/utils": "^8.5.5", + "@babel/core": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.7", + "@commitlint/cli": "^16.0.2", + "@commitlint/config-conventional": "^16.0.0", + "@commitlint/config-lerna-scopes": "^16.0.0", + "@graphql-codegen/cli": "^2.3.1", + "@graphql-codegen/typescript": "^2.4.2", + "@graphql-codegen/typescript-operations": "^2.2.2", + "@graphql-tools/utils": "^8.6.1", "@manypkg/cli": "^0.19.1", "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-node-resolve": "^13.1.1", + "@rollup/plugin-node-resolve": "^13.1.3", "@types/graphql": "^14.5.0", - "@types/jest": "^27.0.3", + "@types/jest": "^27.4.0", "@types/jsdom": "^16.2.14", - "@types/node": "^16.11.14", + "@types/node": "^17.0.8", "@types/webpack": "^5.28.0", - "@typescript-eslint/parser": "^5.8.0", - "@vue/eslint-config-typescript": "^9.1.0", + "@typescript-eslint/parser": "^5.9.1", + "@vue/eslint-config-typescript": "^10.0.0", "all-contributors-cli": "^6.20.0", "babel-eslint": "^10.1.0", "commitizen": "^4.2.4", "ejs": "^3.1.6", - "eslint": "8.5.0", + "eslint": "8.6.0", "husky": "^7.0.4", - "jest": "^27.4.5", + "jest": "^27.4.7", "jest-date-mock": "^1.0.8", - "jest-environment-jsdom-sixteen": "^2.0.0", "jest-localstorage-mock": "^2.4.18", "jest-silent-reporter": "^0.5.0", "jest-transform-stub": "^2.0.0", "jest-watch-toggle-config": "^2.0.1", "jest-watch-typeahead": "^1.0.0", "lerna": "^4.0.0", - "lint-staged": "^12.1.3", + "lint-staged": "^12.1.7", "majestic": "^1.8.1", - "npm-check-updates": "^12.0.5", + "npm-check-updates": "^12.1.0", "rimraf": "^3.0.2", - "rollup": "^2.61.1", + "rollup": "^2.64.0", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-typescript2": "^0.31.1", - "shx": "^0.3.3", - "ts-jest": "^27.1.2", + "shx": "^0.3.4", + "ts-jest": "^27.1.3", "ts-node": "^10.4.0", "tslib": "^2.3.1", "typescript": "^4.5.4", diff --git a/packages/api-client/__tests__/api/storeConfig/storeConfig.spec.ts b/packages/api-client/__tests__/api/storeConfig/storeConfig.spec.ts new file mode 100644 index 000000000..1207868f7 --- /dev/null +++ b/packages/api-client/__tests__/api/storeConfig/storeConfig.spec.ts @@ -0,0 +1,70 @@ +import request from '../../setup/request'; +import {STORE_CONFIG_MOCK_RESP} from './../../mockData/api/storeConfig' + +describe('[Magento-API-Client] storeConfig', () => { + it('Fetching the storeConfig', async () => { + const res = await request({ + body: JSON.stringify({ + query: ` + query { + storeConfig { + allow_guests_to_write_product_reviews + allow_items + allow_order + base_currency_code + catalog_default_sort_by + category_fixed_product_tax_display_setting + cms_home_page + cms_no_cookies + cms_no_route + configurable_thumbnail_source + copyright + default_description + default_display_currency_code + default_keywords + default_title + grid_per_page + grid_per_page_values + head_shortcut_icon + header_logo_src + is_default_store + is_default_store_group + list_mode + list_per_page + list_per_page_values + locale + logo_alt + logo_height + logo_width + magento_wishlist_general_is_enabled + minimum_password_length + no_route + product_fixed_product_tax_display_setting + product_reviews_enabled + required_character_classes_number + root_category_uid + sales_fixed_product_tax_display_setting + store_code + store_group_code + store_group_name + store_name + store_sort_order + timezone + title_prefix + title_separator + title_suffix + use_store_in_url + website_code + website_name + weight_unit + welcome + } + } + ` + }) + }); + const { data } = await res.json(); + + expect(data).toEqual(STORE_CONFIG_MOCK_RESP); + }); +}); diff --git a/packages/api-client/__tests__/mockData/api/storeConfig.ts b/packages/api-client/__tests__/mockData/api/storeConfig.ts new file mode 100644 index 000000000..4692b7027 --- /dev/null +++ b/packages/api-client/__tests__/mockData/api/storeConfig.ts @@ -0,0 +1,58 @@ +const STORE_CONFIG_MOCK_RESP = { + storeConfig: { + allow_guests_to_write_product_reviews: '1', + allow_items: null, + allow_order: null, + base_currency_code: 'USD', + catalog_default_sort_by: 'position', + category_fixed_product_tax_display_setting: 'FPT_DISABLED', + cms_home_page: 'home', + cms_no_cookies: 'enable-cookies', + cms_no_route: 'no-route', + configurable_thumbnail_source: 'parent', + copyright: 'Copyright © 2013-present Magento, Inc. All rights reserved.', + default_description: null, + default_display_currency_code: 'USD', + default_keywords: null, + default_title: 'Magento Commerce', + grid_per_page: 12, + grid_per_page_values: '12,24,36', + head_shortcut_icon: null, + header_logo_src: null, + is_default_store: true, + is_default_store_group: true, + list_mode: 'grid-list', + list_per_page: 10, + list_per_page_values: '5,10,15,20,25', + locale: 'en_US', + logo_alt: null, + logo_height: null, + logo_width: null, + magento_wishlist_general_is_enabled: '1', + minimum_password_length: '8', + no_route: 'cms/noroute/index', + product_fixed_product_tax_display_setting: 'FPT_DISABLED', + product_reviews_enabled: '1', + required_character_classes_number: '3', + root_category_uid: 'Mg==', + sales_fixed_product_tax_display_setting: 'FPT_DISABLED', + store_code: 'default', + store_group_code: 'main_website_store', + store_group_name: 'Main Website Store', + store_name: 'Default Store View', + store_sort_order: 0, + timezone: 'America/Chicago', + title_prefix: null, + title_separator: '-', + title_suffix: null, + use_store_in_url: false, + website_code: 'base', + website_name: 'Main Website', + weight_unit: 'lbs', + welcome: 'Default welcome msg!', + }, +}; + +export { + STORE_CONFIG_MOCK_RESP, +}; diff --git a/packages/api-client/__tests__/setup/handlers.ts b/packages/api-client/__tests__/setup/handlers.ts new file mode 100644 index 000000000..544bcb7bb --- /dev/null +++ b/packages/api-client/__tests__/setup/handlers.ts @@ -0,0 +1,12 @@ +import { graphql } from 'msw'; +import {STORE_CONFIG_MOCK_RESP} from './../mockData/api/storeConfig' + +const magento = graphql.link('https://magento2-instance.vuestorefront.io/graphql'); + +export const handlers = [ + magento.query('storeConfig', (req, res, ctx) => res( + ctx.data({ + data: STORE_CONFIG_MOCK_RESP, + }), + )), +]; diff --git a/packages/api-client/__tests__/setup/index.ts b/packages/api-client/__tests__/setup/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/api-client/__tests__/setup/request.ts b/packages/api-client/__tests__/setup/request.ts new file mode 100644 index 000000000..cc48316d3 --- /dev/null +++ b/packages/api-client/__tests__/setup/request.ts @@ -0,0 +1,11 @@ +import fetch from 'cross-fetch'; + +const request = ({ body }) => fetch('https://magento2-instance.vuestorefront.io/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body, +}); + +export default request; diff --git a/packages/api-client/__tests__/setup/server.ts b/packages/api-client/__tests__/setup/server.ts new file mode 100644 index 000000000..55673ce2b --- /dev/null +++ b/packages/api-client/__tests__/setup/server.ts @@ -0,0 +1,4 @@ +import { setupServer } from 'msw/node'; +import { handlers } from './handlers'; + +export const server = setupServer(...handlers) diff --git a/packages/api-client/jest.config.js b/packages/api-client/jest.config.js index dd14a17fd..8d990f8a0 100644 --- a/packages/api-client/jest.config.js +++ b/packages/api-client/jest.config.js @@ -1,13 +1,71 @@ -const baseConfig = require('../../jest.base.config'); - +/* eslint-disable unicorn/prefer-module */ module.exports = { - ...baseConfig, - transform: { - ...baseConfig.transform, - '\\.(gql|graphql)$': 'jest-transform-graphql', + globals: { + __DEV__: true, + }, + coverageReporters: [ + 'lcov', + ], + coverageThreshold: { + global: {}, }, - setupFilesAfterEnv: ['./__tests__/setup.ts'], + coveragePathIgnorePatterns: [ + '/node_modules/', + '.d.ts$', + '/__mocks__/', + ], + coverageDirectory: './coverage/', moduleNameMapper: { + '^@/(.*)$': '/$1', + '^~/(.*)$': '/$1', 'api-client(.*)$': '$1', }, + testEnvironment: 'jsdom', + transform: { + '^.+\\.(ts)$': 'ts-jest', + '^.+\\.js$': 'babel-jest', + }, + transformIgnorePatterns: [ + 'node_modules', + '/node_modules', + ], + testMatch: [ + '/**/__tests__/**/*spec.[jt]s?(x)', + ], + watchPlugins: [ + 'jest-watch-typeahead/filename', + 'jest-watch-typeahead/testname', + [ + 'jest-watch-toggle-config', + { + setting: 'verbose', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'collectCoverage', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'notify', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'bail', + }, + ], + ], + collectCoverageFrom: [ + '/src/**/*.ts', + ], + moduleFileExtensions: [ + 'js', + 'json', + 'ts', + ], }; diff --git a/packages/api-client/jest.setup.ts b/packages/api-client/jest.setup.ts new file mode 100644 index 000000000..f0430c7c4 --- /dev/null +++ b/packages/api-client/jest.setup.ts @@ -0,0 +1,11 @@ +import { server } from './__tests__/setup/server'; + +// Establish API mocking before all tests. +beforeAll(() => server.listen()); + +// Reset any request handlers that we may add during the tests, +// so they don't affect other tests. +afterEach(() => server.resetHandlers()); + +// Clean up after the tests are finished. +afterAll(() => server.close()); diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 17410b97d..00ee49e3a 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/magento-api", - "version": "1.0.0-rc.5.2.2", + "version": "1.0.0-rc.5.3", "sideEffects": false, "homepage": "https://github.com/vuestorefront/magento2", "bugs": { @@ -24,7 +24,7 @@ "update:update": "ncu -u" }, "dependencies": { - "@apollo/client": "^3.5.6", + "@apollo/client": "^3.5.7", "graphql": "^16.2.0", "graphql-tag": "^2.12.6", "isomorphic-fetch": "^3.0.0" @@ -35,14 +35,15 @@ "@rollup/plugin-json": "^4.1.0", "@types/isomorphic-fetch": "^0.0.35", "cross-fetch": "^3.1.4", - "dotenv": "^10.0.0", + "dotenv": "^12.0.1", "graphql-tools": "^8.2.0", "jest-transform-graphql": "^2.1.0", + "msw": "^0.36.4", "typescript": "^4.5.4", "webpack": "4.46.0" }, "peerDependencies": { - "@vue-storefront/core": "~2.5.3" + "@vue-storefront/core": "~2.5.4" }, "files": [ "lib/**/*", diff --git a/packages/api-client/src/helpers/apiClient/defaultSettings.ts b/packages/api-client/src/helpers/apiClient/defaultSettings.ts index 51904933e..e0bccc073 100644 --- a/packages/api-client/src/helpers/apiClient/defaultSettings.ts +++ b/packages/api-client/src/helpers/apiClient/defaultSettings.ts @@ -21,6 +21,8 @@ export const defaultSettings: ClientConfig = { setCurrency: () => {}, getLocale: () => '', setLocale: () => {}, + getCountry: () => '', + setCountry: () => {}, }, externalCheckout: { enable: false, diff --git a/packages/api-client/src/index.server.ts b/packages/api-client/src/index.server.ts index 6d215a989..b29d7a17e 100644 --- a/packages/api-client/src/index.server.ts +++ b/packages/api-client/src/index.server.ts @@ -32,6 +32,14 @@ const onCreate = (settings: Config): { config: Config; client: ClientInstance } const client = apolloClientFactory({ link: apolloLink, ...settings.customOptions, + defaultOptions: { + query: { + errorPolicy: 'all', + }, + mutate: { + errorPolicy: 'all', + }, + }, }); return { diff --git a/packages/api-client/src/types/setup.ts b/packages/api-client/src/types/setup.ts index 3d15a580c..32305924f 100644 --- a/packages/api-client/src/types/setup.ts +++ b/packages/api-client/src/types/setup.ts @@ -46,6 +46,8 @@ export type ConfigState = { setCurrency(id?: string | null): void; getLocale(): string; setLocale(id?: string | null): void; + getCountry(): string; + setCountry(id?: string | null): void; }; export interface ClientConfig { diff --git a/packages/composables/__tests__/getters/productHelpers.spec.ts b/packages/composables/__tests__/getters/productHelpers.spec.ts index c92051591..b4233c7cd 100644 --- a/packages/composables/__tests__/getters/productHelpers.spec.ts +++ b/packages/composables/__tests__/getters/productHelpers.spec.ts @@ -140,7 +140,7 @@ const product = { }] } as any; -describe('[commercetools-getters] product getters', () => { +describe('[magento-getters] product getters', () => { it('returns default values', () => { expect(getName(null)).toBe(''); expect(getSlug(null)).toBe(''); @@ -149,221 +149,41 @@ describe('[commercetools-getters] product getters', () => { }); it('returns name', () => { - expect(getName(product)).toBe('variant 1'); + expect(getName(product)).toBe('Joust Duffle Bag'); }); it('returns slug', () => { - expect(getSlug(product)).toBe('variant-1'); + expect(getSlug(product)).toBe('/joust-duffle-bag.html'); }); it('returns price', () => { - expect(getPrice(product)).toEqual({ regular: 12, special: 12 }); + expect(getPrice(product)).toEqual({ regular: 34, special: null }); }); it('returns gallery', () => { expect(getGallery(product)).toEqual([ { - small: 'imageV11/url.jpg', - big: 'imageV11/url.jpg', - normal: 'imageV11/url.jpg' - }, - { - small: 'imageV12/url.jpg', - big: 'imageV12/url.jpg', - normal: 'imageV12/url.jpg' + small: 'https://m2.caravelx.com/media/catalog/product/cache/746ba992681b73af7e339699b3e0caf7/m/b/mb01-blue-0.jpg', + normal: 'https://m2.caravelx.com/media/catalog/product/cache/746ba992681b73af7e339699b3e0caf7/m/b/mb01-blue-0.jpg', + big: 'https://m2.caravelx.com/media/catalog/product/cache/746ba992681b73af7e339699b3e0caf7/m/b/mb01-blue-0.jpg' } ]); }); it('returns cover image', () => { - expect(getCoverImage({ images: [] } as any)).toEqual(''); - expect(getCoverImage(product)).toEqual('imageV11/url.jpg'); - }); - - it('returns master variant', () => { - const variants = [ - { - _name: 'variant 1', - _master: false - }, - { - _name: 'variant 2', - _master: true - } - ]; - expect(getFiltered(variants as any, { master: true })).toEqual([{ - _name: 'variant 2', - _master: true - }]); - }); - - it('returns master variants', () => { - const variants = [ - { - _name: 'variant 1_1', - _master: false - }, - { - _name: 'variant 1_2', - _master: true - }, - { - _name: 'variant 2_1', - _master: true - }, - { - _name: 'variant 2_2', - _master: false - } - ]; - expect(getFiltered(variants as any, { master: true })).toEqual([ - { - _name: 'variant 1_2', - _master: true - }, - { - _name: 'variant 2_1', - _master: true - } - ]); - }); - - it('returns all variants', () => { - const variants = [ - { - _name: 'variant 1', - _master: false - }, - { - _name: 'variant 2', - _master: true - } - ]; - expect(getFiltered(variants as any)).toEqual(variants); - }); - - it('returns product by given attributes', () => { - const variant1 = { - ...product, - attributesRaw: [ - { - name: 'size', - value: '36', - _translated: '26', - attributeDefinition: { type: { name: 'text' } } - }, - { - name: 'color', - value: 'white', - _translated: 'white', - attributeDefinition: { type: { name: 'text' } } - } - ] - }; - const variant2 = { - ...product, - attributesRaw: [ - { - name: 'size', - value: '38', - _translated: '38', - attributeDefinition: { type: { name: 'text' } } - }, - { - name: 'color', - value: 'black', - _translated: 'black', - attributeDefinition: { type: { name: 'text' } } - } - ] - }; - - const variants = [variant1, variant2]; - - const attributes = { - color: 'black', - size: '38' - }; - expect(getFiltered(variants, { attributes })).toEqual([variant2]); - }); - - // Attributes - - it('returns product attributes', () => { - expect(getAttributes([product])).toEqual({ - articleNumberManufacturer: [{ - label: 'H805 C195 85072', - value: 'H805 C195 85072' - }] - }); - }); - - it('returns attributes of single product', () => { - expect(getAttributes(product)).toEqual({ articleNumberManufacturer: 'H805 C195 85072' }); - }); - - it('returns product unique attributes', () => { - const prod = { - ...product, - attributesRaw: [ - { - name: 'articleNumberManufacturer', - value: 'H805 C195 85072', - _translated: 'H805 C195 85072', - attributeDefinition: { type: { name: 'text' } } - }, - { - name: 'articleNumberManufacturer', - value: 'H805 C195 85072', - _translated: 'H805 C195 85072', - attributeDefinition: { type: { name: 'text' } } - } - ] - } as any; - - expect(getAttributes([prod])).toEqual({ - articleNumberManufacturer: [{ - label: 'H805 C195 85072', - value: 'H805 C195 85072' - }] - }); - }); - - it('returns filtered product attributes', () => { - const product = { - attributesRaw: [ - { - name: 'articleNumberManufacturer', - value: 'H805 C195 85072', - _translated: 'H805 C195 85072', - attributeDefinition: { type: { name: 'text' } } - }, - { - name: 'color', - value: 'H805 C195 85072', - _translated: 'H805 C195 85072', - attributeDefinition: { type: { name: 'text' } } - } - ] - } as any; - - expect(getAttributes([product], ['color'])).toEqual({ - color: [{ - value: 'H805 C195 85072', - label: 'H805 C195 85072' - }] - }); + expect(getCoverImage({ images: [] } as any)).toEqual(null); + expect(getCoverImage(product)).toEqual('https://m2.caravelx.com/media/catalog/product/cache/746ba992681b73af7e339699b3e0caf7/m/b/mb01-blue-0.jpg'); }); it('returns product categories', () => { expect(getCategoryIds(product)).toEqual([ - 'catA', - 'catB' + 'Mw==', + 'NA==' ]); }); it('returns product ID', () => { - expect(getId(product)).toEqual(1234); + expect(getId(product)).toEqual('MQ=='); }); it('returns empty array if there is no product', () => { diff --git a/packages/composables/jest.config.js b/packages/composables/jest.config.js index d9b5f2a65..6d23ed571 100644 --- a/packages/composables/jest.config.js +++ b/packages/composables/jest.config.js @@ -1,9 +1,70 @@ -const baseConfig = require('./../../jest.base.config'); - +/* eslint-disable unicorn/prefer-module */ module.exports = { - ...baseConfig, - coverageReporters: ['html', 'lcov', 'text'], - rootDir: __dirname, - setupFilesAfterEnv: ['./__tests__/setup.ts'], - watchPathIgnorePatterns: ['/node_modules/'] + globals: { + __DEV__: true, + }, + coverageReporters: [ + 'lcov', + ], + coverageThreshold: { + global: {}, + }, + coveragePathIgnorePatterns: [ + '/node_modules/', + '.d.ts$', + '/__mocks__/', + ], + coverageDirectory: './coverage/', + moduleNameMapper: { + '^@/(.*)$': '/$1', + '^~/(.*)$': '/$1', + }, + testEnvironment: 'jsdom', + transform: { + '^.+\\.(ts)$': 'ts-jest', + '^.+\\.js$': 'babel-jest', + }, + transformIgnorePatterns: [ + 'node_modules', + '/node_modules', + ], + testMatch: [ + '/**/__tests__/**/*spec.[jt]s?(x)', + ], + watchPlugins: [ + 'jest-watch-typeahead/filename', + 'jest-watch-typeahead/testname', + [ + 'jest-watch-toggle-config', + { + setting: 'verbose', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'collectCoverage', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'notify', + }, + ], + [ + 'jest-watch-toggle-config', + { + setting: 'bail', + }, + ], + ], + collectCoverageFrom: [ + '/composables/**/*.ts', + ], + moduleFileExtensions: [ + 'js', + 'json', + 'ts', + ], }; diff --git a/packages/composables/nuxt/defaultConfig.js b/packages/composables/nuxt/defaultConfig.js index 2decfc05b..dee433b45 100644 --- a/packages/composables/nuxt/defaultConfig.js +++ b/packages/composables/nuxt/defaultConfig.js @@ -6,5 +6,6 @@ export default { cartCookieName: 'vsf-cart', customerCookieName: 'vsf-customer', storeCookieName: 'vsf-store', + messageCookieName: 'vsf-message', }, }; diff --git a/packages/composables/nuxt/plugin.js b/packages/composables/nuxt/plugin.js index c37cefca9..00a24f3f1 100644 --- a/packages/composables/nuxt/plugin.js +++ b/packages/composables/nuxt/plugin.js @@ -11,6 +11,7 @@ export default integrationPlugin(({ app, res, req, integration }) => { const storeCookieName = moduleOptions.cookies?.storeCookieName || defaultConfig.cookies.storeCookieName; const currencyCookieName = moduleOptions.cookies?.currencyCookieName || defaultConfig.cookies.currencyCookieName; const localeCookieName = moduleOptions.cookies?.localeCookieName || defaultConfig.cookies.localeCookieName; + const countryCookieName = moduleOptions.cookies?.countryCookieName || defaultConfig.cookies.countryCookieName; const { setCookie, @@ -20,61 +21,27 @@ export default integrationPlugin(({ app, res, req, integration }) => { const getCartId = () => getCookies(cartCookieName); - const setCartId = (id) => { - if (!id) { - removeCookie(cartCookieName) - // eslint-disable-next-line no-param-reassign - return; - } - setCookie(cartCookieName, id); - }; + const setCartId = (id) => !id ? removeCookie(cartCookieName) : setCookie(cartCookieName, id); const getCustomerToken = () => getCookies(customerCookieName); - const setCustomerToken = (token) => { - if (!token) { - removeCookie(customerCookieName); - return; - } - - setCookie(customerCookieName, token); - }; + const setCustomerToken = (token) => !token ? removeCookie(customerCookieName) : setCookie(customerCookieName, token); const getStore = () => getCookies(storeCookieName); - const setStore = (id) => { - if (!id) { - // eslint-disable-next-line no-param-reassign - removeCookie(storeCookieName); - return; - } - - setCookie(storeCookieName, id); - }; + const setStore = (id) => !id ? removeCookie(storeCookieName) : setCookie(storeCookieName, id); const getCurrency = () => getCookies(currencyCookieName); - const setCurrency = (id) => { - if (!id) { - // eslint-disable-next-line no-param-reassign - removeCookie(currencyCookieName); - return; - } - - setCookie(currencyCookieName, id); - }; + const setCurrency = (id) => !id ? removeCookie(currencyCookieName) : setCookie(currencyCookieName, id); const getLocale = () => getCookies(localeCookieName); - const setLocale = (id) => { - if (!id) { - // eslint-disable-next-line no-param-reassign - removeCookie(localeCookieName); - return; - } + const setLocale = (id) => !id ? removeCookie(localeCookieName) : setCookie(localeCookieName, id); + + const getCountry = () => getCookies(countryCookieName); - setCookie(localeCookieName, id); - }; + const setCountry = id => !id ? removeCookie(countryCookieName) : setCookie(countryCookieName, id); const settings = mapConfigToSetupObject({ moduleOptions, @@ -94,6 +61,8 @@ export default integrationPlugin(({ app, res, req, integration }) => { setCurrency, getLocale, setLocale, + getCountry, + setCountry, }, } }); diff --git a/packages/composables/package.json b/packages/composables/package.json index 02ce495b1..4c6b83515 100644 --- a/packages/composables/package.json +++ b/packages/composables/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/magento", - "version": "1.0.0-rc.5.2.2", + "version": "1.0.0-rc.5.3", "license": "MIT", "homepage": "https://github.com/vuestorefront/magento2", "bugs": { @@ -22,8 +22,8 @@ "update:update": "ncu -u" }, "dependencies": { - "@vue-storefront/core": "~2.5.3", - "@vue-storefront/magento-api": "1.0.0-rc.5.2.2", + "@vue-storefront/core": "~2.5.4", + "@vue-storefront/magento-api": "1.0.0-rc.5.3", "@vue/composition-api": "^1.4.1", "cookie-universal": "^2.1.5", "vue": "^2.6.14", diff --git a/packages/composables/src/composables/useBilling/index.ts b/packages/composables/src/composables/useBilling/index.ts index e25573ec2..c1824a117 100644 --- a/packages/composables/src/composables/useBilling/index.ts +++ b/packages/composables/src/composables/useBilling/index.ts @@ -49,7 +49,7 @@ const factoryParams: UseBillingParams = { : ({ address: { ...address, - street: [address.street, apartment, neighborhood, extra], + street: [address.street, apartment, neighborhood, extra].filter(Boolean), }, same_as_shipping: sameAsShipping, }); diff --git a/packages/composables/src/composables/useCart/index.ts b/packages/composables/src/composables/useCart/index.ts index 4417029b8..6383819e0 100644 --- a/packages/composables/src/composables/useCart/index.ts +++ b/packages/composables/src/composables/useCart/index.ts @@ -56,6 +56,7 @@ const factoryParams: UseCartFactoryParams = { throw errors[0]; } + data.cart.items = data.cart.items.filter(Boolean); return data.cart as unknown as Cart; }; @@ -83,6 +84,7 @@ const factoryParams: UseCartFactoryParams = { } apiState.setCartId(data.customerCart.id); + data.customerCart.items = data.customerCart.items.filter(Boolean); return data.customerCart as unknown as Cart; } catch { @@ -381,7 +383,7 @@ const factoryParams: UseCartFactoryParams = { currentCart, product, }, - ) => !!currentCart?.items.find((cartItem) => cartItem.product.uid === product.uid), + ) => !!currentCart?.items.find((cartItem) => cartItem?.product?.uid === product.uid), }; export default useCartFactory(factoryParams); diff --git a/packages/composables/src/composables/useConfig/index.ts b/packages/composables/src/composables/useConfig/index.ts index f1fc5c57e..9f2fe39b1 100644 --- a/packages/composables/src/composables/useConfig/index.ts +++ b/packages/composables/src/composables/useConfig/index.ts @@ -4,7 +4,7 @@ import { useConfigFactory, UseConfigFactoryParams } from '../../factories/useCon import { UseConfig } from '../../types/composables'; const factoryParams: UseConfigFactoryParams = { - loadConfig: async (context: Context, params) => { + loadConfig: async (context: Context) => { const { data } = await context.$magento.api.storeConfig(); return data.storeConfig || {}; diff --git a/packages/composables/src/composables/useShipping/index.ts b/packages/composables/src/composables/useShipping/index.ts index b62bba25e..dbbc1ba92 100644 --- a/packages/composables/src/composables/useShipping/index.ts +++ b/packages/composables/src/composables/useShipping/index.ts @@ -49,7 +49,7 @@ const factoryParams: UseShippingParams = { : ({ address: { ...address, - street: [address.street, apartment, neighborhood, extra], + street: [address.street, apartment, neighborhood, extra].filter(Boolean), }, }); diff --git a/packages/composables/src/composables/useStore/index.ts b/packages/composables/src/composables/useStore/index.ts index 5722400cd..34b8a99b9 100644 --- a/packages/composables/src/composables/useStore/index.ts +++ b/packages/composables/src/composables/useStore/index.ts @@ -11,7 +11,7 @@ const factoryParams: UseStoreFactoryParams = { cart: useCart(), }; }, - load: async (context: Context, params): Promise => { + load: async (context: Context): Promise => { const { data } = await context.$magento.api.availableStores(); return data.availableStores || []; @@ -21,9 +21,7 @@ const factoryParams: UseStoreFactoryParams = { change: (context: Context, store) => { context.$magento.config.state.setStore(StoreConfigGetters.getCode(store)); context.$magento.config.state.setCurrency(StoreConfigGetters.getCurrency(store)); - context.$magento.config.state.setLocale(StoreConfigGetters.getCurrency(store)); - - context.cart.clear(); + context.$magento.config.state.setLocale(StoreConfigGetters.getCode(store)); }, }; diff --git a/packages/composables/src/composables/useUrlResolver/index.ts b/packages/composables/src/composables/useUrlResolver/index.ts index d4204885e..afd01bbe9 100644 --- a/packages/composables/src/composables/useUrlResolver/index.ts +++ b/packages/composables/src/composables/useUrlResolver/index.ts @@ -6,7 +6,7 @@ import { UseUrlResolver } from '../../types/composables'; const factoryParams: UseUrlResolverFactoryParams = { search: async (context: Context, params) => { Logger.debug('[Magento] Find information based on URL', { params }); - const clearUrl = params.url.replace(/\/[cp|]\//gi, ''); + const clearUrl = params.url.replace(/[a-z]+\/[cp|]\//gi, ''); const { data } = await context.$magento.api.urlResolver(clearUrl); diff --git a/packages/composables/src/dataTypes.ts b/packages/composables/src/dataTypes.ts index 75d7c5bf1..379fc89e9 100644 --- a/packages/composables/src/dataTypes.ts +++ b/packages/composables/src/dataTypes.ts @@ -14,5 +14,6 @@ export { Wishlist, AvailableStores, Currency, + ConfigState, } from '@vue-storefront/magento-api'; export { WishlistProduct } from './getters/wishlistGetters'; diff --git a/packages/composables/src/getters/cartGetters.ts b/packages/composables/src/getters/cartGetters.ts index 91af9f6aa..62bd7a97c 100644 --- a/packages/composables/src/getters/cartGetters.ts +++ b/packages/composables/src/getters/cartGetters.ts @@ -89,13 +89,7 @@ export const getItemAttributes = ( return attributes; }; -export const getItemSku = (product: CartItem): string => { - if (!product.product) { - return ''; - } - - return product.product.sku; -}; +export const getItemSku = (product: CartItem): string => product?.product?.sku || ''; const calculateDiscounts = (discounts: Discount[]): number => discounts.reduce((a, b) => Number.parseFloat(`${a}`) + Number.parseFloat(`${b.amount.value}`), 0); @@ -173,14 +167,13 @@ export const getAvailablePaymentMethods = (cart: Cart): AgnosticPaymentMethod[] value: p.code, })); +export const getStockStatus = (product: CartItem): string => product.product.stock_status; export interface CartGetters extends CartGettersBase { getAppliedCoupon(cart: Cart): AgnosticCoupon | null; - getAvailablePaymentMethods(cart: Cart): AgnosticPaymentMethod[]; - getSelectedShippingMethod(cart: Cart): SelectedShippingMethod | null; - productHasSpecialPrice(product: CartItem): boolean; + getStockStatus(product: CartItem): string; } const cartGetters: CartGetters = { @@ -202,6 +195,7 @@ const cartGetters: CartGetters = { getTotalItems, getTotals, productHasSpecialPrice, + getStockStatus, }; export default cartGetters; diff --git a/packages/composables/src/getters/productGetters.ts b/packages/composables/src/getters/productGetters.ts index 23920cb84..abd2d7af7 100644 --- a/packages/composables/src/getters/productGetters.ts +++ b/packages/composables/src/getters/productGetters.ts @@ -26,8 +26,8 @@ export const getName = (product: Product): string => { }; export const getSlug = (product: Product, category?: Category): string => { - const rewrites = product.url_rewrites; - let url = `/p/${product.sku}`; + const rewrites = product?.url_rewrites; + let url = product?.sku ? `/p/${product.sku}` : ''; if (!rewrites || rewrites.length === 0) { return url; } diff --git a/packages/composables/src/getters/storeConfigGetters.ts b/packages/composables/src/getters/storeConfigGetters.ts index e56db255c..35b4a6f9c 100644 --- a/packages/composables/src/getters/storeConfigGetters.ts +++ b/packages/composables/src/getters/storeConfigGetters.ts @@ -1,10 +1,10 @@ -import { StoreConfig } from '@vue-storefront/magento-api'; +import { StoreConfig } from '@vue-storefront/magento-api';; const getCode = (config: StoreConfig) => config.store_code; const getTitle = (config: StoreConfig) => config.default_title; const getName = (config: StoreConfig) => config.store_name; const getCurrency = (config: StoreConfig) => config.default_display_currency_code; -const getLocale = (config: StoreConfig) => config.locale.replace('_', '-'); +const getLocale = (config: StoreConfig) => config.locale; const allowGuestProductReview = (config: StoreConfig) => config.allow_guests_to_write_product_reviews; const enabledWishlist = (config: StoreConfig) => config.magento_wishlist_general_is_enabled; diff --git a/packages/composables/src/getters/userAddressesGetters.ts b/packages/composables/src/getters/userAddressesGetters.ts index 7ae4eca60..3b9ebd1d3 100644 --- a/packages/composables/src/getters/userAddressesGetters.ts +++ b/packages/composables/src/getters/userAddressesGetters.ts @@ -10,7 +10,9 @@ const userAddressesGetters: UserAddressesGetters = { getAddresses: (addresses, criteria?: Record) => { if (!addresses || addresses.length === 0 || !Array.isArray(addresses)) return []; - const addressesData = addresses?.map((a) => transformUserGetter(a)); + const addressesData = addresses?.map((a) => transformUserGetter(a)) + ?.sort((a, b) => ((a.default_shipping === b.default_shipping) ? 0 : (a.default_shipping ? -1 : 1))) + ?.sort((a, b) => ((a.default_billing === b.default_billing) ? 0 : (a.default_billing ? -1 : 1))); if (!criteria || Object.keys(criteria).length === 0) { return addressesData; diff --git a/packages/theme/components/AppHeader.vue b/packages/theme/components/AppHeader.vue index 03c1c4802..fa1221805 100644 --- a/packages/theme/components/AppHeader.vue +++ b/packages/theme/components/AppHeader.vue @@ -28,7 +28,7 @@ /> diff --git a/packages/theme/composables/useApi/index.ts b/packages/theme/composables/useApi/index.ts new file mode 100644 index 000000000..f519ef291 --- /dev/null +++ b/packages/theme/composables/useApi/index.ts @@ -0,0 +1,48 @@ +import { useContext } from '@nuxtjs/composition-api'; +import { request as graphQLRequest, GraphQLClient } from 'graphql-request'; +import cookieNames from '~/enums/cookieNameEnum'; + +export const useApi = () => { + const { app } = useContext(); + const customerToken = app.$cookies.get(cookieNames.customerCookieName); + const storeCode = app.$cookies.get(cookieNames.storeCookieName); + const magentoConfig = app.$vsf.$magento.config; + const { useGETForQueries } = magentoConfig.customApolloHttpLinkOptions; + const defaultEndpoint = magentoConfig.magentoApiEndpoint as string; + const defaultHeaders: { + authorization?: string, + store?: string + } = {}; + + if (customerToken) { + defaultHeaders.authorization = `Bearer ${customerToken}`; + } + + if (storeCode) { + defaultHeaders.store = storeCode; + } + + const query = ( + document: string, + endpoint = defaultEndpoint, + variables = null, + requestHeaders = defaultHeaders, + ) => new GraphQLClient(endpoint, { + method: useGETForQueries ? 'GET' : 'POST', + headers: requestHeaders, + }).request(document, variables); + + const mutate = ( + document: string, + endpoint = defaultEndpoint, + variables = null, + requestHeaders = defaultHeaders, + ) => graphQLRequest(endpoint, document, variables, requestHeaders); + + return { + query, + mutate, + }; +}; + +export default useApi; diff --git a/packages/theme/composables/useMagentoConfiguration.ts b/packages/theme/composables/useMagentoConfiguration.ts index bbda83fcc..28cd88734 100644 --- a/packages/theme/composables/useMagentoConfiguration.ts +++ b/packages/theme/composables/useMagentoConfiguration.ts @@ -1,7 +1,5 @@ import { useConfig, - useCurrency, - useStore, storeConfigGetters, Currency, AvailableStores, @@ -28,16 +26,6 @@ export const useMagentoConfiguration: UseMagentoConfiguration = () => { loadConfig, } = useConfig(); - const { - stores, - load: loadStores, - } = useStore(); - - const { - currencies, - load: loadCurrencies, - } = useCurrency(); - const selectedCurrency = computed(() => app.$cookies.get(cookieNames.currencyCookieName)); const selectedLocale = computed(() => app.$cookies.get(cookieNames.localeCookieName)); @@ -73,14 +61,9 @@ export const useMagentoConfiguration: UseMagentoConfiguration = () => { return true; }); - - loadStores(); - loadCurrencies(); }; return { - currencies, - stores, storeConfig, selectedCurrency, selectedLocale, diff --git a/packages/theme/config.js b/packages/theme/config.js index 905daed48..5f98cca38 100644 --- a/packages/theme/config.js +++ b/packages/theme/config.js @@ -36,13 +36,20 @@ const config = convict({ default: process.env.MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH || '/vue/cart/sync', env: 'MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH', }, - // endregion + magentoBaseUrl: { + doc: 'Magento base url', + format: String, + default: process.env.MAGENTO_BASE_URL || 'https://magento2-instance.vuestorefront.io/', + env: 'MAGENTO_BASE_URL', + }, storeUrl: { doc: 'Store base URL', format: String, default: process.env.STORE_URL || 'http://localhost:3000', env: 'STORE_URL', }, + // endregion + // region Nuxt Options nuxtAppEnvironment: { doc: 'Nuxt Store environment', format: String, @@ -55,12 +62,8 @@ const config = convict({ default: process.env.NUXT_APP_PORT || 3000, env: 'NUXT_APP_PORT', }, - magentoBaseUrl: { - doc: 'Magento base url', - format: String, - default: process.env.MAGENTO_BASE_URL || 'https://magento2-instance.vuestorefront.io/', - env: 'MAGENTO_BASE_URL', - }, + // endregion + // region Nuxt-Image Options imageProvider: { doc: 'Image provider', format: String, @@ -73,6 +76,7 @@ const config = convict({ default: process.env.IMAGE_PROVIDER_BASE_URL, env: 'IMAGE_PROVIDER_BASE_URL', }, + // endregion // region recaptcha recaptchaEnabled: { doc: 'reCaptcha Enabled', @@ -98,7 +102,7 @@ const config = convict({ default: process.env.RECAPTCHA_SITE_KEY || '', env: 'RECAPTCHA_SITE_KEY', }, - recaptchaSecretkey: { + recaptchaSecretKey: { doc: 'reCaptcha Secret Key', format: String, default: process.env.RECAPTCHA_SECRET_KEY || '', diff --git a/packages/theme/config/example.json b/packages/theme/config/example.json index d41f29d0f..8455a7d76 100644 --- a/packages/theme/config/example.json +++ b/packages/theme/config/example.json @@ -12,7 +12,7 @@ "recaptchaHideBadge": "{YOUR_RECAPTCHA_BADGE_TYPE}", "recaptchaSize": "{YOUR_RECAPTCHA_SIZE}", "recaptchaSiteKey": "{YOUR_RECAPTCHA_SITE_KEY}", - "recaptchaSecretkey": "{YOUR_RECAPTCHA_SECRET_KEY}", + "recaptchaSecretKey": "{YOUR_RECAPTCHA_SECRET_KEY}", "recaptchaVersion": "{YOUR_RECAPTCHA_VERSION}", "recaptchaMinScore": "{YOUR_RECAPTCHA_MIN_SCORE}" -} \ No newline at end of file +} diff --git a/packages/theme/graphqlClient.ts b/packages/theme/graphqlClient.ts new file mode 100644 index 000000000..e69de29bb diff --git a/packages/theme/lang/de.js b/packages/theme/lang/de.js index 33b354e9b..45c8c890a 100644 --- a/packages/theme/lang/de.js +++ b/packages/theme/lang/de.js @@ -2,6 +2,7 @@ export default { "About us": "Über uns", + "Account": "Konto", "Add new address": "Neue Adresse hinzufügen", "Add to compare": "Hinzufügen zum vergleichen", "Add to Wishlist": "Zur Wunschliste hinzufügen", @@ -15,6 +16,7 @@ export default { "Billing address": "Rechnungsadresse", "Brand": "Marke", "Cancel": "Abbrechen", + "Cart": "Warenkorb", "Categories": "Kategorien", "Change": "Änderungsänderung", "Change password your account": "Wenn Sie das Passwort ändern möchten, um auf Ihr Konto zuzugreifen, geben Sie die folgenden Informationen ein", @@ -45,6 +47,7 @@ export default { "Edit": "Bearbeiten", "Email address": "E-Mail Adresse", "Empty": "Sieht so aus, als hätten Sie der Tasche noch keine Artikel hinzugefügt. Beginnen Sie mit dem Einkaufen, um es auszufüllen.", + "Empty bag": "Leere Tasche", "Enjoy your free account": "Enjoy these perks with your free account!", "Enter promo code": "Geben Sie den Promo-Code ein", "Feedback": "Ihr Feedback ist uns wichtig. Lassen Sie uns wissen, was wir verbessern können.", @@ -88,8 +91,10 @@ export default { "Manage shipping addresses": "Alle gewünschten Versandadressen verwalten (Arbeitsplatz, Privatadresse ...) Auf diese Weise müssen Sie die Versandadresse nicht bei jeder Bestellung manuell eingeben.", "Match it with": "Kombiniere es mit", "Men fashion": "Herrenmode", + "Menu": "Menü", "My billing and shipping address are the same": "Meine Rechnungs- und Lieferadresse sind identisch", "My Cart": "Mein Warenkorb", + "New Products": "Neue Produkte", "No account": "Sie haben noch keinen Account?", "or": "oder", "or fill the details below": "oder füllen Sie die Details unten", @@ -122,6 +127,7 @@ export default { "Read reviews": "Bewertungen lesen", "Register": "Registrieren", "Register today": "Melde dich noch heute an", + "Remove Address": "Adresse entfernen", "Remove from Wishlist": "Von Wunschliste entfernen", "Repeat Password": "Wiederhole das Passwort", "Reset Password": "Passwort Zurücksetzen", @@ -130,6 +136,7 @@ export default { "Save changes": "Änderungen speichern", "Save for later": "Für später speichern", "Save Password": "Passwort Speichern", + "Search": "Suche", "Search for items": "Nach Artikeln suchen", "Search results": "Suchergebnisse", "Sections that interest you": "Abschnitte, die Sie interessieren", @@ -173,12 +180,15 @@ export default { "User Account": "Benutzerkonto", "View": "Ansicht", "View details": "Details anzeigen", + "Vue Storefront Next": "Vue Storefront Next", "We haven’t found any results for given phrase": "Wir haben keine Ergebnisse für die angegebene Phrase gefunden", "Who we are": "Wer wir sind", + "Wishlist": "Wunschliste", "Women fashion": "Damenmode", "You are not authorized, please log in": "Sie sind nicht autorisiert, bitte melden Sie sich an", "You can unsubscribe at any time": "Sie können sich jederzeit abmelden", "You currently have no orders": "Sie haben derzeit keine Bestellungen", + "The email field must be a valid email":"Das E-Mail-Feld muss eine gültige E-Mail-Adresse sein", "You haven’t searched for items yet": "Sie haben noch nicht nach Artikeln gesucht.", "Your bag is empty": "Ihre Tasche ist leer", "Your current email address is": "Ihre aktuelle E-Mail-Adresse lautet", @@ -187,17 +197,16 @@ export default { "The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.":"Die Kontoanmeldung war falsch oder Ihr Konto wurde vorübergehend deaktiviert. Bitte warten Sie und versuchen Sie es später erneut.", "A customer with the same email address already exists in an associated website.": "Ein Kunde mit derselben E-Mail-Adresse existiert bereits auf einer verknüpften Website.", "Invalid email": "Ungültige E-Mail", - "SUMMER COLLECTION {year}": "SUMMER COLLECTION {year}", + "SUMMER COLLECTION {year}": "SOMMERKOLLEKTION {year}", "Colorful summer dresses are already in store": "Bunte Sommerkleider sind bereits im Store", "Learn more": "Mehr erfahren", "Dresses": "Kleider", - "Cocktail & Party": "Cocktail & Party", + "Cocktail & Party": "Cocktailparty", "Linen Dresses": "Leinenkleider", "T-Shirts": "T-Shirts", - "The office life": "Das Büroleben", + "The Office Life": "Das Büroleben", "Find stunning women's cocktail dresses and party dresses. Stand out in lace and metallic cocktail dresses from all your favorite brands.": "Finden Sie atemberaubende Cocktailkleider für Damen und Cocktailkleider für Party-D…c von all Ihren Lieblingsmarken.", "Shop now": "Jetzt einkaufen", - "The Office Life": "The Office Life", "Summer Sandals": "Sommersandalen", "Eco Sandals": "Öko-Sandalen", "Subscribe to Newsletters": "Newsletter abonnieren", @@ -239,4 +248,8 @@ export default { "The field should have at least 4 characters": "Das Feld sollte mindestens 4 Zeichen lang sein", "The field should have at least 8 characters": "Das Feld sollte mindestens 8 Zeichen lang sein", "New Password": "Neues Passwort", + "New Products": "Neue Produkte", + "There are no shipping methods available for this country. We are sorry, please try with different country.": "Für dieses Land sind keine Versandarten verfügbar. Es tut uns leid, bitte versuchen Sie es mit einem anderen Land oder später.", + "There was some error while trying to fetch shipping methods. We are sorry, please try with different shipping details.": "Beim Versuch, Versandarten abzurufen, ist ein Fehler aufgetreten. Es tut uns leid, bitte versuchen Sie es mit anderen Versanddetails oder später.", + "There was some error while trying to select this shipping method. We are sorry, please try with different shipping method.": "Beim Versuch, diese Versandart auszuwählen, ist ein Fehler aufgetreten. Es tut uns leid, bitte versuchen Sie es mit einer anderen Versandart.", }; diff --git a/packages/theme/lang/en.js b/packages/theme/lang/en.js index bf60673de..c4d5f566d 100644 --- a/packages/theme/lang/en.js +++ b/packages/theme/lang/en.js @@ -2,6 +2,7 @@ export default { "About us": "About us", + "Account": "Account", "Add new address": "Add new address", "Add to compare": "Add to compare", "Add to Wishlist": "Add to Wishlist", @@ -15,6 +16,7 @@ export default { "Billing address": "Billing address", "Brand": "Brand", "Cancel": "Cancel", + "Cart": "Cart", "Categories": "Categories", "Change": "Change", "Change password your account": "If you want to change the password to access your account, enter the following information", @@ -43,6 +45,7 @@ export default { "Edit": "Edit", "Email address": "Email address", "Empty": "Looks like you haven’t added any items to the bag yet. Start shopping to fill it in.", + "Empty bag": "Empty bag", "Enjoy your free account": "Enjoy these perks with your free account!", "Enter promo code": "Enter promo code", "Feedback": "Your feedback is important to us. Let us know what we could improve.", @@ -86,8 +89,10 @@ export default { "Manage shipping addresses": "Manage all the shipping addresses you want (work place, home address...) This way you won\"t have to enter the shipping address manually with each order.", "Match it with": "Match it with", "Men fashion": "Men fashion", + "Menu": "Menu", "My billing and shipping address are the same": "My billing and shipping address are the same", "My Cart": "My Cart", + "New Products": "New Products", "No account": "Don't have an account yet?", "or": "or", "or fill the details below": "or fill the details below", @@ -119,6 +124,7 @@ export default { "Read reviews": "Read reviews", "Register": "Register", "Register today": "Register today", + "Remove Address": "Remove Address", "Remove from Wishlist": "Remove from Wishlist", "Repeat Password": "Repeat Password", "Reset Password": "Reset Password", @@ -127,6 +133,7 @@ export default { "Save changes": "Save changes", "Save for later": "Save for later", "Save Password": "Save Password", + "Search": "Search", "Search for items": "Search for items", "Search results": "Search results", "Sections that interest you": "Sections that interest you", @@ -169,7 +176,9 @@ export default { "User Account": "User Account", "View": "View", "View details": "View details", + "Vue Storefront Next": "Vue Storefront Next", "Who we are": "Who we are", + "Wishlist": "Wishlist", "Women fashion": "Women fashion", "You are not authorized, please log in": "You are not authorized, please log in", "You can unsubscribe at any time": "You can unsubscribe at any time", @@ -178,6 +187,7 @@ export default { "Your bag is empty": "Your bag is empty", "Your current email address is": "Your current email address is", "Your email": "Your email", + "The email field must be a valid email":"The email field must be a valid email", 'You have submitted no reviews': 'You have submitted no reviews', "The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.":"The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.", "A customer with the same email address already exists in an associated website.": "A customer with the same email address already exists in an associated website.", @@ -236,4 +246,8 @@ export default { "The field should have at least 4 characters": "The field should have at least 4 characters", "The field should have at least 8 characters": "The field should have at least 8 characters", "New Password": "New Password", + "New Products": "New Products", + "There are no shipping methods available for this country. We are sorry, please try with different country.": "There are no shipping methods available for this country. We are sorry, please try with different country.", + "There was some error while trying to fetch shipping methods. We are sorry, please try with different shipping details.": "There was some error while trying to fetch shipping methods. We are sorry, please try with different shipping details.", + "There was some error while trying to select this shipping method. We are sorry, please try with different shipping method.": "There was some error while trying to select this shipping method. We are sorry, please try with different shipping method.", }; diff --git a/packages/theme/layouts/default.vue b/packages/theme/layouts/default.vue index 814a31e63..fc175d4dd 100644 --- a/packages/theme/layouts/default.vue +++ b/packages/theme/layouts/default.vue @@ -1,14 +1,9 @@ + diff --git a/packages/theme/pages/Checkout/UserAccount.vue b/packages/theme/pages/Checkout/UserAccount.vue index 00810b3ea..c84fd2905 100644 --- a/packages/theme/pages/Checkout/UserAccount.vue +++ b/packages/theme/pages/Checkout/UserAccount.vue @@ -26,7 +26,7 @@ :required="!loginUserAccount" :disabled="loginUserAccount" :valid="!errors[0]" - :error-message="errors[0]" + :error-message="$t(errors[0])" /> + + @@ -61,6 +87,7 @@ + diff --git a/packages/theme/pages/Product.vue b/packages/theme/pages/Product.vue index 568948766..10da06423 100644 --- a/packages/theme/pages/Product.vue +++ b/packages/theme/pages/Product.vue @@ -31,10 +31,10 @@ :level="3" class="sf-heading--no-underline sf-heading--left" /> - @@ -260,7 +260,6 @@ import { SfColor, SfGallery, SfHeading, - SfIcon, SfLoader, SfPrice, SfRating, @@ -286,6 +285,7 @@ import { useRouter, defineComponent, } from '@nuxtjs/composition-api'; +import { useCache, CacheTagPrefix } from '@vue-storefront/cache'; import { productData } from '~/helpers/product/productData'; import cacheControl from '~/helpers/cacheControl'; import BundleProductSelector from '~/components/Products/BundleProductSelector'; @@ -297,7 +297,7 @@ import UpsellProducts from '~/components/UpsellProducts'; import RelatedProducts from '~/components/RelatedProducts'; import HTMLContent from '~/components/HTMLContent'; import AddToWishlist from '~/components/AddToWishlist'; -import { useCache, CacheTagPrefix } from '@vue-storefront/cache'; +import SvgImage from '~/components/General/SvgImage.vue'; export default defineComponent({ name: 'ProductPage', @@ -316,15 +316,15 @@ export default defineComponent({ SfColor, SfGallery, SfHeading, - SfIcon, SfLoader, SfPrice, SfRating, SfReview, SfSelect, SfTabs, - UpsellProducts, AddToWishlist, + SvgImage, + UpsellProducts, }, middleware: cacheControl({ 'max-age': 60, @@ -482,9 +482,7 @@ export default defineComponent({ const tags = [{ prefix: CacheTagPrefix.View, value: `product-${route.value.params.id}` }]; const productTags = { prefix: CacheTagPrefix.Product, value: product.value.uid }; - const categoriesTags = categories.value.map((catId) => { - return { prefix: CacheTagPrefix.Category, value: catId }; - }); + const categoriesTags = categories.value.map((catId) => ({ prefix: CacheTagPrefix.Category, value: catId })); addTags(tags.concat(productTags, categoriesTags)); }); @@ -548,8 +546,10 @@ export default defineComponent({ &__info { margin: var(--spacer-sm) auto; @include for-desktop { + margin: 0; max-width: 32.625rem; - margin: 0 0 0 2rem; + padding-left: var(--spacer-lg); + width: 100%; } } @@ -568,6 +568,7 @@ export default defineComponent({ &__drag-icon { animation: moveicon 1s ease-in-out infinite; + color: var(--c-text-disabled) } &__price-and-rating { @@ -707,6 +708,10 @@ export default defineComponent({ &__additional-actions { display: flex; justify-content: flex-start; + margin: 0 var(--spacer-sm); + @include for-desktop { + margin: 0; + } } &__gallery { diff --git a/packages/theme/pages/ResetPassword.vue b/packages/theme/pages/ResetPassword.vue index 911d64815..5500c258a 100644 --- a/packages/theme/pages/ResetPassword.vue +++ b/packages/theme/pages/ResetPassword.vue @@ -22,7 +22,7 @@ v-model="form.email" v-e2e="'login-modal-email'" :valid="!errors[0]" - :error-message="errors[0]" + :error-message="$t(errors[0])" name="email" label="Your email" class="form__element" @@ -36,7 +36,7 @@ v-model="form.password" v-e2e="'reset-password-modal-password'" :valid="!errors[0]" - :error-message="errors[0]" + :error-message="$t(errors[0])" :label="$t('Password')" name="password" type="password" @@ -51,7 +51,7 @@ v-model="form.repeatPassword" v-e2e="'reset-password-modal-password-repeat'" :valid="!errors[0]" - :error-message="errors[0]" + :error-message="$t(errors[0])" :label="$t('Repeat Password')" name="repeat-password" type="password" diff --git a/packages/theme/pages/Shipping.vue b/packages/theme/pages/Shipping.vue index a3a8c54c3..26f401c6e 100644 --- a/packages/theme/pages/Shipping.vue +++ b/packages/theme/pages/Shipping.vue @@ -22,7 +22,7 @@ class="form__element form__element--half" required :valid="!errors[0]" - :error-message="errors[0]" + :error-message="$t(errors[0])" /> diff --git a/packages/theme/plugins/dompurify.ts b/packages/theme/plugins/dompurify.ts new file mode 100644 index 000000000..d04e72b7d --- /dev/null +++ b/packages/theme/plugins/dompurify.ts @@ -0,0 +1,12 @@ +import _unescape from 'lodash.unescape'; +import DOMPurify from 'isomorphic-dompurify'; + +declare module 'vue/types/vue' { + interface Vue { + $dompurify(html: string): string; + } +} + +export default (_, inject) => { + inject('dompurify', (html: string): string => _unescape(DOMPurify.sanitize(html))); +}; diff --git a/packages/theme/static/error/error.svg b/packages/theme/static/error/error.svg deleted file mode 100644 index e2d075678..000000000 --- a/packages/theme/static/error/error.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/theme/static/favicon.ico b/packages/theme/static/favicon.ico index 479229d87b9c2308b41ed8fce34a59b29a3a5653..143cf993b06ae66e74463a8036f4a65bf1cb0bd1 100644 GIT binary patch literal 69694 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 diff --git a/packages/theme/static/icons/empty-cart.svg b/packages/theme/static/icons/empty-cart.svg deleted file mode 100644 index 83b07851a..000000000 --- a/packages/theme/static/icons/empty-cart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/theme/static/icons/facebook.svg b/packages/theme/static/icons/facebook.svg index 8dcb72b3f..a8de24630 100644 --- a/packages/theme/static/icons/facebook.svg +++ b/packages/theme/static/icons/facebook.svg @@ -1,4 +1 @@ - - - - + diff --git a/packages/theme/static/icons/google.svg b/packages/theme/static/icons/google.svg index c3fe1f003..fcdae1d83 100644 --- a/packages/theme/static/icons/google.svg +++ b/packages/theme/static/icons/google.svg @@ -1,10 +1 @@ - - - - - - - - - - + diff --git a/packages/theme/static/icons/logo.svg b/packages/theme/static/icons/logo.svg deleted file mode 100644 index c9efd085f..000000000 --- a/packages/theme/static/icons/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/theme/static/icons/pinterest.svg b/packages/theme/static/icons/pinterest.svg index f0527a7a5..dff5ed6ab 100644 --- a/packages/theme/static/icons/pinterest.svg +++ b/packages/theme/static/icons/pinterest.svg @@ -1,10 +1,6 @@ - - - - - - - - - + + + + + diff --git a/packages/theme/static/icons/twitter.svg b/packages/theme/static/icons/twitter.svg index 338994fd1..4f4618691 100644 --- a/packages/theme/static/icons/twitter.svg +++ b/packages/theme/static/icons/twitter.svg @@ -1,10 +1 @@ - - - - - - - - - - + diff --git a/packages/theme/static/icons/youtube.svg b/packages/theme/static/icons/youtube.svg index 795eaedbf..4bfd2229d 100644 --- a/packages/theme/static/icons/youtube.svg +++ b/packages/theme/static/icons/youtube.svg @@ -1,10 +1,9 @@ - - - - - - - - - + + + + + + + + diff --git a/packages/theme/test-utils/mocks/useCart.js b/packages/theme/test-utils/mocks/useCart.js index 5d329f040..9e1d7d878 100644 --- a/packages/theme/test-utils/mocks/useCart.js +++ b/packages/theme/test-utils/mocks/useCart.js @@ -1,10 +1,9 @@ export const useEmptyCartMock = (cartData = {}) => ({ load: jest.fn(), - loading: { - value: false, - }, + loading: false, removeItem: jest.fn(), updateItemQty: jest.fn(), + loadTotalQty: jest.fn(() => 0), cart: { value: {}, }, @@ -13,11 +12,10 @@ export const useEmptyCartMock = (cartData = {}) => ({ export const useCartMock = (cartData = {}) => ({ load: jest.fn(), - loading: { - value: false, - }, + loading: false, removeItem: jest.fn(), updateItemQty: jest.fn(), + loadTotalQty: jest.fn(() => 2), cart: { value: { items: [ diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json index de8191975..a6810ca1c 100644 --- a/packages/theme/tsconfig.json +++ b/packages/theme/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "declaration": true, - "target": "ES2018", + "target": "ES2019", "module": "ESNext", "moduleResolution": "Node", "lib": [ diff --git a/packages/theme/utilities/directives/click-outside/click-outside-directive.js b/packages/theme/utilities/directives/click-outside/click-outside-directive.js new file mode 100644 index 000000000..e8b839446 --- /dev/null +++ b/packages/theme/utilities/directives/click-outside/click-outside-directive.js @@ -0,0 +1,19 @@ +export const clickOutside = { + bind(el, binding) { + binding.name = "click-outside"; + const closeHandler = binding.value; + el._outsideClickHandler = function (event) { + if (!el.contains(event.target)) { + event.stopPropagation(); + closeHandler(event, el); + } + }; + document.addEventListener("mousedown", el._outsideClickHandler); + document.addEventListener("touchstart", el._outsideClickHandler); + }, + unbind(el) { + document.removeEventListener("mousedown", el._outsideClickHandler); + document.removeEventListener("touchstart", el._outsideClickHandler); + el._outsideClickHandler = null; + }, +}; diff --git a/tsconfig.base.json b/tsconfig.base.json index 31cc651e8..c4a2d7725 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -2,7 +2,7 @@ "compilerOptions": { "outDir": "./lib", "esModuleInterop": true, - "target": "es5", + "target": "ES2019", "module": "ES2015", "moduleResolution": "node", "importHelpers": true, diff --git a/yarn.lock b/yarn.lock index 869a2ef1e..2ee4b9873 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,7 @@ dependencies: "@types/throttle-debounce" "^2.1.0" -"@apollo/client@^3.5.7": +"@apollo/client@^3.5.8": version "3.5.8" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.8.tgz#7215b974c5988b6157530eb69369209210349fe0" integrity sha512-MAm05+I1ullr64VLpZwon/ISnkMuNLf6vDqgo9wiMhHYBGT4yOAbAIseRdjCHZwfSx/7AUuBgaTNOssZPIr6FQ== @@ -57,7 +57,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.14.0", "@babel/core@^7.16.0", "@babel/core@^7.16.7", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.14.0", "@babel/core@^7.16.0", "@babel/core@^7.16.12", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.16.12" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== @@ -435,7 +435,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.13.0", "@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.16.7": +"@babel/plugin-proposal-private-methods@^7.13.0", "@babel/plugin-proposal-private-methods@^7.16.11": version "7.16.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== @@ -1077,7 +1077,7 @@ dependencies: lodash.snakecase "^4.1.1" -"@commitlint/cli@^16.0.2": +"@commitlint/cli@^16.1.0": version "16.1.0" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-16.1.0.tgz#022ad86008374b02974c9f3faf86affb785f4574" integrity sha512-x5L1knvA3isRWBRVQx+Q6D45pA9139a2aZQYpxkljMG0dj4UHZkCnsYWpnGalxPxASI7nrI0KedKfS2YeQ55cQ== @@ -1354,7 +1354,7 @@ resolved "https://registry.yarnpkg.com/@glidejs/glide/-/glide-3.5.2.tgz#7012c5920ecf202bbda44d8526fc979984b6dd54" integrity sha512-7jGciNJ2bQ4eZLSNlSZ+VAyW63kALf420CvkEpK4lEsUfWJq9odqimci0YCiyNyMUFB+pWHwLYyNc57dijYsCg== -"@graphql-codegen/cli@^2.3.1": +"@graphql-codegen/cli@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-2.4.0.tgz#7df3ee2bdd5b88a5904ee6f52eafeb370ef70e51" integrity sha512-4iiHH2AxBE17lX5cFdFg6+kh7I6uKQLYG0IZRalRbW/grKL7kuVp/RDUjmVB2GNJTJEhjxYLMJFJZocUmAUBlw== @@ -1431,10 +1431,10 @@ "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" -"@graphql-codegen/typescript-operations@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.2.2.tgz#028f2850ae85021d8932b5670e5feca7b0d5c767" - integrity sha512-J50AuTA37RYv67hP2oHbfr3iGxexTCoadQsbr5pEUGucrIupCA0hLEJH2W+9/h6YNh0UlZT3kRTJp81ARoAjOA== +"@graphql-codegen/typescript-operations@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.2.3.tgz#c454235963a6e448da1314e7a8abc95281ad0c7d" + integrity sha512-72fzmnxAkjtbfCvLI7MC2WFVygXGAtkmg1SJO39Bby69VIeIA2E/N+EpA6xHDL0TpG+Q3If9aiCFYxa6827SDg== dependencies: "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-codegen/typescript" "^2.4.2" @@ -1695,9 +1695,9 @@ integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== "@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== + version "0.9.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" + integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -2936,27 +2936,27 @@ node-html-parser "^3.2.0" ufo "^0.7.4" -"@nuxt/image@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@nuxt/image/-/image-0.6.0.tgz#cb23b55a81ad3f335ce4b55664f0179bf069f720" - integrity sha512-3oWeVaMMnZ7E8bJ/ZGfAXp6CL0HSsdlNHQgZfCk0pboTxIxNrdfAhpsMfX+VJ2FDwMftr2PzQ3X+/2TetEfHUA== +"@nuxt/image@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@nuxt/image/-/image-0.6.1.tgz#e7c34a85f1ea0c42d2b153172b68d801e796063a" + integrity sha512-djQ4k7Om5Q0vPqm16A4uchFeBuIYiX8mYJiMAC+tsuPzWebLZsN/ku2v7tu3uBXZsMiDaHvq+2L/lCh5NdzjhQ== dependencies: consola "^2.15.3" - defu "^5.0.0" + defu "^5.0.1" fs-extra "^10.0.0" hasha "^5.2.2" - image-meta "^0.0.1" + image-meta "^0.1.1" is-https "^4.0.0" lru-cache "^6.0.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" p-limit "^3.1.0" rc9 "^1.2.0" requrl "^3.0.2" semver "^7.3.5" - ufo "^0.7.9" + ufo "^0.7.10" upath "^2.0.1" optionalDependencies: - ipx "^0.8.0" + ipx "^0.9.2" "@nuxt/loading-screen@^2.0.3": version "2.0.4" @@ -3190,6 +3190,13 @@ unplugin-vue2-script-setup "^0.7.3" upath "^2.0.1" +"@nuxtjs/device@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@nuxtjs/device/-/device-2.1.0.tgz#552c668b2d82dc982d18429845777c19d48d87d6" + integrity sha512-TYBdt1w2bmCCWp+MhgcBATZtqyUBi3nSdNpcLGILw5USLwCsC/yZtIkq9YisuEzuRnod9w/RZpoE80MxLftEuA== + dependencies: + defu "^3.2.2" + "@nuxtjs/google-fonts@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@nuxtjs/google-fonts/-/google-fonts-1.3.0.tgz#36cefee4aef4f8b772180c7ed7cc902f02f585c4" @@ -3768,7 +3775,7 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== -"@types/dompurify@^2.3.1": +"@types/dompurify@^2.3.3": version "2.3.3" resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-2.3.3.tgz#c24c92f698f77ed9cc9d9fa7888f90cf2bfaa23f" integrity sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w== @@ -3876,9 +3883,9 @@ integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/inquirer@^8.1.3": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" - integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== + version "8.2.0" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" + integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -3995,10 +4002,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^17.0.8": - version "17.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.12.tgz#f7aa331b27f08244888c47b7df126184bc2339c5" - integrity sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA== +"@types/node@*": + version "17.0.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.13.tgz#5ed7ed7c662948335fcad6c412bb42d99ea754e3" + integrity sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw== "@types/node@12.20.12": version "12.20.12" @@ -4015,6 +4022,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.9.tgz#0e5944eefe2b287391279a19b407aa98bd14436d" integrity sha512-j11XSuRuAlft6vLDEX4RvhqC0KxNxx6QIyMXNb0vHHSNPXTPeiy3algESWmOOIzEtiEL0qiowPU3ewW9hHVa7Q== +"@types/node@^17.0.14": + version "17.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.14.tgz#33b9b94f789a8fedd30a68efdbca4dbb06b61f20" + integrity sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -4275,9 +4287,9 @@ webpack "^5" "@types/websocket@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" - integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== dependencies: "@types/node" "*" @@ -4319,7 +4331,7 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== -"@typescript-eslint/eslint-plugin@^5.0.0", "@typescript-eslint/eslint-plugin@^5.9.1": +"@typescript-eslint/eslint-plugin@^5.0.0": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.1.tgz#870195d0f2146b36d11fc71131b75aba52354c69" integrity sha512-xN3CYqFlyE/qOcy978/L0xLR2HlcAGIyIK5sMOasxaaAPfQRj/MmMV6OC3I7NZO84oEUdWCOju34Z9W8E0pFDQ== @@ -4334,14 +4346,22 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.10.1.tgz#49fa5a7800ed08ea70aef14fccb14fbae85116ab" - integrity sha512-Ryeb8nkJa/1zKl8iujNtJC8tgj6PgaY0sDUnrTqbmC70nrKKkZaHfiRDTcqICmCSCEQyLQcJAoh0AukLaIaGTw== +"@typescript-eslint/eslint-plugin@^5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz#f8c1d59fc37bd6d9d11c97267fdfe722c4777152" + integrity sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q== dependencies: - "@typescript-eslint/utils" "5.10.1" + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/type-utils" "5.10.2" + "@typescript-eslint/utils" "5.10.2" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.9.1": +"@typescript-eslint/parser@^5.0.0": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd" integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA== @@ -4351,6 +4371,16 @@ "@typescript-eslint/typescript-estree" "5.10.1" debug "^4.3.2" +"@typescript-eslint/parser@^5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.2.tgz#b6076d27cc5499ce3f2c625f5ccde946ecb7db9a" + integrity sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg== + dependencies: + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/typescript-estree" "5.10.2" + debug "^4.3.2" + "@typescript-eslint/scope-manager@5.10.1": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" @@ -4359,6 +4389,14 @@ "@typescript-eslint/types" "5.10.1" "@typescript-eslint/visitor-keys" "5.10.1" +"@typescript-eslint/scope-manager@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz#92c0bc935ec00f3d8638cdffb3d0e70c9b879639" + integrity sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw== + dependencies: + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/visitor-keys" "5.10.2" + "@typescript-eslint/type-utils@5.10.1": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.1.tgz#5e526c00142585e40ab1503e83f1ff608c367405" @@ -4368,11 +4406,25 @@ debug "^4.3.2" tsutils "^3.21.0" +"@typescript-eslint/type-utils@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz#ad5acdf98a7d2ab030bea81f17da457519101ceb" + integrity sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw== + dependencies: + "@typescript-eslint/utils" "5.10.2" + debug "^4.3.2" + tsutils "^3.21.0" + "@typescript-eslint/types@5.10.1": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q== +"@typescript-eslint/types@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.2.tgz#604d15d795c4601fffba6ecb4587ff9fdec68ce8" + integrity sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w== + "@typescript-eslint/typescript-estree@5.10.1": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" @@ -4386,7 +4438,20 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.10.1": +"@typescript-eslint/typescript-estree@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7" + integrity sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ== + dependencies: + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/visitor-keys" "5.10.2" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.10.1", "@typescript-eslint/utils@^5.10.0": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.1.tgz#fa682a33af47080ba2c4368ee0ad2128213a1196" integrity sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw== @@ -4398,6 +4463,18 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.2.tgz#1fcd37547c32c648ab11aea7173ec30060ee87a8" + integrity sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/typescript-estree" "5.10.2" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@5.10.1": version "5.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" @@ -4406,6 +4483,14 @@ "@typescript-eslint/types" "5.10.1" eslint-visitor-keys "^3.0.0" +"@typescript-eslint/visitor-keys@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d" + integrity sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q== + dependencies: + "@typescript-eslint/types" "5.10.2" + eslint-visitor-keys "^3.0.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -4439,16 +4524,6 @@ cors "^2.8.5" express "^4.17.1" -"@vue-storefront/nuxt-theme@~2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@vue-storefront/nuxt-theme/-/nuxt-theme-2.5.4.tgz#7a8172836929afaf23825054d954414cf46cb859" - integrity sha512-X+y9eQ+2RSgx3nHUKMKiYUVP+016gxR9CgjD19DIM7Mezy6P6oos7Qbpkjm7yBObfHLl8bo1q8VSmxyVgntRaA== - dependencies: - ejs "^3.0.2" - lodash.debounce "^4.0.8" - lodash.merge "^4.6.2" - vue-lazy-hydration "^2.0.0-beta.4" - "@vue-storefront/nuxt@~2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@vue-storefront/nuxt/-/nuxt-2.5.4.tgz#29d8fc368e66c7e46aed164654a92942208cc08b" @@ -4587,11 +4662,9 @@ prettier "^1.18.2 || ^2.0.0" "@vue/composition-api@^1.2.4", "@vue/composition-api@^1.4.1": - version "1.4.4" - resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.4.4.tgz#42cfbe6e3c0dc16100d725cdb0ea1c443919cc7a" - integrity sha512-0AMpkSy28NG1BUqTPXLfQzJUnjSp+qUa4jaG7A2FBRSKHJOl1g10/xvNb44+OW5Jg9f79zKOb7PYhFhJG2vLyQ== - dependencies: - tslib "^2.3.1" + version "1.4.5" + resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.4.5.tgz#a15f5407708a6566ade81965476218dfaa4faa29" + integrity sha512-2Esgcc0EGBqyck4b/yrP2VnGmMr6cPYAE4nF3StIzP8+umNAbRZqBJDc6AhE58whPRt3lHAPf83eppgW7a2dUg== "@vue/eslint-config-typescript@^10.0.0": version "10.0.0" @@ -6453,9 +6526,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001228, caniuse-lite@^1.0.30001286: - version "1.0.30001302" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001302.tgz#da57ce61c51177ef3661eeed7faef392d3790aaa" - integrity sha512-YYTMO+tfwvgUN+1ZnRViE53Ma1S/oETg+J2lISsqi/ZTNThj3ZYBOKP2rHwJc37oCsPqAzJ3w2puZHn0xlLPPw== + version "1.0.30001304" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz#38af55ed3fc8220cb13e35e6e7309c8c65a05559" + integrity sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ== capital-case@^1.0.4: version "1.0.4" @@ -7526,7 +7599,7 @@ cron@1.8.2: dependencies: moment-timezone "^0.5.x" -cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.4: +cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -7552,9 +7625,9 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: which "^2.0.1" cross-undici-fetch@^0.1.19: - version "0.1.19" - resolved "https://registry.yarnpkg.com/cross-undici-fetch/-/cross-undici-fetch-0.1.19.tgz#1bef41652c33ec812b51cd3b4e1295114cd62d4c" - integrity sha512-bNBuesVn09Iy15mAM/hpt97fLWSexblVYpUYa5FjbtLHA7om9w3g1uRGGwrEnmVxy3wouNvZyJwQzAPHXgOrxQ== + version "0.1.20" + resolved "https://registry.yarnpkg.com/cross-undici-fetch/-/cross-undici-fetch-0.1.20.tgz#935c252d3224a31c96d2107d1a379733732e9333" + integrity sha512-czQhJIgyRnyZ6WqbZ3H1FDXwqOnIWFOWB9JOCKSSdlV1W6huHfzDRFiLePljXMxvwLBiQ7Ag7gGuCFtTw+1zHg== dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" @@ -7859,10 +7932,10 @@ cypress-tags@^0.3.0: "@cypress/browserify-preprocessor" "^3.0.1" through "^2.3.8" -cypress@^9.2.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.3.1.tgz#8116f52d49d6daf90a91e88f3eafd940234d2958" - integrity sha512-BODdPesxX6bkVUnH8BVsV8I/jn57zQtO1FEOUTiuG2us3kslW7g0tcuwiny7CKCmJUZz8S/D587ppC+s58a+5Q== +cypress@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.4.1.tgz#1a4ba706435829c24b7edf350c2b059e05da9084" + integrity sha512-+JgMG9uT+QFx97JU9kOHE3jO3+0UdkQ9H1oCBiC7A74qme7Jkdy2sYDBCPjjGczutnWnGUTMRlwiNMP/Uq6LrQ== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -7901,10 +7974,10 @@ cypress@^9.2.1: pretty-bytes "^5.6.0" proxy-from-env "1.0.0" request-progress "^3.0.0" + semver "^7.3.2" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" - url "^0.11.0" yauzl "^2.10.0" cz-conventional-changelog@3.2.0: @@ -7943,6 +8016,11 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" + integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -8176,7 +8254,7 @@ defu@^4.0.1: resolved "https://registry.yarnpkg.com/defu/-/defu-4.0.1.tgz#9d7d7a48f9295f08285d153dcff174c89b9bcb22" integrity sha512-lC+G0KvvWRbisQa50+iFelm3/eMmwo4IlBmfASOVlw9MZpHHyQeVsZxc5j23+TQy5ydgEoTVSrWl7ptou1kzJQ== -defu@^5.0.0: +defu@^5.0.0, defu@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/defu/-/defu-5.0.1.tgz#a034278f9b032bf0845d261aa75e9ad98da878ac" integrity sha512-EPS1carKg+dkEVy3qNTqIdp2qV7mUP08nIsupfwQpz++slCVRw7qbQyWvSTig+kFPwz2XXp5/kIIkH+CwrJKkQ== @@ -8279,6 +8357,11 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-libc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.0.tgz#c528bc09bc6d1aa30149228240917c225448f204" + integrity sha512-S55LzUl8HUav8l9E2PBTlC5PAJrHK7tkM+XXFGD+fbsbkTzhCpG6K05LxJcUOEWzMa4v6ptcMZ9s3fOdJDu0Zw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -8364,9 +8447,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-accessibility-api@^0.5.6: - version "0.5.10" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" - integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== + version "0.5.11" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz#79d5846c4f90eba3e617d9031e921de9324f84ed" + integrity sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw== dom-converter@^0.2.0: version "0.2.0" @@ -8440,10 +8523,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: dependencies: domelementtype "^2.2.0" -dompurify@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.4.tgz#1cf5cf0105ccb4debdf6db162525bd41e6ddacc6" - integrity sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ== +dompurify@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.5.tgz#c83ed5a3ae5ce23e52efe654ea052ffb358dd7e3" + integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ== domutils@^1.7.0: version "1.7.0" @@ -8489,10 +8572,15 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -dotenv@^12.0.1: - version "12.0.4" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-12.0.4.tgz#87e302cfddeef475fcaf9a617f7b44f80ac555bc" - integrity sha512-oWdqbSywffzH1l4WXKPHWA0TWYpqp7IyLfqjipT4upoIFS0HPMqtNotykQpD4iIg0BqtNmdgPCh2WMvMt7yTiw== +dotenv@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-15.0.0.tgz#2a585639429bf2c2c62f387f0fffde9c75aafde0" + integrity sha512-/l1sXXm79ry34KwwS0y4oVZjB468iw/6u9g1W26dtexKcIJAnVL2pMF+hxQwzZ7LutxOwEgtym9eIxvX33CMKg== + +dotenv@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" + integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== dotenv@^9.0.2: version "9.0.2" @@ -8566,7 +8654,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.0.2, ejs@^3.1.6: +ejs@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== @@ -8574,9 +8662,9 @@ ejs@^3.0.2, ejs@^3.1.6: jake "^10.6.1" electron-to-chromium@^1.4.17: - version "1.4.53" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.53.tgz#5d80a91c399b44952ef485857fb5b9d4387d2e60" - integrity sha512-rFveSKQczlcav+H3zkKqykU6ANseFwXwkl855jOIap5/0gnEcuIhv2ecz6aoTrXavF6I/CEBeRnBnkB51k06ew== + version "1.4.57" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz#2b2766df76ac8dbc0a1d41249bc5684a31849892" + integrity sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw== elegant-spinner@^1.0.1: version "1.0.1" @@ -8659,7 +8747,7 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@2.3.6, enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@2.3.6, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -8838,9 +8926,9 @@ eslint-import-resolver-typescript@^2.5.0: tsconfig-paths "^3.9.0" eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: debug "^3.2.7" find-up "^2.1.0" @@ -8872,12 +8960,12 @@ eslint-plugin-import@2.25.4: resolve "^1.20.0" tsconfig-paths "^3.12.0" -eslint-plugin-jest@^25.3.4: - version "25.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== +eslint-plugin-jest@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.0.0.tgz#f83a25a23ab90ce5b375b1d44389b8c391be5ce8" + integrity sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg== dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" + "@typescript-eslint/utils" "^5.10.0" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -8896,10 +8984,10 @@ eslint-plugin-promise@^6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-unicorn@40.0.0: - version "40.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.0.0.tgz#a8226cab9c62b303e44fc41b1333a146e5676b86" - integrity sha512-5GRXISfBk8jMmYk1eeNDw8zSRnWTxBjWkzx2Prre6E2/yLu2twozZ3EomLWCBu9nWms/ZE361BItyMQwfnG1qA== +eslint-plugin-unicorn@40.1.0: + version "40.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.1.0.tgz#48975360e39d23df726e4b33e8dd5d650e184832" + integrity sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig== dependencies: "@babel/helper-validator-identifier" "^7.15.7" ci-info "^3.3.0" @@ -8916,10 +9004,10 @@ eslint-plugin-unicorn@40.0.0: semver "^7.3.5" strip-indent "^3.0.0" -eslint-plugin-vue@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.3.0.tgz#2ae4f915ed3541a58c4a4c1145c1e60b86aa7e85" - integrity sha512-IIuLHw4vQxGlHcoP2dG6t/2OVdQf2qoyAzEGAxreU1afZOHGA7y3TWq8I+r3ZA6Wjs6xpeUWGHlT31QGr9Rb5g== +eslint-plugin-vue@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.4.0.tgz#16e59b356386b4428fb7d886b6d8ee5df2bbc09d" + integrity sha512-Ga96QRG8GA9AyzKtEDxqYRCMt/VJM4SLkcNmm4FvUiFBE4jpaBr25unRBi9iVmHLYhA9EZ/4I+jD8n1vfWzyAA== dependencies: eslint-utils "^3.0.0" natural-compare "^1.4.0" @@ -8974,15 +9062,15 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== -eslint@8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e" - integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw== +eslint@8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d" + integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -8991,11 +9079,10 @@ eslint@8.6.0: cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" eslint-scope "^7.1.0" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.1.0" + eslint-visitor-keys "^3.2.0" espree "^9.3.0" esquery "^1.4.0" esutils "^2.0.2" @@ -9004,7 +9091,7 @@ eslint@8.6.0: functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" globals "^13.6.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" @@ -9015,9 +9102,7 @@ eslint@8.6.0: minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" regexpp "^3.2.0" - semver "^7.2.1" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" @@ -9435,6 +9520,14 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.4.tgz#e8c6567f80ad7fc22fd302e7dcb72bafde9c1717" + integrity sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -9622,9 +9715,9 @@ flat@^5.0.0, flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flatten@^1.0.2: version "1.0.3" @@ -9718,6 +9811,13 @@ formdata-node@^4.3.1: node-domexception "1.0.0" web-streams-polyfill "4.0.0-beta.1" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -10302,6 +10402,15 @@ graphql-request@^3.3.0: extract-files "^9.0.0" form-data "^3.0.0" +graphql-request@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.0.0.tgz#5e4361d33df1a95ccd7ad23a8ebb6bbca9d5622f" + integrity sha512-cdqQLCXlBGkaLdkLYRl4LtkwaZU6TfpE7/tnUQFl3wXfUPWN74Ov+Q61VuIh+AltS789YfGB6whghmCmeXLvTw== + dependencies: + cross-fetch "^3.0.6" + extract-files "^9.0.0" + form-data "^3.0.0" + graphql-sse@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/graphql-sse/-/graphql-sse-1.0.6.tgz#4f98e0a06f2020542ed054399116108491263224" @@ -10329,10 +10438,10 @@ graphql-ws@^5.4.1: resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.5.5.tgz#f375486d3f196e2a2527b503644693ae3a8670a9" integrity sha512-hvyIS71vs4Tu/yUYHPvGXsTgo0t3arU820+lT5VjZS2go0ewp2LqyCgxEN56CzOG7Iys52eRhHBiD1gGRdiQtw== -graphql@*, graphql@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.2.0.tgz#de3150e80f1fc009590b92a9d16ab1b46e12b656" - integrity sha512-MuQd7XXrdOcmfwuLwC2jNvx0n3rxIuNYOxUtiee5XOmfrWo613ar2U8pE7aHAKh8VwfpifubpD9IP+EdEAEOsA== +graphql@*, graphql@^16.3.0: + version "16.3.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.3.0.tgz#a91e24d10babf9e60c706919bb182b53ccdffc05" + integrity sha512-xm+ANmA16BzCT5pLjuXySbQVFwH3oJctUVdy81w1sV0vBU0KgDdBGtxQOUd5zqOBk/JayAFeG8Dlmeq74rjm/A== graphql@^15.5.1: version "15.8.0" @@ -11108,23 +11217,23 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipx@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/ipx/-/ipx-0.8.0.tgz#cc668ac4d27e5bb4c407069d450c00172cc0e6b7" - integrity sha512-6jW8SIJgw98wE82G4TYQ/snCNh5+MortHyNfX89zmTIQBOnq5MeaKoo+UNEU7wPpD2SgLjJJIZ6oPRqovYiKmw== +ipx@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/ipx/-/ipx-0.9.2.tgz#91c43de659df36c5082944b1145ad050d852513c" + integrity sha512-AxFfZUBobGvqepvqjznzq7VElind7cecYwmxv/E21kHzpFHXHusiNNpGzTbK6NpwWY3E0JhWmqBAUDx3slSUKg== dependencies: consola "^2.15.3" defu "^5.0.0" destr "^1.1.0" etag "^1.8.1" - fs-extra "^10.0.0" - image-meta "^0.0.1" + image-meta "^0.1.1" is-valid-path "^0.1.1" - listhen "^0.2.4" - node-fetch "^2.6.1" + listhen "^0.2.5" + ohmyfetch "^0.4.2" + pathe "^0.2.0" sharp "^0.29.0" ufo "^0.7.9" - xss "^1.0.9" + xss "^1.0.10" is-absolute-url@^2.0.0: version "2.1.0" @@ -11691,13 +11800,13 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-dompurify@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-0.17.0.tgz#4e6abf82d1f343222d82d2fc057322bc431c0a06" - integrity sha512-Du051CR3B4nHeuInAJvYEDjQCWzsro7IPKSlNfPBGnQtuF/kbFJpB8VoabZqlcntDOy0GAbbRCgVfdZCnV3lDA== +isomorphic-dompurify@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-0.18.0.tgz#d8ce16d8dcd50ac95a7ebbd7d4d099f920c44600" + integrity sha512-JY7NuuaiBswg8/Nf5Vy0leWpdn5m2GQD0qRojVFg86nhLsJGfVo4qw4i/kvjxIFoXXd+SMrrQUYXSn6QwccnmA== dependencies: - "@types/dompurify" "^2.3.1" - dompurify "^2.3.3" + "@types/dompurify" "^2.3.3" + dompurify "^2.3.5" jsdom "^19.0.0" isomorphic-fetch@^3.0.0: @@ -12254,9 +12363,9 @@ jimp-compact@^0.16.1: integrity sha512-F/r0L283J46xiGUEvUb3jxUsei7aB94g3NRIMuJ4WhbpEcJV2U5GpaUNJLnBiOP2+x4lLTI4UiRVrmbrXQAOMA== jiti@^1.9.2: - version "1.12.13" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.12.13.tgz#652a018606d1971e219eb122e26bdbdbac497a53" - integrity sha512-OhsYlXc2HLjuHZML6Ay68/l0KT9lXMw9zo1+TMIaxW8c0TS+kJnxgx+he4yBPFiRHi7UIsG2ANZjHl2zU86j2g== + version "1.12.15" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.12.15.tgz#8f6a141c06524ab32e05d5e3c9b33eeda54ae775" + integrity sha512-/+K89y6KJA2nISbWrlc/773XdpDgSQq/LdQ+ZZyw2jRxUNyquPtbsDCCCMRzzNORUgroUGc4nAXxJEnQvpViCA== jju@^1.1.0: version "1.4.0" @@ -12771,10 +12880,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^12.1.7: - version "12.3.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.1.tgz#d475b0c0d0a12d91dde58a429ac6268dea485f06" - integrity sha512-Ocht/eT+4/siWOZDJpNUKcKX2UeWW/pDbohJ4gRsrafAjBi79JK8kiNVk2ciIVNKdw0Q4ABptl2nr6uQAlRImw== +lint-staged@^12.3.3: + version "12.3.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" + integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -12790,7 +12899,7 @@ lint-staged@^12.1.7: supports-color "^9.2.1" yaml "^1.10.2" -listhen@^0.2.4: +listhen@^0.2.5: version "0.2.6" resolved "https://registry.yarnpkg.com/listhen/-/listhen-0.2.6.tgz#1205766d6cf6a4232c0bbb3cbce239dc2ae1a9eb" integrity sha512-/xpN3784qRxyxS9wjiVB0vWE9NqoT+5nvOw5KBRB4tXtsjp7y83CJe6Gi/WtoTkkDqXwhSNStqaJ3r/7J0ZCDA== @@ -13098,6 +13207,11 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= +lodash.unescape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -13713,7 +13827,7 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mocha@^9.1.4: +mocha@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.0.tgz#2bfba73d46e392901f877ab9a47b7c9c5d0275cc" integrity sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q== @@ -13861,10 +13975,10 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msw@^0.36.4: - version "0.36.7" - resolved "https://registry.yarnpkg.com/msw/-/msw-0.36.7.tgz#c20fa4fe21d9567af50bd6e5a4237d7b2545ad70" - integrity sha512-D991x0e+nuX9ebdSMSo4hESzY/wIkcwLxlc769B6aLUMqUe1CaIdTyV9+yBIRH/RAiXmnQRaGrFyjSaKV2KNFA== +msw@^0.36.8: + version "0.36.8" + resolved "https://registry.yarnpkg.com/msw/-/msw-0.36.8.tgz#33ff8bfb0299626a95f43d0e4c3dc2c73c17f1ba" + integrity sha512-K7lOQoYqhGhTSChsmHMQbf/SDCsxh/m0uhN6Ipt206lGoe81fpTmaGD0KLh4jUxCONMOUnwCSj0jtX2CM4pEdw== dependencies: "@mswjs/cookies" "^0.1.7" "@mswjs/interceptors" "^0.12.7" @@ -13995,9 +14109,9 @@ no-case@^3.0.4: tslib "^2.0.3" node-abi@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.5.0.tgz#26e8b7b251c3260a5ac5ba5aef3b4345a0229248" - integrity sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw== + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.8.0.tgz#679957dc8e7aa47b0a02589dbfde4f77b29ccb32" + integrity sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw== dependencies: semver "^7.3.5" @@ -14019,7 +14133,7 @@ node-cache@^4.1.1: clone "2.x" lodash "^4.17.15" -node-domexception@1.0.0: +node-domexception@1.0.0, node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== @@ -14031,6 +14145,15 @@ node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node- dependencies: whatwg-url "^5.0.0" +node-fetch@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.0.tgz#59390db4e489184fa35d4b74caf5510e8dfbaf3b" + integrity sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-forge@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" @@ -14237,7 +14360,7 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" -npm-check-updates@^12.1.0: +npm-check-updates@^12.1.0, npm-check-updates@^12.2.1: version "12.2.1" resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-12.2.1.tgz#1f25fec9863c149e4bae84833599050701dcd530" integrity sha512-fqfH2USwTLgho8HaC79i5Bl+RH3zV15AbdtJQTCaOAp9L3D2W8k+jsfuwee2vSTUrt6IUTXPbzwUIYo4/TQdYA== @@ -14573,6 +14696,16 @@ object.values@^1.1.0, object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +ohmyfetch@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.15.tgz#c7059d2952abacfaaaebd82efab754aca53a5c04" + integrity sha512-AJKiMh4s+VYLLiAQi3tZn4Zh/xYr94nOX9FLGVVdbXo7QWrrKIfGweACIKaB06PjQdZtkICzcmNN+CQSR+9vQQ== + dependencies: + destr "^1.1.0" + node-fetch "^3.0.0" + ufo "^0.7.9" + undici "^4.9.5" + omit-deep@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/omit-deep/-/omit-deep-0.3.0.tgz#21c8af3499bcadd29651a232cbcacbc52445ebec" @@ -15190,6 +15323,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" + integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -16035,11 +16173,11 @@ postcss@7.x.x, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, source-map "^0.6.1" prebuild-install@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.0.tgz#3c5ce3902f1cb9d6de5ae94ca53575e4af0c1574" - integrity sha512-IvSenf33K7JcgddNz2D5w521EgO+4aMMjFt73Uk9FRzQ7P+QZPKrp7qPsDydsSwjGt3T5xRNnM1bj1zMTD5fTA== + version "7.0.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.1.tgz#c10075727c318efe72412f333e0ef625beaf3870" + integrity sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg== dependencies: - detect-libc "^1.0.3" + detect-libc "^2.0.0" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" @@ -16134,7 +16272,7 @@ process@^0.11.10, process@~0.11.0: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -17107,7 +17245,7 @@ rollup-plugin-typescript2@^0.31.1: resolve "1.20.0" tslib "2.2.0" -rollup@^2.64.0: +rollup@^2.66.1: version "2.66.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.66.1.tgz#366b0404de353c4331d538c3ad2963934fcb4937" integrity sha512-crSgLhSkLMnKr4s9iZ/1qJCplgAgrRY+igWv8KhG/AjKOJ0YX/WpmANyn8oxrw+zenF3BXWDLa7Xl/QZISH+7w== @@ -17322,7 +17460,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -18412,9 +18550,9 @@ syntax-error@^1.1.1: acorn-node "^1.2.0" systeminformation@^5.7: - version "5.10.7" - resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.10.7.tgz#82aecd2509cfa0f22eb7ec8c59f5b83dc603def1" - integrity sha512-elAv0h67BDuafy+zuS/yF9QCgQcROXaK9AXMnLz+NHq/LRv7p2/k5qWIwaVxwsSZE8r+dVyIw0BtFO/FoHtZaw== + version "5.11.0" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.11.0.tgz#2060779e1e7c7372192dbcd850c65cfd85f4ea71" + integrity sha512-mI/5nFK7NUe9Qbmy65WoB5TlCWKAhP4kG0w6uR2mZM8Mpdi8b45b3hTIK3W5+kQYZnYFWeS9/O5nn5rdcSvqfA== tapable@^1.0.0, tapable@^1.0.0-beta.5, tapable@^1.1.3: version "1.1.3" @@ -19020,7 +19158,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.4.3, typescript@^4.5.4: +typescript@^4.4.3, typescript@^4.5.4, typescript@^4.5.5: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== @@ -19035,6 +19173,11 @@ ua-parser-js@^0.7.28, ua-parser-js@^0.7.30: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +ufo@^0.7.10: + version "0.7.10" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.10.tgz#278942c326e3da344b6b97637ed7f322e817261e" + integrity sha512-YTnDRlE1cIofRqOFN8ioAbz9qenDvkgVMSn0cnxvIDjM9sfEOMKB0ybMr+otSlCXMfQ/X35haYRoI7Nua82RrA== + ufo@^0.7.4, ufo@^0.7.7, ufo@^0.7.9: version "0.7.9" resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.9.tgz#0268e3734b413c9ed6f3510201f42372821b875c" @@ -19091,6 +19234,11 @@ undici@^4.9.3: resolved "https://registry.yarnpkg.com/undici/-/undici-4.12.2.tgz#f2fc50ca77a774ed8c0e7067c9361ee18a2f422b" integrity sha512-RZj6SbkQFs5O/pJCboGEo6l5DTCe3Zg4r/8Z/0/2qnIv08+s6zL4akohOPMYWKc3mzwv15WTvsfMWaafZcvYoQ== +undici@^4.9.5: + version "4.13.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-4.13.0.tgz#7d10fe150c3241a6b3b0eba80eff59c9fb40f359" + integrity sha512-8lk8S/f2V0VUNGf2scU2b+KI2JSzEQLdCyRNRF3XmHu+5jectlSDaPSBCXAHFaUlt1rzngzOBVDgJS9/Gue/KA== + unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -19539,7 +19687,7 @@ vue-demi@^0.12.1: resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.1.tgz#f7e18efbecffd11ab069d1472d7a06e319b4174c" integrity sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw== -vue-eslint-parser@^8.0.0, vue-eslint-parser@^8.0.1: +vue-eslint-parser@^8.0.0, vue-eslint-parser@^8.0.1, vue-eslint-parser@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.2.0.tgz#8c3990deb901b0d528d99f4d052a831cd1d0284c" integrity sha512-hvl8OVT8imlKk/lQyhkshqwQQChzHETcBd5abiO4ePw7ib7QUZLfW+2TUrJHKUvFOCFRJrDin5KJO9OHzB5bRQ== @@ -19748,7 +19896,7 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== -web-streams-polyfill@^3.2.0: +web-streams-polyfill@^3.0.3, web-streams-polyfill@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== @@ -20178,7 +20326,7 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xss@^1.0.9: +xss@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.10.tgz#5cd63a9b147a755a14cb0455c7db8866120eb4d2" integrity sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw== From f4200c9fdc743a14a52e503cbaf9f21478030d42 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Tue, 8 Mar 2022 09:33:17 +0100 Subject: [PATCH 20/37] chore: updated packages versions (#695) --- internals/eslint-import/package.json | 2 +- internals/eslint-jest/package.json | 2 +- internals/eslint-typescript/package.json | 2 +- internals/eslint-vue/package.json | 2 +- internals/eslint/package.json | 2 +- packages/api-client/package.json | 2 +- packages/composables/package.json | 4 ++-- packages/theme/package.json | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internals/eslint-import/package.json b/internals/eslint-import/package.json index 757917c9a..c50ed6a06 100644 --- a/internals/eslint-import/package.json +++ b/internals/eslint-import/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-import", - "version": "1.0.0", + "version": "1.0.0-rc.6", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-jest/package.json b/internals/eslint-jest/package.json index 171acbd8d..418868040 100644 --- a/internals/eslint-jest/package.json +++ b/internals/eslint-jest/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-jest", - "version": "1.0.0", + "version": "1.0.0-rc.6", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-typescript/package.json b/internals/eslint-typescript/package.json index 6386cb33f..d69df46b7 100644 --- a/internals/eslint-typescript/package.json +++ b/internals/eslint-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-typescript", - "version": "1.0.0", + "version": "1.0.0-rc.6", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-vue/package.json b/internals/eslint-vue/package.json index 283d28195..94c062619 100644 --- a/internals/eslint-vue/package.json +++ b/internals/eslint-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-vue", - "version": "1.0.0", + "version": "1.0.0-rc.6", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint/package.json b/internals/eslint/package.json index 217409466..a78c451b5 100644 --- a/internals/eslint/package.json +++ b/internals/eslint/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-base", - "version": "1.0.0", + "version": "1.0.0-rc.6", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 0f66864ee..b7395e3ba 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/magento-api", - "version": "1.0.0", + "version": "1.0.0-rc.6", "sideEffects": false, "homepage": "https://github.com/vuestorefront/magento2", "bugs": { diff --git a/packages/composables/package.json b/packages/composables/package.json index 7c8bf8059..7f14c33c3 100644 --- a/packages/composables/package.json +++ b/packages/composables/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/magento", - "version": "1.0.0", + "version": "1.0.0-rc.6", "license": "MIT", "homepage": "https://github.com/vuestorefront/magento2", "bugs": { @@ -23,7 +23,7 @@ }, "dependencies": { "@vue-storefront/core": "~2.5.4", - "@vue-storefront/magento-api": "^1.0.0", + "@vue-storefront/magento-api": "^1.0.0-rc.6", "@vue/composition-api": "^1.4.1", "cookie-universal": "^2.1.5", "vue": "^2.6.14", diff --git a/packages/theme/package.json b/packages/theme/package.json index 12e0d7911..b22db5ae6 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/magento-theme", - "version": "1.0.0", + "version": "1.0.0-rc.6", "private": true, "license": "MIT", "homepage": "https://github.com/vuestorefront/magento2", @@ -36,7 +36,7 @@ "@storefront-ui/vue": "^0.11.5", "@vue-storefront/cache": "^2.5.4", "@vue-storefront/core": "~2.5.4", - "@vue-storefront/magento": "^1.0.0", + "@vue-storefront/magento": "^1.0.0-rc.6", "@vue-storefront/middleware": "~2.5.4", "@vue-storefront/nuxt": "~2.5.4", "@vue-storefront/nuxt-theme": "~2.5.4", From befb820418e79238744ee86259010ec9fe1c8fe6 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Tue, 8 Mar 2022 11:28:01 +0100 Subject: [PATCH 21/37] chore: updated readme (#696) --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index f01db93cb..89684f24c 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,7 @@ ## Vue Storefront 2 integration with Magento This project is a Magento 2 integration for Vue Storefront 2. -This integration developed by superheroes from [Caravel](https://github.com/caravelx) ❤️ -

- -
+
From a54ecb3f0867acf5876fea269c66865bf92e8328 Mon Sep 17 00:00:00 2001 From: Maya Shavin <6650139+mayashavin@users.noreply.github.com> Date: Tue, 8 Mar 2022 20:06:53 +0200 Subject: [PATCH 22/37] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 89684f24c..e5b9451f5 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,9 @@ Thanks go to these wonderful people 🙌:
Dominik Deimel

💻 📖
Lior Lindvor

💻 + +
Maya Shavin

💻📖 + From 4bffc6b06b35538c0db50a9e2644aaa7b774963d Mon Sep 17 00:00:00 2001 From: Maya Shavin Date: Tue, 8 Mar 2022 20:16:04 +0200 Subject: [PATCH 23/37] doc: update override-queries --- docs/guide/override-queries.md | 140 ++++++++++++++++++--------------- 1 file changed, 77 insertions(+), 63 deletions(-) diff --git a/docs/guide/override-queries.md b/docs/guide/override-queries.md index 3e5d6a1ae..9e0c5cd9c 100644 --- a/docs/guide/override-queries.md +++ b/docs/guide/override-queries.md @@ -1,82 +1,96 @@ -# Override queries +# Override default queries -To override one or multiple queries without creating a custom composable for each usage, you can override the defaults ones with the `customQueries` attribute in the `middleware.config.js`file. +To override one or multiple queries without creating a custom composable for each usage, you can override the defaults ones with the `customQueries` attribute in the `middleware.config.js`file. ## Examples +Below is the example on how to override the default query for `productList`. + ### Overriding query -In this example we will override `products` query by adding `image` field and one `custom_attribute`. + +In this example we will override `products` query by adding `cld_data` field that will retrieve Cloudinary image data from Magento. + +::: warning +In order to query `cld_data`, you need to have [Cloudinary Magento extension](https://cloudinary.com/documentation/magento_integration) installed in your Magento project. +::: --- -Because queries can be long so it will be best to keep all custom queries in a dedicated directory. -Inside the theme's root create `customQueries` directory, then copy `productList.ts` file from api-client lib into the created directory. Now you can easily modify the query inside your custom queries catalog. As we wanted to add `image` and `custom_attribute`file after the modification will look like the following example: -```typescript -import gql from 'graphql-tag'; - -export default gql` - query productsList($search: String = "", $filter: ProductAttributeFilterInput, $pageSize: Int = 10, $currentPage: Int = 1, $sort: ProductAttributeSortInput) { - products(search: $search, filter: $filter, pageSize: $pageSize, currentPage: $currentPage, sort: $sort) { - aggregations { - attribute_code - label - options { + +1. Inside the theme's root let's create a `customQueries` directory, and [copy the content of the default `productsList` query from `vuestorefront/magento2/packages/api-client/src/api/products/productsList.ts` file](https://github.com/vuestorefront/magento2/blob/main/packages/api-client/src/api/products/productsList.ts) into the newly created directory. + + You can modify the query inside this file by adding `cld_data` with fields to the existing query as below: + + ```typescript + import gql from 'graphql-tag'; + + export default gql` + query productsList($search: String = "", $filter: ProductAttributeFilterInput, $pageSize: Int = 10, $currentPage: Int = 1, $sort: ProductAttributeSortInput) { + products(search: $search, filter: $filter, pageSize: $pageSize, currentPage: $currentPage, sort: $sort) { + aggregations { + attribute_code label - value - count + options { + label + value + count + } } - } - items { - ... - image { - url - position - disabled - label + items { + //... + cld_data { + image + thumbnail + } + //... } - custom_attribute - ... - } - page_info { - current_page - page_size - total_pages + page_info { + current_page + page_size + total_pages + } + total_count } - total_count } - } -`; - -``` - -Once you prepared custom query you must register it so the application will know where it is and how to use it. Inside the theme's `middleware.config.js`, under `integrations.magento` add `customQueries` field. Import your custom query and configure it as in the following example: - -```js -import customProductsQuery from './customQueries/productList'; - -const config = require('./config.js'); -const cookieNames = require('./enums/cookieNameEnum'); - -module.exports = { - integrations: { - magento: { - customQueries: { - /** ******************** - ** HERE : use the default query key to override it. - ********************** */ - products: ({ query, variables }) => { - return { query: customProductsQuery, variables }; // Your custom query + `; + + ``` + + ::: warning + Make sure you have `graphgl-tag` installed as dependency prior using this sample code. + ::: + +2. In `middleware.config.js`, import the modified query + + ```js + import customProductsQuery from './customQueries/productList'; + ``` + +3. Add a new property field `customQueries` under `integrations.magento` with the following code: + + ```js + module.exports = { + integrations: { + magento: { + customQueries: { + /* This is where we override the default query */ + products: (context) => ({ + ...context, + query: customProductsQuery, // Your custom query + }) + }, + //... }, }, - ... - }, - }, -}; - + }; -``` +4. Now you can restart your dev environment and view the updated data queried. -**Important** +::: warning +`thumbnail` is a must-have field to query. It is used for our default image rendering (for Nuxt image). DO NOT remove it from the query in any circumstance. +::: -Keep in mind that only attributes present on `ProductInterface` are accessible via GraphQL without any additional modification on the Magento side. To be able to get any custom attributes you must extend GraphQL schema in the Magento2. Follow [Magento 2 documentation](https://devdocs.magento.com/guides/v2.4/graphql/develop/extend-existing-schema.html) to achieve that. +### Important notes +**Only** attributes presented on `ProductInterface` are accessible via GraphQL without any additional modification on the Magento side. +To be able to get any custom attributes you must extend GraphQL schema in the Magento2. Follow [Magento 2 documentation](https://devdocs.magento.com/guides/v2.4/graphql/develop/extend-existing-schema.html) to achieve that. From 9d0f0b0f2886ceb3890452a1e94472376b97d4b0 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Wed, 9 Mar 2022 13:24:36 +0100 Subject: [PATCH 24/37] docs: removed duplicated section from docs --- docs/.vuepress/config.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index a619ae8f2..fcc31d6b1 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -81,14 +81,6 @@ module.exports = { ['/guide/ssr', 'Server Side Rendering Cache'], ] }, - { - title: 'Performance', - collapsable: false, - children: [ - ['/guide/graphql-get', 'Varnish & GET for GraphQL Queries'], - ['/guide/ssr', 'Server Side Rendering Cache'], - ] - }, { title: 'Composables', children: [ From 96b5bab153203f88a8e0ba4b2a37944e4b5249a9 Mon Sep 17 00:00:00 2001 From: Maya Shavin <6650139+mayashavin@users.noreply.github.com> Date: Mon, 14 Mar 2022 14:25:07 +0200 Subject: [PATCH 25/37] docs(guide): update override-queries.md --- docs/guide/override-queries.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/guide/override-queries.md b/docs/guide/override-queries.md index 9e0c5cd9c..1a105c59f 100644 --- a/docs/guide/override-queries.md +++ b/docs/guide/override-queries.md @@ -56,7 +56,7 @@ In order to query `cld_data`, you need to have [Cloudinary Magento extension](ht ``` ::: warning - Make sure you have `graphgl-tag` installed as dependency prior using this sample code. + Make sure you have `graphgl-tag` installed as dependency prior using this sample code. ::: 2. In `middleware.config.js`, import the modified query @@ -82,10 +82,11 @@ In order to query `cld_data`, you need to have [Cloudinary Magento extension](ht }, }, }; + ``` 4. Now you can restart your dev environment and view the updated data queried. -::: warning +:::warning `thumbnail` is a must-have field to query. It is used for our default image rendering (for Nuxt image). DO NOT remove it from the query in any circumstance. ::: From 17131e181a5266e0bfa5bdd0e79c0750f5becd2c Mon Sep 17 00:00:00 2001 From: Filip Sobol Date: Wed, 13 Apr 2022 11:14:30 +0200 Subject: [PATCH 26/37] docs: remove Roadmap document (#852) --- docs/.vuepress/config.js | 2 -- docs/guide/roadmap.md | 32 -------------------------------- 2 files changed, 34 deletions(-) delete mode 100644 docs/guide/roadmap.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index fcc31d6b1..6534eae39 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -47,7 +47,6 @@ module.exports = { { text: 'Core Documentation', link: 'https://docs.vuestorefront.io/v2/' }, { text: 'Demo', link: 'https://demo-magento2.europe-west1.gcp.storefrontcloud.io/' }, { text: 'GitHub', link: 'https://github.com/vuestorefront/magento2'}, - { text: 'Roadmap', link: 'https://docs.vuestorefront.io/magento/guide/roadmap.html'}, { text: 'Environments', link: 'https://docs.vuestorefront.io/magento/guide/environments.html'} ], sidebar: [ @@ -59,7 +58,6 @@ module.exports = { ['/guide/environments', 'Environments'], ['/guide/functional-catalog', 'Functional catalog'], ['/guide/about', 'About'], - ['/guide/roadmap', 'Roadmap'], ] }, { diff --git a/docs/guide/roadmap.md b/docs/guide/roadmap.md deleted file mode 100644 index 52c29ff42..000000000 --- a/docs/guide/roadmap.md +++ /dev/null @@ -1,32 +0,0 @@ -# Roadmap - -The current goal is to release a stable 1.0.0 version by the end of February. Details below. - -## January 2022 - -- finish multi-store functionality [done] -- performance improvements - - analysis [done] - - improve the speed of communication with Magento [in progress] - - Redis Caching [done] - - CDNs [done] -- Design QA & improvements [done] - -## February 2022 - -- performance improvements - - meet web core vitals or at least 80 score -- quality assurance -- user acceptance tests - -### Milestone: Release stable 1.0.0 version by the end of February - -## March 2022 - -- Load tests -- Accessibility tests & improvements -- extensibility - - improve docs - - add the possibility to add plugins - - add the possibility to install external extensions - - theming From 7810250c2aa4fa796aa0ede6e8fad300973e5c01 Mon Sep 17 00:00:00 2001 From: Heitor Ramon Ribeiro Date: Wed, 20 Apr 2022 03:27:55 -0300 Subject: [PATCH 27/37] docs: updated contributors and fixed discord channel (#888) --- .all-contributorsrc | 56 +++++++++++++++++++++++++++++++--- README.md | 24 ++++++++------- docs/guide/about.md | 17 ++++++++--- docs/guide/getting-started.md | 2 +- packages/api-client/README.md | 20 +++++++----- packages/composables/README.md | 20 +++++++----- packages/theme/README.md | 15 ++++++--- 7 files changed, 115 insertions(+), 39 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 944b65f28..8b7a1f4fa 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -75,7 +75,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/789614?v=4", "profile": "https://github.com/KevinGorjan", "contributions": [ - "code" + "code", + "doc" ] }, { @@ -84,7 +85,11 @@ "avatar_url": "https://avatars.githubusercontent.com/u/16045377?v=4", "profile": "https://github.com/bartoszherba", "contributions": [ - "code" + "code", + "doc", + "maintenance", + "mentoring", + "review" ] }, { @@ -94,7 +99,13 @@ "profile": "https://github.com/Frodigo", "contributions": [ "code", - "projectManagement" + "projectManagement", + "business", + "doc", + "ideas", + "maintenance", + "mentoring", + "review" ] }, { @@ -116,7 +127,8 @@ "contributions": [ "question", "mentoring", - "review" + "review", + "doc" ] }, { @@ -158,6 +170,42 @@ "contributions": [ "code" ] + }, + { + "login": "sethidden", + "name": "Artur Tagisow", + "avatar_url": "https://avatars.githubusercontent.com/u/5359825?v=4", + "profile": "https://github.com/sethidden", + "contributions": [ + "code" + ] + }, + { + "login": "jonathanribas", + "name": "Jonathan Ribas", + "avatar_url": "https://avatars.githubusercontent.com/u/3003782?v=4", + "profile": "https://github.com/jonathanribas", + "contributions": [ + "code" + ] + }, + { + "login": "Aliaaaam", + "name": "Ali Ghanei", + "avatar_url": "https://avatars.githubusercontent.com/u/88658555?v=4", + "profile": "https://github.com/Aliaaaam", + "contributions": [ + "code" + ] + }, + { + "login": "mayashavin", + "name": "Maya Shavin", + "avatar_url": "https://avatars.githubusercontent.com/u/6650139?v=4", + "profile": "https://github.com/mayashavin", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 5 diff --git a/README.md b/README.md index e5b9451f5..38f934641 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,9 @@ ![Twitter Follow](https://img.shields.io/twitter/follow/vuestorefront?style=social) ![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCkm1F3Cglty3CE1QwKQUhhg?style=social) [![Discord](https://img.shields.io/discord/770285988244750366?label=join%20discord&logo=Discord&logoColor=white)](https://discord.vuestorefront.io) - + +[![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors-) + ## Vue Storefront 2 integration with Magento @@ -17,10 +19,6 @@ This project is a Magento 2 integration for Vue Storefront 2.
- -[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) - - ## How to start if you want to try out the integration ``` @@ -109,11 +107,12 @@ Find more information about the module [GraphQl Custom Config](https://github.co ## Support -If you have any questions about this integration we will be happy to answer them on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io). +If you have any questions about this integration we will be happy to answer them on `magento2` channel on [our Discord](http://discord.vuestorefront.io). ## Contributors ✨ ### Honorable Mentions +- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -132,20 +131,23 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 -
Bartosz Herba

💻 -
Marcin Kwiatkowski

💻 📆 +
Kevin Gorjan

💻 📖 +
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 +
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 +
Filip Sobol

💬 🧑‍🏫 👀 📖
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 -
Maya Shavin

💻📖 +
Artur Tagisow

💻 +
Jonathan Ribas

💻 +
Ali Ghanei

💻 +
Maya Shavin

📖 diff --git a/docs/guide/about.md b/docs/guide/about.md index abf9b9115..d658166d3 100644 --- a/docs/guide/about.md +++ b/docs/guide/about.md @@ -8,11 +8,12 @@ ## Support -If you have any questions about this integration we will be happy to answer them on `magento2-vsf2` channel on [our Discord](discord.vuestorefront.io). +If you have any questions about this integration we will be happy to answer them on `magento2` channel on [our Discord](discord.vuestorefront.io). ## Contributors ✨ ### Honorable Mentions +- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -31,18 +32,24 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 -
Bartosz Herba

💻 -
Marcin Kwiatkowski

💻 📆 +
Kevin Gorjan

💻 📖 +
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 +
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 +
Filip Sobol

💬 🧑‍🏫 👀 📖
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 + +
Artur Tagisow

💻 +
Jonathan Ribas

💻 +
Ali Ghanei

💻 +
Maya Shavin

📖 + diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 9e747f457..74e016beb 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -11,5 +11,5 @@ vsf init && cd && yarn && yarn dev ## How to start if you want to contribute? -Want to contribute? Ping us on `magento2-vsf2` channel on [our Discord](https://discord.vuestorefront.io)! +Want to contribute? Ping us on `magento2` channel on [our Discord](https://discord.vuestorefront.io)! diff --git a/packages/api-client/README.md b/packages/api-client/README.md index e8f3a1a99..ddb826077 100644 --- a/packages/api-client/README.md +++ b/packages/api-client/README.md @@ -30,7 +30,7 @@ vsf init && cd && yarn && yarn dev ## How to start if you want to contribute? -Want to contribute? Ping us on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io)! +Want to contribute? Ping us on `magento2` channel on [our Discord](http://discord.vuestorefront.io)! ### Requirements: - NodeJS v16 or later @@ -95,11 +95,12 @@ Find more information about the module [GraphQl Custom Config](https://github.co ## Support -If you have any questions about this integration we will be happy to answer them on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io). +If you have any questions about this integration we will be happy to answer them on `magento2` channel on [our Discord](http://discord.vuestorefront.io). ## Contributors ✨ ### Honorable Mentions +- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -118,18 +119,24 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 -
Bartosz Herba

💻 -
Marcin Kwiatkowski

💻 📆 +
Kevin Gorjan

💻 📖 +
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 +
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 +
Filip Sobol

💬 🧑‍🏫 👀 📖
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 + +
Artur Tagisow

💻 +
Jonathan Ribas

💻 +
Ali Ghanei

💻 +
Maya Shavin

📖 + @@ -138,4 +145,3 @@ Thanks go to these wonderful people 🙌: This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - diff --git a/packages/composables/README.md b/packages/composables/README.md index 0433f13e5..2b211aa20 100644 --- a/packages/composables/README.md +++ b/packages/composables/README.md @@ -30,7 +30,7 @@ vsf init && cd && yarn && yarn dev ## How to start if you want to contribute? -Want to contribute? Ping us on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io)! +Want to contribute? Ping us on `magento2` channel on [our Discord](http://discord.vuestorefront.io)! ### Requirements: - NodeJS v16 or later @@ -95,11 +95,12 @@ Find more information about the module [GraphQl Custom Config](https://github.co ## Support -If you have any questions about this integration we will be happy to answer them on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io). +If you have any questions about this integration we will be happy to answer them on `magento2` channel on [our Discord](http://discord.vuestorefront.io). ## Contributors ✨ ### Honorable Mentions +- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -118,18 +119,24 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 -
Bartosz Herba

💻 -
Marcin Kwiatkowski

💻 📆 +
Kevin Gorjan

💻 📖 +
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 +
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 +
Filip Sobol

💬 🧑‍🏫 👀 📖
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 + +
Artur Tagisow

💻 +
Jonathan Ribas

💻 +
Ali Ghanei

💻 +
Maya Shavin

📖 + @@ -138,4 +145,3 @@ Thanks go to these wonderful people 🙌: This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - diff --git a/packages/theme/README.md b/packages/theme/README.md index 0d7928a01..c5247cf11 100644 --- a/packages/theme/README.md +++ b/packages/theme/README.md @@ -55,6 +55,7 @@ For detailed explanation on how things work, check out [Nuxt.js docs](https://nu ## Contributors ✨ ### Honorable Mentions +- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -73,18 +74,24 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 -
Bartosz Herba

💻 -
Marcin Kwiatkowski

💻 📆 +
Kevin Gorjan

💻 📖 +
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 +
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 +
Filip Sobol

💬 🧑‍🏫 👀 📖
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 + +
Artur Tagisow

💻 +
Jonathan Ribas

💻 +
Ali Ghanei

💻 +
Maya Shavin

📖 + From f141ccfdead3cf6ddebede396b884c7a19be8d44 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Fri, 22 Apr 2022 10:30:53 +0200 Subject: [PATCH 28/37] fix: disabled external checkout on production env (#907) --- .github/workflows/deploy-vue-storefront-cloud.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-vue-storefront-cloud.yml b/.github/workflows/deploy-vue-storefront-cloud.yml index b0b41f05e..755917066 100644 --- a/.github/workflows/deploy-vue-storefront-cloud.yml +++ b/.github/workflows/deploy-vue-storefront-cloud.yml @@ -33,7 +33,7 @@ jobs: NPM_REGISTRY: https://registrynpm.storefrontcloud.io STORE_URL: ${{ secrets.STORE_URL }} MAGENTO_GRAPHQL: ${{ secrets.MAGENTO_GRAPHQL }} - MAGENTO_EXTERNAL_CHECKOUT: ${{ secrets.MAGENTO_EXTERNAL_CHECKOUT }} + MAGENTO_EXTERNAL_CHECKOUT: false MAGENTO_EXTERNAL_CHECKOUT_URL: ${{ secrets.MAGENTO_EXTERNAL_CHECKOUT_URL }} MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH: ${{ secrets.MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH }} IMAGE_PROVIDER: ${{ secrets.IMAGE_PROVIDER }} From 2a300d3994d7e88c9491ebdd4e0e3a9a1ae85d1d Mon Sep 17 00:00:00 2001 From: Heitor Ramon Ribeiro Date: Mon, 25 Apr 2022 06:57:15 -0300 Subject: [PATCH 29/37] docs: updated readme links (#917) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 38f934641..139dd161b 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ ### Stay connected -![GitHub Repo stars](https://img.shields.io/github/stars/vuestorefront/vue-storefront?style=social) -![Twitter Follow](https://img.shields.io/twitter/follow/vuestorefront?style=social) -![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCkm1F3Cglty3CE1QwKQUhhg?style=social) +[![GitHub Repo stars](https://img.shields.io/github/stars/vuestorefront/vue-storefront?style=social)](https://github.com/vuestorefront/vue-storefront) +[![Twitter Follow](https://img.shields.io/twitter/follow/vuestorefront?style=social)](https://twitter.com/vuestorefront) +[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCkm1F3Cglty3CE1QwKQUhhg?style=social)](https://www.youtube.com/c/VueStorefront) [![Discord](https://img.shields.io/discord/770285988244750366?label=join%20discord&logo=Discord&logoColor=white)](https://discord.vuestorefront.io) [![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors-) From 90f65376e5622da974b031d04a90b2d110838505 Mon Sep 17 00:00:00 2001 From: Filip Sobol Date: Fri, 20 May 2022 13:05:24 +0200 Subject: [PATCH 30/37] docs: add analytics --- docs/.vuepress/config.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 6534eae39..4ecffda10 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -1,9 +1,20 @@ +const GTM_TAG = 'GTM-WMDC3CP'; + module.exports = { title: 'Vue Storefront 2 for Magento', base: '/', description: 'Documentation for the Magento connector for Vue Storefront 2', head: [ - ['link', { rel: 'icon', href: '/favicon.png' }] + ['link', { rel: 'icon', href: '/favicon.png' }], + + // Google Tag Manager + ['script', {}, [` + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','${GTM_TAG}'); + `]], ], configureWebpack: (config) => { config.module.rules = config.module.rules.map(rule => ({ @@ -36,6 +47,7 @@ module.exports = { '@vuepress/search' ], themeConfig: { + GTM_TAG, repo: 'https://github.com/vuestorefront/magento2/', editLinks: true, docsDir: 'docs', From b4b866cb54953feb63b6b8d8ec532f67aceaf1bf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 May 2022 08:26:40 +0200 Subject: [PATCH 31/37] chore: release 1.0.0-rc.7 (#949) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(theme): fix dompurify arguments injection (#573) Co-authored-by: Bartosz Herba * feat: mobile menu (#569) Co-authored-by: Alexander Devitsky * chore: fixed some error reported by eslint (#562) * chore: fixed some error reported by eslint * refactor: removed unnecessary type file * fix: small fixes for mobile (#580) * fix(theme): show currency-switcher on mobile * fix(theme): only show login-modal when user isn't logged in * build(dockerfile): binded MAGENTO_BASE_URL to the env variable (#597) * fix(build): changed image provider to ipx (#599) * refactor(general): refactor how and where the cart is loaded - add loadTotalQuantity method on the cart composable as sometimes this is the only information needed - add lazy load for a minicart - header will pull only total quantity data instead of loading whole cart * feat(theme): add conditional rendering for a store switcher and currency switcher - if there is less than 2 currencies/stores relevant switcher will be not displayed * build(tsconfig): changed target in tdconfig files from es5 to es2019 * build(github actions): updated draft release and merge release GH actions * refactor(theme): moved loadStores and loadCurrencies to separate components * refactor(theme): refactored store switcher * refactor(theme): refactored currency swithcer * feat(theme): added useApi composable, refactored topBar - added useApi composable to use GraphQL APi on the client side * chore(composables): made useCustomQuery composables deprecated * feat(theme): - add wishlist lazyload and totalItems shared field * perf(theme): lazy load loginModal * feat(theme): add LoadWhenVisible component and lazyload footer - update social icons to reduce weight and increase quality - load footer only when visible * refactor(theme): changed VSF logo and favicon * refactor(theme): fixed cms pages layout * build: added redis * build: fixed redis cache invalidation * build(build): fixed merge-release GH action * fix(theme): clear login modal reset password data when modal is closed * refactor(theme): add homepage missing german translations * perf(theme): appHeader navigation improvement - add @nuxtjs/device package to recognize used device - remove mobile observer from header and replave it with device recognition tool - navigation is now lazy loaded, categories required for a navigation are not loaded at all on mobile devices * build(deployment): changed URL of Magento backend * fix(redis): added missing redis config * refactor(theme): refactor SearchBar component - move search bar component to components/Header - remove unused code and watchers * fix(config): fixed redis__enabled varaible binding * build(cache): enabled varnish * fix(api): fix cart_id graphql error * fix: centered empty cart text and image * feat(theme): add sorting select in the navbar on the mobile category view * fix(theme): [Category] Save for later button should be hidden for guest user * fix(theme): [My Account] Aligned State/Province input * chore(theme): Product removal confirmation out of viewport * fix(theme): added radio-button filter for mobile * fix(theme): refactored how the selected filters values are set * feat: asset Optimization * feat(theme): add pagination on the category mobile view * fix(theme): [Product] Fixed Additional information tab * refactor: optimized build, fixed small bugs * fix(myaccount): fix few bugs on my account - fix hydration issues - rework and fix reviews composable - add import of missing email validators - fix readonly computable error in the app header * refactor(theme): made TopBar component lazy loaded * refactor(theme): fixed cache issues * fix(theme): refactored when clicking outside the search-results * fix(theme): better aligned search input icon * fix(theme): refactored watcher * chore: updated readme * refactor(theme): category page refactoring step-1 - separate category page and sidebar logic - add resolving layput configuration on category page - move navbar to a separate component - add redis cache for the sidebar - add empty results page * chore(theme): Customer cannot change their email on mobile * Update package.json * fix(theme): center wishlist `` vertically this is not based on any Figma designs - just aligning `WishlistSidebar.vue` with `CartSidebar.vue` This is a fix ONLY for the desktop version. There's still a few px of vertical difference between the `` on mobile CartSidebar and mobile WishlistSidebar, but that's because one of them has a text header and the other doesn't (separate issue) * fix(theme): add products from list view with correct quantity Also made some minor eslint fixes since I "touched" the file and husky started detecting them * feat(theme): add basic skeleton loader component * build: refactored precommit hooks execution * fix(theme): better looking default shipping/billing address badges * fix(M2-146): Correct desktop order history column alignment * fix(theme): fix error when adding single quantity product * feat: migrate to ESM and esbuild * chore: revert few changes * chore: restore yarn.lock in docs * docs: update TypeScript and yarn.lock * chore: revert changes that require Node 16 * chore: revert changes * chore: improve dev command in api-client * fix(theme): fix cart's product url resolving for a configurable products * chore: allign main to develop after 1.0.0-rc.6 release (#697) * Fix useFacet(...) customQuery implemention (#413) * chore: release 1.0.0-rc.5.3 (#437) * chore: add gitflow actions (#379) * chore: added base gitflow actions * chore: added base gitflow actions * chore: fixed versioning process * docs: added roadmap to the docs (#380) closes #323 * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * fix(theme): fix preselection sort order when query param is available (#385) Co-authored-by: Bartosz Herba * fix: broken cart after placing order as guest (#386) * fix(theme): passing the email instead of the user-object for creating a guest-cart * fix(composables): remove empty params in array, fails on Magento * test(theme): updated test for attaching guest email address to cart * Update packages/composables/src/composables/useShipping/index.ts Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski Co-authored-by: Heitor Ramon Ribeiro * fix(theme): fix flashing category page (#387) Co-authored-by: Bartosz Herba * fix(theme): fix flashing category page (#388) Co-authored-by: Bartosz Herba * fix: default billing information does not appear on address (#382) * fix(theme): added badge for default-shipping and default-sbilling address * fix(composables): sort addresses, put default shipping and billing address to top * fix(theme): default billing and shipping text can be translated * chore(theme): added translations * fix(composables): removed console.log * chore: upgraded vsf core to 2.5.4 (#389) * chore: updated VSF core version to 2.5.4 * build: updated test GH action * fix(composables): update url resolver clearing patter to remove locale prefix (#390) Co-authored-by: Bartosz Herba * fix(theme): fix links to catch current locale (#391) * fix(theme): M2-25 fix links to catch current locale * Apply suggestions from code review Co-authored-by: Heitor Ramon Ribeiro * test(test-utils): added localePath global mock to the test-utils Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski * style(theme): aligned titles in my account menu (#400) * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): update localisation for all :link bindings (#416) Co-authored-by: Bartosz Herba * docs(theme): update custom queries documentation to be more friendly and explicit (#418) Co-authored-by: Bartosz Herba * chore(theme): removed html-validator (#414) * refactor: update dependencies (#420) * refactor(eslint): updated dependencies - Updated `eslint-plugin-unicorn` to `40.0.0` * refactor(eslint-import): updated dependencies - Updated `eslint-plugin-import` to `2.25.4` * refactor(eslint-jest): updated dependencies - Updated `eslint-plugin-jest` to `25.3.4` * refactor(eslint-typescript): updated dependencies - Updated `@typescript-eslint/eslint-plugin` to `5.9.1` - Updated `@typescript-eslint/parser` to `5.9.1` * refactor(eslint-vue): updated dependencies - Updated `eslint-plugin-vue` to `8.3.0` * refactor(api-client): updated dependencies - Updated `@apollo/client` to `3.5.7` - Updated `dotenv` to `12.0.1` * refactor(theme): updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `babel-jest` to `27.4.6` - Updated `cypress` to `9.2.1` - Updated `dotenv` to `12.0.1` - Updated `jest` to `27.4.7` - Updated `jest-environment-jsdom` to `27.4.6` - Updated `lint-staged` to `12.1.7` - Updated `mocha` to `9.1.4` - Updated `npm-check-updates` to `12.1.0` - Updated `ts-jest` to `27.1.3` * refactor: updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `@babel/plugin-proposal-private-methods` to `7.16.7` - Updated `@commitlint/cli` to `16.0.2` - Updated `@commitlint/config-conventional` to `16.0.0` - Updated `@commitlint/config-lerna-scopes` to `16.0.0` - Updated `@graphql-codegen/cli` to `2.3.1` - Updated `@graphql-codegen/typescript` to `2.4.2` - Updated `@graphql-codegen/typescript-operations` to `2.2.2` - Updated `@graphql-tools/utils` to `8.6.1` - Updated `@rollup/plugin-node-resolve` to `13.1.3` - Updated `@types/jest` to `27.4.0` - Updated `@types/node` to `17.0.8` - Updated `@typescript-eslint/parser` to `5.9.1` - Updated `@vue/eslint-config-typescript` to `10.0.0` - Updated `eslin` to `8.6.0` - Updated `jest` to `27.4.7` - Updated `lint-staged` to `12.1.7` - Updated `npm-check-updates` to `12.1.0` - Updated `rollup` to `2.64.0` - Updated `shx` to `0.3.4` - Updated `ts-jest` to `27.1.3``` * refactor(theme): enables currency switcher on TopBar.vue (#421) * fix(theme): fix 404 issue when redirecting to address details page (#424) Co-authored-by: Bartosz Herba * test: scaffold unit tests in composables and api client package (#419) * test(composables): added jest config * tests(composables): rewritten test + fix in productGetter * tests(composables): updated configuration in jest.config.js * tests(api-client): added tests for api-client + move general config to jest.base.config.js * tests(api-client): added jest configuration + simple test * chore: removed jest-environment-jsdom-sixteen * tests(theme): reverted back and removed jest.base.config.json * test(composables): reverted back and removed jest.base.config.json * test(api-client): reverted back and removed jest.base.config.json * chore: removed jest.base.config.json Co-authored-by: Marcin Kwiatkowski * fix(theme): fix disappearing category sidebar filter change (#423) Co-authored-by: Bartosz Herba * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix(api-client): update default mutation error handling for apollo client (#429) Co-authored-by: Bartosz Herba * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * Fix useFacet(...) customQuery implemention (#413) * chore: updated version number to rc.5.3, updated yarn.lock, fixed cloud action * fix(theme): update localisation for all :link bindings (#449) Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Kevin Gorjan Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> * chore: release/1.0.0-rc.5.4 (#530) * chore: add gitflow actions (#379) * chore: added base gitflow actions * chore: added base gitflow actions * chore: fixed versioning process * docs: added roadmap to the docs (#380) closes #323 * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * fix(theme): fix preselection sort order when query param is available (#385) Co-authored-by: Bartosz Herba * fix: broken cart after placing order as guest (#386) * fix(theme): passing the email instead of the user-object for creating a guest-cart * fix(composables): remove empty params in array, fails on Magento * test(theme): updated test for attaching guest email address to cart * Update packages/composables/src/composables/useShipping/index.ts Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski Co-authored-by: Heitor Ramon Ribeiro * fix(theme): fix flashing category page (#387) Co-authored-by: Bartosz Herba * fix(theme): fix flashing category page (#388) Co-authored-by: Bartosz Herba * fix: default billing information does not appear on address (#382) * fix(theme): added badge for default-shipping and default-sbilling address * fix(composables): sort addresses, put default shipping and billing address to top * fix(theme): default billing and shipping text can be translated * chore(theme): added translations * fix(composables): removed console.log * chore: upgraded vsf core to 2.5.4 (#389) * chore: updated VSF core version to 2.5.4 * build: updated test GH action * fix(composables): update url resolver clearing patter to remove locale prefix (#390) Co-authored-by: Bartosz Herba * fix(theme): fix links to catch current locale (#391) * fix(theme): M2-25 fix links to catch current locale * Apply suggestions from code review Co-authored-by: Heitor Ramon Ribeiro * test(test-utils): added localePath global mock to the test-utils Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski * style(theme): aligned titles in my account menu (#400) * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): update localisation for all :link bindings (#416) Co-authored-by: Bartosz Herba * docs(theme): update custom queries documentation to be more friendly and explicit (#418) Co-authored-by: Bartosz Herba * chore(theme): removed html-validator (#414) * refactor: update dependencies (#420) * refactor(eslint): updated dependencies - Updated `eslint-plugin-unicorn` to `40.0.0` * refactor(eslint-import): updated dependencies - Updated `eslint-plugin-import` to `2.25.4` * refactor(eslint-jest): updated dependencies - Updated `eslint-plugin-jest` to `25.3.4` * refactor(eslint-typescript): updated dependencies - Updated `@typescript-eslint/eslint-plugin` to `5.9.1` - Updated `@typescript-eslint/parser` to `5.9.1` * refactor(eslint-vue): updated dependencies - Updated `eslint-plugin-vue` to `8.3.0` * refactor(api-client): updated dependencies - Updated `@apollo/client` to `3.5.7` - Updated `dotenv` to `12.0.1` * refactor(theme): updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `babel-jest` to `27.4.6` - Updated `cypress` to `9.2.1` - Updated `dotenv` to `12.0.1` - Updated `jest` to `27.4.7` - Updated `jest-environment-jsdom` to `27.4.6` - Updated `lint-staged` to `12.1.7` - Updated `mocha` to `9.1.4` - Updated `npm-check-updates` to `12.1.0` - Updated `ts-jest` to `27.1.3` * refactor: updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `@babel/plugin-proposal-private-methods` to `7.16.7` - Updated `@commitlint/cli` to `16.0.2` - Updated `@commitlint/config-conventional` to `16.0.0` - Updated `@commitlint/config-lerna-scopes` to `16.0.0` - Updated `@graphql-codegen/cli` to `2.3.1` - Updated `@graphql-codegen/typescript` to `2.4.2` - Updated `@graphql-codegen/typescript-operations` to `2.2.2` - Updated `@graphql-tools/utils` to `8.6.1` - Updated `@rollup/plugin-node-resolve` to `13.1.3` - Updated `@types/jest` to `27.4.0` - Updated `@types/node` to `17.0.8` - Updated `@typescript-eslint/parser` to `5.9.1` - Updated `@vue/eslint-config-typescript` to `10.0.0` - Updated `eslin` to `8.6.0` - Updated `jest` to `27.4.7` - Updated `lint-staged` to `12.1.7` - Updated `npm-check-updates` to `12.1.0` - Updated `rollup` to `2.64.0` - Updated `shx` to `0.3.4` - Updated `ts-jest` to `27.1.3``` * refactor(theme): enables currency switcher on TopBar.vue (#421) * fix(theme): fix 404 issue when redirecting to address details page (#424) Co-authored-by: Bartosz Herba * test: scaffold unit tests in composables and api client package (#419) * test(composables): added jest config * tests(composables): rewritten test + fix in productGetter * tests(composables): updated configuration in jest.config.js * tests(api-client): added tests for api-client + move general config to jest.base.config.js * tests(api-client): added jest configuration + simple test * chore: removed jest-environment-jsdom-sixteen * tests(theme): reverted back and removed jest.base.config.json * test(composables): reverted back and removed jest.base.config.json * test(api-client): reverted back and removed jest.base.config.json * chore: removed jest.base.config.json Co-authored-by: Marcin Kwiatkowski * fix(theme): fix disappearing category sidebar filter change (#423) Co-authored-by: Bartosz Herba * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix(api-client): update default mutation error handling for apollo client (#429) Co-authored-by: Bartosz Herba * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * fix(theme): remove redundant cart load actions (#438) Co-authored-by: Bartosz Herba * perf(theme): updated nuxt.config.js to improve rebuild performance during development (#443) Updated the nuxt.config.js by increasing the enforceSizeThreshold and removing configuration properties * fix(theme): update localisation for all :link bindings (#450) Co-authored-by: Bartosz Herba * fix: handle currency switch issue (#441) * fix(theme): solve currency change issue * docs(theme): add currency formatting plugin information * test(theme): add UT for plugin and formatCurrency helper * refactor(fcplugin): change the logic responsible for resolving locale value Co-authored-by: Bartosz Herba * chore: align main with develop (#455) * Fix useFacet(...) customQuery implemention (#413) * chore: release 1.0.0-rc.5.3 (#437) * chore: add gitflow actions (#379) * chore: added base gitflow actions * chore: added base gitflow actions * chore: fixed versioning process * docs: added roadmap to the docs (#380) closes #323 * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * fix(theme): fix preselection sort order when query param is available (#385) Co-authored-by: Bartosz Herba * fix: broken cart after placing order as guest (#386) * fix(theme): passing the email instead of the user-object for creating a guest-cart * fix(composables): remove empty params in array, fails on Magento * test(theme): updated test for attaching guest email address to cart * Update packages/composables/src/composables/useShipping/index.ts Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski Co-authored-by: Heitor Ramon Ribeiro * fix(theme): fix flashing category page (#387) Co-authored-by: Bartosz Herba * fix(theme): fix flashing category page (#388) Co-authored-by: Bartosz Herba * fix: default billing information does not appear on address (#382) * fix(theme): added badge for default-shipping and default-sbilling address * fix(composables): sort addresses, put default shipping and billing address to top * fix(theme): default billing and shipping text can be translated * chore(theme): added translations * fix(composables): removed console.log * chore: upgraded vsf core to 2.5.4 (#389) * chore: updated VSF core version to 2.5.4 * build: updated test GH action * fix(composables): update url resolver clearing patter to remove locale prefix (#390) Co-authored-by: Bartosz Herba * fix(theme): fix links to catch current locale (#391) * fix(theme): M2-25 fix links to catch current locale * Apply suggestions from code review Co-authored-by: Heitor Ramon Ribeiro * test(test-utils): added localePath global mock to the test-utils Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski * style(theme): aligned titles in my account menu (#400) * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): update localisation for all :link bindings (#416) Co-authored-by: Bartosz Herba * docs(theme): update custom queries documentation to be more friendly and explicit (#418) Co-authored-by: Bartosz Herba * chore(theme): removed html-validator (#414) * refactor: update dependencies (#420) * refactor(eslint): updated dependencies - Updated `eslint-plugin-unicorn` to `40.0.0` * refactor(eslint-import): updated dependencies - Updated `eslint-plugin-import` to `2.25.4` * refactor(eslint-jest): updated dependencies - Updated `eslint-plugin-jest` to `25.3.4` * refactor(eslint-typescript): updated dependencies - Updated `@typescript-eslint/eslint-plugin` to `5.9.1` - Updated `@typescript-eslint/parser` to `5.9.1` * refactor(eslint-vue): updated dependencies - Updated `eslint-plugin-vue` to `8.3.0` * refactor(api-client): updated dependencies - Updated `@apollo/client` to `3.5.7` - Updated `dotenv` to `12.0.1` * refactor(theme): updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `babel-jest` to `27.4.6` - Updated `cypress` to `9.2.1` - Updated `dotenv` to `12.0.1` - Updated `jest` to `27.4.7` - Updated `jest-environment-jsdom` to `27.4.6` - Updated `lint-staged` to `12.1.7` - Updated `mocha` to `9.1.4` - Updated `npm-check-updates` to `12.1.0` - Updated `ts-jest` to `27.1.3` * refactor: updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `@babel/plugin-proposal-private-methods` to `7.16.7` - Updated `@commitlint/cli` to `16.0.2` - Updated `@commitlint/config-conventional` to `16.0.0` - Updated `@commitlint/config-lerna-scopes` to `16.0.0` - Updated `@graphql-codegen/cli` to `2.3.1` - Updated `@graphql-codegen/typescript` to `2.4.2` - Updated `@graphql-codegen/typescript-operations` to `2.2.2` - Updated `@graphql-tools/utils` to `8.6.1` - Updated `@rollup/plugin-node-resolve` to `13.1.3` - Updated `@types/jest` to `27.4.0` - Updated `@types/node` to `17.0.8` - Updated `@typescript-eslint/parser` to `5.9.1` - Updated `@vue/eslint-config-typescript` to `10.0.0` - Updated `eslin` to `8.6.0` - Updated `jest` to `27.4.7` - Updated `lint-staged` to `12.1.7` - Updated `npm-check-updates` to `12.1.0` - Updated `rollup` to `2.64.0` - Updated `shx` to `0.3.4` - Updated `ts-jest` to `27.1.3``` * refactor(theme): enables currency switcher on TopBar.vue (#421) * fix(theme): fix 404 issue when redirecting to address details page (#424) Co-authored-by: Bartosz Herba * test: scaffold unit tests in composables and api client package (#419) * test(composables): added jest config * tests(composables): rewritten test + fix in productGetter * tests(composables): updated configuration in jest.config.js * tests(api-client): added tests for api-client + move general config to jest.base.config.js * tests(api-client): added jest configuration + simple test * chore: removed jest-environment-jsdom-sixteen * tests(theme): reverted back and removed jest.base.config.json * test(composables): reverted back and removed jest.base.config.json * test(api-client): reverted back and removed jest.base.config.json * chore: removed jest.base.config.json Co-authored-by: Marcin Kwiatkowski * fix(theme): fix disappearing category sidebar filter change (#423) Co-authored-by: Bartosz Herba * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix(api-client): update default mutation error handling for apollo client (#429) Co-authored-by: Bartosz Herba * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * Fix useFacet(...) customQuery implemention (#413) * chore: updated version number to rc.5.3, updated yarn.lock, fixed cloud action * fix(theme): update localisation for all :link bindings (#449) Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Kevin Gorjan Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Kevin Gorjan * fix(minicart): fix resolving configurable variants data (#456) Co-authored-by: Bartosz Herba * feat: added translations for german store (#459) * fix(composable): fix clearing cart on customer logout (#458) Co-authored-by: Bartosz Herba * fix(theme): fix fcPlugin issuse when cookies were not set yet - added default currency fallback (#460) Co-authored-by: Bartosz Herba * fix(api-client): update all cart related queries/mutation to include configurable variants data (#461) Co-authored-by: Bartosz Herba * fix(theme): fix adding product to a wishlist from a listed category page (#464) Co-authored-by: Bartosz Herba * fix(theme): add debounced update quantity action so it will be possible to insert multidigital value (#465) Co-authored-by: Bartosz Herba * fix(theme): fix customer account update data and password change functionality (#469) - Previously error and success messages were not displayed and the change password action always lead to an error, now either update data and password change are handled properly Co-authored-by: Bartosz Herba * perf(general): add performance improvement changes (#471) * Test performance improvement commit * chore(deployment): changed deployment config to allow A-B testing on stage * refactor: changed default layout hydration Co-authored-by: Bartosz Herba Co-authored-by: Marcin Kwiatkowski * Revert "perf(general): add performance improvement changes (#471)" (#472) This reverts commit 2f06a692a3244efd47df73e3ba6fcfc0da2d8fd0. * fix: loosing data when moving between steps on the checkout (#440) * fix(theme): prevent user to click on next steps in the checkout * feat(theme): added an asyncLocalStorage helper * fix(theme): added feature so the User Account is filled in * fix(theme): user can't go pages directly * feat(theme): a helpers for validating is the user has access to a specific step in the checkout * feat(theme): implemented the validation in the checkout steps * test: added tests for asyncLocalStorage and the steps helper * fix(composables): re-calculate cart when changing shipping-method (#473) * feat(theme): add missing german translations (#479) Co-authored-by: Bartosz Herba * feat: added nuxt-img and possibility to use external image providers (#467) * chore(theme): added nuxt-image * feat(theme): added nuxt-img to category page * feat: added nuxt-img to category pages, added newe configs, and useImage compoosable * feat(theme): added nuxt-img to products carousel, added image enums * feat(theme): added nuxt-img for search results * feat(theme): added nuxt-img to my account wishlist * feat(theme): changed log to use nuxt-img * feat(theme): changed empty cart icon to use nuxt-img * feat(theme): added nuxt-img to instagram feed, updated image names * feat(theme): changed error image on search results to use nuxt-img * feat(theme): update store switcher to use nuxt-img instead of SfImage * feat(theme): added nuxt-img to wishlist sidebar * feat(theme): added nuxt-img to MobileStoreBanner * feat(theme): added nuxt-img to grouoped product selector * feat(theme): added nuxt-img to payment component * docs: added docs for external images providers * build(cloud): updated vuestorefront cloud docker file and added new args * build: updated deploy gh action to add image env vatiables * docs(configuration): updated docs for image providers * build: added missed buildargs * build: fixed dockerfile * build: fixed typo in docker file * build: updated config * test: add unit tests for the useImage composable * fix(theme): fix mobile home button alignment (#475) * refactor: m2-69. ssr optimization for default layout (#477) * Test performance improvement commit * chore(deployment): changed deployment config to allow A-B testing on stage * refactor: changed default layout hydration Co-authored-by: Bartosz Herba Co-authored-by: Marcin Kwiatkowski * fix: incorrect shipping method price displayed in order summary (#481) * fix(composables): re-calculate cart when changing shipping-method * fix(theme): removed cache-id for retrieving shipping methods Cache id is removed because it retrieves the cached shipping methods. But when the address changes, it can be that the price of shipping methods need to be updated * fix(theme): fix footer lazy hydration (#488) Co-authored-by: Bartosz Herba * fix(theme): fixed product layout tablet (#487) * fix(theme): added spacing on the left and right of the checkout page (#486) * fix(theme): fixed payment setup style discrepancies (#484) * fix: incorrect shipping method price displayed in order summary (#496) * fix(composables): re-calculate cart when changing shipping-method * fix(theme): removed cache-id for retrieving shipping methods Cache id is removed because it retrieves the cached shipping methods. But when the address changes, it can be that the price of shipping methods need to be updated * chore: updated yarn.lock * fix(theme): redirect to home when accessing checkout if cart is empty * fix(theme): fixed hydration issue moved logic from SSR to onMounted to fix hydration difference * fix(theme): fixed cms page loading (#495) * fix(theme): fixed review page is empty if there are no reviews (#485) * fix(theme): ssr optimization for default layout (#506) Co-authored-by: Bartosz Herba * fix(theme): orders history table - no order details button on mobile (#505) * fix(theme): product bundle visual issue (#504) * fix(theme): add wishlist loading when customer is logging in (#509) Co-authored-by: Bartosz Herba * fix(theme): fix setting proper store and locale if there is no cookie (#508) Co-authored-by: Bartosz Herba * feat(recaptcha): add recaptcha (#401) * feat: add example file * feat: init recaptcha * feat(recaptcha): reverte some configs * feat(recaptcha): add v3 support * feat(recaptcha): add possibility to deactivate module and docs * feat(recaptcha): link reCaptcha doc * feat(recaptcha): link reCaptcha doc * feat(recaptcha): use fetch instead of axios * feat(recaptcha): add recaptcha to review form * feat(recaptcha): add recaptcha to reset password form * feat(recaptcha): add recaptcha to checkout form * feat(recaptcha): add recaptcha to forgot password and register forms * feat(recaptcha): code review * feat(recaptcha): refactoring * feat(recaptcha): add tests Co-authored-by: Abdellatif El Mizeb Co-authored-by: Frédéric Le Menach * chore: added sentry (#507) * chore: added Sentry * build: added SENTRY_DSN variable to envs * build(updated sentry config): updated sentry config * build(added config for sentry performance integrartion): added config for sentry * chore: updated sentry config * chore: restored deployment config * test(theme): fixed loginModal component tests * feat: added support for @vue-storefront/cache module (#482) * chore(theme): added nuxt-image * feat(theme): added nuxt-img to category page * feat: added nuxt-img to category pages, added newe configs, and useImage compoosable * feat(theme): added nuxt-img to products carousel, added image enums * feat(theme): added nuxt-img for search results * feat(theme): added nuxt-img to my account wishlist * feat(theme): changed log to use nuxt-img * feat(theme): changed empty cart icon to use nuxt-img * feat(theme): added nuxt-img to instagram feed, updated image names * feat(theme): changed error image on search results to use nuxt-img * feat(theme): update store switcher to use nuxt-img instead of SfImage * feat(theme): added nuxt-img to wishlist sidebar * feat(theme): added nuxt-img to MobileStoreBanner * feat(theme): added nuxt-img to grouoped product selector * feat(theme): added nuxt-img to payment component * docs: added docs for external images providers * build(cloud): updated vuestorefront cloud docker file and added new args * build: updated deploy gh action to add image env vatiables * docs(configuration): updated docs for image providers * build: added missed buildargs * build: fixed dockerfile * build: fixed typo in docker file * build: updated config * test: add unit tests for the useImage composable * chore(theme): added @vue-storefront-cache module * chore(theme): added config for @vue-storefront/cache to nuxt.config.js * feat(theme): added cache tags to home and category page * chore(theme): added redis-cache module, fixed cache tags for category page * feat(theme): added cache tags to product page, added body parser server middleware * build: added config for redis, modified deployment config for tests * build: removed unnecessary redis_password env variable * build: fixed redis env variables names * feat(theme): added cache tags for cms pages * chore(theme): removed console.logs, added comments to nuxt.config.js * build: removed redis-cache module from package.json and addet it to dockerfile * build: updated dockerfile * build(updzted docker file): updated dovkerfile * build: added REDIS__ENABLED env variable * docs: added docs for redis caching * build: reverted test changes in deploy action * fix(theme): removed typo from Category template n * build: fixed GH deploy action * fix: billing address overwrites shipping address when copy flag is set (#510) * fix(theme): don't redirect with empty cart on thank-you step during the checkout * fix(theme): fix on billing step when address for shipping and billing are the same When addresses are the same, hide the form on the billing-step so users can't fill in a new address * chore(theme): added missing translations * build: added npm registry to dockerfile (#511) * build(deployment): added reCahptcha env variables, and modified deploy action (#515) * build(theme): extracted styles to separate .css chunks (#516) Co-authored-by: Heitor Ramon Ribeiro * fix(theme, composable): expired user token issue (#519) - add proper handling of unathorized requests Co-authored-by: Bartosz Herba * fix(theme): update login modal to handle translations (#521) Co-authored-by: Bartosz Herba * chore(theme): removed redis, sentry and reCaptcha config from nuxt.config.js (#522) * fix: added missing translations (#525) * chore(theme): added translations for the home-page * chore(theme): added translations for my-account * fix: disable ATC button while new product configuration is being loaded (#523) Co-authored-by: Alexander Devitsky * chore: added possibility to extend nuxt.config during deployment (#524) * build: introduced nuxt.config.additional.js * build: updated dockerfile * build: updated dockerfile * build: fixed type * build: fixed path * build: updated base nuxt config path * chore: removed recaptcha module from package.json * build: removed test changes from deployment config, upated recaptcha docs * chore: updated dependencies nad optimized dockerfile * docs: updated api docs * chore: disabled recaptcha * build: changed dockerfile * build: updated recaptcha deployment config * fix: fixed recaptcha enabled config type issue * build: manually disabled recaptcha * fix(composable): update useFacets to work with a customQueries * fix(theme): fix missing address details tab for non-english locale stores (#542) Co-authored-by: Bartosz Herba * refactor(theme): performance improvements (#541) * refactor(theme): moved magento configuration to separate non blocking component * build(theme): removed chunks configuration * refactor(theme): removed magentoConfiguration component * fix(theme): update address action will now properly load address data in form (#551) Co-authored-by: Bartosz Herba * fix(theme): fix add to wishlist button on catgory listing view for a mobile devices (#554) Co-authored-by: Bartosz Herba * fix(theme): save or update of address details in the customer account will no longer yield 404 (#555) Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Kevin Gorjan Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> Co-authored-by: Georgiy Slobodenyuk Co-authored-by: Diego Alba <72459310+Diegoalbag@users.noreply.github.com> Co-authored-by: Abdellatif EL MIZEB Co-authored-by: Abdellatif El Mizeb Co-authored-by: Frédéric Le Menach Co-authored-by: Alexander Devitsky Co-authored-by: Alexander Devitsky * docs: fix duplicated menu item (#574) * docs: fix typo (#588) * build(dockerfile): binded MAGENTO_BASE_URL to the env variable (#598) * fix(build): changed image provider to ipx (#600) * docs: updated docs main information * build: enabled redis on demo * build(deployment): changed URL of Magento backend * docs: updated environments, roadmap and functional catalog * build: enabled cloudinary on demo * chore: add #techforukraine * Update README.md * Update README.md * chore: updated readme * Update README.md * chore: change to an existing discord channel * chore: release 1.0.0-rc.6 (#661) * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * fix(theme): update localisation for all :link bindings (#450) Co-authored-by: Bartosz Herba * fix(theme): fix fcPlugin issuse when cookies were not set yet - added default currency fallback (#460) Co-authored-by: Bartosz Herba * fix(theme): add debounced update quantity action so it will be possible to insert multidigital value (#465) Co-authored-by: Bartosz Herba * Revert "perf(general): add performance improvement changes (#471)" (#472) This reverts commit 2f06a692a3244efd47df73e3ba6fcfc0da2d8fd0. * fix: loosing data when moving between steps on the checkout (#440) * fix(theme): prevent user to click on next steps in the checkout * feat(theme): added an asyncLocalStorage helper * fix(theme): added feature so the User Account is filled in * fix(theme): user can't go pages directly * feat(theme): a helpers for validating is the user has access to a specific step in the checkout * feat(theme): implemented the validation in the checkout steps * test: added tests for asyncLocalStorage and the steps helper * feat: added nuxt-img and possibility to use external image providers (#467) * chore(theme): added nuxt-image * feat(theme): added nuxt-img to category page * feat: added nuxt-img to category pages, added newe configs, and useImage compoosable * feat(theme): added nuxt-img to products carousel, added image enums * feat(theme): added nuxt-img for search results * feat(theme): added nuxt-img to my account wishlist * feat(theme): changed log to use nuxt-img * feat(theme): changed empty cart icon to use nuxt-img * feat(theme): added nuxt-img to instagram feed, updated image names * feat(theme): changed error image on search results to use nuxt-img * feat(theme): update store switcher to use nuxt-img instead of SfImage * feat(theme): added nuxt-img to wishlist sidebar * feat(theme): added nuxt-img to MobileStoreBanner * feat(theme): added nuxt-img to grouoped product selector * feat(theme): added nuxt-img to payment component * docs: added docs for external images providers * build(cloud): updated vuestorefront cloud docker file and added new args * build: updated deploy gh action to add image env vatiables * docs(configuration): updated docs for image providers * build: added missed buildargs * build: fixed dockerfile * build: fixed typo in docker file * build: updated config * test: add unit tests for the useImage composable * refactor: m2-69. ssr optimization for default layout (#477) * Test performance improvement commit * chore(deployment): changed deployment config to allow A-B testing on stage * refactor: changed default layout hydration Co-authored-by: Bartosz Herba Co-authored-by: Marcin Kwiatkowski * fix: incorrect shipping method price displayed in order summary (#496) * fix(composables): re-calculate cart when changing shipping-method * fix(theme): removed cache-id for retrieving shipping methods Cache id is removed because it retrieves the cached shipping methods. But when the address changes, it can be that the price of shipping methods need to be updated * chore: updated yarn.lock * fix(theme): redirect to home when accessing checkout if cart is empty * fix(theme): fixed hydration issue moved logic from SSR to onMounted to fix hydration difference * feat(recaptcha): add recaptcha (#401) * feat: add example file * feat: init recaptcha * feat(recaptcha): reverte some configs * feat(recaptcha): add v3 support * feat(recaptcha): add possibility to deactivate module and docs * feat(recaptcha): link reCaptcha doc * feat(recaptcha): link reCaptcha doc * feat(recaptcha): use fetch instead of axios * feat(recaptcha): add recaptcha to review form * feat(recaptcha): add recaptcha to reset password form * feat(recaptcha): add recaptcha to checkout form * feat(recaptcha): add recaptcha to forgot password and register forms * feat(recaptcha): code review * feat(recaptcha): refactoring * feat(recaptcha): add tests Co-authored-by: Abdellatif El Mizeb Co-authored-by: Frédéric Le Menach * chore: added sentry (#507) * chore: added Sentry * build: added SENTRY_DSN variable to envs * build(updated sentry config): updated sentry config * build(added config for sentry performance integrartion): added config for sentry * chore: updated sentry config * chore: restored deployment config * test(theme): fixed loginModal component tests * feat: added support for @vue-storefront/cache module (#482) * chore(theme): added nuxt-image * feat(theme): added nuxt-img to category page * feat: added nuxt-img to category pages, added newe configs, and useImage compoosable * feat(theme): added nuxt-img to products carousel, added image enums * feat(theme): added nuxt-img for search results * feat(theme): added nuxt-img to my account wishlist * feat(theme): changed log to use nuxt-img * feat(theme): changed empty cart icon to use nuxt-img * feat(theme): added nuxt-img to instagram feed, updated image names * feat(theme): changed error image on search results to use nuxt-img * feat(theme): update store switcher to use nuxt-img instead of SfImage * feat(theme): added nuxt-img to wishlist sidebar * feat(theme): added nuxt-img to MobileStoreBanner * feat(theme): added nuxt-img to grouoped product selector * feat(theme): added nuxt-img to payment component * docs: added docs for external images providers * build(cloud): updated vuestorefront cloud docker file and added new args * build: updated deploy gh action to add image env vatiables * docs(configuration): updated docs for image providers * build: added missed buildargs * build: fixed dockerfile * build: fixed typo in docker file * build: updated config * test: add unit tests for the useImage composable * chore(theme): added @vue-storefront-cache module * chore(theme): added config for @vue-storefront/cache to nuxt.config.js * feat(theme): added cache tags to home and category page * chore(theme): added redis-cache module, fixed cache tags for category page * feat(theme): added cache tags to product page, added body parser server middleware * build: added config for redis, modified deployment config for tests * build: removed unnecessary redis_password env variable * build: fixed redis env variables names * feat(theme): added cache tags for cms pages * chore(theme): removed console.logs, added comments to nuxt.config.js * build: removed redis-cache module from package.json and addet it to dockerfile * build: updated dockerfile * build(updzted docker file): updated dovkerfile * build: added REDIS__ENABLED env variable * docs: added docs for redis caching * build: reverted test changes in deploy action * fix(theme): removed typo from Category template n * build: fixed GH deploy action * build(theme): extracted styles to separate .css chunks (#516) Co-authored-by: Heitor Ramon Ribeiro * fix(theme, composable): expired user token issue (#519) - add proper handling of unathorized requests Co-authored-by: Bartosz Herba * chore(theme): removed redis, sentry and reCaptcha config from nuxt.config.js (#522) * chore: added possibility to extend nuxt.config during deployment (#524) * build: introduced nuxt.config.additional.js * build: updated dockerfile * build: updated dockerfile * build: fixed type * build: fixed path * build: updated base nuxt config path * chore: removed recaptcha module from package.json * build: removed test changes from deployment config, upated recaptcha docs * fix(theme): add html unescaping in HTMLContent component (#532) - add lodash.unescape to handle escaped html from magento Co-authored-by: Bartosz Herba * fix(theme): use translation function in all occurance of error[0] in theme (#529) Co-authored-by: Bartosz Herba * build: removed recaptcha from deployment config (#534) * fix: configurable product should work when only one attribute is used (#540) Co-authored-by: Alexander Devitsky * chore(theme): added missing translations (#553) * fix: the ability to close quick search using the keyboard (#552) Co-authored-by: Alexander Devitsky * fix(theme): fix add to wishlist button on catgory listing view for a mobile devices (#554) Co-authored-by: Bartosz Herba * chore: updated dependencies & configuration management (#538) * docs: updated docs to match missing elements * chore: added missing Redis password env * refactor(theme): added missing configuration envs Added missing configuration envs for Redis and Sentry * chore(eslint): updated dependencies - updated `eslint-plugin-unicorn` to `40.1.0` * chore(eslint-jest): updated dependencies - updated `eslint-plugin-jest` to `26.0.0` * chore(eslint-typescript): updated dependencies - updated `@typescript-eslint/eslint-plugin` to `5.10.1` - updated `@typescript-eslint/parser` to `5.10.1` * chore(eslint-vue): updated dependencies - updated `eslint-plugin-vue` to `8.4.0` * chore(api-client): updated dependencies - updated `@apollo/client` to `3.5.8` - updated `graphql` to `16.3.0` - updated `cross-fetch` to `3.1.5` - updated `dotenv` to `14.3.2` - updated `msw` to `0.36.7` - updated `typescript` to `4.5.5` * chore(theme): updated dependencies - updated `@sentry/tracing` to `6.17.3` - updated `@storefront-ui/vue` to `0.12.0` - updated `isomorphic-dompurify` to `0.18.0` - updated `@babel/core` to `7.16.12` - updated `cypress` to `9.3.1` - updated `dotenv` to `14.3.2` - updated `lint-staged` to `12.3.2` - updated `mocha` to `9.2.0` - updated `npm-check-updates` to `12.2.1` - updated `typescript` to `4.5.5` * chore: updated dependencies - updated `@babel/core` to `7.16.12` - updated `@babel/plugin-proposal-private-methods` to `7.16.11` - updated `@commitlint/cli` to `16.1.0` - updated `@graphql-codegen/cli` to `2.4.0` - updated `@types/node` to `17.0.13` - updated `@typescript-eslint/parser` to `5.10.1` - updated `eslint` to `8.8.0` - updated `lint-staged` to `12.3.2` - updated `npm-check-updates` to `12.2.1` - updated `rollup` to `2.66.1` - updated `vue-eslint-parser` to `8.2.0` * chore(eslint-typescript): updated dependencies - `@typescript-eslint/eslint-plugin` to `5.10.2` - `@typescript-eslint/parser` to `5.10.2` * chore(api-client): updated dependencies - `dotenv` to `15.0.0` - `msw` to `0.36.8` * chore(theme): rollback storefront-ui update * chore: updated dependencies - `@graphql-codegen/typescript-operations` to `2.2.3` - `@types/node` to `17.0.14` - `@typescript-eslint/parser` to `5.10.2` - `lint-staged` to `12.3.3` * chore: moved sentry package to Dockerfile * chore(theme): added dynamic nuxt.config.js generation * chore: removed REDIS__PASSWORD * chore: removed REDIS__PASSWORD from workflow * fix: fixed InstagramFeed component (#557) Co-authored-by: Alexander Devitsky * fix: changed header spacing (#556) Co-authored-by: Alexander Devitsky * build: add enterprise deployment (#561) * add enterprise deployment * change stage and dev * chore: allign main to develop after 1.0.0-rc.5.4 release (#560) * Fix useFacet(...) customQuery implemention (#413) * chore: release 1.0.0-rc.5.3 (#437) * chore: add gitflow actions (#379) * chore: added base gitflow actions * chore: added base gitflow actions * chore: fixed versioning process * docs: added roadmap to the docs (#380) closes #323 * fix(theme): refactor and fix store switcher (#383) - update nuxt.config.js to handle de translation - fix issue with flag icon #362 - refactor store switcher component - add store name next to the language icon flag - add translation info in docs Co-authored-by: Bartosz Herba * fix(theme): fix preselection sort order when query param is available (#385) Co-authored-by: Bartosz Herba * fix: broken cart after placing order as guest (#386) * fix(theme): passing the email instead of the user-object for creating a guest-cart * fix(composables): remove empty params in array, fails on Magento * test(theme): updated test for attaching guest email address to cart * Update packages/composables/src/composables/useShipping/index.ts Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski Co-authored-by: Heitor Ramon Ribeiro * fix(theme): fix flashing category page (#387) Co-authored-by: Bartosz Herba * fix(theme): fix flashing category page (#388) Co-authored-by: Bartosz Herba * fix: default billing information does not appear on address (#382) * fix(theme): added badge for default-shipping and default-sbilling address * fix(composables): sort addresses, put default shipping and billing address to top * fix(theme): default billing and shipping text can be translated * chore(theme): added translations * fix(composables): removed console.log * chore: upgraded vsf core to 2.5.4 (#389) * chore: updated VSF core version to 2.5.4 * build: updated test GH action * fix(composables): update url resolver clearing patter to remove locale prefix (#390) Co-authored-by: Bartosz Herba * fix(theme): fix links to catch current locale (#391) * fix(theme): M2-25 fix links to catch current locale * Apply suggestions from code review Co-authored-by: Heitor Ramon Ribeiro * test(test-utils): added localePath global mock to the test-utils Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Marcin Kwiatkowski * style(theme): aligned titles in my account menu (#400) * feat(middleware): added i18n route middleware (#408) * feat(middleware): added i18n route middleware closes #378 * refactor(middleware): i18n middleware: adjustements * fix(theme): update localisation for all :link bindings (#416) Co-authored-by: Bartosz Herba * docs(theme): update custom queries documentation to be more friendly and explicit (#418) Co-authored-by: Bartosz Herba * chore(theme): removed html-validator (#414) * refactor: update dependencies (#420) * refactor(eslint): updated dependencies - Updated `eslint-plugin-unicorn` to `40.0.0` * refactor(eslint-import): updated dependencies - Updated `eslint-plugin-import` to `2.25.4` * refactor(eslint-jest): updated dependencies - Updated `eslint-plugin-jest` to `25.3.4` * refactor(eslint-typescript): updated dependencies - Updated `@typescript-eslint/eslint-plugin` to `5.9.1` - Updated `@typescript-eslint/parser` to `5.9.1` * refactor(eslint-vue): updated dependencies - Updated `eslint-plugin-vue` to `8.3.0` * refactor(api-client): updated dependencies - Updated `@apollo/client` to `3.5.7` - Updated `dotenv` to `12.0.1` * refactor(theme): updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `babel-jest` to `27.4.6` - Updated `cypress` to `9.2.1` - Updated `dotenv` to `12.0.1` - Updated `jest` to `27.4.7` - Updated `jest-environment-jsdom` to `27.4.6` - Updated `lint-staged` to `12.1.7` - Updated `mocha` to `9.1.4` - Updated `npm-check-updates` to `12.1.0` - Updated `ts-jest` to `27.1.3` * refactor: updated dependencies - Updated `@babel/core` to `7.16.7` - Updated `@babel/plugin-proposal-private-methods` to `7.16.7` - Updated `@commitlint/cli` to `16.0.2` - Updated `@commitlint/config-conventional` to `16.0.0` - Updated `@commitlint/config-lerna-scopes` to `16.0.0` - Updated `@graphql-codegen/cli` to `2.3.1` - Updated `@graphql-codegen/typescript` to `2.4.2` - Updated `@graphql-codegen/typescript-operations` to `2.2.2` - Updated `@graphql-tools/utils` to `8.6.1` - Updated `@rollup/plugin-node-resolve` to `13.1.3` - Updated `@types/jest` to `27.4.0` - Updated `@types/node` to `17.0.8` - Updated `@typescript-eslint/parser` to `5.9.1` - Updated `@vue/eslint-config-typescript` to `10.0.0` - Updated `eslin` to `8.6.0` - Updated `jest` to `27.4.7` - Updated `lint-staged` to `12.1.7` - Updated `npm-check-updates` to `12.1.0` - Updated `rollup` to `2.64.0` - Updated `shx` to `0.3.4` - Updated `ts-jest` to `27.1.3``` * refactor(theme): enables currency switcher on TopBar.vue (#421) * fix(theme): fix 404 issue when redirecting to address details page (#424) Co-authored-by: Bartosz Herba * test: scaffold unit tests in composables and api client package (#419) * test(composables): added jest config * tests(composables): rewritten test + fix in productGetter * tests(composables): updated configuration in jest.config.js * tests(api-client): added tests for api-client + move general config to jest.base.config.js * tests(api-client): added jest configuration + simple test * chore: removed jest-environment-jsdom-sixteen * tests(theme): reverted back and removed jest.base.config.json * test(composables): reverted back and removed jest.base.config.json * test(api-client): reverted back and removed jest.base.config.json * chore: removed jest.base.config.json Co-authored-by: Marcin Kwiatkowski * fix(theme): fix disappearing category sidebar filter change (#423) Co-authored-by: Bartosz Herba * fix(theme): out of stock product will no longer break cart (#404) * fix(theme): out of stock product will no longer break cart * fix(theme): remove cart load from layout * docs(theme): update tests for CartSidebar Co-authored-by: Bartosz Herba * Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426) This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402. * refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431) * refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues * refactor: cR fixes for i18n * refactor(composables): added `ConfigState` to export API * chore: updated yarn.lock * refactor(theme): updated i18n middleware to fix URL redirect * docs: updated API-Extractor Co-authored-by: Marcin Kwiatkowski * fix(api-client): update default mutation error handling for apollo client (#429) Co-authored-by: Bartosz Herba * fix: expired user token (#392) * fix(theme): disabled checkbox on login-modal * feat(theme): log customer out when customer-token is expired * feat: added token expired notification, clear cart and customer token when customer is not logged in * feat: logged out notification * refactor: removed console log * refactor: added improvements for token-expired plugin, added unit tests * refactor: changed log out notification message * test: fixed token-expired plugin test * test: added cookies mock to test-utils Co-authored-by: Marcin Kwiatkowski * refactor(theme): enable the currency switcher on `TopBar.vue` (#430) * refactor(theme): enables currency switcher on TopBar.vue * refactor(theme): add safe checking on Currency Selector * Fix useFacet(...) customQuery implemention (#413) * chore: updated version number to rc.5.3, updated yarn.lock, fixed cloud action * fix(theme): update localisation for all :link bindings (#449) Co-authored-by: Bartosz Herba Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Bartosz Herba * refactor(theme): add core pinia module * refactor(theme): refactored AppHeader to use the useAsync composable instead of onSSR (#570) * refactor(theme): refactor useConfig composable (#572) - mark composable useCnfig as deprecated - move composable to theme module - rework composable to get rid of core dependency and to utilize Pinia store Co-authored-by: Bartosz Herba * refactor(composables): moved the useExternalCheckout composable to theme (#571) * refactor: m2-154. refactor use store composable to use pinia store (#576) * temp use store * refactor(theme): refactor useStore composable - mark useStore as deprecated in composables - add useStore composable in a theme module BREAKING CHANGE: rework useStore composable Co-authored-by: Bartosz Herba * refactor: restored loadUser in app header * refactor: useWishlist (#577) * refactor: refactored context binding * refactor: refactored useWishlist, fixed removing from wishlist in my account * refactor: wishlist: cr changes * refactor(theme): M2 155. refactor useCurrency composable (#579) * refactor(theme): move stores to pinia store * refactor(theme): refactor useCurrency composable BREAKING CHANGES: - mark useCurrency as a deprecated in composables module - add refactored and lightweight useCurrency in theme with usage of pinia store management Co-authored-by: Bartosz Herba * refactor: useUser (#582) * refactor: added new theme composable: useUser * refactor(theme): changed useUser binding to the new composable * refactor(useuser): added types * docs: added depracated infor to useUser composable * refactor: removed console.log * refactor(theme): refactored UseForgotPassword (#583) * refactor: refactored useCategory composable (#585) * refactor: refactored useFacet composable (#587) * refactor(theme): refactor useCart composable (#584) Co-authored-by: Bartosz Herba * refactor: refactored useCategorySearch (#589) * refactor(theme): refactor useContent composable (#590) BREAKING CHANGE: - mark useContent as deprecated, implement useContent in theme package * fix(theme): fix page component data load * refactor: refactored usecontent to work with useasync composable * refactor: a/B testing: changed config loading from on moundted to useFetch (#593) * fix: fixed ssr issues (#594) * refactor: restored chunks * refactor: removed chunks * test: a/b: disabled config loading, and navigation * refactor(theme): refactor useUiState (#595) Co-authored-by: Bartosz Herba * - fix issues with dynamic modules import - fix issues with useUiState import * - update cart store and usage of useCart composable * - fix wishlist issues after merge * - mark tests as skipped for a further refactor * Update .github/workflows/deploy-vue-storefront-cloud.yml Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * Update .github/workflows/deploy-vue-storefront-cloud.yml * Update packages/composables/src/composables/useCart/index.ts * Update packages/composables/src/composables/useCart/index.ts * Update packages/composables/src/composables/useCategorySearch/index.ts * Update packages/theme/composables/useCart/commands/loadTotalQtyCommand.ts * Update packages/composables/src/composables/useCategorySearch/index.ts * Update packages/composables/src/composables/useConfig/index.ts * Update packages/composables/src/composables/useContent/index.ts * Update packages/composables/src/composables/useContent/index.ts * - update docblocks Co-authored-by: Marcin Kwiatkowski Co-authored-by: Bartosz Herba Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * fix(theme): fix broken cms page load (new composables break that part of app) (#720) Co-authored-by: Bartosz Herba * fix(theme): improve skeleton for the category sidebar (#716) * fix(theme): improve skeleton for the category sidebar * Update packages/theme/modules/catalog/pages/default.vue Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * Update packages/theme/modules/catalog/category/components/sidebar/CategorySidebar.vue Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> Co-authored-by: Bartosz Herba Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * refactor(composable): refactor useNewslettter composable (#719) Co-authored-by: Bartosz Herba * refactor(composables): refactor useProduct composable (#721) - move useProduct composable to the theme package - mark useProduct composable in composables package as deprecated Co-authored-by: Bartosz Herba * Remove duplicate environment variables (#724) The `.env.example` template for environment variables contained duplicates. This caused some minor confusion when values had been set only to the first instances, and the duplicates overwrote them. * feat(theme): support navigating to nested categories in mobile side menu (#709) * fix(theme): allow spec.ts files to be used Before this commit there were 2 issues: - Types from Cypress and Jest fighting for the `expect()` keyword in .spec.ts files but this happened only when running tests with Jest (ts-jest) - TypeScript didn't know where to find the @types/jest (when using tsserver), so I changed the typeRoots to point to the parent pkg This is only a half-solution as I think if I used some composite configs it'd be more manageable fix(theme): squash this fix(theme): squash this * feat(theme): add nested categories in mobile category menu refactor(theme): refactor find active category function to return whole object squash this feat(theme): pinia working wip feat(theme): reorganize folders for helpers feat(theme): reduce duplication in graphql query feat(theme): adjust desktop and mobile categories fix(theme): fix invalid import paths * feat(M2-292): optimize google fonts (#714) Co-authored-by: Alan Lisler * refactor(composables): refactor shipping related composables (#733) - move useShipping, useGetShippingMethods, useShippingProvider to the theme package - add types Co-authored-by: Bartosz Herba * fix: fixed 404 page issues and my-account redirects for non-logged users (#722) * fix: fixed 404 page and error handling * fix: fixed vuee-validate compilation errors * Update packages/theme/lang/de.js Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * Update packages/theme/layouts/error.vue Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * Update packages/theme/layouts/error.vue Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * refactor: fixed type errors in error layout Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * refactor: refactored usedRelatedProducts composable (#732) * refactor(relatedproducts): refactored usedRelatedProducts composable * Update packages/composables/src/factories/useRelatedProductsFactory.ts Co-authored-by: Bartosz Herba * Update packages/composables/src/composables/useRelatedProducts/index.ts Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba * chore(M2-261): refactor getters from composables to theme (#730) * fix(homepage): fixed new products carousel ssr rendering issues (#736) * fix(composables): revert getters (#739) - copy getters back to the legacy composables for a backward compatibility package and mark all as deprecated Co-authored-by: Marcin Kwiatkowski * chore: update @vue-storefront packages to 2.5.6 (#740) * refactor(theme): copy composable helpers to theme (#734) * refactor(theme): move composable helpers to theme * refactor(theme): remove type dependency on monorepo api * refactor(theme): remove getVueContext * feat(api-client): improve performance of node HTTP calls (#737) * refactor(composable): refactor useReview (#729) * refactor(composable): refactor useReview squash this * refactor(theme): change to new refactored usereview composable * refactor(composable): deprecate useReview factory aswell * refactor(theme): move commands into separate files and change naming convention * refactor(theme): add spaces for readability * refactor(theme): add typings for commands * refactor(theme): fix useReview imports * fix(theme): fix TypeScript errors after adding context.d.ts $magento types * refactor(theme): adjust to lack of state refs in composable * refactor(composable): remove unused params also use local types, not magento-api ones * refactor(composables): add composable command types * refactor(composable): refactor useBilling (#744) * refactor(composables): refactor usePaymentProvider (#745) * refactor: refactored useAddresses (#743) * refactor(composables): refactor useMakeOrder composable - move composable to the Theme package - mark composable as deprecated * refactor(theme): refactored useUpsellProducts composable (#738) * refactor(theme): refactored useUpsellProducts composable, fixed product page ssr issues * refactor: cr fixes for upsell products * Update packages/theme/composables/useUpsellProducts/index.ts Co-authored-by: Bartosz Herba * Update packages/theme/composables/useUpsellProducts/index.ts Co-authored-by: Bartosz Herba * Update packages/theme/composables/useUpsellProducts/useUpsellProducts.d.ts Co-authored-by: Bartosz Herba * refactor: refactored useUrlResolver (#747) * refactor(theme): refactored HeaderLogo component to use the new useConfig composable (#750) * refactor: refactored useUserOrder composable (#748) * refactor(theme): refactored SearchBar component to use new composables (#749) * refactor(composable): refactor useUserShipping (#751) - move useUserShipping to the theme - mark useUserShipping in composable package as deprecated * refactor(theme): disable @vue-storefront/core $vsf context plugin (#741) see https://github.com/vuestorefront/vue-storefront/pull/6641/ the abillity to do this is new in @vue-storefront/core@2.5.6 (version bump made earlier today) suqsh this feat(theme): maybe remove later add semi-debuggable server-side source-maps checkpoint: homepage loads after using own context refactor(theme): checkpoint 2 - shim $vsf add sharedContextMap refactor(theme): move context shim to module because of loading precedence stop using useVSFContext copy integrationPlugin from core to theme $magento -> $vsf.magento (in components for now) refactor(theme): use theme getters over composable ones refactor(theme): convert code comments to task see https://vsf.atlassian.net/browse/M2-328 * chore: add concurrency control to GitHub actions (#754) * refactor: refactores types and composables to new ones from theme (#752) * refactor(composables): refactor useUserBilling (#756) - mark useUserBilling as deprecated in composables package - rework checkout to use useUserAddress theme composable instead * chore: auto-assign team members to pull requests * refactor: refactored useCOuntrySearch composable (#757) * refactor(theme): @vue-storefront types dependency refactoring (#758) - remove types dependency on package @vue-storefront/magento-api * fix(checkout): fix issue with blocked payment method step (#764) - selecting billing address will now unlock move to next step action * refactor: move magento nuxt integration plugin to theme (#755) * refactor(composable): add missing depercated annotations (#767) * chore: remove @vue-storefront/magento dependency from theme * fix(notification): remove notification cookie once the message is displayed (#775) * fix(myaccount): fix error handling for customer data and email update action (#777) * refactor: removed links from order's product (#778) * chore: fix pre-commit hook warning for {.vue} fixes M2-322 it's a .lintstagedrc warning - the {} is usually used to match many extensions in regex, while we just use a single term - ".vue" after this commit the warning is gone * fix: fixed adding/removing address funcionality (#776) * refactor(theme): update Storefront-UI to 0.13.0 (#781) * build: disabled nuxt modern mode (#762) * chore: add more GitHub environments for more detailed Jira deployments (#771) Partially addresses M2-341 chore: use reusable workflow in deployment .yml file fix interpolation spacing remove commented out previous pipeline don't use startsWith where not necessary add target_urls the enterprise env is unused for a business purpose for now so I'm using it as testing grounds can't have secrets for types both secrets and inputs are on the same level revert to using secrets add secrets keyword remove debug branch references * fix: remove prepare-commit-msg hook before this commit running git commit ran commitizen instead of showing the traditional git commit message prompt doing that was too much of an intrusion into the workflow so we've decided to keep cz, but make it optional to use instead of required * fix(theme): remove placeholder for a sorting mechanism in the category navbar (#782) - because we have default sorting value, additional placeholder is not required * fix(theme): billing address is cleared while returning to billing step on checkout (#783) - add billing address persistence by loading once the step is mounted - add selection of default address if none is selected * refactor(theme): refactored bundle and grouped products (#784) * chore: hide yarn-specific output in precommit hook (#788) lint-staged output is still shown, just hide the "yarn run v1.2.2" etc. * chore: run eslint only 1 time instead of 3 times (#787) M2-345 * refactor: disabled sfui core plugin (#785) * chore: lint-staged should be run only once (#789) M2-323 https://github.com/okonet/lint-staged/tree/d327873b1c0b6fbdeb6fd276e523043d51d6de37#how-to-use-lint-staged-in-a-multi-package-monorepo * fix: M2-298. fixed broken my account pages, removed onSSR hooks (#790) * refactor: replace @vue-storefront/core logger plugin M2-294 refactor(logger): add new rewritten logger refactor(logger): remove console.log move logger from plugins to helpers refactor(logger): replace core Logger imports with our own change path from plugins to helpers * chore: remove context shim (#791) M2-328 this was necessary when we still had the @vue-storefront/core composables in packages/theme disabling the @vue-storefront/core context plugin was not possible without the shim from this commit since we've already migrated all composables this is ok to remove * refactor: remove dependencies on @vue-storefront/core types M2-299 * fix: add missing magentoConfig property * fix: setCurrency can take customQuery * refactor: refactored i18n plugins (#794) * M2-295. Refactored i18n plugins * M2-300. Removed @vue-storefront/core dependency * fix: M2-222. fixed my account issues (#795) * fix: fixed my account buttons (#799) * ci: add commit sha as redis prefix before this commit you always needed to curl /invalidate-cache after PR manually after this commit this will hopefully be done by default M2-342 * fix(category): move products loading to onMount hook to avoid caching prices (#793) * refactor(prices): make prices non cachable - add usePrice composable in catalog module - rework category page to load prices onMounted lifecycle to avoid caching * refactor(home): make new product carousel non cachable - load products data onMounted to avoid price caching * fix(theme): mobile store banner - replace SfButton with SfLink so we can have images inside elements without breaking hydration * refactor(theme): change the way related and upsell products are loaded - upsell/related products on the PDP will be now loaded onMounted hook M2-306 * refactor: unify cookie retrieval (#797) * refactor: refactor cookie API M2-331 reduce code duplication refactor: remove unneeded type assertion refactor: refactor cookies to use the new cookie API refactor: checkpoint refactor: i18n plugin refactor: improve typings LocaleObject[] | string[] unions refactor: i18n plugin refactor: refactor middleware to typescript update cookies aswell refactor: don't return void refactor: use storefront ui colors for UiNotification refactor: more cookie refactors refactor: refactor i18n plugin refactor: fix unit tests post-refactor * refactor: add remove method add optional opts * refactor: add proper typing for nuxtplugin + integration * refactor: add remove method to state * refactor: use new remove methods where applicable * refactor: re-add getters and simplify i18n ternary * ci!: simplify env config (#813) * ci: simplify env config BREAKING: rename certain env vars MAGENTO_GRAPHQL -> MAGENTO_GRAPHQL_URL REDIS__* (HOST etc.) -> REDIS_* MAGENTO_EXTERNAL_CHECKOUT -> MAGENTO_EXTERNAL_CHECKOUT_ENABLED _ENABLED env vars will only enable things if you set their value to "true" (MY_ENV_VAR=true) remove convict and related format package because convict cannot be used in a browser - BREAKING: use .env in packages/theme instead of packages/theme/config/[env].json remove dotenv because nuxt already uses dotenv under the hood stop using GitHub repository secrets that are not actually secrets refactor: remove convict and dotenv dotenv is already used by nuxt under the hood remove leftover config import add sentry_dsn to dockerfile args * ci!: add VSF_ prefix to environment variables add VSF_ prefix where omitted * chore: add PWA icon removes the warning when running yarn dev:theme * chore: fix staging .yml crashing precommit hook there's no point in having 3 .lintstagedrc files that all do the same thing this commit also fixes the issue where comitting ANY file that is not in packages/**/* would crash the precommit hook and abort git commit this was happening (Configuration not found error) because there was no .lintstagedrc file in the repo root, so `npx lint-staged` did not know what to do * docs: M2-371. generate composables doc from jsdoc comments (#800) * fix: fix useContent jsdoc examples (#820) * fix: vsf has no redis on localhost * ci: invalidate cache after 1 day with key prefixes, this is so that redis does not contain thousands of super old keys for old deployments forever M2-342 * fix(checkout): accept one-digit house numbers (#824) M2-332 * chore: fix some "yarn install" peer dependency warnings (#818) * chore: add graphql peer dependency restore newer graphql version * chore: add vue as hard dependency this gives us direct control over the vue version rather than relying on whatever a subdependency installs * chore: fix eslint-config-typescript not in internal eslint pkg * chore: fix @nuxt/typescript-build conflict between 'latest' & '2.1.0' * refactor(filter): rework filters (#815) - move category filters to the separate component - add filters renderers and filter config resolver - move configuration from middleware to catalog module - partially add UT, add todo for missing tests * refactor: refactored useCategory for better dx experience (#829) * refactor: refactored useCategory for better dx experience * Update packages/theme/composables/useCategory/index.ts Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * refactor. refactored useCategory errors object to use load instead of search Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * feat(catalog): breadcrumbs (#819) * feat(catalog): breadcrumbs feat(catalog): breadcrumbs refactor: make CategoryTree use common logic refactor: add props to breadcrumbs refactor: destructure ancestors refactor: fix isCategoryTreeLoaded conditions refactor: move breadcrumbs outside categories refactor: use app.localePath instead of cookies chore: comments refactor: destructure context for app * fix: store cookie not set during first page load This was tested after clearing all the cookies in the browser * docs: add JSDoc comments to useAddress composable, its types and the related API methods (#821) * chore: change useAddress to a function declaration * feat: add useAddress jsdocs * docs: add jsdoc comments to useAddress * docs: add JSDoc comments to customer address API methods * docs: add JSDoc comments to the interfaces used by useAddresses * fix: rollback a miss replace * fix: fix useAddress methods' examples * docs: fix list formatting in useAddresses * docs: list useAddresses and the related API methods in documentation * docs: explain in useAddresses were the addresses can be used * docs: remove list of places that use useAddresses * docs: break line between section directive and content * docs: document useCategory composable, its types and related API methods using TSDocs (#828) * chore: transform categoryList API method into function declaration * docs: add TSDocs to categoryList API method and its GraphQL Query * chore: standardize useCategory and its types * docs: add TSDocs to useCategory and its types * docs: change how types are exported to fix TSDoc links * fix: fix categoryList item in the API Methods menu in the docs * fix: use Category type instead of any in useCategory Co-authored-by: Marcin Kwiatkowski * docs: update Environments document (#832) * refactor(filters): add information about selected filters in filters sidebar (#830) * refactor(filter): rework filters - move category filters to the separate component - add filters renderers and filter config resolver - move configuration from middleware to catalog module - partially add UT, add todo for missing tests * refactor(filters): add selected filters component M2-406 * refactor: update category page after merge develop * refactor: on filters/sorting/pagination change only products will be reloaded * docs: update Supported features document (#833) * fix: image provider options (#838) - fix env typo * feat!: make `error`, `loading`, and `result` properties readonly on `useCategorySearch` composable (#848) * feat!: rename UseCategorySearch type to UseCategorySearchInterface * chore: transform categorySearch to function declaration * docs: add docs for categorySearch API method * chore: convert useCategorySearch to function declaration * feat: export useCategorySeach types and improve its definitions * docs: add docs for useCategorySearch composable * feat!: make error, loading and result readonly in useCategorySearch * docs: improve useCategorySearch description * feat!: rename the errors interface of useCategory to UseCategorySearchErrors * feat: export useCategorySearch types * refactor: removed size guide (#840) * fix: fixed review submittion on PDP (#841) * fix: fixed useCategorySearch issues (#849) * refactor: move graphql client to context (#839) * refactor: remove cookie instead of empty set test: fix tests * refactor: move graphqlclient from useApi to context M2-354 this is so you can query graphql endpoints in plugins refactor: useApi to use client from context refactor: move dynamic headers to client instance I don't want to keep the append the headers in useApi because if someone wants to pull the graphql clients from the context - e.g. when requesting something in a plugin - they'll have to reimplement the cookie logic again this commit is a checkpoint commit - the '' fallback in graphqlClient isn't ideal because the header shouldn't be appended to the request if it's empty. Getters are limited int this way. I'll try something with Proxy refactor: proxy workaround for dynamic headers refactor: use proxies as workaround for dynamic headers refactor: add template types to useApi refactor: remove references to customApolloHttpLinkOptions fix: fix spread refactor: code review changes * feat!: define a type for billingDetails and make refs readonly in the useBilling composable (#844) * chore: transform useBilling to a function declaration * feat: add types and interfaces for useBilling * docs: add TSDoc comments to useBilling and its types * feat!: make useBilling error and loading refs readonly * feat!: define an interface for billingDetails in useBilling save method * docs: remove the "remarks" section in useBilling * docs: list useBilling in docs' composables menu * docs: remove placement in loading ref * docs: fix useBilling load params arg that shouldn't be require * feat: add more support for cloudinary images (#850) - add nuxt-img support on cart and product page - fix images proportions in all places where nuxt-img is used * fix: tags resolving on pdp * feat!: make `loading` and `error` properties readonly in the `useUserOrder` composable (#845) * feat!: make `loading` and `error` properties readonly in the `useUserOrder` composable * docs: add JSDoc to the `customerOrders` API handler * chore: pinia `this.` shouldn't be `any` M2-496 https://github.com/vuejs/pinia/issues/981 fix: ts errors because of now enabled noImplicitAny: true * chore: display types for pinia's nuxt context plugin M2-496 `this.$nuxt` is only valid when using tsserver (TypeSCript language server), but not with Volar. Volar is for Vue 3 by default while for Vue 2 some extra config is needed, so that's probably why * refactor: pull out api client from pinia's nuxt context M2-496 * feat!: make `loading` and `error` properties readonly in the `useCart` composable (#827) * refactor: change useCart declaration from const to function * refactor: addConfigurableProductstoCart docs and function notation - add JSDoc - refactor to use function instead of arrow function * refactor: addConfigurableProducts to cart JSDoc and function notation - add JSDoc - refactor from arrow function to function notation * refactor: addProductsToCart JSDoc and function notation - add JSDoc comments - refactor from arrow function to function notation * refactor: addVirtualProductsToCart JSDoc and function notation - add JSDoc comments - refactor from arrow function to function notation * refactor: applyCouponToCart JSDoc and notation - add JSDoc comment - refactor from arrow function to function notation * refactor: cart JSDoc and notation - add JSDoc comment - refactor from arrow function to function notation * refactor: customerCart JSDoc and notation - add JSDoc comment - refactor from arrow function to function notation * refactor: removeCouponFromCart JSDoc and notation - add JSDoc comment - refactor from arrow function to function notation * refactor: removeItemFromCart JSDoc and notation - add JSDoc comment - refactor from arrow function to function notation * refactor: updateCartItems JSDoc and notation - add JSDoc comment - refactor from arrow function to function notatio * feat: add link to useCart documentation * docs: add documentation for useCart composable * docs: add documentation for UseCartInterface#load * docs: add documentation for useCart interfaces * feat!: make UseCartErrors properties nullable BREAKING CHANGE: all properties of the UseCartErrors interface are converted to a union with null. The new type is `Error | null` for all properties * docs: add UseCartInterface's loadTotalQty JSDoc * docs: add UseCartInterface's addItem JSDoc * docs: simplify `useCart` JSDoc * refactor: cleanup useCart types and JSDoc * docs: simplify `useCart` composable docs * docs: update useCart JSDoc * refactor: replace imports with `import type` Co-authored-by: Marcin Kwiatkowski * docs: add API methods to sidebar Co-authored-by: Marcin Kwiatkowski * chore: removed cache-control settings from product and category page (#836) * feat!: make `loading` and `error` properties readonly in the `useWishlist` composable (#843) * feat!: make `loading` property readonly in the `useConfig` composable (#846) * refactor!: rename UseConfig to UseConfigInterface * refactor: make UseConfigInterface a typescript interface * feat!: make loading `useConfig#loading` readonly * docs: add useConfig composable JSDoc * docs: add storeConfig API JSDoc Co-authored-by: Marcin Kwiatkowski * feat!: make `error` and `loading` properties readonly on `useCountrySearch` composable (#847) * feat: create `UseCountrySearchInterface` * feat!: readonly properties on useCountrySearch BREAKING CHANGE: `loading` and `error` properties from the `UseCountrySearchInterface` are now readonly * docs: add `useCountrySearch` JSDoc * docs: add country and countries API JSDoc Co-authored-by: Marcin Kwiatkowski * feat!: make `loading` and `error` readonly in useExternalCheckout composable (#856) * docs: add useExternalCheckout JSDoc * feat!: make `loading` and `error` readonly BREAKING CHANGE: useExternalCheckout `loading` and `error` properties are now readonly Co-authored-by: Marcin Kwiatkowski * refactor: refactored useCurrency `load` and `change` methods (#857) * refactor: removed unnecessary loading changes from useCurrency.change method * refactor: updated useCurrency.load method to use correct customQuery params * Update packages/theme/composables/useCurrency/index.ts Co-authored-by: Vitor L Cavalcanti * Update packages/theme/composables/useCurrency/index.ts Co-authored-by: Vitor L Cavalcanti Co-authored-by: Vitor L Cavalcanti * feat!: make `useForgotPassword` properties readonly (#860) * docs: add JSDoc to API client's `resetPassword` * docs: add JSDoc to `requestPasswordResetEmail` * docs: add `useForgotPassword` JSDoc * feat!: make `useForgotPassword` properties readonly BREAKING CHANGE: `error`, `loading` and `result` properties are now readonly on the `UseForgotPasswordInterface` type returned by `useForgotPassword` * refactor: remove category getters call from app header (#853) * refactor: remove category getters call from app header M2-415 * refactor: remove category getters call from app header - apply suggestions from code review Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * feat!: make `error` and `loading` properties readonly on `useCurrency` composable (#864) * chore: convert useCurrency to function declaration * feat!: rename UseCurrency interface to UseCurrencyInterface * feat: define types for useCurrency methods' params * feat: named export useCurrency and its types * docs: add docs for useCurrency composable * docs: add docs for currency API Method * chore: convert currency API method to function declaration * chore: rollback a type change in load method's params * feat!: make error and loading readonly in useCurrency * fix: remove unused cacheControl in category and product pages * docs: improve TSDocs descriptions for useCurrency types' properties * refactor: search results (#867) - remove category results from search results M2-418 * chore: include e2e tsconfig for ts-eslint (#869) M2-237 * refactor: store config query (#862) * refactor: store config query - move loading of the store config to the plugin - docs: add store config usage docs - remove usage of storeGetters and storeConfigGetters M2-414 * Apply suggestions from code review Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> * perf!: load whole user object only when necessary (#859) * perf!: load full user data only when necessary login no longer loads the customer store register no longer loads the customer store * fix: myaccount crash when wishlist empty * perf: run speedcurve tests after deployment * fix: fix wrong ref path and use speedcurve action 1.2.2 * ci: github tokens don't launch deployment_status events I wanted to create a workflow that runs after a deployment is reported as successful through the chrnorm/deployment-action But turns out that—if you use the default github.token—workflows can't trigger other workflows. The token in the secret is *my* personal access token with *just* the repo_deployment scope (I don't know if it'll work yet) See https://github.com/chrnorm/deployment-action/issues/7 * ci: fix speedcurve workflow condition false negative see https://github.com/vuestorefront/magento2/actions/runs/2188091619 - this shouldn't happen i looked through the events sent by github's webhooks and indeed the path should be deployment, not deployment_status * ci: fix empty speedcurve note * feat!: make `error` and `loading` properties readonly on `useUserAddress` composable (M2-401) (#885) * feat!: make `error` and `loading` properties readonly in the `useGetShippingMethods` composable (#874) * docs: add getAvailableCustomerShippingMethods docs * docs: add `useGetShippingMethods` composable JSDoc * feat!: make `useGetShippingMethods` properties readonly BREAKING CHANGE: `error` and `loading` properties from `useGetShippingMethods` composable are made readonly Co-authored-by: Marcin Kwiatkowski * feat!: make `error` and `loading` properties readonly in `useGuestUser` composable (#875) * docs: add `setGuestEmailOnCart` JSDoc * docs: add JSDoc to `useGuestUser` composable * feat!: make properties readonly on `useGuestUser` BREAKING CHANGE: make `error` and `loading` properties of `useGuestUser` composable readonly Co-authored-by: Marcin Kwiatkowski * refactor: remove category getters (#886) M2-445 * docs: add `useImage` composable JSDoc (#876) Co-authored-by: Marcin Kwiatkowski * feat!: make `error` and `loading` properties readonly on `useFacet` composable (#877) * chore: rename FacetSearchResult generic type param * feat!: rename UseFacet interface to UseFacetInterface * feat!: make error, result and loading properties readonly on useFacet * feat: use type inference and remove unused object on useFacet * feat!: make result mutable again on useFacet * feat!: rename FacetSearchResult to UseFacetSearchResult * feat: export useFacet types and SearchData * chore: fix formatting issues on useFacet * docs: add TSDocs for useFacet and its types * docs: add docs to products API method * chore: convert useFacet and its module functions to function declarations * docs: list useFacet and products API method in docs menu * docs: fix copypaste in useFacet description Co-authored-by: Marcin Kwiatkowski * ci: improve speedcurve note readability if you go to https://app.speedcurve.com/vsf/favorite/?cs=md&d=31&db=856943&dc=2&de=1&df=%7B%7D&ds=1 you'll see that the notes for each data point on the graph are very long and obscure the actual graphs this commit was made to resolve that readability problem I removed the gh actions link (links in speedcurve notes aren't clickable) and shortened the github sha, as the default one is way too long * feat!: make `error` and `loading` properties readonly on `useUser` composable (#887) * feat!: make `error` and `loading` properties readonly on `useUser` composable (M2-400) * chore: fix build * feat!: make `error` and `loading` properties readonly on `useUpsellProducts` composable (#894) * refactor: make everything in catalog module use TypeScript (#872) * chore: force lang="ts" in vue script blocks * refactor: add lang="ts" to leftover catalog components * chore: eslint errors chore: fix eslint error chore: eslint; don't destructure props (reactivity loss) * chore: move spec file to .ts also some eslint chore: move spec file to .ts chore: move .spec file to ts chore: move spec file to js + eslint * chore: move catalog index file to .ts chore: type catalog module root * refactor: remove any from buildCategoryTree refactor: improve category store typing * refactor: add prop types to CategoryNavbar.vue * chore: remove unnecessary component names * refactor: typedef any params * refactor: move desktop category filters from SfSidebar to the main layout column (#884) refactor: change removable filters behavior - removable filters will be now updated only on the explict filter selection action - actions are now sticky so it will be easier to apply filters refactor: fix CR issues M2-425 * feat!: make `error` and `loading` properties readonly on `useMakeOrder` composable (#878) * fix: add context type to placeOrderCommand and fix it * chore: convert useMakeOrder to function declaration * chore: remove unused gql import in placeOrder API method * chore: convert placeOrder to function declaration * docs: write docs for placeOrder API method * feat: add UseMakeOrderInterface and export it with the composable * feat!: make error and loading properties readonly on useMakeOrder * docs: add docs for useMakeOrder and its types * chore: receive context.app as arg in useMakeOrder command * fix: rollback useMakeOrder command argument to context Co-authored-by: Marcin Kwiatkowski * feat: show category title below breadcrumbs (#892) M2-427 * refactor: helpers in catalog module - get rid of buildCategoryTree helper and CategoryTreeInterface - split helpers into meaningfull files - add UT for all helpers M2-444 * feat!: make `error` and `loading` properties readonly on `usePaymentProvider` composable (#881) * feat!: rename SetPaymentMethodOnCartInputs to PaymentMethodParams and simplify it * chore: move PaymentMethodParams to its own module * feat: define types for usePaymentProvider composable * fix: usePaymentProvider commands should use context.app and return an array * feat!: make error and loading properties readonly on usePaymentProvider * chore: convert usePaymentProvider to function declaration * docs: write docs for usePaymentProvider * docs: write docs for getAvailablePaymentMethods * chore: convert getAvailablePaymentMethods to function declaration * docs: write docs for setPaymentMethodOnCart * chore: convert setPaymentMethodOnCart to function declaration * docs: fix typo on usePaymentProvider docs * chore: use 'import type' in getAvailablePaymentMethods Co-authored-by: Bartosz Herba * chore: use 'import type' in setPaymentMethodOnCart Co-authored-by: Bartosz Herba * fix: use context.app instead of context in usePaymentProvider commands * fix: rollback usePaymentProvider commands arguments to context Co-authored-by: Bartosz Herba * feat!: make `error` and `loading` properties readonly on `useNewsletter` composable (#879) * feat!: rename UseNewsletter to UseNewsletterInterface * fix: fix error and loading types in useNewsletter * feat!: make error and loading properties readonly on useNewsletter * feat: add UseNewsletterUpdateSubscriptionParams type * chore: convert useNewsletter to function declaration * docs: write docs for useNewsletter * feat: export useNewsletter and its types in ~/composables * feat: use a real enum in SubscriptionStatusesEnum * chore: convert subscribeEmailToNewsletter to function declaration * docs: write docs for subscribeEmailToNewsletter * feat: remove repeated SubscriptionStatusesEnum * chore: use 'import type' on subscribeEmailToNewsletter Co-authored-by: Bartosz Herba * feat: define types for updateSubscriptionCommand * fix: rollback useNewsletter command argument to context Co-authored-by: Bartosz Herba Co-authored-by: Marcin Kwiatkowski * docs: `useUpsellProducts` composable (M2-398) (#902) * docs: `useUiNotification` composable (M2-397) (#904) * feat!: make `error` and `loading` properties readonly on `useStore` composble (#905) * feat!: make `error` and `loading` properties readonly on `useStore` composable * docs: add description to the api Co-authored-by: Marcin Kwiatkowski * fix: password reset issue (#909) - update button type to properly trigger form submit action M2-499 * docs: remove API methods from sidebar (#919) * feat!: make `error` and `loading` properties readonly on `useReview` composable (M2-392) (#906) Co-authored-by: Marcin Kwiatkowski * fix: wishlist sidebar (#918) - fix issue with refreshig sidebar wishlist - fix issue with wishlist sidebar transition - fix issue with cart sidebar transition M2-539 * feat!: refactor `useProduct` composable `error` and make its refs readonly (#889) * feat: define types and use context.app on useProduct commands * feat: define types for useProduct * feat!: remove GetProductSearchParams repeated declaration on useProduct * feat!: make error and loading properties readonly on useProduct * chore: convert useProduct to function declaration * docs: write docs for useProduct * feat!: set useProduct's method names as its error properties * docs: write docs for productDetail API method * fix: import GetProductSearchParams from ~/composables/types * fix: rollback useProduct commands argument to context * fix: fixed build issues Co-authored-by: Marcin Kwiatkowski * feat: Home Page - Changed products carousel to products section (#914) Co-authored-by: Alexander Devitsky * build: fixed build errors and warnings (#920) * feat!: make `error` and `loading` properties readonly on `useRelatedProducts` composable (#916) * chore: convert useRelatedProducts to function * feat: create UseRelatedProductsSearchParams type * feat!: rename RelatedProducts to RelatedProduct for useRelatedProducts * feat: export useRelatedProducts types in '~/composables' * docs: write docs for useRelatedProducts * docs: write docs for relatedProducts * chore: convert relatedProduct to function declaration * feat!: make error and loading properties readonly on useRelatedProducts * feat!: rename UseRelatedProductsError to UseRelatedProductsErrors * feat!: make `error` and `loading` properties readonly on `useShipping` composable (#921) * feat!: refactor useShipping types * feat!: make error and loading properties readonly on useShipping * docs: write useShipping docs * docs: write TSDocs for setShippingAddressesOnCart * docs: fix typo on resetPassword TSDocs * chore: convert setShippingAddressesOnCart to function declaration * feat: export useShipping types on ~/composables * feat!: make `error` and `loading` properties readonly on `useShippingProvider` composable (#922) * feat!: make error and loading readonly on useShippingProvider * feat: add UseShippingProviderSaveParams type * feat!: remove unused types from useShippingProvider * feat: add UseShippingProviderLoadParams type * feat: export useShippingProvider types on ~/composables * feat: define types for useShippingProvider command * docs: write the docs for useShippingProvider composable * docs: write docs for setShippingMethodsOnCart * chore: convert setShippingMethodsOnCart to function declaration * chore: use 'import type' statements Co-authored-by: Marcin Kwiatkowski * feat: define types and write docs for `useUiHelpers` composable (#923) * chore: convert top-level arrows to function declarations on useUiHelpers * feat: define types for reduceFilters * docs: write docs for useUiHelpers params interfaces and group them * feat: define UseUiHelpersInterface type and export it * docs: write the docs for useUiHelpers composable * feat: export useUiHelpers as named too * fix: replace broken params type in useUiHelpers * docs: fix broken reference in changeSearchTerm method * feat!: standardize `useMagentoConfiguration` composable (#924) * feat!: move useMagentoConfiguration to its own folder * feat!: refactor useMagentoConfiguration types * docs: write docs for useMagentoConfiguration * chore: convert useMagentoConfiguration to function declaration and format * feat: export useMagentoConfiguration and its types from ~/composables * docs: fix copypasted description * feat!: standardize `useUrlResolver` composable and make its properties readonly (#925) * feat!: move useUrlResolver to its own folder * feat: define types for useUrlResolver composable * feat!: make error and loading properties readonly on useUrlResolver * chore: convert useUrlResolver to function declaration * docs: write docs for urlResolver API method * docs: write the docs for useUrlResolver * feat: export useUrlResolver and its types from ~/composables * chore: convert urlResolver to function declaration and format it * docs: fix order of useUrlResolver in the composables menu * refactor: components for product list/grid M2-447 refactor: split product list and grid components refactor: move common props to composition function fix: paths fix: don't show empty when isShowProducts = false fix: don't set width on skeletons fix: wishlist icons appearing when not supposed to fix: can't add to cart in grid view refactor: squash this * test: add global vue/nuxt mocks for unit tests * feat: Homepage - Lazy load offscreen components (#915) Co-authored-by: Alexander Devitsky * fix: make color swatch visible on mobile (#926) M2-456 * fix: product wrong swipe icon direction (#927) M2-513 * feat: homepage - changed slider to hero section (#928) Co-authored-by: Alexander Devitsky * feat: Added preconnect link to site head for cloudinary (#929) Co-authored-by: Alexander Devitsky * fix: product tab click should scroll to tab content (#931) M2-514 before this commit, the behavior would scroll in a way that'd make the tab's contents be cut off in the middle, rather than shown fully I suspect this was happening because the process is like this: 1. tabs container has description open (default state) 2. click another tab (eg. "Read reviews" tab) 3. the tab container's DOM size did not update yet, but scrollIntoView({ block: "end" }) is called 4. the tab opens, but the view is scrolled to the end of the OLD size of the tab block (when reviews was open) You could probably do some Vue.$nextTick magic here but it's easier to just scroll to top * fix: various categoryTree bugs (#932) * refactor: improve findActiveCategory typedefs * fix: useTraverseCategory uses wrong findBy property M2-552 * fix: looking for "gear/bags" shouldn't match "gear" M2-552 * fix: mobile cat sidebar hide menu items that Magento wants hidden * feat: header categories (#903) * feat: header categories - add multilevel categories navigation - add unit tests for new components - upgrade @testing-library/user-event @13.5 -> @14.1.1 M2-424 * refactor: fix CR issues * fix: prevent content jump when variant is selected on PDP M2-365 * fix: resolve CR issues * feat: write docs and export useApi and its type from ~/composables (#930) * refactor: move products related code to the module spaces * refactor: customer module (#937) * refactor: move remaining composables to the category module M2-555 * refactor: use localeroute instead of string path (#940) * test: CategoryEmptyResults component (#934) * refactor: create wishlist module M2-507 * feat: add skeleton loaders in category navbar M2-450 * chore: release 1.0.0-rc.7 * docs: update vuepress and fix error during a build (#954) * chore: fixed conflicts in getters/types * docs: fixed docs issues * docs: added migration guide for rc.7 * docs: removed depracated composables guides * build: added api extraction to docs build command Co-authored-by: Bartosz Herba Co-authored-by: Bartosz Herba Co-authored-by: Alexander Devitsky Co-authored-by: Alexander Devitsky Co-authored-by: Marcin Kwiatkowski Co-authored-by: Kevin Gorjan Co-authored-by: Diego Alba Co-authored-by: Filip Sobol Co-authored-by: Artur Tagisow Co-authored-by: Georgiy Slobodenyuk Co-authored-by: Filip Sobol Co-authored-by: Aliaaaam <88658555+Aliaaaam@users.noreply.github.com> Co-authored-by: Heitor Ramon Ribeiro Co-authored-by: Diego Alba <72459310+Diegoalbag@users.noreply.github.com> Co-authored-by: Abdellatif EL MIZEB Co-authored-by: Abdellatif El Mizeb Co-authored-by: Frédéric Le Menach Co-authored-by: Artur Tagisow <5359825+sethidden@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Andrzej Pawcenis Co-authored-by: GitHub actions Co-authored-by: Aapo Kiiso Co-authored-by: Alan Lisler Co-authored-by: Alan Lisler Co-authored-by: Arnoult Co-authored-by: Vitor L Cavalcanti Co-authored-by: Roz <3948961+roziscoding@users.noreply.github.com> --- .eslintrc.js | 15 +- .github/CODEOWNERS | 1 + .github/workflows/assing-pr-to-author.yml | 4 + .github/workflows/conventional-pr-name.yml | 4 + .../workflows/deploy-vue-storefront-cloud.yml | 184 +- .github/workflows/deployment-template.yml | 69 + .github/workflows/speedcurve.yml | 25 + .github/workflows/test.yml | 4 + .gitignore | 1 + .husky/pre-commit | 2 +- .husky/prepare-commit-msg | 4 - .lintstagedrc | 3 + .vuestorefrontcloud/docker/Dockerfile | 104 +- .../docker/nuxt.config.additional.js | 2 +- CONTRIBUTING.md | 2 +- README.md | 47 +- api-extractor.base.json | 2 +- docs/.gitignore | 1 + docs/.vuepress/config.js | 127 +- docs/api-reference/index.md | 13 - .../magento-api.addbundleproductstocart.md | 11 - ...gento-api.addconfigurableproductstocart.md | 11 - ...gento-api.adddownloadableproductstocart.md | 11 - .../magento-api.addproductstocart.md | 11 - .../magento-api.addproducttowishlist.md | 11 - .../magento-api.addsimpleproductstocart.md | 11 - .../magento-api.addvirtualproductstocart.md | 11 - .../magento-api.applycoupontocart.md | 11 - .../magento-api.availablestores.md | 11 - docs/api-reference/magento-api.cart.md | 11 - .../api-reference/magento-api.categorylist.md | 11 - .../magento-api.categorysearch.md | 11 - .../magento-api.changecustomerpassword.md | 14 - docs/api-reference/magento-api.cmsblocks.md | 11 - docs/api-reference/magento-api.cmspage.md | 11 - docs/api-reference/magento-api.countries.md | 11 - docs/api-reference/magento-api.country.md | 11 - .../magento-api.createcustomer.md | 11 - .../magento-api.createcustomeraddress.md | 11 - .../magento-api.createemptycart.md | 11 - .../magento-api.createproductreview.md | 11 - docs/api-reference/magento-api.currency.md | 11 - docs/api-reference/magento-api.customer.md | 11 - .../api-reference/magento-api.customercart.md | 11 - .../magento-api.customerorders.md | 11 - .../magento-api.customerproductreview.md | 11 - .../magento-api.custommutation.md | 15 - docs/api-reference/magento-api.customquery.md | 15 - .../magento-api.deletecustomeraddress.md | 11 - .../magento-api.generatecustomertoken.md | 15 - ...-api.getavailablecustomerpaymentmethods.md | 13 - ...api.getavailablecustomershippingmethods.md | 11 - .../magento-api.getavailablepaymentmethods.md | 13 - ...magento-api.getavailableshippingmethods.md | 13 - .../magento-api.getcustomeraddresses.md | 11 - docs/api-reference/magento-api.md | 81 - docs/api-reference/magento-api.mergecarts.md | 14 - docs/api-reference/magento-api.placeorder.md | 11 - .../magento-api.productdetail.md | 11 - .../magento-api.productreview.md | 11 - ...agento-api.productreviewratingsmetadata.md | 11 - docs/api-reference/magento-api.products.md | 11 - .../magento-api.relatedproduct.md | 11 - .../magento-api.removecouponfromcart.md | 11 - .../magento-api.removeitemfromcart.md | 11 - .../magento-api.removeproductsfromwishlist.md | 11 - .../magento-api.requestpasswordresetemail.md | 11 - .../magento-api.resetpassword.md | 11 - .../magento-api.revokecustomertoken.md | 11 - .../magento-api.setbillingaddressoncart.md | 11 - .../magento-api.setguestemailoncart.md | 11 - .../magento-api.setpaymentmethodoncart.md | 11 - .../magento-api.setshippingaddressesoncart.md | 11 - .../magento-api.setshippingmethodsoncart.md | 11 - docs/api-reference/magento-api.storeconfig.md | 11 - .../magento-api.subscribeemailtonewsletter.md | 11 - .../magento-api.updatecartitems.md | 11 - .../magento-api.updatecustomer.md | 11 - .../magento-api.updatecustomeraddress.md | 14 - .../magento-api.updatecustomeremail.md | 11 - .../magento-api.upsellproduct.md | 11 - docs/api-reference/magento-api.urlresolver.md | 11 - docs/api-reference/magento-api.wishlist.md | 11 - docs/api-reference/magento.addressgetter.md | 11 - docs/api-reference/magento.cartgetters.md | 11 - docs/api-reference/magento.categorygetters.md | 11 - docs/api-reference/magento.checkoutgetters.md | 17 - .../magento.extendscopecontext.md | 11 - docs/api-reference/magento.facetgetters.md | 11 - .../magento.forgotpasswordgetters.md | 11 - docs/api-reference/magento.md | 66 - docs/api-reference/magento.ordergetters.md | 23 - docs/api-reference/magento.productgetters.md | 11 - docs/api-reference/magento.reviewgetters.md | 11 - .../magento.storeconfiggetters.md | 24 - docs/api-reference/magento.storegetters.md | 14 - docs/api-reference/magento.useaddresses.md | 11 - docs/api-reference/magento.usebilling.md | 11 - docs/api-reference/magento.usecart.md | 11 - docs/api-reference/magento.usecategory.md | 13 - .../magento.usecategorysearch.md | 11 - docs/api-reference/magento.useconfig.md | 11 - docs/api-reference/magento.usecontent.md | 11 - .../api-reference/magento.usecountrysearch.md | 11 - docs/api-reference/magento.usecurrency.md | 11 - .../magento.usecustommutation.md | 11 - docs/api-reference/magento.usecustomquery.md | 11 - .../magento.useexternalcheckout.md | 11 - docs/api-reference/magento.usefacet.md | 11 - .../magento.useforgotpassword.md | 11 - .../magento.usegetshippingmethods.md | 11 - docs/api-reference/magento.useguestuser.md | 14 - docs/api-reference/magento.usemakeorder.md | 11 - docs/api-reference/magento.usenewsletter.md | 11 - .../magento.usepaymentprovider.md | 11 - docs/api-reference/magento.useproduct.md | 11 - .../magento.useraddressesgetters.md | 11 - .../magento.userbillinggetters.md | 11 - .../magento.userelatedproducts.md | 11 - docs/api-reference/magento.usereview.md | 11 - docs/api-reference/magento.usergetters.md | 11 - .../magento.usershippinggetters.md | 11 - docs/api-reference/magento.useshipping.md | 11 - .../magento.useshippingprovider.md | 11 - docs/api-reference/magento.usestore.md | 11 - .../magento.useupsellproducts.md | 11 - docs/api-reference/magento.useurlresolver.md | 11 - docs/api-reference/magento.useuser.md | 15 - docs/api-reference/magento.useuserbilling.md | 11 - docs/api-reference/magento.useuserorder.md | 11 - docs/api-reference/magento.useusershipping.md | 11 - docs/api-reference/magento.usewishlist.md | 11 - docs/api-reference/magento.wishlistgetters.md | 11 - docs/api-reference/magento.wishlistproduct.md | 13 - docs/guide/api-client/reference.md | 13 + docs/guide/composables/use-addresses.md | 29 - docs/guide/composables/use-billing.md | 113 - docs/guide/composables/use-cart.md | 186 - docs/guide/composables/use-category-search.md | 63 - docs/guide/composables/use-category.md | 142 - docs/guide/composables/use-config.md | 209 - docs/guide/composables/use-content.md | 66 - docs/guide/composables/use-country-search.md | 77 - docs/guide/composables/use-custom-mutation.md | 84 - docs/guide/composables/use-custom-query.md | 87 - .../composables/use-external-checkout.md | 47 - docs/guide/composables/use-facet.md | 102 - docs/guide/composables/use-forgot-password.md | 27 - .../composables/use-get-shipping-methods.md | 90 - docs/guide/composables/use-guest-user.md | 69 - docs/guide/composables/use-make-oder.md | 103 - docs/guide/composables/use-menu-category.md | 50 - docs/guide/composables/use-newsletter.md | 21 - .../guide/composables/use-payment-provider.md | 80 - docs/guide/composables/use-product.md | 309 - .../guide/composables/use-related-products.md | 26 - docs/guide/composables/use-review.md | 14 - .../composables/use-shipping-provider.md | 45 - docs/guide/composables/use-shipping.md | 43 - docs/guide/composables/use-store.md | 52 - docs/guide/composables/use-upsell-products.md | 24 - docs/guide/composables/use-url-resolver.md | 58 - docs/guide/composables/use-user-billing.md | 106 - docs/guide/composables/use-user-order.md | 44 - docs/guide/composables/use-user-shipping.md | 56 - docs/guide/composables/use-user.md | 82 - docs/guide/composables/use-wishlist.md | 94 - docs/guide/configuration.md | 35 +- docs/guide/environments.md | 22 +- docs/guide/functional-catalog.md | 111 - docs/guide/override-queries.md | 20 +- docs/guide/ssr.md | 29 +- docs/guide/supported-features.md | 97 + docs/migration-guides/1.0.0-rc.7/index.md | 108 + docs/migration-guides/1.0.0-rc.7/rc.7-bic.md | 88 + docs/migration-guides/index.md | 3 + docs/package.json | 24 +- docs/typedoc.json | 9 - docs/yarn.lock | 690 +- internals/eslint-import/package.json | 2 +- internals/eslint-jest/package.json | 2 +- internals/eslint-typescript/package.json | 2 +- internals/eslint-vue/index.js | 3 + internals/eslint-vue/package.json | 3 +- internals/eslint-vue/rules/rules.js | 12 + internals/eslint/package.json | 2 +- package.json | 25 +- packages/api-client/.env.example | 2 +- packages/api-client/.lintstagedrc | 8 - packages/api-client/README.md | 16 +- packages/api-client/babel.config.js | 9 + packages/api-client/jest.config.js | 4 +- packages/api-client/package.json | 26 +- packages/api-client/possible-types.js | 2 +- packages/api-client/rollup.config.js | 48 - packages/api-client/src/api-extractor-data.ts | 8 +- .../addConfigurableProductsToCart.ts | 1 + .../addConfigurableProductsToCart/index.ts | 22 +- .../addDownloadableProductsToCart.ts | 1 + .../addDownloadableProductsToCart/index.ts | 18 +- .../addProductsToCart/addProductsToCart.ts | 1 + .../src/api/addProductsToCart/index.ts | 18 +- .../addVirtualProductsToCart.ts | 1 + .../src/api/addVirtualProductsToCart/index.ts | 18 +- .../applyCouponToCart/applyCouponToCart.ts | 1 + .../src/api/applyCouponToCart/index.ts | 18 +- .../src/api/availableStores/index.ts | 3 + packages/api-client/src/api/cart/cart.ts | 1 + packages/api-client/src/api/cart/index.ts | 18 +- .../src/api/categoryList/categoryList.ts | 1 + .../api-client/src/api/categoryList/index.ts | 29 +- .../src/api/categorySearch/categorySearch.ts | 1 + .../src/api/categorySearch/index.ts | 30 +- .../src/api/changeCustomerPassword/index.ts | 3 + .../api-client/src/api/cmsBlocks/index.ts | 13 +- packages/api-client/src/api/cmsPage/index.ts | 10 +- .../src/api/countries/countriesList.ts | 1 + .../api-client/src/api/countries/index.ts | 15 +- packages/api-client/src/api/country/index.ts | 12 +- .../src/api/createCustomer/index.ts | 3 + .../createCustomerAddress.ts | 1 + .../src/api/createCustomerAddress/index.ts | 17 +- .../src/api/createProductReview/index.ts | 3 + .../api-client/src/api/currency/currency.ts | 1 + packages/api-client/src/api/currency/index.ts | 29 +- packages/api-client/src/api/customer/index.ts | 3 + .../src/api/customerCart/customerCart.ts | 1 + .../api-client/src/api/customerCart/index.ts | 21 +- .../src/api/customerOrders/index.ts | 3 + .../src/api/customerProductReview/index.ts | 3 + .../deleteCustomerAddress.ts | 1 + .../src/api/deleteCustomerAddress/index.ts | 18 +- .../src/api/generateCustomerToken/index.ts | 3 + .../CustomerShippingMethods.ts | 1 + .../index.ts | 11 +- .../GuestAvailablePaymentMethods.ts | 1 + .../api/getAvailablePaymentMethods/index.ts | 31 +- .../getCustomerAddresses.ts | 1 + .../src/api/getCustomerAddresses/index.ts | 25 +- .../api-client/src/api/placeOrder/index.ts | 30 +- .../src/api/placeOrder/placeOrder.ts | 1 + .../api-client/src/api/productDetail/index.ts | 31 +- .../api/productDetail/productDetailsQuery.ts | 4 + .../api-client/src/api/productReview/index.ts | 3 + .../api/productReviewRatingsMetadata/index.ts | 3 + packages/api-client/src/api/products/index.ts | 33 +- .../src/api/products/productsList.ts | 4 + .../src/api/relatedProduct/index.ts | 28 +- .../src/api/relatedProduct/relatedProduct.ts | 4 + .../src/api/removeCouponFromCart/index.ts | 18 +- .../removeCouponFromCart.ts | 1 + .../src/api/removeItemFromCart/index.ts | 20 +- .../removeItemFromCart/removeItemFromCart.ts | 1 + .../api/requestPasswordResetEmail/index.ts | 18 +- .../requestPasswordResetEmail.ts | 1 + .../api-client/src/api/resetPassword/index.ts | 19 +- .../src/api/resetPassword/resetPassword.ts | 1 + .../src/api/revokeCustomerToken/index.ts | 3 + .../src/api/setGuestEmailOnCart/index.ts | 16 +- .../setGuestEmailOnCart.ts | 1 + .../src/api/setPaymentMethodOnCart/index.ts | 34 +- .../setPaymentMethodOnCart.ts | 1 + .../api/setShippingAddressesOnCart/index.ts | 36 +- .../setShippingAddressesOnCart.ts | 1 + .../src/api/setShippingMethodsOnCart/index.ts | 40 +- .../setShippingMethodsOnCart.ts | 1 + .../api-client/src/api/storeConfig/index.ts | 15 +- .../src/api/storeConfig/storeConfig.ts | 1 + .../api/subscribeEmailToNewsletter/index.ts | 33 +- .../subscribeEmailToNewsletter.ts | 1 + .../src/api/updateCartItems/index.ts | 20 +- .../api/updateCartItems/updateCartItems.ts | 1 + .../src/api/updateCustomer/index.ts | 3 + .../src/api/updateCustomerAddress/index.ts | 32 +- .../updateCustomerAddress.ts | 1 + .../api-client/src/api/upsellProduct/index.ts | 20 +- .../api-client/src/api/urlResolver/index.ts | 36 +- .../src/api/urlResolver/urlResolver.ts | 9 +- .../src/helpers/apiClient/defaultSettings.ts | 3 + .../src/helpers/magentoLink/graphQl.ts | 7 + packages/api-client/src/types/GraphQL.ts | 8 +- packages/api-client/src/types/setup.ts | 10 + packages/api-client/tsconfig.json | 22 +- packages/composables/.lintstagedrc | 8 - packages/composables/README.md | 16 +- packages/composables/babel.config.js | 9 + packages/composables/jest.config.js | 4 +- packages/composables/nuxt/plugin.js | 3 +- packages/composables/package.json | 22 +- packages/composables/rollup.config.js | 4 - .../src/composables/useAddresses/index.ts | 5 +- .../src/composables/useBilling/index.ts | 3 + .../src/composables/useCart/index.ts | 5 +- .../src/composables/useCategory/index.ts | 3 + .../composables/useCategorySearch/index.ts | 3 + .../src/composables/useConfig/index.ts | 5 +- .../src/composables/useContent/index.ts | 3 + .../src/composables/useCountrySearch/index.ts | 3 + .../src/composables/useCurrency/index.ts | 3 + .../composables/useCustomMutation/index.ts | 3 + .../src/composables/useCustomQuery/index.ts | 4 + .../composables/useExternalCheckout/index.ts | 3 + .../src/composables/useFacet/_utils.ts | 2 + .../src/composables/useFacet/index.ts | 6 + .../composables/useForgotPassword/index.ts | 3 + .../useGetShippingMethods/index.ts | 3 + .../src/composables/useGuestUser/index.ts | 3 + .../src/composables/useMakeOrder/index.ts | 3 + .../src/composables/useNewsletter/index.ts | 4 +- .../composables/usePaymentProvider/index.ts | 3 + .../src/composables/useProduct/index.ts | 3 + .../composables/useRelatedProducts/index.ts | 3 + .../src/composables/useReview/index.ts | 4 +- .../src/composables/useShipping/index.ts | 4 + .../composables/useShippingProvider/index.ts | 4 + .../src/composables/useStore/index.ts | 3 + .../composables/useUpsellProducts/index.ts | 3 + .../src/composables/useUrlResolver/index.ts | 3 + .../src/composables/useUser/index.ts | 10 +- .../src/composables/useUserBilling/index.ts | 3 + .../src/composables/useUserOrder/index.ts | 4 +- .../src/composables/useUserShipping/index.ts | 3 + .../src/composables/useWishlist/index.ts | 8 +- .../src/factories/useAddressesFactory.ts | 9 +- .../src/factories/useCartFactory.ts | 16 +- .../src/factories/useCategorySearchFactory.ts | 6 +- .../src/factories/useConfigFactory.ts | 9 +- .../src/factories/useContentFactory.ts | 5 +- .../src/factories/useCountrySearchFactory.ts | 9 +- .../src/factories/useCurrencyFactory.ts | 8 +- .../src/factories/useCustomQueryFactory.ts | 6 +- .../factories/useExternalCheckoutFactory.ts | 5 +- .../src/factories/useForgotPasswordFactory.ts | 3 + .../factories/useGetShippingMethodsFactory.ts | 5 +- .../src/factories/useGuestUserFactory.ts | 8 +- .../src/factories/useMutationQueryFactory.ts | 5 +- .../src/factories/useNewsletterFactory.ts | 5 +- .../factories/usePaymentProviderFactory.ts | 5 +- .../factories/useRelatedProductsFactory.ts | 10 +- .../src/factories/useReviewFactory.ts | 6 +- .../src/factories/useStoreFactory.ts | 6 +- .../src/factories/useUpsellProductsFactory.ts | 9 +- .../src/factories/useUrlResolverFactory.ts | 6 +- .../src/factories/useWishlistFactory.ts | 14 +- packages/composables/src/getVueContext.ts | 18 - packages/composables/src/getters/_utils.ts | 6 + .../composables/src/getters/addressGetter.ts | 3 + .../composables/src/getters/cartGetters.ts | 9 +- .../src/getters/categoryGetters.ts | 3 + .../src/getters/checkoutGetters.ts | 3 + .../composables/src/getters/facetGetters.ts | 3 + .../src/getters/forgotPasswordGetters.ts | 3 + packages/composables/src/getters/index.ts | 4 +- .../composables/src/getters/orderGetters.ts | 5 +- .../composables/src/getters/productGetters.ts | 3 + .../composables/src/getters/reviewGetters.ts | 4 +- .../src/getters/storeConfigGetters.ts | 3 + .../composables/src/getters/storeGetters.ts | 3 + .../src/getters/userAddressesGetters.ts | 3 + .../src/getters/userBillingGetters.ts | 3 + .../composables/src/getters/userGetters.ts | 4 +- .../src/getters/userShippingGetters.ts | 3 + .../src/getters/wishlistGetters.ts | 4 +- .../src/helpers/buildCategoryTree.ts | 4 +- .../src/helpers/compareWishlist.ts | 3 + .../src/helpers/findItemOnWishlist.ts | 3 + .../src/helpers/getContextProperty.ts | 3 - .../composables/src/helpers/htmlDecoder.ts | 3 + .../src/helpers/userAddressManipulator.ts | 3 + .../src/helpers/userDataGenerator.ts | 4 + packages/composables/src/index.ts | 10 +- packages/composables/src/types/composables.ts | 2 +- packages/composables/tsconfig.json | 26 +- packages/theme/.env.example | 56 +- packages/theme/.gitignore | 5 +- packages/theme/.lintstagedrc | 11 - packages/theme/components/AppFooter.vue | 2 +- packages/theme/components/AppHeader.vue | 89 +- .../theme/components/BottomNavigation.vue | 21 +- packages/theme/components/CartSidebar.vue | 73 +- .../Category/CategorySidebarMenu.vue | 198 - .../theme/components/Checkout/CartPreview.vue | 3 +- .../Checkout/UserBillingAddresses.vue | 40 +- .../Checkout/UserShippingAddresses.vue | 43 +- .../Checkout/VsfPaymentProvider.vue | 9 +- .../Checkout/VsfShippingProvider.vue | 53 +- packages/theme/components/ContentBlocks.vue | 13 +- packages/theme/components/CouponCode.vue | 3 +- .../CurrencySelector/CurrenciesModal.vue | 18 +- .../Header/Navigation/HeaderNavigation.vue | 137 + .../Navigation/HeaderNavigationItem.vue | 49 +- .../HeaderNavigationSubcategories.vue | 228 + .../__tests__/HeaderNavigation.spec.js | 92 + .../__tests__/HeaderNavigationItem.spec.js | 12 + .../HeaderNavigationSubcategories.spec.js | 54 + .../components/Header/SearchBar/SearchBar.vue | 44 +- .../Header/SearchBar/SearchResults.vue | 171 +- packages/theme/components/HeaderLogo.vue | 28 +- packages/theme/components/Hero.vue | 156 + packages/theme/components/InstagramFeed.vue | 57 +- packages/theme/components/LoginModal.vue | 13 +- .../theme/components/MobileMenuSidebar.vue | 78 - .../theme/components/MobileStoreBanner.vue | 66 +- packages/theme/components/NewProducts.vue | 179 + .../theme/components/ProductAddReviewForm.vue | 61 +- .../Products/BundleProductSelector.vue | 222 - .../theme/components/SkeletonLoader/index.vue | 98 + packages/theme/components/StoreSwitcher.vue | 35 +- .../components/StoreSwitcher/StoresModal.vue | 53 +- packages/theme/components/UpsellProducts.vue | 42 - .../theme/components/UserAddressDetails.vue | 33 +- .../__tests__/AddtoWishlist.spec.js | 8 +- .../components/__tests__/CartSidebar.spec.js | 15 +- .../components/__tests__/LoginModal.spec.js | 11 +- .../__tests__/ProductAddReviewForm.spec.js | 18 +- packages/theme/composables/context.ts | 13 + packages/theme/composables/index.ts | 52 +- packages/theme/composables/types.ts | 255 + packages/theme/composables/useApi/index.ts | 158 +- .../composables/useBilling/BillingDetails.ts | 17 + .../commands/saveBillingAddressCommand.ts | 38 + .../theme/composables/useBilling/index.ts | 96 + .../composables/useBilling/useBilling.ts | 45 + .../useCart/commands/addItemCommand.ts | 168 + .../useCart/commands/applyCouponCommand.ts | 28 + .../useCart/commands/clearCartCommand.ts | 7 + .../useCart/commands/loadCartCommand.ts | 84 + .../useCart/commands/loadTotalQtyCommand.ts | 17 + .../useCart/commands/removeCouponCommand.ts | 19 + .../useCart/commands/removeItemCommand.ts | 36 + .../useCart/commands/updateItemQtyCommand.ts | 36 + packages/theme/composables/useCart/index.ts | 263 + packages/theme/composables/useCart/useCart.ts | 112 + packages/theme/composables/useConfig/index.ts | 47 + .../theme/composables/useConfig/useConfig.ts | 20 + .../useContent/commands/loadBlocksCommand.ts | 13 + .../useContent/commands/loadContentCommand.ts | 15 + .../theme/composables/useContent/index.ts | 141 + .../composables/useContent/useContent.ts | 174 + .../composables/useCountrySearch/index.ts | 77 + .../useCountrySearch/useCountrySearch.ts | 35 + .../theme/composables/useCurrency/index.ts | 67 + .../composables/useCurrency/useCurrency.ts | 43 + .../composables/useExternalCheckout/index.ts | 59 + .../useExternalCheckout.ts | 14 + .../theme/composables/useFacet/SearchData.ts | 15 + packages/theme/composables/useFacet/_utils.ts | 68 + packages/theme/composables/useFacet/index.ts | 141 + .../theme/composables/useFacet/useFacet.ts | 49 + .../getCustomerShippingMethodsCommand.ts | 9 + .../getGuestShippingMethodsCommand.ts | 12 + .../useGetShippingMethods/index.ts | 56 + .../useGetShippingMethods.ts | 19 + packages/theme/composables/useImage/index.ts | 11 +- .../theme/composables/useImage/useImage.ts | 32 + .../composables/useMagentoConfiguration.ts | 73 - .../UseMagentoConfiguration.ts | 17 + .../useMagentoConfiguration/index.ts | 33 + .../commands/placeOrderCommand.ts | 12 + .../theme/composables/useMakeOrder/index.ts | 40 + .../composables/useMakeOrder/useMakeOrder.ts | 27 + .../commands/updateSubscriptionCommand.ts | 15 + .../theme/composables/useNewsletter/index.ts | 49 + .../useNewsletter/useNewsletter.ts | 35 + .../usePaymentProvider/PaymentMethodParams.ts | 8 + .../getAvailablePaymentMethodsCommand.ts | 12 + .../commands/setPaymentMethodOnCartCommand.ts | 13 + .../composables/usePaymentProvider/index.ts | 80 + .../usePaymentProvider/usePaymentProvider.ts | 42 + .../useReview/commands/addReviewCommand.ts | 21 + .../commands/loadCustomerReviewsCommand.ts | 15 + .../commands/loadReviewMetadataCommand.ts | 15 + .../commands/searchReviewsCommand.ts | 21 + packages/theme/composables/useReview/index.ts | 102 + .../theme/composables/useReview/useReview.ts | 66 + .../theme/composables/useShipping/index.ts | 110 + .../composables/useShipping/useShipping.ts | 43 + .../setShippingMethodsOnCartCommand.ts | 13 + .../composables/useShippingProvider/index.ts | 86 + .../useShippingProvider.ts | 43 + packages/theme/composables/useStore/index.ts | 74 + .../theme/composables/useStore/useStore.ts | 41 + .../theme/composables/useUiHelpers/Params.ts | 32 + .../theme/composables/useUiHelpers/index.ts | 205 +- .../composables/useUiHelpers/useUiHelpers.ts | 60 + .../composables/useUiNotification/index.ts | 38 +- .../useUiNotification/useUiNotification.ts | 32 + .../{useUiState.ts => useUiState/index.ts} | 42 +- .../composables/useUiState/useUiState.ts | 107 + packages/theme/composables/useUrlResolver.ts | 26 - .../useUrlResolver/UseUrlResolver.ts | 33 + .../theme/composables/useUrlResolver/index.ts | 58 + packages/theme/composables/utils/mask.ts | 19 + packages/theme/config.js | 138 - packages/theme/config/example.json | 18 - packages/theme/enums/imageEnums.js | 18 +- packages/theme/getters/_utils.ts | 27 + packages/theme/getters/cartGetters.ts | 208 + packages/theme/getters/checkoutGetters.ts | 27 + packages/theme/getters/facetGetters.ts | 95 + packages/theme/getters/index.ts | 16 + packages/theme/getters/orderGetters.ts | 47 + packages/theme/getters/reviewGetters.ts | 58 + packages/theme/getters/storeConfigGetters.ts | 31 + packages/theme/getters/storeGetters.ts | 18 + packages/theme/getters/types.d.ts | 139 + packages/theme/getters/wishlistGetters.ts | 138 + packages/theme/graphqlClient.ts | 0 packages/theme/helpers/README.md | 1 - packages/theme/helpers/addBasePath.ts | 17 + packages/theme/helpers/cart/addToCart.ts | 22 +- .../checkout/getShippingMethodPrice.ts | 4 +- packages/theme/helpers/htmlDecoder.ts | 13 + .../helpers/integrationPlugin/_proxyUtils.ts | 52 + .../helpers/integrationPlugin/context.ts | 30 + .../theme/helpers/integrationPlugin/index.ts | 61 + packages/theme/helpers/logger/index.ts | 4 + packages/theme/helpers/logger/style.ts | 61 + packages/theme/helpers/logger/verbosity.ts | 43 + .../helpers/magentoConfig/handleChanges.ts | 39 - packages/theme/helpers/product/productData.ts | 22 - packages/theme/jest-setup.js | 34 + packages/theme/lang/de.js | 14 +- packages/theme/lang/en.js | 16 +- packages/theme/layouts/default.vue | 30 +- packages/theme/layouts/error.vue | 53 + packages/theme/middleware.config.js | 33 +- .../middleware/{checkout.js => checkout.ts} | 7 +- packages/theme/middleware/is-authenticated.js | 5 - packages/theme/middleware/is-authenticated.ts | 8 + packages/theme/modules/GraphQL/types.ts | 51436 ++++++++++++++++ .../components/CategoryEmptyResults.vue | 37 + .../__tests__/CategoryEmptyResults.spec.ts | 24 + .../breadcrumbs/CategoryBreadcrumbs.vue | 35 + .../category/components/cms/CmsContent.scss | 234 + .../category/components/cms/CmsContent.vue | 22 + .../components/cms/categoryContent.gql.ts | 15 + .../components/cms/useCategoryContent.ts | 44 + .../components/filters/CategoryFilters.scss | 72 + .../components/filters/CategoryFilters.vue | 233 + .../FiltersSidebar/SelectedFilters.vue | 68 + .../filters/__tests__/useFilters.spec.ts | 31 + .../command/getProductFilterByCategory.gql.ts | 22 + .../getProductFilterByCategoryCommand.ts | 14 + .../filters/renderer/CheckboxType.vue | 42 + .../components/filters/renderer/RadioType.vue | 61 + .../filters/renderer/RendererTypesEnum.ts | 9 + .../filters/renderer/SwatchColorType.vue | 52 + .../components/filters/renderer/YesNoType.vue | 51 + .../category/components/filters/useFilters.ts | 86 + .../components/navbar/CategoryNavbar.vue | 294 + .../MobileCategorySidebar.vue | 128 + .../__tests__/logic.spec.ts | 41 + .../sidebar/MobileCategorySidebar/logic.ts | 20 + .../components/views/CategoryProductGrid.vue | 109 + .../components/views/CategoryProductList.vue | 160 + .../__tests__/CategoryProductGrid.spec.ts | 30 + .../__tests__/CategoryProductList.spec.ts | 49 + .../views/__tests__/productsMock.ts | 258 + .../category/components/views/transition.scss | 10 + .../views/useProductsWithCommonCardProps.ts | 69 + .../category/composables/useCategory/index.ts | 103 + .../composables/useCategory/useCategory.ts | 88 + .../composables/useCategorySearch/index.ts | 48 + .../useCategorySearch/useCategorySearch.ts | 36 + .../catalog/category/config/FiltersConfig.ts | 22 + .../config/__tests__/filtersConfig.spec.ts | 75 + .../modules/catalog/category/config/config.ts | 49 + .../category/enums/displayModesEnum.ts | 7 + .../__tests__/findActiveCategory.spec.ts | 46 + .../__tests__/findCategoryAncestor.spec.ts | 26 + .../__tests__/useTraverseCategory.spec.ts | 63 + .../category/helpers/findActiveCategory.ts | 18 + .../category/helpers/findCategoryAncestors.ts | 28 + .../category/helpers/useTraverseCategory.ts | 40 + .../theme/modules/catalog/category/types.d.ts | 226 + packages/theme/modules/catalog/index.ts | 21 + .../theme/modules/catalog/pages/category.vue | 390 + .../catalog/pages/product.vue} | 434 +- .../pricing/__tests__/usePrice.spec.ts | 48 + .../catalog/pricing/getPricesQuery.gql.ts | 33 + .../theme/modules/catalog/pricing/usePrice.ts | 28 + .../components/BundleProductSelector.vue | 244 + .../components}/GroupedProductSelector.vue | 85 +- .../product}/components/ProductsCarousel.vue | 84 +- .../product}/components/RelatedProducts.vue | 24 +- .../product/components/UpsellProducts.vue | 44 + .../commands/getProductDetailsCommand.ts | 12 + .../commands/getProductListCommand.ts | 12 + .../product/composables/useProduct/index.ts | 71 + .../composables/useProduct/useProduct.ts | 38 + .../composables/useRelatedProducts/index.ts | 56 + .../useRelatedProducts/useRelatedProducts.ts | 36 + .../composables/useUpsellProducts/index.ts | 64 + .../useUpsellProducts/useUpsellProducts.ts | 38 + .../catalog/product/getters/productGetters.ts | 314 + .../catalog/product/helpers}/bundleProduct.ts | 6 +- .../theme/modules/catalog/product/types.ts | 37 + .../customer/components}/AddressForm.vue | 41 +- .../components}/PasswordResetForm.vue | 7 +- .../components}/ProfileUpdateForm.vue | 50 +- .../modules/customer/composables/types.d.ts | 9 + .../composables/useAddresses/index.ts | 118 + .../composables/useAddresses/useAddresses.ts | 222 + .../composables/useForgotPassword/index.ts | 87 + .../useForgotPassword/useForgotPassword.ts | 44 + .../commands/attachToCartCommand.ts | 17 + .../composables/useGuestUser/index.ts | 42 + .../composables/useGuestUser/useGuestUser.ts | 25 + .../customer/composables/useUser/index.ts | 314 + .../useUser/loginStatusPingQuery.gql.ts | 15 + .../customer/composables/useUser/useUser.ts | 125 + .../commands/createCustomerAddressCommand.ts | 9 + .../commands/deleteCustomerAddressCommand.ts | 9 + .../commands/updateCustomerAddressCommand.ts | 12 + .../composables/useUserAddress/index.ts | 162 + .../useUserAddress/useUserAddress.ts | 76 + .../composables/useUserOrder/index.ts | 53 + .../composables/useUserOrder/useUserOrder.ts | 39 + .../modules/customer/getters/addressGetter.ts | 31 + .../customer/getters/forgotPasswordGetters.ts | 15 + .../theme/modules/customer/getters/types.d.ts | 71 + .../customer/getters/userAddressesGetters.ts | 65 + .../customer/getters/userBillingGetters.ts | 40 + .../modules/customer/getters/userGetters.ts | 19 + .../customer/getters/userShippingGetters.ts | 37 + .../customer/helpers/generateUserData.ts | 43 + .../customer/helpers/passwordValidation.ts} | 0 .../helpers/userAddressManipulator.ts | 78 + packages/theme/modules/customer/index.ts | 20 + .../customer/pages}/AddressesDetails.vue | 107 +- .../customer}/pages/MyAccount.vue | 91 +- .../customer/pages}/MyNewsletter.vue | 13 +- .../customer/pages}/MyProfile.vue | 14 +- .../customer/pages}/MyReviews.vue | 31 +- .../customer/pages}/MyWishlist.vue | 223 +- .../customer/pages}/OrderHistory.vue | 28 +- .../theme/modules/magento/defaultConfig.ts | 14 + .../theme/modules/magento/helpers/index.ts | 24 + packages/theme/modules/magento/index.ts | 18 + packages/theme/modules/magento/plugin.ts | 113 + .../components/wishlist}/WishlistSidebar.vue | 160 +- packages/theme/modules/theme/index.ts | 5 + .../wishlist/composables/useWishlist/index.ts | 268 + .../composables/useWishlist/useWishlist.ts | 112 + .../wishlist/helpers/findItemOnWishlist.ts | 10 + .../modules/wishlist/helpers/productMatch.ts | 11 + packages/theme/modules/wishlist/index.ts | 5 + .../modules/wishlist/store/wishlistStore.ts | 12 + packages/theme/nuxt.config.js | 162 +- packages/theme/package.json | 46 +- packages/theme/pages/Category.vue | 1106 - packages/theme/pages/Checkout.vue | 58 +- packages/theme/pages/Checkout/Billing.vue | 132 +- packages/theme/pages/Checkout/Payment.vue | 76 +- packages/theme/pages/Checkout/Shipping.vue | 137 +- packages/theme/pages/Checkout/ThankYou.vue | 7 +- packages/theme/pages/Checkout/UserAccount.vue | 23 +- .../pages/Checkout/__tests__/Shipping.spec.js | 11 +- .../Checkout/__tests__/UserAccount.spec.js | 7 +- packages/theme/pages/Home.vue | 244 +- packages/theme/pages/Page.vue | 33 +- packages/theme/pages/ResetPassword.vue | 5 +- packages/theme/pages/Shipping.vue | 371 - .../pages/__tests__/ResetPassword.spec.js | 8 +- packages/theme/plugins/__tests__/i18n.spec.js | 24 +- .../plugins/__tests__/token-expired.spec.js | 60 +- packages/theme/plugins/fcPlugin.ts | 10 +- packages/theme/plugins/graphqlClient.ts | 83 + packages/theme/plugins/i18n.ts | 118 +- .../theme/plugins/query/StoreConfig.gql.ts | 20 + packages/theme/plugins/storeConfigPlugin.ts | 22 + packages/theme/plugins/token-expired.ts | 50 +- packages/theme/routes.js | 20 +- packages/theme/static/icon.png | Bin 0 -> 4796 bytes packages/theme/stores/category.ts | 28 + packages/theme/stores/config.ts | 17 + packages/theme/stores/customer.ts | 24 + .../theme/stores/graphql/categoryList.gql.ts | 34 + .../test-utils/mocks/categoryTreeDataMock.ts | 327 + .../test-utils/mocks/useUiHelpersMock.ts | 6 + packages/theme/tests/e2e/support/index.js | 5 +- packages/theme/tests/e2e/tsconfig.json | 7 + packages/theme/tsconfig.json | 20 +- packages/theme/types/core.ts | 902 + packages/theme/types/shims-vue.d.ts | 6 + rollup.base.config.js | 47 - scripts/build.js | 31 + scripts/generateApiReference.mjs | 67 + scripts/templates/api-extractor.theme.json | 13 + scripts/templates/tsconfig.theme.json | 23 + tsconfig.base.json | 20 - tsconfig.json | 106 + yarn.lock | 3655 +- 694 files changed, 72162 insertions(+), 11944 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/workflows/deployment-template.yml create mode 100644 .github/workflows/speedcurve.yml delete mode 100755 .husky/prepare-commit-msg create mode 100644 .lintstagedrc delete mode 100644 docs/api-reference/index.md delete mode 100644 docs/api-reference/magento-api.addbundleproductstocart.md delete mode 100644 docs/api-reference/magento-api.addconfigurableproductstocart.md delete mode 100644 docs/api-reference/magento-api.adddownloadableproductstocart.md delete mode 100644 docs/api-reference/magento-api.addproductstocart.md delete mode 100644 docs/api-reference/magento-api.addproducttowishlist.md delete mode 100644 docs/api-reference/magento-api.addsimpleproductstocart.md delete mode 100644 docs/api-reference/magento-api.addvirtualproductstocart.md delete mode 100644 docs/api-reference/magento-api.applycoupontocart.md delete mode 100644 docs/api-reference/magento-api.availablestores.md delete mode 100644 docs/api-reference/magento-api.cart.md delete mode 100644 docs/api-reference/magento-api.categorylist.md delete mode 100644 docs/api-reference/magento-api.categorysearch.md delete mode 100644 docs/api-reference/magento-api.changecustomerpassword.md delete mode 100644 docs/api-reference/magento-api.cmsblocks.md delete mode 100644 docs/api-reference/magento-api.cmspage.md delete mode 100644 docs/api-reference/magento-api.countries.md delete mode 100644 docs/api-reference/magento-api.country.md delete mode 100644 docs/api-reference/magento-api.createcustomer.md delete mode 100644 docs/api-reference/magento-api.createcustomeraddress.md delete mode 100644 docs/api-reference/magento-api.createemptycart.md delete mode 100644 docs/api-reference/magento-api.createproductreview.md delete mode 100644 docs/api-reference/magento-api.currency.md delete mode 100644 docs/api-reference/magento-api.customer.md delete mode 100644 docs/api-reference/magento-api.customercart.md delete mode 100644 docs/api-reference/magento-api.customerorders.md delete mode 100644 docs/api-reference/magento-api.customerproductreview.md delete mode 100644 docs/api-reference/magento-api.custommutation.md delete mode 100644 docs/api-reference/magento-api.customquery.md delete mode 100644 docs/api-reference/magento-api.deletecustomeraddress.md delete mode 100644 docs/api-reference/magento-api.generatecustomertoken.md delete mode 100644 docs/api-reference/magento-api.getavailablecustomerpaymentmethods.md delete mode 100644 docs/api-reference/magento-api.getavailablecustomershippingmethods.md delete mode 100644 docs/api-reference/magento-api.getavailablepaymentmethods.md delete mode 100644 docs/api-reference/magento-api.getavailableshippingmethods.md delete mode 100644 docs/api-reference/magento-api.getcustomeraddresses.md delete mode 100644 docs/api-reference/magento-api.md delete mode 100644 docs/api-reference/magento-api.mergecarts.md delete mode 100644 docs/api-reference/magento-api.placeorder.md delete mode 100644 docs/api-reference/magento-api.productdetail.md delete mode 100644 docs/api-reference/magento-api.productreview.md delete mode 100644 docs/api-reference/magento-api.productreviewratingsmetadata.md delete mode 100644 docs/api-reference/magento-api.products.md delete mode 100644 docs/api-reference/magento-api.relatedproduct.md delete mode 100644 docs/api-reference/magento-api.removecouponfromcart.md delete mode 100644 docs/api-reference/magento-api.removeitemfromcart.md delete mode 100644 docs/api-reference/magento-api.removeproductsfromwishlist.md delete mode 100644 docs/api-reference/magento-api.requestpasswordresetemail.md delete mode 100644 docs/api-reference/magento-api.resetpassword.md delete mode 100644 docs/api-reference/magento-api.revokecustomertoken.md delete mode 100644 docs/api-reference/magento-api.setbillingaddressoncart.md delete mode 100644 docs/api-reference/magento-api.setguestemailoncart.md delete mode 100644 docs/api-reference/magento-api.setpaymentmethodoncart.md delete mode 100644 docs/api-reference/magento-api.setshippingaddressesoncart.md delete mode 100644 docs/api-reference/magento-api.setshippingmethodsoncart.md delete mode 100644 docs/api-reference/magento-api.storeconfig.md delete mode 100644 docs/api-reference/magento-api.subscribeemailtonewsletter.md delete mode 100644 docs/api-reference/magento-api.updatecartitems.md delete mode 100644 docs/api-reference/magento-api.updatecustomer.md delete mode 100644 docs/api-reference/magento-api.updatecustomeraddress.md delete mode 100644 docs/api-reference/magento-api.updatecustomeremail.md delete mode 100644 docs/api-reference/magento-api.upsellproduct.md delete mode 100644 docs/api-reference/magento-api.urlresolver.md delete mode 100644 docs/api-reference/magento-api.wishlist.md delete mode 100644 docs/api-reference/magento.addressgetter.md delete mode 100644 docs/api-reference/magento.cartgetters.md delete mode 100644 docs/api-reference/magento.categorygetters.md delete mode 100644 docs/api-reference/magento.checkoutgetters.md delete mode 100644 docs/api-reference/magento.extendscopecontext.md delete mode 100644 docs/api-reference/magento.facetgetters.md delete mode 100644 docs/api-reference/magento.forgotpasswordgetters.md delete mode 100644 docs/api-reference/magento.md delete mode 100644 docs/api-reference/magento.ordergetters.md delete mode 100644 docs/api-reference/magento.productgetters.md delete mode 100644 docs/api-reference/magento.reviewgetters.md delete mode 100644 docs/api-reference/magento.storeconfiggetters.md delete mode 100644 docs/api-reference/magento.storegetters.md delete mode 100644 docs/api-reference/magento.useaddresses.md delete mode 100644 docs/api-reference/magento.usebilling.md delete mode 100644 docs/api-reference/magento.usecart.md delete mode 100644 docs/api-reference/magento.usecategory.md delete mode 100644 docs/api-reference/magento.usecategorysearch.md delete mode 100644 docs/api-reference/magento.useconfig.md delete mode 100644 docs/api-reference/magento.usecontent.md delete mode 100644 docs/api-reference/magento.usecountrysearch.md delete mode 100644 docs/api-reference/magento.usecurrency.md delete mode 100644 docs/api-reference/magento.usecustommutation.md delete mode 100644 docs/api-reference/magento.usecustomquery.md delete mode 100644 docs/api-reference/magento.useexternalcheckout.md delete mode 100644 docs/api-reference/magento.usefacet.md delete mode 100644 docs/api-reference/magento.useforgotpassword.md delete mode 100644 docs/api-reference/magento.usegetshippingmethods.md delete mode 100644 docs/api-reference/magento.useguestuser.md delete mode 100644 docs/api-reference/magento.usemakeorder.md delete mode 100644 docs/api-reference/magento.usenewsletter.md delete mode 100644 docs/api-reference/magento.usepaymentprovider.md delete mode 100644 docs/api-reference/magento.useproduct.md delete mode 100644 docs/api-reference/magento.useraddressesgetters.md delete mode 100644 docs/api-reference/magento.userbillinggetters.md delete mode 100644 docs/api-reference/magento.userelatedproducts.md delete mode 100644 docs/api-reference/magento.usereview.md delete mode 100644 docs/api-reference/magento.usergetters.md delete mode 100644 docs/api-reference/magento.usershippinggetters.md delete mode 100644 docs/api-reference/magento.useshipping.md delete mode 100644 docs/api-reference/magento.useshippingprovider.md delete mode 100644 docs/api-reference/magento.usestore.md delete mode 100644 docs/api-reference/magento.useupsellproducts.md delete mode 100644 docs/api-reference/magento.useurlresolver.md delete mode 100644 docs/api-reference/magento.useuser.md delete mode 100644 docs/api-reference/magento.useuserbilling.md delete mode 100644 docs/api-reference/magento.useuserorder.md delete mode 100644 docs/api-reference/magento.useusershipping.md delete mode 100644 docs/api-reference/magento.usewishlist.md delete mode 100644 docs/api-reference/magento.wishlistgetters.md delete mode 100644 docs/api-reference/magento.wishlistproduct.md create mode 100644 docs/guide/api-client/reference.md delete mode 100644 docs/guide/composables/use-addresses.md delete mode 100644 docs/guide/composables/use-billing.md delete mode 100644 docs/guide/composables/use-cart.md delete mode 100644 docs/guide/composables/use-category-search.md delete mode 100644 docs/guide/composables/use-category.md delete mode 100644 docs/guide/composables/use-config.md delete mode 100644 docs/guide/composables/use-content.md delete mode 100644 docs/guide/composables/use-country-search.md delete mode 100644 docs/guide/composables/use-custom-mutation.md delete mode 100644 docs/guide/composables/use-custom-query.md delete mode 100644 docs/guide/composables/use-external-checkout.md delete mode 100644 docs/guide/composables/use-facet.md delete mode 100644 docs/guide/composables/use-forgot-password.md delete mode 100644 docs/guide/composables/use-get-shipping-methods.md delete mode 100644 docs/guide/composables/use-guest-user.md delete mode 100644 docs/guide/composables/use-make-oder.md delete mode 100644 docs/guide/composables/use-menu-category.md delete mode 100644 docs/guide/composables/use-newsletter.md delete mode 100644 docs/guide/composables/use-payment-provider.md delete mode 100644 docs/guide/composables/use-product.md delete mode 100644 docs/guide/composables/use-related-products.md delete mode 100644 docs/guide/composables/use-review.md delete mode 100644 docs/guide/composables/use-shipping-provider.md delete mode 100644 docs/guide/composables/use-shipping.md delete mode 100644 docs/guide/composables/use-store.md delete mode 100644 docs/guide/composables/use-upsell-products.md delete mode 100644 docs/guide/composables/use-url-resolver.md delete mode 100644 docs/guide/composables/use-user-billing.md delete mode 100644 docs/guide/composables/use-user-order.md delete mode 100644 docs/guide/composables/use-user-shipping.md delete mode 100644 docs/guide/composables/use-user.md delete mode 100644 docs/guide/composables/use-wishlist.md delete mode 100644 docs/guide/functional-catalog.md create mode 100644 docs/guide/supported-features.md create mode 100644 docs/migration-guides/1.0.0-rc.7/index.md create mode 100644 docs/migration-guides/1.0.0-rc.7/rc.7-bic.md create mode 100644 docs/migration-guides/index.md delete mode 100644 docs/typedoc.json create mode 100644 internals/eslint-vue/rules/rules.js delete mode 100644 packages/api-client/.lintstagedrc create mode 100644 packages/api-client/babel.config.js delete mode 100644 packages/api-client/rollup.config.js delete mode 100644 packages/composables/.lintstagedrc create mode 100644 packages/composables/babel.config.js delete mode 100644 packages/composables/rollup.config.js delete mode 100644 packages/composables/src/getVueContext.ts delete mode 100644 packages/composables/src/helpers/getContextProperty.ts delete mode 100644 packages/theme/.lintstagedrc delete mode 100644 packages/theme/components/Category/CategorySidebarMenu.vue create mode 100644 packages/theme/components/Header/Navigation/HeaderNavigation.vue create mode 100644 packages/theme/components/Header/Navigation/HeaderNavigationSubcategories.vue create mode 100644 packages/theme/components/Header/Navigation/__tests__/HeaderNavigation.spec.js create mode 100644 packages/theme/components/Header/Navigation/__tests__/HeaderNavigationItem.spec.js create mode 100644 packages/theme/components/Header/Navigation/__tests__/HeaderNavigationSubcategories.spec.js create mode 100644 packages/theme/components/Hero.vue delete mode 100644 packages/theme/components/MobileMenuSidebar.vue create mode 100644 packages/theme/components/NewProducts.vue delete mode 100644 packages/theme/components/Products/BundleProductSelector.vue create mode 100644 packages/theme/components/SkeletonLoader/index.vue delete mode 100644 packages/theme/components/UpsellProducts.vue create mode 100644 packages/theme/composables/context.ts create mode 100644 packages/theme/composables/types.ts create mode 100644 packages/theme/composables/useBilling/BillingDetails.ts create mode 100644 packages/theme/composables/useBilling/commands/saveBillingAddressCommand.ts create mode 100644 packages/theme/composables/useBilling/index.ts create mode 100644 packages/theme/composables/useBilling/useBilling.ts create mode 100644 packages/theme/composables/useCart/commands/addItemCommand.ts create mode 100644 packages/theme/composables/useCart/commands/applyCouponCommand.ts create mode 100644 packages/theme/composables/useCart/commands/clearCartCommand.ts create mode 100644 packages/theme/composables/useCart/commands/loadCartCommand.ts create mode 100644 packages/theme/composables/useCart/commands/loadTotalQtyCommand.ts create mode 100644 packages/theme/composables/useCart/commands/removeCouponCommand.ts create mode 100644 packages/theme/composables/useCart/commands/removeItemCommand.ts create mode 100644 packages/theme/composables/useCart/commands/updateItemQtyCommand.ts create mode 100644 packages/theme/composables/useCart/index.ts create mode 100644 packages/theme/composables/useCart/useCart.ts create mode 100644 packages/theme/composables/useConfig/index.ts create mode 100644 packages/theme/composables/useConfig/useConfig.ts create mode 100644 packages/theme/composables/useContent/commands/loadBlocksCommand.ts create mode 100644 packages/theme/composables/useContent/commands/loadContentCommand.ts create mode 100644 packages/theme/composables/useContent/index.ts create mode 100644 packages/theme/composables/useContent/useContent.ts create mode 100644 packages/theme/composables/useCountrySearch/index.ts create mode 100644 packages/theme/composables/useCountrySearch/useCountrySearch.ts create mode 100644 packages/theme/composables/useCurrency/index.ts create mode 100644 packages/theme/composables/useCurrency/useCurrency.ts create mode 100644 packages/theme/composables/useExternalCheckout/index.ts create mode 100644 packages/theme/composables/useExternalCheckout/useExternalCheckout.ts create mode 100644 packages/theme/composables/useFacet/SearchData.ts create mode 100644 packages/theme/composables/useFacet/_utils.ts create mode 100644 packages/theme/composables/useFacet/index.ts create mode 100644 packages/theme/composables/useFacet/useFacet.ts create mode 100644 packages/theme/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand.ts create mode 100644 packages/theme/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand.ts create mode 100644 packages/theme/composables/useGetShippingMethods/index.ts create mode 100644 packages/theme/composables/useGetShippingMethods/useGetShippingMethods.ts create mode 100644 packages/theme/composables/useImage/useImage.ts delete mode 100644 packages/theme/composables/useMagentoConfiguration.ts create mode 100644 packages/theme/composables/useMagentoConfiguration/UseMagentoConfiguration.ts create mode 100644 packages/theme/composables/useMagentoConfiguration/index.ts create mode 100644 packages/theme/composables/useMakeOrder/commands/placeOrderCommand.ts create mode 100644 packages/theme/composables/useMakeOrder/index.ts create mode 100644 packages/theme/composables/useMakeOrder/useMakeOrder.ts create mode 100644 packages/theme/composables/useNewsletter/commands/updateSubscriptionCommand.ts create mode 100644 packages/theme/composables/useNewsletter/index.ts create mode 100644 packages/theme/composables/useNewsletter/useNewsletter.ts create mode 100644 packages/theme/composables/usePaymentProvider/PaymentMethodParams.ts create mode 100644 packages/theme/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand.ts create mode 100644 packages/theme/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts create mode 100644 packages/theme/composables/usePaymentProvider/index.ts create mode 100644 packages/theme/composables/usePaymentProvider/usePaymentProvider.ts create mode 100644 packages/theme/composables/useReview/commands/addReviewCommand.ts create mode 100644 packages/theme/composables/useReview/commands/loadCustomerReviewsCommand.ts create mode 100644 packages/theme/composables/useReview/commands/loadReviewMetadataCommand.ts create mode 100644 packages/theme/composables/useReview/commands/searchReviewsCommand.ts create mode 100644 packages/theme/composables/useReview/index.ts create mode 100644 packages/theme/composables/useReview/useReview.ts create mode 100644 packages/theme/composables/useShipping/index.ts create mode 100644 packages/theme/composables/useShipping/useShipping.ts create mode 100644 packages/theme/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand.ts create mode 100644 packages/theme/composables/useShippingProvider/index.ts create mode 100644 packages/theme/composables/useShippingProvider/useShippingProvider.ts create mode 100644 packages/theme/composables/useStore/index.ts create mode 100644 packages/theme/composables/useStore/useStore.ts create mode 100644 packages/theme/composables/useUiHelpers/Params.ts create mode 100644 packages/theme/composables/useUiHelpers/useUiHelpers.ts create mode 100644 packages/theme/composables/useUiNotification/useUiNotification.ts rename packages/theme/composables/{useUiState.ts => useUiState/index.ts} (65%) create mode 100644 packages/theme/composables/useUiState/useUiState.ts delete mode 100644 packages/theme/composables/useUrlResolver.ts create mode 100644 packages/theme/composables/useUrlResolver/UseUrlResolver.ts create mode 100644 packages/theme/composables/useUrlResolver/index.ts create mode 100644 packages/theme/composables/utils/mask.ts delete mode 100644 packages/theme/config.js delete mode 100644 packages/theme/config/example.json create mode 100644 packages/theme/getters/_utils.ts create mode 100644 packages/theme/getters/cartGetters.ts create mode 100644 packages/theme/getters/checkoutGetters.ts create mode 100644 packages/theme/getters/facetGetters.ts create mode 100644 packages/theme/getters/index.ts create mode 100644 packages/theme/getters/orderGetters.ts create mode 100644 packages/theme/getters/reviewGetters.ts create mode 100644 packages/theme/getters/storeConfigGetters.ts create mode 100644 packages/theme/getters/storeGetters.ts create mode 100644 packages/theme/getters/types.d.ts create mode 100644 packages/theme/getters/wishlistGetters.ts delete mode 100644 packages/theme/graphqlClient.ts delete mode 100644 packages/theme/helpers/README.md create mode 100644 packages/theme/helpers/addBasePath.ts create mode 100644 packages/theme/helpers/htmlDecoder.ts create mode 100644 packages/theme/helpers/integrationPlugin/_proxyUtils.ts create mode 100644 packages/theme/helpers/integrationPlugin/context.ts create mode 100644 packages/theme/helpers/integrationPlugin/index.ts create mode 100644 packages/theme/helpers/logger/index.ts create mode 100644 packages/theme/helpers/logger/style.ts create mode 100644 packages/theme/helpers/logger/verbosity.ts delete mode 100644 packages/theme/helpers/magentoConfig/handleChanges.ts delete mode 100644 packages/theme/helpers/product/productData.ts create mode 100644 packages/theme/layouts/error.vue rename packages/theme/middleware/{checkout.js => checkout.ts} (56%) delete mode 100644 packages/theme/middleware/is-authenticated.js create mode 100644 packages/theme/middleware/is-authenticated.ts create mode 100644 packages/theme/modules/GraphQL/types.ts create mode 100644 packages/theme/modules/catalog/category/components/CategoryEmptyResults.vue create mode 100644 packages/theme/modules/catalog/category/components/__tests__/CategoryEmptyResults.spec.ts create mode 100644 packages/theme/modules/catalog/category/components/breadcrumbs/CategoryBreadcrumbs.vue create mode 100644 packages/theme/modules/catalog/category/components/cms/CmsContent.scss create mode 100644 packages/theme/modules/catalog/category/components/cms/CmsContent.vue create mode 100644 packages/theme/modules/catalog/category/components/cms/categoryContent.gql.ts create mode 100644 packages/theme/modules/catalog/category/components/cms/useCategoryContent.ts create mode 100644 packages/theme/modules/catalog/category/components/filters/CategoryFilters.scss create mode 100644 packages/theme/modules/catalog/category/components/filters/CategoryFilters.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/FiltersSidebar/SelectedFilters.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/__tests__/useFilters.spec.ts create mode 100644 packages/theme/modules/catalog/category/components/filters/command/getProductFilterByCategory.gql.ts create mode 100644 packages/theme/modules/catalog/category/components/filters/command/getProductFilterByCategoryCommand.ts create mode 100644 packages/theme/modules/catalog/category/components/filters/renderer/CheckboxType.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/renderer/RadioType.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/renderer/RendererTypesEnum.ts create mode 100644 packages/theme/modules/catalog/category/components/filters/renderer/SwatchColorType.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/renderer/YesNoType.vue create mode 100644 packages/theme/modules/catalog/category/components/filters/useFilters.ts create mode 100644 packages/theme/modules/catalog/category/components/navbar/CategoryNavbar.vue create mode 100644 packages/theme/modules/catalog/category/components/sidebar/MobileCategorySidebar/MobileCategorySidebar.vue create mode 100644 packages/theme/modules/catalog/category/components/sidebar/MobileCategorySidebar/__tests__/logic.spec.ts create mode 100644 packages/theme/modules/catalog/category/components/sidebar/MobileCategorySidebar/logic.ts create mode 100644 packages/theme/modules/catalog/category/components/views/CategoryProductGrid.vue create mode 100644 packages/theme/modules/catalog/category/components/views/CategoryProductList.vue create mode 100644 packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductGrid.spec.ts create mode 100644 packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductList.spec.ts create mode 100644 packages/theme/modules/catalog/category/components/views/__tests__/productsMock.ts create mode 100644 packages/theme/modules/catalog/category/components/views/transition.scss create mode 100644 packages/theme/modules/catalog/category/components/views/useProductsWithCommonCardProps.ts create mode 100644 packages/theme/modules/catalog/category/composables/useCategory/index.ts create mode 100644 packages/theme/modules/catalog/category/composables/useCategory/useCategory.ts create mode 100644 packages/theme/modules/catalog/category/composables/useCategorySearch/index.ts create mode 100644 packages/theme/modules/catalog/category/composables/useCategorySearch/useCategorySearch.ts create mode 100644 packages/theme/modules/catalog/category/config/FiltersConfig.ts create mode 100644 packages/theme/modules/catalog/category/config/__tests__/filtersConfig.spec.ts create mode 100644 packages/theme/modules/catalog/category/config/config.ts create mode 100644 packages/theme/modules/catalog/category/enums/displayModesEnum.ts create mode 100644 packages/theme/modules/catalog/category/helpers/__tests__/findActiveCategory.spec.ts create mode 100644 packages/theme/modules/catalog/category/helpers/__tests__/findCategoryAncestor.spec.ts create mode 100644 packages/theme/modules/catalog/category/helpers/__tests__/useTraverseCategory.spec.ts create mode 100644 packages/theme/modules/catalog/category/helpers/findActiveCategory.ts create mode 100644 packages/theme/modules/catalog/category/helpers/findCategoryAncestors.ts create mode 100644 packages/theme/modules/catalog/category/helpers/useTraverseCategory.ts create mode 100644 packages/theme/modules/catalog/category/types.d.ts create mode 100644 packages/theme/modules/catalog/index.ts create mode 100644 packages/theme/modules/catalog/pages/category.vue rename packages/theme/{pages/Product.vue => modules/catalog/pages/product.vue} (62%) create mode 100644 packages/theme/modules/catalog/pricing/__tests__/usePrice.spec.ts create mode 100644 packages/theme/modules/catalog/pricing/getPricesQuery.gql.ts create mode 100644 packages/theme/modules/catalog/pricing/usePrice.ts create mode 100644 packages/theme/modules/catalog/product/components/BundleProductSelector.vue rename packages/theme/{components/Products => modules/catalog/product/components}/GroupedProductSelector.vue (58%) rename packages/theme/{ => modules/catalog/product}/components/ProductsCarousel.vue (63%) rename packages/theme/{ => modules/catalog/product}/components/RelatedProducts.vue (50%) create mode 100644 packages/theme/modules/catalog/product/components/UpsellProducts.vue create mode 100644 packages/theme/modules/catalog/product/composables/useProduct/commands/getProductDetailsCommand.ts create mode 100644 packages/theme/modules/catalog/product/composables/useProduct/commands/getProductListCommand.ts create mode 100644 packages/theme/modules/catalog/product/composables/useProduct/index.ts create mode 100644 packages/theme/modules/catalog/product/composables/useProduct/useProduct.ts create mode 100644 packages/theme/modules/catalog/product/composables/useRelatedProducts/index.ts create mode 100644 packages/theme/modules/catalog/product/composables/useRelatedProducts/useRelatedProducts.ts create mode 100644 packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts create mode 100644 packages/theme/modules/catalog/product/composables/useUpsellProducts/useUpsellProducts.ts create mode 100644 packages/theme/modules/catalog/product/getters/productGetters.ts rename packages/theme/{helpers/product => modules/catalog/product/helpers}/bundleProduct.ts (73%) create mode 100644 packages/theme/modules/catalog/product/types.ts rename packages/theme/{components/MyAccount => modules/customer/components}/AddressForm.vue (92%) rename packages/theme/{components/MyAccount => modules/customer/components}/PasswordResetForm.vue (97%) rename packages/theme/{components/MyAccount => modules/customer/components}/ProfileUpdateForm.vue (84%) create mode 100644 packages/theme/modules/customer/composables/types.d.ts create mode 100644 packages/theme/modules/customer/composables/useAddresses/index.ts create mode 100644 packages/theme/modules/customer/composables/useAddresses/useAddresses.ts create mode 100644 packages/theme/modules/customer/composables/useForgotPassword/index.ts create mode 100644 packages/theme/modules/customer/composables/useForgotPassword/useForgotPassword.ts create mode 100644 packages/theme/modules/customer/composables/useGuestUser/commands/attachToCartCommand.ts create mode 100644 packages/theme/modules/customer/composables/useGuestUser/index.ts create mode 100644 packages/theme/modules/customer/composables/useGuestUser/useGuestUser.ts create mode 100644 packages/theme/modules/customer/composables/useUser/index.ts create mode 100644 packages/theme/modules/customer/composables/useUser/loginStatusPingQuery.gql.ts create mode 100644 packages/theme/modules/customer/composables/useUser/useUser.ts create mode 100644 packages/theme/modules/customer/composables/useUserAddress/commands/createCustomerAddressCommand.ts create mode 100644 packages/theme/modules/customer/composables/useUserAddress/commands/deleteCustomerAddressCommand.ts create mode 100644 packages/theme/modules/customer/composables/useUserAddress/commands/updateCustomerAddressCommand.ts create mode 100644 packages/theme/modules/customer/composables/useUserAddress/index.ts create mode 100644 packages/theme/modules/customer/composables/useUserAddress/useUserAddress.ts create mode 100644 packages/theme/modules/customer/composables/useUserOrder/index.ts create mode 100644 packages/theme/modules/customer/composables/useUserOrder/useUserOrder.ts create mode 100644 packages/theme/modules/customer/getters/addressGetter.ts create mode 100644 packages/theme/modules/customer/getters/forgotPasswordGetters.ts create mode 100644 packages/theme/modules/customer/getters/types.d.ts create mode 100644 packages/theme/modules/customer/getters/userAddressesGetters.ts create mode 100644 packages/theme/modules/customer/getters/userBillingGetters.ts create mode 100644 packages/theme/modules/customer/getters/userGetters.ts create mode 100644 packages/theme/modules/customer/getters/userShippingGetters.ts create mode 100644 packages/theme/modules/customer/helpers/generateUserData.ts rename packages/theme/{helpers/customer/regex.ts => modules/customer/helpers/passwordValidation.ts} (100%) create mode 100644 packages/theme/modules/customer/helpers/userAddressManipulator.ts create mode 100644 packages/theme/modules/customer/index.ts rename packages/theme/{pages/MyAccount => modules/customer/pages}/AddressesDetails.vue (69%) rename packages/theme/{ => modules/customer}/pages/MyAccount.vue (62%) rename packages/theme/{pages/MyAccount => modules/customer/pages}/MyNewsletter.vue (92%) rename packages/theme/{pages/MyAccount => modules/customer/pages}/MyProfile.vue (87%) rename packages/theme/{pages/MyAccount => modules/customer/pages}/MyReviews.vue (83%) rename packages/theme/{pages/MyAccount => modules/customer/pages}/MyWishlist.vue (71%) rename packages/theme/{pages/MyAccount => modules/customer/pages}/OrderHistory.vue (93%) create mode 100644 packages/theme/modules/magento/defaultConfig.ts create mode 100644 packages/theme/modules/magento/helpers/index.ts create mode 100644 packages/theme/modules/magento/index.ts create mode 100644 packages/theme/modules/magento/plugin.ts rename packages/theme/{components => modules/theme/components/wishlist}/WishlistSidebar.vue (59%) create mode 100644 packages/theme/modules/theme/index.ts create mode 100644 packages/theme/modules/wishlist/composables/useWishlist/index.ts create mode 100644 packages/theme/modules/wishlist/composables/useWishlist/useWishlist.ts create mode 100644 packages/theme/modules/wishlist/helpers/findItemOnWishlist.ts create mode 100644 packages/theme/modules/wishlist/helpers/productMatch.ts create mode 100644 packages/theme/modules/wishlist/index.ts create mode 100644 packages/theme/modules/wishlist/store/wishlistStore.ts delete mode 100644 packages/theme/pages/Category.vue delete mode 100644 packages/theme/pages/Shipping.vue create mode 100644 packages/theme/plugins/graphqlClient.ts create mode 100644 packages/theme/plugins/query/StoreConfig.gql.ts create mode 100644 packages/theme/plugins/storeConfigPlugin.ts create mode 100644 packages/theme/static/icon.png create mode 100644 packages/theme/stores/category.ts create mode 100644 packages/theme/stores/config.ts create mode 100644 packages/theme/stores/customer.ts create mode 100644 packages/theme/stores/graphql/categoryList.gql.ts create mode 100644 packages/theme/test-utils/mocks/categoryTreeDataMock.ts create mode 100644 packages/theme/test-utils/mocks/useUiHelpersMock.ts create mode 100644 packages/theme/tests/e2e/tsconfig.json create mode 100644 packages/theme/types/core.ts create mode 100644 packages/theme/types/shims-vue.d.ts delete mode 100644 rollup.base.config.js create mode 100644 scripts/build.js create mode 100644 scripts/generateApiReference.mjs create mode 100644 scripts/templates/api-extractor.theme.json create mode 100644 scripts/templates/tsconfig.theme.json delete mode 100644 tsconfig.base.json create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index 00e852c11..d0858feb9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,10 +12,11 @@ module.exports = { parserOptions: { parser: '@typescript-eslint/parser', project: [ - resolve(__dirname, './tsconfig.base.json'), + resolve(__dirname, './tsconfig.json'), resolve(__dirname, './packages/api-client/tsconfig.json'), resolve(__dirname, './packages/composables/tsconfig.json'), - resolve(__dirname, './packages/theme/tsconfig.json') + resolve(__dirname, './packages/theme/tsconfig.json'), + resolve(__dirname, './packages/theme/tests/e2e/tsconfig.json'), ], tsconfigRootDir: __dirname, extraFileExtensions: ['.vue'], @@ -30,6 +31,14 @@ module.exports = { '@vue-storefront/eslint-config-jest', ], rules: { - "@typescript-eslint/no-floating-promises": "off" + "@typescript-eslint/no-floating-promises": "off", + "jest/expect-expect": [ + "error", + { + "assertFunctionNames": ["expect", "getByRole", "getByTestId"], + } + ], + "no-plusplus": "off", } } + diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..084db9f1d --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @Frodigo @bartoszherba @sethidden diff --git a/.github/workflows/assing-pr-to-author.yml b/.github/workflows/assing-pr-to-author.yml index 3cf7226c9..37af3ceb7 100644 --- a/.github/workflows/assing-pr-to-author.yml +++ b/.github/workflows/assing-pr-to-author.yml @@ -3,6 +3,10 @@ on: pull_request: types: [opened, ready_for_review, edited, synchronize] +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: assignAuthor: name: Assing diff --git a/.github/workflows/conventional-pr-name.yml b/.github/workflows/conventional-pr-name.yml index 895c766f6..465216619 100644 --- a/.github/workflows/conventional-pr-name.yml +++ b/.github/workflows/conventional-pr-name.yml @@ -3,6 +3,10 @@ on: pull_request: types: ['opened', 'edited', 'reopened', 'synchronize'] +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: lint: name: Validate PR Title (conventional-commit) diff --git a/.github/workflows/deploy-vue-storefront-cloud.yml b/.github/workflows/deploy-vue-storefront-cloud.yml index 755917066..214eb9977 100644 --- a/.github/workflows/deploy-vue-storefront-cloud.yml +++ b/.github/workflows/deploy-vue-storefront-cloud.yml @@ -4,6 +4,7 @@ on: branches: - main - develop + - enterprise - release/* jobs: @@ -25,108 +26,93 @@ jobs: password: ${{ secrets.CLOUD_PASSWORD }} dockerfile: .vuestorefrontcloud/docker/Dockerfile buildoptions: --compress - buildargs: NPM_EMAIL,NPM_PASS,NPM_USER,NPM_REGISTRY,STORE_URL,MAGENTO_GRAPHQL,MAGENTO_EXTERNAL_CHECKOUT,MAGENTO_EXTERNAL_CHECKOUT_URL,MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH,IMAGE_PROVIDER,IMAGE_PROVIDER_BASE_URL,REDIS__HOST,REDIS__PORT,REDIS__CACHE_INVALIDATE_KEY,REDIS__CACHE_INVALIDATE_URL,REDIS__KEY_PREFIX,REDIS__ENABLED,SENTRY_DSN,RECAPTCHA_SITE_KEY,RECAPTCHA_SECRET_KEY + buildargs: NPM_EMAIL,NPM_PASS,NPM_USER,NPM_REGISTRY,LAST_COMMIT,VSF_STORE_URL,VSF_MAGENTO_BASE_URL,VSF_MAGENTO_GRAPHQL_URL,VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED,VSF_MAGENTO_EXTERNAL_CHECKOUT_URL,VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH,VSF_IMAGE_PROVIDER,VSF_IMAGE_PROVIDER_BASE_URL,VSF_IMAGE_PROVIDER_DOMAIN,VSF_REDIS_HOST,VSF_REDIS_PORT,VSF_REDIS_CACHE_INVALIDATE_KEY,VSF_REDIS_CACHE_INVALIDATE_URL,VSF_REDIS_KEY_PREFIX,VSF_REDIS_ENABLED,VSF_RECAPTCHA_ENABLED,VSF_RECAPTCHA_HIDE_BADGE,VSF_RECAPTCHA_VERSION,VSF_RECAPTCHA_SIZE,VSF_RECAPTCHA_MIN_SCORE,VSF_RECAPTCHA_SITE_KEY,VSF_RECAPTCHA_SECRET_KEY,VSF_SENTRY_DSN, + env: NPM_EMAIL: ${{ secrets.NPM_EMAIL }} - NPM_PASS: ${{ secrets.CLOUD_PASSWORD }} NPM_USER: ${{ secrets.CLOUD_USERNAME }} + NPM_PASS: ${{ secrets.CLOUD_PASSWORD }} NPM_REGISTRY: https://registrynpm.storefrontcloud.io - STORE_URL: ${{ secrets.STORE_URL }} - MAGENTO_GRAPHQL: ${{ secrets.MAGENTO_GRAPHQL }} - MAGENTO_EXTERNAL_CHECKOUT: false - MAGENTO_EXTERNAL_CHECKOUT_URL: ${{ secrets.MAGENTO_EXTERNAL_CHECKOUT_URL }} - MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH: ${{ secrets.MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH }} - IMAGE_PROVIDER: ${{ secrets.IMAGE_PROVIDER }} - IMAGE_PROVIDER_BASE_URL: ${{ secrets.IMAGE_PROVIDER_BASE_URL }} - REDIS__HOST: ${{ secrets.REDIS__HOST }} - REDIS__PORT: ${{ secrets.REDIS__PORT }} - REDIS__KEY_PREFIX: ${{ secrets.REDIS__KEY_PREFIX }} - REDIS__CACHE_INVALIDATE_KEY: ${{ secrets.REDIS__CACHE_INVALIDATE_KEY }} - REDIS__CACHE_INVALIDATE_URL: ${{ secrets.REDIS__CACHE_INVALIDATE_URL }} - REDIS__ENABLED: ${{ secrets.REDIS__ENABLED }} - SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - RECAPTCHA_SITE_KEY: ${{ secrets.RECAPTCHA_SITE_KEY }} - RECAPTCHA_SECRET_KEY: ${{ secrets.RECAPTCHA_SECRET_KEY }} - deploy: - runs-on: ubuntu-latest + + VSF_STORE_URL: '' # TODO + + VSF_MAGENTO_BASE_URL: https://magento2-instance.vuestorefront.io/ + VSF_MAGENTO_GRAPHQL_URL: https://magento2-instance.vuestorefront.io/graphql + VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED: false + VSF_MAGENTO_EXTERNAL_CHECKOUT_URL: '' + VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH: '' + + VSF_IMAGE_PROVIDER: cloudinary + VSF_IMAGE_PROVIDER_BASE_URL: https://res-4.cloudinary.com/dnozky7on/image/upload/ + VSF_IMAGE_PROVIDER_DOMAIN: https://res-4.cloudinary.com + + VSF_REDIS_ENABLED: true + VSF_REDIS_HOST: redis # VSF cloud specific + VSF_REDIS_PORT: 6379 + VSF_REDIS_KEY_PREFIX: ${{ github.sha }} + VSF_REDIS_CACHE_INVALIDATE_KEY: magento2vsf2 + VSF_REDIS_CACHE_INVALIDATE_URL: /cache-invalidate + + VSF_RECAPTCHA_ENABLED: false + VSF_RECAPTCHA_HIDE_BADGE: false + VSF_RECAPTCHA_VERSION: 3 + VSF_RECAPTCHA_SIZE: invisible + VSF_RECAPTCHA_MIN_SCORE: 0.5 + VSF_RECAPTCHA_SITE_KEY: 6Ldce0EeAAAAAAGGtGWG-e-SygXiFub6PXHT5fKd + VSF_RECAPTCHA_SECRET_KEY: ${{ secrets.RECAPTCHA_SECRET_KEY }} + + VSF_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + + LAST_COMMIT: ${{ github.sha }} + + deploy-main: + uses: ./.github/workflows/deployment-template.yml needs: build - steps: - - uses: chrnorm/deployment-action@releases/v1 - name: Create GitHub deployment - id: deployment - with: - token: ${{ github.token }} - target_url: https://demo-magento2.europe-west1.gcp.storefrontcloud.io - environment: production - initial_status: in_progress - - name: Deploy on demo-magento2.europe-west1.gcp.storefrontcloud.io - if: startsWith(github.ref, 'refs/heads/main') - run: | - if curl -s -H 'X-User-Id: ${{ secrets.CLOUD_USERNAME }}' -H 'X-Api-Key: ${{ secrets.CLOUD_PASSWORD }}' -H 'Content-Type: application/json' -X POST -d '{ - "code":"demo-magento2", - "region":"europe-west1.gcp", - "frontContainerVersion":"${{ github.sha }}" - }' https://farmer.storefrontcloud.io/instances | grep -q '{"code":200,"result":"Instance updated!"}'; then - echo "Instance updated" - else - echo "Something went wrong during the update process..." - exit 1 - fi - - name: Deploy on demo-magento2-dev.europe-west1.gcp.storefrontcloud.io/ - if: startsWith(github.ref, 'refs/heads/develop') - run: | - if curl -s -H 'X-User-Id: ${{ secrets.CLOUD_USERNAME }}' -H 'X-Api-Key: ${{ secrets.CLOUD_PASSWORD }}' -H 'Content-Type: application/json' -X POST -d '{ - "code":"demo-magento2-dev", - "region":"europe-west1.gcp", - "frontContainerVersion":"${{ github.sha }}" - }' https://farmer.storefrontcloud.io/instances | grep -q '{"code":200,"result":"Instance updated!"}'; then - echo "Instance updated" - else - echo "Something went wrong during the update process..." - exit 1 - fi - - name: Deploy on demo-magento2-canary.europe-west1.gcp.storefrontcloud.io - if: startsWith(github.ref, 'refs/heads/release') - run: | - if curl -s -H 'X-User-Id: ${{ secrets.CLOUD_USERNAME }}' -H 'X-Api-Key: ${{ secrets.CLOUD_PASSWORD }}' -H 'Content-Type: application/json' -X POST -d '{ - "code":"demo-magento2-canary", - "region":"europe-west1.gcp", - "frontContainerVersion":"${{ github.sha }}" - }' https://farmer.storefrontcloud.io/instances | grep -q '{"code":200,"result":"Instance updated!"}'; then - echo "Instance updated" - else - echo "Something went wrong during the update process..." - exit 1 - fi - - name: Deploy on demo-magento2-enterprise.europe-west1.gcp.storefrontcloud.io - if: startsWith(github.ref, 'refs/heads/enterprise') - run: | - if curl -s -H 'X-User-Id: ${{ secrets.CLOUD_USERNAME }}' -H 'X-Api-Key: ${{ secrets.CLOUD_PASSWORD }}' -H 'Content-Type: application/json' -X POST -d '{ - "code":"demo-magento2-enterprise", - "region":"europe-west1.gcp", - "frontContainerVersion":"${{ github.sha }}" - }' https://farmer.storefrontcloud.io/instances | grep -q '{"code":200,"result":"Instance updated!"}'; then - echo "Instance updated" - else - echo "Something went wrong during the update process..." - exit 1 - fi + if: github.ref == 'refs/heads/main' + with: + github_environment_name: production + environment_code: demo-magento2 + target_url: https://demo-magento2.europe-west1.gcp.storefrontcloud.io + secrets: + cloud_username: ${{ secrets.CLOUD_USERNAME }} + cloud_password: ${{ secrets.CLOUD_PASSWORD }} + deployment_status_token: ${{ secrets.DEPLOYMENT_PERSONAL_ACCESS_TOKEN }} - - name: Update deployment status (success) - if: success() - uses: chrnorm/deployment-status@releases/v1 - with: - token: ${{ github.token }} - target_url: https://demo-magento2.europe-west1.gcp.storefrontcloud.io - state: success - description: Congratulations! The deploy is done. - deployment_id: ${{ steps.deployment.outputs.deployment_id }} - - name: Update deployment status (failure) - if: failure() - uses: chrnorm/deployment-status@releases/v1 - with: - token: ${{ github.token }} - target_url: https://demo-magento2.europe-west1.gcp.storefrontcloud.io - description: Unfortunately, the instance hasn't been updated. - state: failure - deployment_id: ${{ steps.deployment.outputs.deployment_id }} + deploy-develop: + uses: ./.github/workflows/deployment-template.yml + needs: build + if: github.ref == 'refs/heads/develop' + with: + github_environment_name: dev + environment_code: demo-magento2-dev + target_url: https://demo-magento2-dev.europe-west1.gcp.storefrontcloud.io + secrets: + cloud_username: ${{ secrets.CLOUD_USERNAME }} + cloud_password: ${{ secrets.CLOUD_PASSWORD }} + deployment_status_token: ${{ secrets.DEPLOYMENT_PERSONAL_ACCESS_TOKEN }} + + deploy-release: + uses: ./.github/workflows/deployment-template.yml + needs: build + if: startsWith(github.ref, 'refs/heads/release') + with: + github_environment_name: canary + environment_code: demo-magento2-canary + target_url: https://demo-magento2-canary.europe-west1.gcp.storefrontcloud.io + secrets: + cloud_username: ${{ secrets.CLOUD_USERNAME }} + cloud_password: ${{ secrets.CLOUD_PASSWORD }} + deployment_status_token: ${{ secrets.DEPLOYMENT_PERSONAL_ACCESS_TOKEN }} + + deploy-enterprise: + uses: ./.github/workflows/deployment-template.yml + needs: build + if: github.ref == 'refs/heads/enterprise' + with: + github_environment_name: enterprise + environment_code: demo-magento2-enterprise + target_url: https://demo-magento2-enterprise.europe-west1.gcp.storefrontcloud.io + secrets: + cloud_username: ${{ secrets.CLOUD_USERNAME }} + cloud_password: ${{ secrets.CLOUD_PASSWORD }} + deployment_status_token: ${{ secrets.DEPLOYMENT_PERSONAL_ACCESS_TOKEN }} diff --git a/.github/workflows/deployment-template.yml b/.github/workflows/deployment-template.yml new file mode 100644 index 000000000..73bb98996 --- /dev/null +++ b/.github/workflows/deployment-template.yml @@ -0,0 +1,69 @@ + # https://docs.github.com/en/actions/using-workflows/reusing-workflows#creating-a-reusable-workflow +on: + workflow_call: + inputs: + github_environment_name: + required: true + type: string + + environment_code: + required: true + type: string + + target_url: + required: true + type: string + secrets: + cloud_username: + required: true + cloud_password: + required: true + deployment_status_token: # can be ${{ github.token }} + required: true + + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: chrnorm/deployment-action@releases/v1 + name: Create GitHub deployment + id: deployment + with: + token: ${{ secrets.deployment_status_token }} + environment: ${{ inputs.github_environment_name }} + initial_status: in_progress + target_url: ${{ inputs.target_url }} + - name: Deploy on ${{ inputs.target_url }} + run: | + if curl -s -H 'X-User-Id: ${{ secrets.cloud_username }}' -H 'X-Api-Key: ${{ secrets.cloud_password }}' -H 'Content-Type: application/json' -X POST -d '{ + "code":"${{ inputs.environment_code }}", + "region":"europe-west1.gcp", + "frontContainerVersion":"${{ github.sha }}" + }' https://farmer.storefrontcloud.io/instances | grep -q '{"code":200,"result":"Instance updated!"}'; then + echo "Instance updated" + else + echo "Something went wrong during the update process..." + exit 1 + fi + + - name: Update deployment status (success) + if: success() + uses: chrnorm/deployment-status@releases/v1 + with: + token: ${{ secrets.deployment_status_token }} + target_url: ${{ inputs.target_url }} + state: success + description: Congratulations! The deploy is done. + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + + - name: Update deployment status (failure) + if: failure() + uses: chrnorm/deployment-status@releases/v1 + with: + token: ${{ secrets.deployment_status_token }} + target_url: ${{ inputs.target_url }} + description: Unfortunately, the instance hasn't been updated. + state: failure + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + diff --git a/.github/workflows/speedcurve.yml b/.github/workflows/speedcurve.yml new file mode 100644 index 000000000..eaec33634 --- /dev/null +++ b/.github/workflows/speedcurve.yml @@ -0,0 +1,25 @@ +name: "Run SpeedCurve test" + +on: + deployment_status + +jobs: + speedcurve: + if: github.event.deployment_status.state == 'success' && github.event.deployment.ref == 'refs/heads/develop' + runs-on: ubuntu-latest + steps: + - name: 'Wait for container deployed on VSF Cloud to come online' + run: 'sleep 300' + shell: 'bash' + + - name: Shorten deployment commit SHA + id: vars + shell: bash + run: echo "::set-output name=sha_short::$(echo ${{ github.event.deployment.sha }} | cut -c1-8)" + + - name: 'Ask SpeedCurve to run performance tests' + uses: SpeedCurve-Metrics/speedcurve-test-action@v1.2.2 + with: + api_key: ${{ secrets.SPEEDCURVE_API_KEY }} + site_id: 744017 + note: commit ${{ steps.vars.outputs.sha_short }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 67f469d92..c81da536b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,10 @@ on: - develop - release-** +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: test_repository: name: Build and test diff --git a/.gitignore b/.gitignore index 11f332738..b60b71922 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,4 @@ dist .history/ .graphqlconfig .idea +docs.sh diff --git a/.husky/pre-commit b/.husky/pre-commit index beaa057b4..6e2035b72 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -npx lerna run --parallel precommit +yarn run --silent lint-staged diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg deleted file mode 100755 index 73a4cdc33..000000000 --- a/.husky/prepare-commit-msg +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -exec < /dev/tty && git cz --hook || true diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 000000000..54065f8e0 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,3 @@ +{ + "*.{js,jsx,ts,tsx,vue}": "eslint --fix", +} diff --git a/.vuestorefrontcloud/docker/Dockerfile b/.vuestorefrontcloud/docker/Dockerfile index 31e441bd8..918540d3d 100644 --- a/.vuestorefrontcloud/docker/Dockerfile +++ b/.vuestorefrontcloud/docker/Dockerfile @@ -1,51 +1,68 @@ FROM node:16 -ARG COMMIT +ARG LAST_COMMIT ARG NPM_USER ARG NPM_PASS ARG NPM_EMAIL ARG NPM_REGISTRY -ARG MAGENTO_EXTERNAL_CHECKOUT -ARG MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH -ARG STORE_URL -ARG IMAGE_PROVIDER_BASE_URL -ARG REDIS__HOST -ARG REDIS__PORT -ARG REDIS__CACHE_INVALIDATE_KEY -ARG RECAPTCHA_ENABLED -ARG RECAPTCHA_HIDE_BADGE -ARG RECAPTCHA_VERSION -ARG RECAPTCHA_SIZE -ARG RECAPTCHA_MIN_SCORE -ARG RECAPTCHA_SITE_KEY -ARG RECAPTCHA_SECRET_KEY - -ENV MAGENTO_GRAPHQL=https://magento2-instance.vuestorefront.io:8443/graphql -ENV MAGENTO_EXTERNAL_CHECKOUT_URL=https://magento2-instance.vuestorefront.io -ENV MAGENTO_EXTERNAL_CHECKOUT=${MAGENTO_EXTERNAL_CHECKOUT} -ENV MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH=${MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH} -ENV STORE_URL=${STORE_URL} -ENV LAST_COMMIT=${COMMIT} -ENV STORE_ENV=production -ENV NUXT_APP_ENV=production -ENV NUXT_APP_PORT=3000 -ENV MAGENTO_BASE_URL=https://magento2-instance.vuestorefront.io/ -ENV IMAGE_PROVIDER=cloudinary -ENV IMAGE_PROVIDER_BASE_URL=${IMAGE_PROVIDER_BASE_URL} -ENV REDIS__HOST=${REDIS__HOST} -ENV REDIS__PORT=${REDIS__PORT} -ENV REDIS__CACHE_INVALIDATE_KEY=${REDIS__CACHE_INVALIDATE_KEY} -ENV REDIS__CACHE_INVALIDATE_URL=/cache-invalidate -ENV REDIS__KEY_PREFIX=magento2vsf2 -ENV REDIS__ENABLED=true -ENV SENTRY_DSN=${SENTRY_DSN} -ENV RECAPTCHA_ENABLED=false -ENV RECAPTCHA_HIDE_BADGE=false -ENV RECAPTCHA_VERSION=3 -ENV RECAPTCHA_SIZE=invisible -ENV RECAPTCHA_MIN_SCORE=0.5 -ENV RECAPTCHA_SITE_KEY=${RECAPTCHA_SITE_KEY} -ENV RECAPTCHA_SECRET_KEY=${RECAPTCHA_SITE_KEY} + +ARG VSF_STORE_URL + +ARG VSF_MAGENTO_BASE_URL +ARG VSF_MAGENTO_GRAPHQL_URL +ARG VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED +ARG VSF_MAGENTO_EXTERNAL_CHECKOUT_URL +ARG VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH + +ARG VSF_IMAGE_PROVIDER +ARG VSF_IMAGE_PROVIDER_BASE_URL +ARG VSF_IMAGE_PROVIDER_DOMAIN + +ARG VSF_REDIS_ENABLED +ARG VSF_REDIS_HOST +ARG VSF_REDIS_PORT +ARG VSF_REDIS_KEY_PREFIX +ARG VSF_REDIS_CACHE_INVALIDATE_URL +ARG VSF_REDIS_CACHE_INVALIDATE_KEY + +ARG VSF_RECAPTCHA_ENABLED +ARG VSF_RECAPTCHA_HIDE_BADGE +ARG VSF_RECAPTCHA_VERSION +ARG VSF_RECAPTCHA_SIZE +ARG VSF_RECAPTCHA_MIN_SCORE +ARG VSF_RECAPTCHA_SITE_KEY +ARG VSF_RECAPTCHA_SECRET_KEY + +ARG VSF_SENTRY_DSN + +ENV LAST_COMMIT=${LAST_COMMIT} + +ENV VSF_NUXT_APP_ENV=production +ENV VSF_NUXT_APP_PORT=3000 + +ENV VSF_MAGENTO_BASE_URL=${VSF_MAGENTO_BASE_URL} +ENV VSF_MAGENTO_GRAPHQL_URL=${VSF_MAGENTO_GRAPHQL_URL} +ENV VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED=${VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED} +ENV VSF_MAGENTO_EXTERNAL_CHECKOUT_URL=${VSF_MAGENTO_EXTERNAL_CHECKOUT_URL} +ENV VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH=${VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH} +ENV VSF_STORE_URL=${VSF_STORE_URL} +ENV VSF_IMAGE_PROVIDER=${VSF_IMAGE_PROVIDER} +ENV VSF_IMAGE_PROVIDER_BASE_URL=${VSF_IMAGE_PROVIDER_BASE_URL} +ENV VSF_IMAGE_PROVIDER_DOMAINL=${VSF_IMAGE_PROVIDER_DOMAINL} +ENV VSF_REDIS_ENABLED=${VSF_REDIS_ENABLED} +ENV VSF_REDIS_HOST=${VSF_REDIS_HOST} +ENV VSF_REDIS_PORT=${VSF_REDIS_PORT} +ENV VSF_REDIS_KEY_PREFIX=${VSF_REDIS_KEY_PREFIX} +ENV VSF_REDIS_CACHE_INVALIDATE_KEY=${VSF_REDIS_CACHE_INVALIDATE_KEY} +ENV VSF_REDIS_CACHE_INVALIDATE_URL=${VSF_REDIS_CACHE_INVALIDATE_URL} +ENV VSF_SENTRY_DSN=${VSF_SENTRY_DSN} +ENV VSF_RECAPTCHA_ENABLED=${VSF_RECAPTCHA_ENABLED} +ENV VSF_RECAPTCHA_HIDE_BADGE=${VSF_RECAPTCHA_HIDE_BADGE} +ENV VSF_RECAPTCHA_VERSION=${VSF_RECAPTCHA_VERSION} +ENV VSF_RECAPTCHA_SIZE=${VSF_RECAPTCHA_SIZE} +ENV VSF_RECAPTCHA_MIN_SCORE=${VSF_RECAPTCHA_MIN_SCORE} +ENV VSF_RECAPTCHA_SITE_KEY=${VSF_RECAPTCHA_SITE_KEY} +ENV VSF_RECAPTCHA_SECRET_KEY=${VSF_RECAPTCHA_SITE_KEY} RUN npm config set @vsf-enterprise:registry=https://registrynpm.storefrontcloud.io @@ -60,8 +77,7 @@ RUN mv /var/www/packages/theme/nuxt.config.js /var/www/packages/theme/base.nuxt. RUN yarn install -RUN npx yarn@1.19.0 workspace @vue-storefront/magento-theme add @nuxtjs/sentry @sentry/tracing - +RUN npx yarn@1.19.0 workspace @vue-storefront/magento-theme add @sentry/tracing @nuxtjs/sentry RUN yarn build && yarn cache clean --all COPY .vuestorefrontcloud/docker/vue-storefront.sh /usr/local/bin/ diff --git a/.vuestorefrontcloud/docker/nuxt.config.additional.js b/.vuestorefrontcloud/docker/nuxt.config.additional.js index aa9029696..b5e52cd90 100755 --- a/.vuestorefrontcloud/docker/nuxt.config.additional.js +++ b/.vuestorefrontcloud/docker/nuxt.config.additional.js @@ -10,7 +10,7 @@ export default () => { '@nuxtjs/sentry' ], sentry: { - dsn: process.env.SENTRY_DSN, + dsn: process.env.VSF_SENTRY_DSN, tracing: true, }, }; diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4b2941210..5b48d7e56 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,7 +52,7 @@ To make your life easier @vuestorefront/magento2 is commitizen-friendly and prov > Commit standards - [conventional-changelog](https://github.com/conventional-changelog) -- husky commit message hook available +- run `npx cz` to commit using commitizen - present tense - maximum of 100 characters - message format of `$type($scope): $message` diff --git a/README.md b/README.md index 139dd161b..a3e32dc57 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,11 @@ ### Stay connected -[![GitHub Repo stars](https://img.shields.io/github/stars/vuestorefront/vue-storefront?style=social)](https://github.com/vuestorefront/vue-storefront) -[![Twitter Follow](https://img.shields.io/twitter/follow/vuestorefront?style=social)](https://twitter.com/vuestorefront) -[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCkm1F3Cglty3CE1QwKQUhhg?style=social)](https://www.youtube.com/c/VueStorefront) +![GitHub Repo stars](https://img.shields.io/github/stars/vuestorefront/vue-storefront?style=social) +![Twitter Follow](https://img.shields.io/twitter/follow/vuestorefront?style=social) +![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCkm1F3Cglty3CE1QwKQUhhg?style=social) [![Discord](https://img.shields.io/discord/770285988244750366?label=join%20discord&logo=Discord&logoColor=white)](https://discord.vuestorefront.io) - -[![All Contributors](https://img.shields.io/badge/all_contributors-19-orange.svg?style=flat-square)](#contributors-) - + ## Vue Storefront 2 integration with Magento @@ -19,6 +17,10 @@ This project is a Magento 2 integration for Vue Storefront 2.
+ +[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) + + ## How to start if you want to try out the integration ``` @@ -77,23 +79,19 @@ Find more information about the module [GraphQl Custom Config](https://github.co ```bash yarn install ``` -5. Define a store running environment by adding a `STORE_ENV` to your running project or execute the code - ```bash - echo "STORE_ENV=dev" >> .env - ``` -6. Copy `config/example.json` to an environment named config and update GraphQL Endpoint +5. Copy `.env.example` to `.env` ```bash - cp packages/theme/config/example.json packages/theme/config/dev.json + cp packages/theme/.env.example packages/theme/.env ``` -7. Update `magentoGraphQl` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. +6. Update `MAGENTO_GRAPHQL_URL` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. ``` - "magentoGraphQl": "https://{YOUR_SITE_FRONT_URL}/graphql", + MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql ``` -8. Build dependencies `yarn build:api-client && yarn build:composables` +7. Build dependencies `yarn build:api-client && yarn build:composables` ```bash yarn build:api-client && yarn build:composables ``` -9. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` +8. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` ```bash yarn dev:theme ``` @@ -107,12 +105,11 @@ Find more information about the module [GraphQl Custom Config](https://github.co ## Support -If you have any questions about this integration we will be happy to answer them on `magento2` channel on [our Discord](http://discord.vuestorefront.io). +If you have any questions about this integration we will be happy to answer them on `magento2-vsf2` channel on [our Discord](http://discord.vuestorefront.io). ## Contributors ✨ ### Honorable Mentions -- [Caravel x](https://www.caravelx.com/) - [Cyberfuze](https://cyberfuze.com/) - [Leonex](https://www.leonex.de/) @@ -131,24 +128,18 @@ Thanks go to these wonderful people 🙌:
Patrick Monteiro

💻 -
Kevin Gorjan

💻 📖 -
Bartosz Herba

💻 📖 🚧 🧑‍🏫 👀 -
Marcin Kwiatkowski

💻 📆 💼 📖 🤔 🚧 🧑‍🏫 👀 +
Kevin Gorjan

💻 +
Bartosz Herba

💻 +
Marcin Kwiatkowski

💻 📆
Filip Rakowski

💬 🧑‍🏫 👀 -
Filip Sobol

💬 🧑‍🏫 👀 📖 +
Filip Sobol

💬 🧑‍🏫 👀
Patryk Andrzejewski

💬 🧑‍🏫 👀
Renan Oliveira

🔧 🔌
Dominik Deimel

💻 📖
Lior Lindvor

💻 - -
Artur Tagisow

💻 -
Jonathan Ribas

💻 -
Ali Ghanei

💻 -
Maya Shavin

📖 - diff --git a/api-extractor.base.json b/api-extractor.base.json index 6b0a718b0..8aa2f0c35 100644 --- a/api-extractor.base.json +++ b/api-extractor.base.json @@ -2,7 +2,7 @@ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", "projectFolder": ".", "compiler": { - "tsconfigFilePath": "/tsconfig.base.json" + "tsconfigFilePath": "/tsconfig.json" }, "docModel": { "enabled": true diff --git a/docs/.gitignore b/docs/.gitignore index 60239afcf..6511fed0b 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1,2 @@ .yarn/ +api-reference/ diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 4ecffda10..32610a906 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -17,19 +17,22 @@ module.exports = { `]], ], configureWebpack: (config) => { - config.module.rules = config.module.rules.map(rule => ({ + config.module.rules = config.module.rules.map((rule) => ({ ...rule, - use: rule.use && rule.use.map(useRule => ({ - ...useRule, - options: useRule.loader === 'url-loader' ? - /** + use: + rule.use && + rule.use.map((useRule) => ({ + ...useRule, + options: + useRule.loader === 'url-loader' + ? /** Hack for loading images properly. ref: https://github.com/vuejs/vue-loader/issues/1612#issuecomment-559366730 */ - { ...useRule.options, esModule: false } : - useRule.options - })) - })) + { ...useRule.options, esModule: false } + : useRule.options, + })), + })); }, /** * Ref:https://v1.vuepress.vuejs.org/plugin/ @@ -40,11 +43,11 @@ module.exports = { '@vuepress/plugin-medium-zoom', { // This selector excludes images from the "Integrations" page - selector: 'main :not(.tile-image) > img' - } + selector: 'main :not(.tile-image) > img', + }, ], '@vuepress/active-header-links', - '@vuepress/search' + '@vuepress/search', ], themeConfig: { GTM_TAG, @@ -58,8 +61,8 @@ module.exports = { { text: 'Vue Storefront', link: 'https://vuestorefront.io/' }, { text: 'Core Documentation', link: 'https://docs.vuestorefront.io/v2/' }, { text: 'Demo', link: 'https://demo-magento2.europe-west1.gcp.storefrontcloud.io/' }, - { text: 'GitHub', link: 'https://github.com/vuestorefront/magento2'}, - { text: 'Environments', link: 'https://docs.vuestorefront.io/magento/guide/environments.html'} + { text: 'GitHub', link: 'https://github.com/vuestorefront/magento2' }, + { text: 'Environments', link: 'https://docs.vuestorefront.io/magento/guide/environments.html' }, ], sidebar: [ { @@ -67,10 +70,10 @@ module.exports = { collapsable: false, children: [ ['/', 'Introduction'], - ['/guide/environments', 'Environments'], - ['/guide/functional-catalog', 'Functional catalog'], + ['/guide/environments', 'Demo environments'], + ['/guide/supported-features', 'Supported features'], ['/guide/about', 'About'], - ] + ], }, { title: 'Creating a Storefront', @@ -80,8 +83,8 @@ module.exports = { ['/guide/configuration', 'Configuration'], ['/guide/override-queries', 'Override queries'], ['/guide/testing', 'Testing'], - ['/guide/recaptcha', 'ReCaptcha'] - ] + ['/guide/recaptcha', 'ReCaptcha'], + ], }, { title: 'Performance', @@ -89,45 +92,63 @@ module.exports = { children: [ ['/guide/graphql-get', 'Varnish & GET for GraphQL Queries'], ['/guide/ssr', 'Server Side Rendering Cache'], - ] + ], + }, + { + title: 'Performance', + collapsable: false, + children: [ + ['/guide/graphql-get', 'Varnish & GET for GraphQL Queries'], + ['/guide/ssr', 'Server Side Rendering Cache'], + ], }, { title: 'Composables', children: [ - ['/guide/composables/use-addresses', 'useAddresses'], - ['/guide/composables/use-billing', 'useBilling'], - ['/guide/composables/use-cart', 'useCart'], - ['/guide/composables/use-category', 'useCategory'], - ['/guide/composables/use-category-search', 'useCategorySearch'], - ['/guide/composables/use-config', 'useConfig'], - ['/guide/composables/use-content', 'useContent'], - ['/guide/composables/use-country-search', 'useCountrySearch'], - ['/guide/composables/use-custom-mutation', 'useCustomMutation'], - ['/guide/composables/use-custom-query', 'useCustomQuery'], - ['/guide/composables/use-external-checkout', 'useExternalCheckout'], - ['/guide/composables/use-facet', 'useFacet'], - ['/guide/composables/use-forgot-password', 'useForgotPassword'], - ['/guide/composables/use-get-shipping-methods', 'useGetShippingMethods'], - ['/guide/composables/use-guest-user', 'useGuestUser'], - ['/guide/composables/use-make-oder', 'useMakeOrder'], - ['/guide/composables/use-menu-category', 'useMenuCategory'], - ['/guide/composables/use-newsletter', 'useNewsletter'], - ['/guide/composables/use-payment-provider', 'usePaymentProvider'], - ['/guide/composables/use-product', 'useProduct'], - ['/guide/composables/use-related-products', 'useRelatedProducts'], - ['/guide/composables/use-review', 'useReview'], - ['/guide/composables/use-store', 'useStore'], - ['/guide/composables/use-upsell-products', 'useUpsellProducts'], - ['/guide/composables/use-url-resolver', 'useUrlResolver'], - ['/guide/composables/use-wishlist', 'useWishlist'], - ] + ['/api-reference/magento-theme.useaddresses', 'useAddresses()'], + ['/api-reference/magento-theme.useapi', 'useApi()'], + ['/api-reference/magento-theme.usebilling', 'useBilling()'], + ['/api-reference/magento-theme.usecart', 'useCart()'], + ['/api-reference/magento-theme.usecategory', 'useCategory()'], + ['/api-reference/magento-theme.usecategorysearch', 'useCategorySearch()'], + ['/api-reference/magento-theme.useconfig', 'useConfig()'], + ['/api-reference/magento-theme.usecontent', 'useContent()'], + ['/api-reference/magento-theme.usecountrysearch', 'useCountrySearch()'], + ['/api-reference/magento-theme.usecurrency', 'useCurrency()'], + ['/api-reference/magento-theme.useexternalcheckout', 'useExternalCheckout()'], + ['/api-reference/magento-theme.usefacet', 'useFacet()'], + ['/api-reference/magento-theme.useforgotpassword', 'useForgotPassword()'], + ['/api-reference/magento-theme.usegetshippingmethods', 'useGetShippingMethods()'], + ['/api-reference/magento-theme.useguestuser', 'useGuestUser()'], + ['/api-reference/magento-theme.useimage', 'useImage()'], + ['/api-reference/magento-theme.usemagentoconfiguration', 'useMagentoConfiguration()'], + ['/api-reference/magento-theme.usemakeorder', 'useMakeOrder()'], + ['/api-reference/magento-theme.usenewsletter', 'useNewsletter()'], + ['/api-reference/magento-theme.usepaymentprovider', 'usePaymentProvider()'], + ['/api-reference/magento-theme.useproduct', 'useProduct()'], + ['/api-reference/magento-theme.userelatedproducts', 'useRelatedProducts()'], + ['/api-reference/magento-theme.usereview', 'useReview()'], + ['/api-reference/magento-theme.useshipping', 'useShipping()'], + ['/api-reference/magento-theme.useshippingprovider', 'useShippingProvider()'], + ['/api-reference/magento-theme.usestore', 'useStore()'], + ['/api-reference/magento-theme.useuihelpers', 'useUiHelpers()'], + ['/api-reference/magento-theme.useuinotification', 'useUiNotification()'], + ['/api-reference/magento-theme.useuistate', 'useUiState()'], + ['/api-reference/magento-theme.useupsellproducts', 'useUpsellProducts()'], + ['/api-reference/magento-theme.useurlresolver', 'useUrlResolver()'], + ['/api-reference/magento-theme.useuser', 'useUser()'], + ['/api-reference/magento-theme.useuseraddress', 'useUserAddress()'], + ['/api-reference/magento-theme.useuserorder', 'useUserOrder()'], + ['/api-reference/magento-theme.usewishlist', 'useWishlist()'], + ], }, { title: 'Reference', children: [ ['/plugins/', 'Plugins'], ['/api-reference/', 'API Reference'], - ] + ['/migration-guides/', 'Migration guides'], + ], }, { title: 'Nuxt Tips & Tricks', @@ -136,8 +157,8 @@ module.exports = { ['/improvements/security/', 'Security'], ['/improvements/logging/', 'Logging'], ['/improvements/analytics/', 'Analytics'], - ] - } - ] - } -} + ], + }, + ], + }, +}; diff --git a/docs/api-reference/index.md b/docs/api-reference/index.md deleted file mode 100644 index 55e173d49..000000000 --- a/docs/api-reference/index.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [@vue-storefront/magento](./magento.md) | | -| [@vue-storefront/magento-api](./magento-api.md) | api-client for Magento 2 integration for Vue Storefront 2. | - diff --git a/docs/api-reference/magento-api.addbundleproductstocart.md b/docs/api-reference/magento-api.addbundleproductstocart.md deleted file mode 100644 index 7232b602e..000000000 --- a/docs/api-reference/magento-api.addbundleproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addBundleProductsToCart](./magento-api.addbundleproductstocart.md) - -## addBundleProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddBundleProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.addconfigurableproductstocart.md b/docs/api-reference/magento-api.addconfigurableproductstocart.md deleted file mode 100644 index 4183d13c8..000000000 --- a/docs/api-reference/magento-api.addconfigurableproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addConfigurableProductsToCart](./magento-api.addconfigurableproductstocart.md) - -## addConfigurableProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddConfigurableProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.adddownloadableproductstocart.md b/docs/api-reference/magento-api.adddownloadableproductstocart.md deleted file mode 100644 index 437fa7b33..000000000 --- a/docs/api-reference/magento-api.adddownloadableproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addDownloadableProductsToCart](./magento-api.adddownloadableproductstocart.md) - -## addDownloadableProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddDownloadableProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.addproductstocart.md b/docs/api-reference/magento-api.addproductstocart.md deleted file mode 100644 index 431a040f6..000000000 --- a/docs/api-reference/magento-api.addproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addProductsToCart](./magento-api.addproductstocart.md) - -## addProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.addproducttowishlist.md b/docs/api-reference/magento-api.addproducttowishlist.md deleted file mode 100644 index acfa824a7..000000000 --- a/docs/api-reference/magento-api.addproducttowishlist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addProductToWishList](./magento-api.addproducttowishlist.md) - -## addProductToWishList variable - -Signature: - -```typescript -_default: (context: Context, input: AddProductsToWishlistMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.addsimpleproductstocart.md b/docs/api-reference/magento-api.addsimpleproductstocart.md deleted file mode 100644 index d2b68a46b..000000000 --- a/docs/api-reference/magento-api.addsimpleproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addSimpleProductsToCart](./magento-api.addsimpleproductstocart.md) - -## addSimpleProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddSimpleProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.addvirtualproductstocart.md b/docs/api-reference/magento-api.addvirtualproductstocart.md deleted file mode 100644 index 75b4bd9a6..000000000 --- a/docs/api-reference/magento-api.addvirtualproductstocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [addVirtualProductsToCart](./magento-api.addvirtualproductstocart.md) - -## addVirtualProductsToCart variable - -Signature: - -```typescript -_default: (context: Context, input: AddVirtualProductsToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.applycoupontocart.md b/docs/api-reference/magento-api.applycoupontocart.md deleted file mode 100644 index 5cb3439d0..000000000 --- a/docs/api-reference/magento-api.applycoupontocart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [applyCouponToCart](./magento-api.applycoupontocart.md) - -## applyCouponToCart variable - -Signature: - -```typescript -_default: (context: Context, input: ApplyCouponToCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.availablestores.md b/docs/api-reference/magento-api.availablestores.md deleted file mode 100644 index fe4756883..000000000 --- a/docs/api-reference/magento-api.availablestores.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [availableStores](./magento-api.availablestores.md) - -## availableStores variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.cart.md b/docs/api-reference/magento-api.cart.md deleted file mode 100644 index 9ef22f357..000000000 --- a/docs/api-reference/magento-api.cart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [cart](./magento-api.cart.md) - -## cart variable - -Signature: - -```typescript -_default: (context: Context, cartId: string, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.categorylist.md b/docs/api-reference/magento-api.categorylist.md deleted file mode 100644 index d3d4d5af3..000000000 --- a/docs/api-reference/magento-api.categorylist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [categoryList](./magento-api.categorylist.md) - -## categoryList variable - -Signature: - -```typescript -_default: (context: Context, params: CategoryListQueryVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.categorysearch.md b/docs/api-reference/magento-api.categorysearch.md deleted file mode 100644 index cf197eb15..000000000 --- a/docs/api-reference/magento-api.categorysearch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [categorySearch](./magento-api.categorysearch.md) - -## categorySearch variable - -Signature: - -```typescript -_default: (context: Context, filters: CategorySearchQueryVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.changecustomerpassword.md b/docs/api-reference/magento-api.changecustomerpassword.md deleted file mode 100644 index 07d282405..000000000 --- a/docs/api-reference/magento-api.changecustomerpassword.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [changeCustomerPassword](./magento-api.changecustomerpassword.md) - -## changeCustomerPassword variable - -Signature: - -```typescript -_default: (context: Context, params: { - currentPassword: string; - newPassword: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.cmsblocks.md b/docs/api-reference/magento-api.cmsblocks.md deleted file mode 100644 index bb01fbbba..000000000 --- a/docs/api-reference/magento-api.cmsblocks.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [cmsBlocks](./magento-api.cmsblocks.md) - -## cmsBlocks variable - -Signature: - -```typescript -_default: (context: Context, identifiers: string, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.cmspage.md b/docs/api-reference/magento-api.cmspage.md deleted file mode 100644 index 1f3386c2c..000000000 --- a/docs/api-reference/magento-api.cmspage.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [cmsPage](./magento-api.cmspage.md) - -## cmsPage variable - -Signature: - -```typescript -_default: (context: Context, identifier: string, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.countries.md b/docs/api-reference/magento-api.countries.md deleted file mode 100644 index de6747cf5..000000000 --- a/docs/api-reference/magento-api.countries.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [countries](./magento-api.countries.md) - -## countries variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.country.md b/docs/api-reference/magento-api.country.md deleted file mode 100644 index 7794bc2cb..000000000 --- a/docs/api-reference/magento-api.country.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [country](./magento-api.country.md) - -## country variable - -Signature: - -```typescript -_default: (context: Context, id: string, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.createcustomer.md b/docs/api-reference/magento-api.createcustomer.md deleted file mode 100644 index 6d8c5320f..000000000 --- a/docs/api-reference/magento-api.createcustomer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [createCustomer](./magento-api.createcustomer.md) - -## createCustomer variable - -Signature: - -```typescript -_default: (context: Context, input: CustomerCreateInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.createcustomeraddress.md b/docs/api-reference/magento-api.createcustomeraddress.md deleted file mode 100644 index 12d654d3e..000000000 --- a/docs/api-reference/magento-api.createcustomeraddress.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [createCustomerAddress](./magento-api.createcustomeraddress.md) - -## createCustomerAddress variable - -Signature: - -```typescript -_default: (context: Context, input: CustomerAddressInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.createemptycart.md b/docs/api-reference/magento-api.createemptycart.md deleted file mode 100644 index 9c3cd91d2..000000000 --- a/docs/api-reference/magento-api.createemptycart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [createEmptyCart](./magento-api.createemptycart.md) - -## createEmptyCart variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.createproductreview.md b/docs/api-reference/magento-api.createproductreview.md deleted file mode 100644 index dcdafc6eb..000000000 --- a/docs/api-reference/magento-api.createproductreview.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [createProductReview](./magento-api.createproductreview.md) - -## createProductReview variable - -Signature: - -```typescript -_default: (context: Context, input: CreateProductReviewInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.currency.md b/docs/api-reference/magento-api.currency.md deleted file mode 100644 index ddce17ecf..000000000 --- a/docs/api-reference/magento-api.currency.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [currency](./magento-api.currency.md) - -## currency variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.customer.md b/docs/api-reference/magento-api.customer.md deleted file mode 100644 index cc53f8e26..000000000 --- a/docs/api-reference/magento-api.customer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customer](./magento-api.customer.md) - -## customer variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.customercart.md b/docs/api-reference/magento-api.customercart.md deleted file mode 100644 index 4008e9e21..000000000 --- a/docs/api-reference/magento-api.customercart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customerCart](./magento-api.customercart.md) - -## customerCart variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.customerorders.md b/docs/api-reference/magento-api.customerorders.md deleted file mode 100644 index 786211b6c..000000000 --- a/docs/api-reference/magento-api.customerorders.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customerOrders](./magento-api.customerorders.md) - -## customerOrders variable - -Signature: - -```typescript -_default: (context: Context, searchParams: GetOrdersSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.customerproductreview.md b/docs/api-reference/magento-api.customerproductreview.md deleted file mode 100644 index 93c6a1325..000000000 --- a/docs/api-reference/magento-api.customerproductreview.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customerProductReview](./magento-api.customerproductreview.md) - -## customerProductReview variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: CustomerProductReviewParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.custommutation.md b/docs/api-reference/magento-api.custommutation.md deleted file mode 100644 index e6e531227..000000000 --- a/docs/api-reference/magento-api.custommutation.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customMutation](./magento-api.custommutation.md) - -## customMutation variable - -Signature: - -```typescript -_default: ({ client }: Context, { mutation, mutationVariables, fetchPolicy, }: { - mutation: MUTATION; - mutationVariables: MUTATION_VARIABLES; - fetchPolicy?: Extract; -}) => Promise, Record>> -``` diff --git a/docs/api-reference/magento-api.customquery.md b/docs/api-reference/magento-api.customquery.md deleted file mode 100644 index 97c967908..000000000 --- a/docs/api-reference/magento-api.customquery.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [customQuery](./magento-api.customquery.md) - -## customQuery variable - -Signature: - -```typescript -_default: ({ client }: Context, { query, queryVariables, fetchPolicy, }: { - query: QUERY; - queryVariables?: QUERY_VARIABLES; - fetchPolicy?: FetchPolicy; -}) => Promise> -``` diff --git a/docs/api-reference/magento-api.deletecustomeraddress.md b/docs/api-reference/magento-api.deletecustomeraddress.md deleted file mode 100644 index 768a361c3..000000000 --- a/docs/api-reference/magento-api.deletecustomeraddress.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [deleteCustomerAddress](./magento-api.deletecustomeraddress.md) - -## deleteCustomerAddress variable - -Signature: - -```typescript -_default: (context: Context, addressId: number, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.generatecustomertoken.md b/docs/api-reference/magento-api.generatecustomertoken.md deleted file mode 100644 index 35836219a..000000000 --- a/docs/api-reference/magento-api.generatecustomertoken.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [generateCustomerToken](./magento-api.generatecustomertoken.md) - -## generateCustomerToken variable - -Signature: - -```typescript -_default: (context: Context, params: { - email: string; - password: string; - recaptchaToken: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.getavailablecustomerpaymentmethods.md b/docs/api-reference/magento-api.getavailablecustomerpaymentmethods.md deleted file mode 100644 index 6154074a4..000000000 --- a/docs/api-reference/magento-api.getavailablecustomerpaymentmethods.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [getAvailableCustomerPaymentMethods](./magento-api.getavailablecustomerpaymentmethods.md) - -## getAvailableCustomerPaymentMethods variable - -Signature: - -```typescript -_default: (context: Context, params: { - cartId: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.getavailablecustomershippingmethods.md b/docs/api-reference/magento-api.getavailablecustomershippingmethods.md deleted file mode 100644 index 8c54d893e..000000000 --- a/docs/api-reference/magento-api.getavailablecustomershippingmethods.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [getAvailableCustomerShippingMethods](./magento-api.getavailablecustomershippingmethods.md) - -## getAvailableCustomerShippingMethods variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.getavailablepaymentmethods.md b/docs/api-reference/magento-api.getavailablepaymentmethods.md deleted file mode 100644 index d4b7d9eb4..000000000 --- a/docs/api-reference/magento-api.getavailablepaymentmethods.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [getAvailablePaymentMethods](./magento-api.getavailablepaymentmethods.md) - -## getAvailablePaymentMethods variable - -Signature: - -```typescript -_default: (context: Context, params: { - cartId: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.getavailableshippingmethods.md b/docs/api-reference/magento-api.getavailableshippingmethods.md deleted file mode 100644 index 86368b4c1..000000000 --- a/docs/api-reference/magento-api.getavailableshippingmethods.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [getAvailableShippingMethods](./magento-api.getavailableshippingmethods.md) - -## getAvailableShippingMethods variable - -Signature: - -```typescript -_default: (context: Context, params: { - cartId: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.getcustomeraddresses.md b/docs/api-reference/magento-api.getcustomeraddresses.md deleted file mode 100644 index cf2f7cad4..000000000 --- a/docs/api-reference/magento-api.getcustomeraddresses.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [getCustomerAddresses](./magento-api.getcustomeraddresses.md) - -## getCustomerAddresses variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.md b/docs/api-reference/magento-api.md deleted file mode 100644 index c93c675cd..000000000 --- a/docs/api-reference/magento-api.md +++ /dev/null @@ -1,81 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) - -## magento-api package - -`api-client` for Magento 2 integration for Vue Storefront 2. - -## Remarks - -The `@vue-storefront/magento2` library includes everything needed to fetch data from the Magento 2 eCommerce platform. This includes API client configuration, API endpoints, and GraphQL types and fragments. - -## Variables - -| Variable | Description | -| --- | --- | -| [addBundleProductsToCart](./magento-api.addbundleproductstocart.md) | | -| [addConfigurableProductsToCart](./magento-api.addconfigurableproductstocart.md) | | -| [addDownloadableProductsToCart](./magento-api.adddownloadableproductstocart.md) | | -| [addProductsToCart](./magento-api.addproductstocart.md) | | -| [addProductToWishList](./magento-api.addproducttowishlist.md) | | -| [addSimpleProductsToCart](./magento-api.addsimpleproductstocart.md) | | -| [addVirtualProductsToCart](./magento-api.addvirtualproductstocart.md) | | -| [applyCouponToCart](./magento-api.applycoupontocart.md) | | -| [availableStores](./magento-api.availablestores.md) | | -| [cart](./magento-api.cart.md) | | -| [cartTotalQty](./magento-api.carttotalqty.md) | | -| [categoryList](./magento-api.categorylist.md) | | -| [categorySearch](./magento-api.categorysearch.md) | | -| [changeCustomerPassword](./magento-api.changecustomerpassword.md) | | -| [cmsBlocks](./magento-api.cmsblocks.md) | | -| [cmsPage](./magento-api.cmspage.md) | | -| [countries](./magento-api.countries.md) | | -| [country](./magento-api.country.md) | | -| [createCustomer](./magento-api.createcustomer.md) | | -| [createCustomerAddress](./magento-api.createcustomeraddress.md) | | -| [createEmptyCart](./magento-api.createemptycart.md) | | -| [createProductReview](./magento-api.createproductreview.md) | | -| [currency](./magento-api.currency.md) | | -| [customer](./magento-api.customer.md) | | -| [customerCart](./magento-api.customercart.md) | | -| [customerOrders](./magento-api.customerorders.md) | | -| [customerProductReview](./magento-api.customerproductreview.md) | | -| [customMutation](./magento-api.custommutation.md) | | -| [customQuery](./magento-api.customquery.md) | | -| [deleteCustomerAddress](./magento-api.deletecustomeraddress.md) | | -| [generateCustomerToken](./magento-api.generatecustomertoken.md) | | -| [getAvailableCustomerPaymentMethods](./magento-api.getavailablecustomerpaymentmethods.md) | | -| [getAvailableCustomerShippingMethods](./magento-api.getavailablecustomershippingmethods.md) | | -| [getAvailablePaymentMethods](./magento-api.getavailablepaymentmethods.md) | | -| [getAvailableShippingMethods](./magento-api.getavailableshippingmethods.md) | | -| [getCustomerAddresses](./magento-api.getcustomeraddresses.md) | | -| [mergeCarts](./magento-api.mergecarts.md) | | -| [placeOrder](./magento-api.placeorder.md) | | -| [productDetail](./magento-api.productdetail.md) | | -| [productReview](./magento-api.productreview.md) | | -| [productReviewRatingsMetadata](./magento-api.productreviewratingsmetadata.md) | | -| [products](./magento-api.products.md) | | -| [relatedProduct](./magento-api.relatedproduct.md) | | -| [removeCouponFromCart](./magento-api.removecouponfromcart.md) | | -| [removeItemFromCart](./magento-api.removeitemfromcart.md) | | -| [removeProductsFromWishlist](./magento-api.removeproductsfromwishlist.md) | | -| [requestPasswordResetEmail](./magento-api.requestpasswordresetemail.md) | | -| [resetPassword](./magento-api.resetpassword.md) | | -| [revokeCustomerToken](./magento-api.revokecustomertoken.md) | | -| [setBillingAddressOnCart](./magento-api.setbillingaddressoncart.md) | | -| [setGuestEmailOnCart](./magento-api.setguestemailoncart.md) | | -| [setPaymentMethodOnCart](./magento-api.setpaymentmethodoncart.md) | | -| [setShippingAddressesOnCart](./magento-api.setshippingaddressesoncart.md) | | -| [setShippingMethodsOnCart](./magento-api.setshippingmethodsoncart.md) | | -| [storeConfig](./magento-api.storeconfig.md) | | -| [subscribeEmailToNewsletter](./magento-api.subscribeemailtonewsletter.md) | | -| [updateCartItems](./magento-api.updatecartitems.md) | | -| [updateCustomer](./magento-api.updatecustomer.md) | | -| [updateCustomerAddress](./magento-api.updatecustomeraddress.md) | | -| [updateCustomerEmail](./magento-api.updatecustomeremail.md) | | -| [upsellProduct](./magento-api.upsellproduct.md) | | -| [urlResolver](./magento-api.urlresolver.md) | | -| [wishlist](./magento-api.wishlist.md) | | -| [wishlistItemsCount](./magento-api.wishlistitemscount.md) | | - diff --git a/docs/api-reference/magento-api.mergecarts.md b/docs/api-reference/magento-api.mergecarts.md deleted file mode 100644 index 4a7cccbd5..000000000 --- a/docs/api-reference/magento-api.mergecarts.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [mergeCarts](./magento-api.mergecarts.md) - -## mergeCarts variable - -Signature: - -```typescript -_default: (context: Context, params: { - sourceCartId: string; - destinationCartId: string; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.placeorder.md b/docs/api-reference/magento-api.placeorder.md deleted file mode 100644 index f8d0dd5e7..000000000 --- a/docs/api-reference/magento-api.placeorder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [placeOrder](./magento-api.placeorder.md) - -## placeOrder variable - -Signature: - -```typescript -_default: (context: Context, input: PlaceOrderInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.productdetail.md b/docs/api-reference/magento-api.productdetail.md deleted file mode 100644 index 57dee5259..000000000 --- a/docs/api-reference/magento-api.productdetail.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [productDetail](./magento-api.productdetail.md) - -## productDetail variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: GetProductSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.productreview.md b/docs/api-reference/magento-api.productreview.md deleted file mode 100644 index 8d1612a10..000000000 --- a/docs/api-reference/magento-api.productreview.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [productReview](./magento-api.productreview.md) - -## productReview variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: GetProductSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.productreviewratingsmetadata.md b/docs/api-reference/magento-api.productreviewratingsmetadata.md deleted file mode 100644 index 2cd8626c7..000000000 --- a/docs/api-reference/magento-api.productreviewratingsmetadata.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [productReviewRatingsMetadata](./magento-api.productreviewratingsmetadata.md) - -## productReviewRatingsMetadata variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.products.md b/docs/api-reference/magento-api.products.md deleted file mode 100644 index e3da94362..000000000 --- a/docs/api-reference/magento-api.products.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [products](./magento-api.products.md) - -## products variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: GetProductSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.relatedproduct.md b/docs/api-reference/magento-api.relatedproduct.md deleted file mode 100644 index 3a3f613c2..000000000 --- a/docs/api-reference/magento-api.relatedproduct.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [relatedProduct](./magento-api.relatedproduct.md) - -## relatedProduct variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: GetProductSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.removecouponfromcart.md b/docs/api-reference/magento-api.removecouponfromcart.md deleted file mode 100644 index 2b54f05c7..000000000 --- a/docs/api-reference/magento-api.removecouponfromcart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [removeCouponFromCart](./magento-api.removecouponfromcart.md) - -## removeCouponFromCart variable - -Signature: - -```typescript -_default: (context: Context, input: RemoveCouponFromCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.removeitemfromcart.md b/docs/api-reference/magento-api.removeitemfromcart.md deleted file mode 100644 index 814b05896..000000000 --- a/docs/api-reference/magento-api.removeitemfromcart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [removeItemFromCart](./magento-api.removeitemfromcart.md) - -## removeItemFromCart variable - -Signature: - -```typescript -_default: (context: Context, input: RemoveItemFromCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.removeproductsfromwishlist.md b/docs/api-reference/magento-api.removeproductsfromwishlist.md deleted file mode 100644 index 90841a670..000000000 --- a/docs/api-reference/magento-api.removeproductsfromwishlist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [removeProductsFromWishlist](./magento-api.removeproductsfromwishlist.md) - -## removeProductsFromWishlist variable - -Signature: - -```typescript -_default: (context: Context, input: RemoveProductsFromWishlistMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.requestpasswordresetemail.md b/docs/api-reference/magento-api.requestpasswordresetemail.md deleted file mode 100644 index 905c371c0..000000000 --- a/docs/api-reference/magento-api.requestpasswordresetemail.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [requestPasswordResetEmail](./magento-api.requestpasswordresetemail.md) - -## requestPasswordResetEmail variable - -Signature: - -```typescript -_default: (context: Context, input: RequestPasswordResetEmailMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.resetpassword.md b/docs/api-reference/magento-api.resetpassword.md deleted file mode 100644 index 65e8ba8b2..000000000 --- a/docs/api-reference/magento-api.resetpassword.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [resetPassword](./magento-api.resetpassword.md) - -## resetPassword variable - -Signature: - -```typescript -_default: (context: Context, input: ResetPasswordMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.revokecustomertoken.md b/docs/api-reference/magento-api.revokecustomertoken.md deleted file mode 100644 index f8d703610..000000000 --- a/docs/api-reference/magento-api.revokecustomertoken.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [revokeCustomerToken](./magento-api.revokecustomertoken.md) - -## revokeCustomerToken variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.setbillingaddressoncart.md b/docs/api-reference/magento-api.setbillingaddressoncart.md deleted file mode 100644 index 84ebb1b2a..000000000 --- a/docs/api-reference/magento-api.setbillingaddressoncart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [setBillingAddressOnCart](./magento-api.setbillingaddressoncart.md) - -## setBillingAddressOnCart variable - -Signature: - -```typescript -_default: (context: Context, input: SetBillingAddressOnCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.setguestemailoncart.md b/docs/api-reference/magento-api.setguestemailoncart.md deleted file mode 100644 index a567c7daf..000000000 --- a/docs/api-reference/magento-api.setguestemailoncart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [setGuestEmailOnCart](./magento-api.setguestemailoncart.md) - -## setGuestEmailOnCart variable - -Signature: - -```typescript -_default: (context: Context, input: SetGuestEmailOnCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.setpaymentmethodoncart.md b/docs/api-reference/magento-api.setpaymentmethodoncart.md deleted file mode 100644 index 3e268c12d..000000000 --- a/docs/api-reference/magento-api.setpaymentmethodoncart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [setPaymentMethodOnCart](./magento-api.setpaymentmethodoncart.md) - -## setPaymentMethodOnCart variable - -Signature: - -```typescript -_default: (context: Context, input: SetPaymentMethodOnCartInputs, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.setshippingaddressesoncart.md b/docs/api-reference/magento-api.setshippingaddressesoncart.md deleted file mode 100644 index 54ac98537..000000000 --- a/docs/api-reference/magento-api.setshippingaddressesoncart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [setShippingAddressesOnCart](./magento-api.setshippingaddressesoncart.md) - -## setShippingAddressesOnCart variable - -Signature: - -```typescript -_default: (context: Context, input: SetShippingAddressesOnCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.setshippingmethodsoncart.md b/docs/api-reference/magento-api.setshippingmethodsoncart.md deleted file mode 100644 index 867f1d20e..000000000 --- a/docs/api-reference/magento-api.setshippingmethodsoncart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [setShippingMethodsOnCart](./magento-api.setshippingmethodsoncart.md) - -## setShippingMethodsOnCart variable - -Signature: - -```typescript -_default: (context: Context, input: SetShippingMethodsOnCartInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.storeconfig.md b/docs/api-reference/magento-api.storeconfig.md deleted file mode 100644 index 28c53c7c1..000000000 --- a/docs/api-reference/magento-api.storeconfig.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [storeConfig](./magento-api.storeconfig.md) - -## storeConfig variable - -Signature: - -```typescript -_default: (context: Context, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.subscribeemailtonewsletter.md b/docs/api-reference/magento-api.subscribeemailtonewsletter.md deleted file mode 100644 index a93032786..000000000 --- a/docs/api-reference/magento-api.subscribeemailtonewsletter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [subscribeEmailToNewsletter](./magento-api.subscribeemailtonewsletter.md) - -## subscribeEmailToNewsletter variable - -Signature: - -```typescript -_default: (context: Context, { email }: SubscribeEmailToNewsletterMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.updatecartitems.md b/docs/api-reference/magento-api.updatecartitems.md deleted file mode 100644 index 4d11ab05e..000000000 --- a/docs/api-reference/magento-api.updatecartitems.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [updateCartItems](./magento-api.updatecartitems.md) - -## updateCartItems variable - -Signature: - -```typescript -_default: (context: Context, input: UpdateCartItemsInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.updatecustomer.md b/docs/api-reference/magento-api.updatecustomer.md deleted file mode 100644 index 6289cca20..000000000 --- a/docs/api-reference/magento-api.updatecustomer.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [updateCustomer](./magento-api.updatecustomer.md) - -## updateCustomer variable - -Signature: - -```typescript -_default: (context: Context, input: CustomerUpdateInput, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.updatecustomeraddress.md b/docs/api-reference/magento-api.updatecustomeraddress.md deleted file mode 100644 index c85e1efba..000000000 --- a/docs/api-reference/magento-api.updatecustomeraddress.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [updateCustomerAddress](./magento-api.updatecustomeraddress.md) - -## updateCustomerAddress variable - -Signature: - -```typescript -_default: (context: Context, params: { - addressId: number; - input: CustomerAddressInput; -}, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.updatecustomeremail.md b/docs/api-reference/magento-api.updatecustomeremail.md deleted file mode 100644 index 5e98bb056..000000000 --- a/docs/api-reference/magento-api.updatecustomeremail.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [updateCustomerEmail](./magento-api.updatecustomeremail.md) - -## updateCustomerEmail variable - -Signature: - -```typescript -_default: (context: Context, input: UpdateCustomerEmailMutationVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.upsellproduct.md b/docs/api-reference/magento-api.upsellproduct.md deleted file mode 100644 index fd7afdf32..000000000 --- a/docs/api-reference/magento-api.upsellproduct.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [upsellProduct](./magento-api.upsellproduct.md) - -## upsellProduct variable - -Signature: - -```typescript -_default: (context: Context, searchParams?: GetProductSearchParams, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.urlresolver.md b/docs/api-reference/magento-api.urlresolver.md deleted file mode 100644 index 6f25b5ad7..000000000 --- a/docs/api-reference/magento-api.urlresolver.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [urlResolver](./magento-api.urlresolver.md) - -## urlResolver variable - -Signature: - -```typescript -_default: (context: Context, url: string, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento-api.wishlist.md b/docs/api-reference/magento-api.wishlist.md deleted file mode 100644 index 3426b85dc..000000000 --- a/docs/api-reference/magento-api.wishlist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento-api](./magento-api.md) > [wishlist](./magento-api.wishlist.md) - -## wishlist variable - -Signature: - -```typescript -_default: (context: Context, searchParams: WishlistQueryVariables, customQuery?: CustomQuery) => Promise> -``` diff --git a/docs/api-reference/magento.addressgetter.md b/docs/api-reference/magento.addressgetter.md deleted file mode 100644 index c430efc28..000000000 --- a/docs/api-reference/magento.addressgetter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [addressGetter](./magento.addressgetter.md) - -## addressGetter variable - -Signature: - -```typescript -_default: AddressGetter -``` diff --git a/docs/api-reference/magento.cartgetters.md b/docs/api-reference/magento.cartgetters.md deleted file mode 100644 index e12b22a67..000000000 --- a/docs/api-reference/magento.cartgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [cartGetters](./magento.cartgetters.md) - -## cartGetters variable - -Signature: - -```typescript -cartGetters: CartGetters -``` diff --git a/docs/api-reference/magento.categorygetters.md b/docs/api-reference/magento.categorygetters.md deleted file mode 100644 index 17f141718..000000000 --- a/docs/api-reference/magento.categorygetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [categoryGetters](./magento.categorygetters.md) - -## categoryGetters variable - -Signature: - -```typescript -categoryGetters: CategoryGetters -``` diff --git a/docs/api-reference/magento.checkoutgetters.md b/docs/api-reference/magento.checkoutgetters.md deleted file mode 100644 index ffc750bd1..000000000 --- a/docs/api-reference/magento.checkoutgetters.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [checkoutGetters](./magento.checkoutgetters.md) - -## checkoutGetters variable - -Signature: - -```typescript -checkoutGetters: { - getShippingMethodId: (shippingMethod: ShippingMethod) => string; - getShippingMethodName: (shippingMethod: ShippingMethod) => string; - getShippingMethodDescription: (shippingMethod: ShippingMethod) => string; - getFormattedPrice: (price: number) => string; - getShippingMethodPrice: (shippingMethod: ShippingMethod) => number; -} -``` diff --git a/docs/api-reference/magento.extendscopecontext.md b/docs/api-reference/magento.extendscopecontext.md deleted file mode 100644 index d48174f77..000000000 --- a/docs/api-reference/magento.extendscopecontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [extendScopeContext](./magento.extendscopecontext.md) - -## extendScopeContext variable - -Signature: - -```typescript -extendScopeContext: (scope: EffectScope, app: NuxtAppOptions) => void -``` diff --git a/docs/api-reference/magento.facetgetters.md b/docs/api-reference/magento.facetgetters.md deleted file mode 100644 index ec625c279..000000000 --- a/docs/api-reference/magento.facetgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [facetGetters](./magento.facetgetters.md) - -## facetGetters variable - -Signature: - -```typescript -facetGetters: FacetsGetters -``` diff --git a/docs/api-reference/magento.forgotpasswordgetters.md b/docs/api-reference/magento.forgotpasswordgetters.md deleted file mode 100644 index 6c3bceb61..000000000 --- a/docs/api-reference/magento.forgotpasswordgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [forgotPasswordGetters](./magento.forgotpasswordgetters.md) - -## forgotPasswordGetters variable - -Signature: - -```typescript -forgotPasswordGetters: ForgotPasswordGetters -``` diff --git a/docs/api-reference/magento.md b/docs/api-reference/magento.md deleted file mode 100644 index cfc052bdc..000000000 --- a/docs/api-reference/magento.md +++ /dev/null @@ -1,66 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) - -## magento package - -## Variables - -| Variable | Description | -| --- | --- | -| [addressGetter](./magento.addressgetter.md) | | -| [cartGetters](./magento.cartgetters.md) | | -| [categoryGetters](./magento.categorygetters.md) | | -| [checkoutGetters](./magento.checkoutgetters.md) | | -| [extendScopeContext](./magento.extendscopecontext.md) | | -| [facetGetters](./magento.facetgetters.md) | | -| [forgotPasswordGetters](./magento.forgotpasswordgetters.md) | | -| [orderGetters](./magento.ordergetters.md) | | -| [productGetters](./magento.productgetters.md) | | -| [reviewGetters](./magento.reviewgetters.md) | | -| [storeConfigGetters](./magento.storeconfiggetters.md) | | -| [storeGetters](./magento.storegetters.md) | | -| [useAddresses](./magento.useaddresses.md) | | -| [useBilling](./magento.usebilling.md) | | -| [useCart](./magento.usecart.md) | | -| [useCategory](./magento.usecategory.md) | | -| [useCategorySearch](./magento.usecategorysearch.md) | | -| [useConfig](./magento.useconfig.md) | | -| [useContent](./magento.usecontent.md) | | -| [useCountrySearch](./magento.usecountrysearch.md) | | -| [useCurrency](./magento.usecurrency.md) | | -| [useCustomMutation](./magento.usecustommutation.md) | | -| [useCustomQuery](./magento.usecustomquery.md) | | -| [useExternalCheckout](./magento.useexternalcheckout.md) | | -| [useFacet](./magento.usefacet.md) | | -| [useForgotPassword](./magento.useforgotpassword.md) | | -| [useGetShippingMethods](./magento.usegetshippingmethods.md) | | -| [useGuestUser](./magento.useguestuser.md) | | -| [useMakeOrder](./magento.usemakeorder.md) | | -| [useNewsletter](./magento.usenewsletter.md) | | -| [usePaymentProvider](./magento.usepaymentprovider.md) | | -| [useProduct](./magento.useproduct.md) | | -| [userAddressesGetters](./magento.useraddressesgetters.md) | | -| [userBillingGetters](./magento.userbillinggetters.md) | | -| [useRelatedProducts](./magento.userelatedproducts.md) | | -| [useReview](./magento.usereview.md) | | -| [userGetters](./magento.usergetters.md) | | -| [userShippingGetters](./magento.usershippinggetters.md) | | -| [useShipping](./magento.useshipping.md) | | -| [useShippingProvider](./magento.useshippingprovider.md) | | -| [useStore](./magento.usestore.md) | | -| [useUpsellProducts](./magento.useupsellproducts.md) | | -| [useUrlResolver](./magento.useurlresolver.md) | | -| [useUser](./magento.useuser.md) | | -| [useUserBilling](./magento.useuserbilling.md) | | -| [useUserOrder](./magento.useuserorder.md) | | -| [useUserShipping](./magento.useusershipping.md) | | -| [useWishlist](./magento.usewishlist.md) | | -| [wishlistGetters](./magento.wishlistgetters.md) | | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [WishlistProduct](./magento.wishlistproduct.md) | | - diff --git a/docs/api-reference/magento.ordergetters.md b/docs/api-reference/magento.ordergetters.md deleted file mode 100644 index 1a1c42776..000000000 --- a/docs/api-reference/magento.ordergetters.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [orderGetters](./magento.ordergetters.md) - -## orderGetters variable - -Signature: - -```typescript -orderGetters: { - getDate: (order: any) => string; - getId: (order: any) => string; - getStatus: (order: any) => string; - getPrice: (order: any) => number | null; - getItems: (order: any) => any[]; - getItemSku: (item: any) => string; - getItemName: (item: any) => string; - getItemQty: (item: any) => number; - getItemPrice: (item: any) => number; - getFormattedPrice: (price: number) => string; - getPagination: (orders: any) => AgnosticPagination; -} -``` diff --git a/docs/api-reference/magento.productgetters.md b/docs/api-reference/magento.productgetters.md deleted file mode 100644 index 25ffbc78a..000000000 --- a/docs/api-reference/magento.productgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [productGetters](./magento.productgetters.md) - -## productGetters variable - -Signature: - -```typescript -productGetters: ProductGetters -``` diff --git a/docs/api-reference/magento.reviewgetters.md b/docs/api-reference/magento.reviewgetters.md deleted file mode 100644 index 13432a476..000000000 --- a/docs/api-reference/magento.reviewgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [reviewGetters](./magento.reviewgetters.md) - -## reviewGetters variable - -Signature: - -```typescript -reviewGetters: MagentoReviewGetters -``` diff --git a/docs/api-reference/magento.storeconfiggetters.md b/docs/api-reference/magento.storeconfiggetters.md deleted file mode 100644 index 330fdddbd..000000000 --- a/docs/api-reference/magento.storeconfiggetters.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [storeConfigGetters](./magento.storeconfiggetters.md) - -## storeConfigGetters variable - -Signature: - -```typescript -storeConfigGetters: { - getCode: (config: StoreConfig) => string; - getTitle: (config: StoreConfig) => string; - getName: (config: StoreConfig) => string; - getCurrency: (config: StoreConfig) => string; - getLocale: (config: StoreConfig) => string; - allowGuestProductReview: (config: StoreConfig) => string; - enabledWishlist: (config: StoreConfig) => string; - getBaseMediaUrl: (config: StoreConfig) => string; - getLogoSrc: (config: StoreConfig) => string; - getLogoWidth: (config: StoreConfig) => number; - getLogoHeight: (config: StoreConfig) => number; - getLogoAlt: (config: StoreConfig) => string; -} -``` diff --git a/docs/api-reference/magento.storegetters.md b/docs/api-reference/magento.storegetters.md deleted file mode 100644 index 2bcceb195..000000000 --- a/docs/api-reference/magento.storegetters.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [storeGetters](./magento.storegetters.md) - -## storeGetters variable - -Signature: - -```typescript -storeGetters: { - getItems: typeof getItems; - getSelected: typeof getSelected; -} -``` diff --git a/docs/api-reference/magento.useaddresses.md b/docs/api-reference/magento.useaddresses.md deleted file mode 100644 index 68b93915b..000000000 --- a/docs/api-reference/magento.useaddresses.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useAddresses](./magento.useaddresses.md) - -## useAddresses variable - -Signature: - -```typescript -_default: () => import("../../types/composables").UseAddresses -``` diff --git a/docs/api-reference/magento.usebilling.md b/docs/api-reference/magento.usebilling.md deleted file mode 100644 index 31fd5f80e..000000000 --- a/docs/api-reference/magento.usebilling.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useBilling](./magento.usebilling.md) - -## useBilling variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseBilling -``` diff --git a/docs/api-reference/magento.usecart.md b/docs/api-reference/magento.usecart.md deleted file mode 100644 index 90ec30f88..000000000 --- a/docs/api-reference/magento.usecart.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCart](./magento.usecart.md) - -## useCart variable - -Signature: - -```typescript -_default: () => import("../../factories/useCartFactory").UseCart -``` diff --git a/docs/api-reference/magento.usecategory.md b/docs/api-reference/magento.usecategory.md deleted file mode 100644 index ec7e19664..000000000 --- a/docs/api-reference/magento.usecategory.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCategory](./magento.usecategory.md) - -## useCategory variable - -Signature: - -```typescript -_default: (id: string) => import("@vue-storefront/core").UseCategory, any> -``` diff --git a/docs/api-reference/magento.usecategorysearch.md b/docs/api-reference/magento.usecategorysearch.md deleted file mode 100644 index 4d60f3d06..000000000 --- a/docs/api-reference/magento.usecategorysearch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCategorySearch](./magento.usecategorysearch.md) - -## useCategorySearch variable - -Signature: - -```typescript -useCategorySearch: (cacheId?: string) => UseCategorySearch -``` diff --git a/docs/api-reference/magento.useconfig.md b/docs/api-reference/magento.useconfig.md deleted file mode 100644 index e11314523..000000000 --- a/docs/api-reference/magento.useconfig.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useConfig](./magento.useconfig.md) - -## useConfig variable - -Signature: - -```typescript -useConfig: (cacheId?: string) => UseConfig -``` diff --git a/docs/api-reference/magento.usecontent.md b/docs/api-reference/magento.usecontent.md deleted file mode 100644 index 817ec31df..000000000 --- a/docs/api-reference/magento.usecontent.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useContent](./magento.usecontent.md) - -## useContent variable - -Signature: - -```typescript -_default: (ssrKey?: string) => import("../../types/composables").UseContent -``` diff --git a/docs/api-reference/magento.usecountrysearch.md b/docs/api-reference/magento.usecountrysearch.md deleted file mode 100644 index 5c3da0660..000000000 --- a/docs/api-reference/magento.usecountrysearch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCountrySearch](./magento.usecountrysearch.md) - -## useCountrySearch variable - -Signature: - -```typescript -useCountrySearch: (cacheId?: string) => UseCountrySearch -``` diff --git a/docs/api-reference/magento.usecurrency.md b/docs/api-reference/magento.usecurrency.md deleted file mode 100644 index 9f059eac5..000000000 --- a/docs/api-reference/magento.usecurrency.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCurrency](./magento.usecurrency.md) - -## useCurrency variable - -Signature: - -```typescript -useCurrency: () => UseCurrency -``` diff --git a/docs/api-reference/magento.usecustommutation.md b/docs/api-reference/magento.usecustommutation.md deleted file mode 100644 index b17e7e42d..000000000 --- a/docs/api-reference/magento.usecustommutation.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCustomMutation](./magento.usecustommutation.md) - -## useCustomMutation variable - -Signature: - -```typescript -_default: (ssrKey?: string) => import("../../types/composables").UseCustomMutation, Record>, any> -``` diff --git a/docs/api-reference/magento.usecustomquery.md b/docs/api-reference/magento.usecustomquery.md deleted file mode 100644 index 9388a68c5..000000000 --- a/docs/api-reference/magento.usecustomquery.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useCustomQuery](./magento.usecustomquery.md) - -## useCustomQuery variable - -Signature: - -```typescript -_default: (ssrKey?: string) => import("../../types/composables").UseCustomQuery, any> -``` diff --git a/docs/api-reference/magento.useexternalcheckout.md b/docs/api-reference/magento.useexternalcheckout.md deleted file mode 100644 index 85e1d14c5..000000000 --- a/docs/api-reference/magento.useexternalcheckout.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useExternalCheckout](./magento.useexternalcheckout.md) - -## useExternalCheckout variable - -Signature: - -```typescript -_default: (ssrKey?: string) => import("../../types/composables").UseExternalCheckout -``` diff --git a/docs/api-reference/magento.usefacet.md b/docs/api-reference/magento.usefacet.md deleted file mode 100644 index a16080f29..000000000 --- a/docs/api-reference/magento.usefacet.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useFacet](./magento.usefacet.md) - -## useFacet variable - -Signature: - -```typescript -_default: (id?: string) => import("@vue-storefront/core").UseFacet -``` diff --git a/docs/api-reference/magento.useforgotpassword.md b/docs/api-reference/magento.useforgotpassword.md deleted file mode 100644 index 2cee23001..000000000 --- a/docs/api-reference/magento.useforgotpassword.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useForgotPassword](./magento.useforgotpassword.md) - -## useForgotPassword variable - -Signature: - -```typescript -useForgotPassword: () => import("@vue-storefront/core").UseForgotPassword -``` diff --git a/docs/api-reference/magento.usegetshippingmethods.md b/docs/api-reference/magento.usegetshippingmethods.md deleted file mode 100644 index 9a98d2822..000000000 --- a/docs/api-reference/magento.usegetshippingmethods.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useGetShippingMethods](./magento.usegetshippingmethods.md) - -## useGetShippingMethods variable - -Signature: - -```typescript -useGetShippingMethods: (cacheId?: string) => UseGetShippingMethods -``` diff --git a/docs/api-reference/magento.useguestuser.md b/docs/api-reference/magento.useguestuser.md deleted file mode 100644 index bf429d205..000000000 --- a/docs/api-reference/magento.useguestuser.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useGuestUser](./magento.useguestuser.md) - -## useGuestUser variable - -Signature: - -```typescript -_default: () => import("../../types/composables").UseGuestUser -``` diff --git a/docs/api-reference/magento.usemakeorder.md b/docs/api-reference/magento.usemakeorder.md deleted file mode 100644 index 45cae2d45..000000000 --- a/docs/api-reference/magento.usemakeorder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useMakeOrder](./magento.usemakeorder.md) - -## useMakeOrder variable - -Signature: - -```typescript -useMakeOrder: () => UseMakeOrder -``` diff --git a/docs/api-reference/magento.usenewsletter.md b/docs/api-reference/magento.usenewsletter.md deleted file mode 100644 index 9761b9a2c..000000000 --- a/docs/api-reference/magento.usenewsletter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useNewsletter](./magento.usenewsletter.md) - -## useNewsletter variable - -Signature: - -```typescript -_default: () => import("../../types/composables").UseNewsletter -``` diff --git a/docs/api-reference/magento.usepaymentprovider.md b/docs/api-reference/magento.usepaymentprovider.md deleted file mode 100644 index 4df5f331d..000000000 --- a/docs/api-reference/magento.usepaymentprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [usePaymentProvider](./magento.usepaymentprovider.md) - -## usePaymentProvider variable - -Signature: - -```typescript -_default: () => import("../../types/composables").UsePaymentProvider -``` diff --git a/docs/api-reference/magento.useproduct.md b/docs/api-reference/magento.useproduct.md deleted file mode 100644 index 1dbad2b2d..000000000 --- a/docs/api-reference/magento.useproduct.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useProduct](./magento.useproduct.md) - -## useProduct variable - -Signature: - -```typescript -useProduct: (cacheId?: string) => UseProduct -``` diff --git a/docs/api-reference/magento.useraddressesgetters.md b/docs/api-reference/magento.useraddressesgetters.md deleted file mode 100644 index ede441886..000000000 --- a/docs/api-reference/magento.useraddressesgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [userAddressesGetters](./magento.useraddressesgetters.md) - -## userAddressesGetters variable - -Signature: - -```typescript -userAddressesGetters: UserAddressesGetters -``` diff --git a/docs/api-reference/magento.userbillinggetters.md b/docs/api-reference/magento.userbillinggetters.md deleted file mode 100644 index 4d32a815e..000000000 --- a/docs/api-reference/magento.userbillinggetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [userBillingGetters](./magento.userbillinggetters.md) - -## userBillingGetters variable - -Signature: - -```typescript -userBillingGetters: UserBillingGetters -``` diff --git a/docs/api-reference/magento.userelatedproducts.md b/docs/api-reference/magento.userelatedproducts.md deleted file mode 100644 index c7747afe1..000000000 --- a/docs/api-reference/magento.userelatedproducts.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useRelatedProducts](./magento.userelatedproducts.md) - -## useRelatedProducts variable - -Signature: - -```typescript -useRelatedProducts: (cacheId?: string) => UseRelatedProducts -``` diff --git a/docs/api-reference/magento.usereview.md b/docs/api-reference/magento.usereview.md deleted file mode 100644 index e5caf33b3..000000000 --- a/docs/api-reference/magento.usereview.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useReview](./magento.usereview.md) - -## useReview variable - -Signature: - -```typescript -_default: (id: string) => import("../../types/composables").UseReview, ComposableFunctionArgs, CreateProductReviewInput, ProductReviewRatingMetadata, any> -``` diff --git a/docs/api-reference/magento.usergetters.md b/docs/api-reference/magento.usergetters.md deleted file mode 100644 index 44e4681e3..000000000 --- a/docs/api-reference/magento.usergetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [userGetters](./magento.usergetters.md) - -## userGetters variable - -Signature: - -```typescript -userGetters: BaseUserGetters -``` diff --git a/docs/api-reference/magento.usershippinggetters.md b/docs/api-reference/magento.usershippinggetters.md deleted file mode 100644 index f997a1dd2..000000000 --- a/docs/api-reference/magento.usershippinggetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [userShippingGetters](./magento.usershippinggetters.md) - -## userShippingGetters variable - -Signature: - -```typescript -userShippingGetters: UserShippingGetters -``` diff --git a/docs/api-reference/magento.useshipping.md b/docs/api-reference/magento.useshipping.md deleted file mode 100644 index 32917d2c5..000000000 --- a/docs/api-reference/magento.useshipping.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useShipping](./magento.useshipping.md) - -## useShipping variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseShipping -``` diff --git a/docs/api-reference/magento.useshippingprovider.md b/docs/api-reference/magento.useshippingprovider.md deleted file mode 100644 index d60d4c7c7..000000000 --- a/docs/api-reference/magento.useshippingprovider.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useShippingProvider](./magento.useshippingprovider.md) - -## useShippingProvider variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseShippingProvider -``` diff --git a/docs/api-reference/magento.usestore.md b/docs/api-reference/magento.usestore.md deleted file mode 100644 index 083842f2c..000000000 --- a/docs/api-reference/magento.usestore.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useStore](./magento.usestore.md) - -## useStore variable - -Signature: - -```typescript -useStore: () => UseStore -``` diff --git a/docs/api-reference/magento.useupsellproducts.md b/docs/api-reference/magento.useupsellproducts.md deleted file mode 100644 index 065ef598b..000000000 --- a/docs/api-reference/magento.useupsellproducts.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUpsellProducts](./magento.useupsellproducts.md) - -## useUpsellProducts variable - -Signature: - -```typescript -useUpsellProducts: (cacheId?: string) => UseUpsellProducts -``` diff --git a/docs/api-reference/magento.useurlresolver.md b/docs/api-reference/magento.useurlresolver.md deleted file mode 100644 index 9932d614c..000000000 --- a/docs/api-reference/magento.useurlresolver.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUrlResolver](./magento.useurlresolver.md) - -## useUrlResolver variable - -Signature: - -```typescript -useUrlResolver: (cacheId?: string) => UseUrlResolver -``` diff --git a/docs/api-reference/magento.useuser.md b/docs/api-reference/magento.useuser.md deleted file mode 100644 index c876821f9..000000000 --- a/docs/api-reference/magento.useuser.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUser](./magento.useuser.md) - -## useUser variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseUser, any> -``` diff --git a/docs/api-reference/magento.useuserbilling.md b/docs/api-reference/magento.useuserbilling.md deleted file mode 100644 index 1644b2ffe..000000000 --- a/docs/api-reference/magento.useuserbilling.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUserBilling](./magento.useuserbilling.md) - -## useUserBilling variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseUserBilling -``` diff --git a/docs/api-reference/magento.useuserorder.md b/docs/api-reference/magento.useuserorder.md deleted file mode 100644 index 064427798..000000000 --- a/docs/api-reference/magento.useuserorder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUserOrder](./magento.useuserorder.md) - -## useUserOrder variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseUserOrder -``` diff --git a/docs/api-reference/magento.useusershipping.md b/docs/api-reference/magento.useusershipping.md deleted file mode 100644 index b9d129a5a..000000000 --- a/docs/api-reference/magento.useusershipping.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useUserShipping](./magento.useusershipping.md) - -## useUserShipping variable - -Signature: - -```typescript -_default: () => import("@vue-storefront/core").UseUserShipping -``` diff --git a/docs/api-reference/magento.usewishlist.md b/docs/api-reference/magento.usewishlist.md deleted file mode 100644 index cc5579f85..000000000 --- a/docs/api-reference/magento.usewishlist.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [useWishlist](./magento.usewishlist.md) - -## useWishlist variable - -Signature: - -```typescript -_default: (ssrKey?: string) => import("../../types/composables").UseWishlist -``` diff --git a/docs/api-reference/magento.wishlistgetters.md b/docs/api-reference/magento.wishlistgetters.md deleted file mode 100644 index 003fc1267..000000000 --- a/docs/api-reference/magento.wishlistgetters.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [wishlistGetters](./magento.wishlistgetters.md) - -## wishlistGetters variable - -Signature: - -```typescript -wishlistGetters: WishlistGetters -``` diff --git a/docs/api-reference/magento.wishlistproduct.md b/docs/api-reference/magento.wishlistproduct.md deleted file mode 100644 index f189919f8..000000000 --- a/docs/api-reference/magento.wishlistproduct.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [@vue-storefront/magento](./magento.md) > [WishlistProduct](./magento.wishlistproduct.md) - -## WishlistProduct type - -Signature: - -```typescript -export declare type WishlistProduct = WishlistQuery['customer']['wishlists'][0]['items_v2']['items'][0] & { - variant: any; -}; -``` diff --git a/docs/guide/api-client/reference.md b/docs/guide/api-client/reference.md new file mode 100644 index 000000000..d95cb5d59 --- /dev/null +++ b/docs/guide/api-client/reference.md @@ -0,0 +1,13 @@ +# Api methods + +## cmsBlocks + +The cmsBlocks API method allows loading information about CMS blocks. + +[The cmsBlocks API method reference](/api-reference/magento-api.cmsblocks.html) + +## cmsPage + +The cmsPage API method allows loading information about CMS page. + +[The cmsPage API method reference](/api-reference/magento-api.cmspage.html) diff --git a/docs/guide/composables/use-addresses.md b/docs/guide/composables/use-addresses.md deleted file mode 100644 index 5f5662cc5..000000000 --- a/docs/guide/composables/use-addresses.md +++ /dev/null @@ -1,29 +0,0 @@ -# useAddresses - -`useAddresses`: - -## API -```typescript -export interface UseAddresses extends Composable { - error: ComputedProperty; - loading: ComputedProperty; - addresses: ComputedProperty; - load: (loadParams?: LOAD_ADDRESS_PARAMS) => Promise, - save: (saveParams: SAVE_ADDRESS_PARAMS) => Promise, - remove: (removeParams: REMOVE_ADDRESS_PARAMS) => Promise, - update: (updateParams: UPDATE_ADDRESS_PARAMS) => Promise, -} -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-billing.md b/docs/guide/composables/use-billing.md deleted file mode 100644 index ccf376c73..000000000 --- a/docs/guide/composables/use-billing.md +++ /dev/null @@ -1,113 +0,0 @@ -# useBilling - -## Features -`useBilling` composable can be used to: -* fetch existing billing addresses, -* submit new billing addresses, -* modify and delete existing billing addresses. - -## API - -### `load` -Function that takes in `CustomQuery` as optional params and gets the `billing` accordingly - -### `billing` -Returns `billing` as a `computed` property -```typescript -// packages/composables/src/composables/useBilling/index.ts -export default useBillingFactory(factoryParams); - -// packages/api-client/src/types/GraphQL.ts -interface BillingCartAddress { - city: Scalars['String']; - company?: Maybe; - country: CartAddressCountry; - firstname: Scalars['String']; - lastname: Scalars['String']; - postcode?: Maybe; - region?: Maybe; - street: Array>; - telephone: Scalars['String']; -} -``` - -### `save` -Saves new address - -### `loading` -Returns the `loading` state of `search` - -### `error` -reactive object containing the error message, if search failed for any reason. - -## Getters -* `getAddresses` - returns list of billing addresses. -* `getDefault` - returns a default billing address. -* `getTotal` - returns total number of billing addresses user has. -* `getId` - returns id from an individual address. -* `getPostCode` - returns post code from an individual address. -* `getStreetName` - returns street name from an individual address. -* `getStreetNumber` - returns street number from an individual address. -* `getCity` - returns city name from an individual address. -* `getFirstName` - returns first name from an individual address. -* `getLastName` - returns last name from an individual address. -* `getCountry` - returns country name from an individual address. -* `getPhone` - return phone number from an individual address. -* `getEmail` - returns e-mail address from an individual address. -* `getProvince` - returns province (state) from an individual address. -* `getCompanyName` - returns company name from an individual address. -* `getTaxNumber` - returns tax number from an individual address. -* `getApartmentNumber` - returns apartment number from an individual address. -* `isDefault` - return information if address is current default. - -```typescript -interface UserBillingGetters { - getAddresses: (billing, criteria?: Record) => any[]; - getDefault: (billing) => any; - getTotal: (billing) => number; - getPostCode: (address) => string; - getStreetName: (address) => string; - getStreetNumber: (address) => string | number; - getCity: (address) => string; - getFirstName: (address) => string; - getLastName: (address) => string; - getCountry: (address) => string; - getPhone: (address) => string; - getEmail: (address) => string; - getProvince: (address) => string; - getCompanyName: (address) => string; - getTaxNumber: (address) => string; - getId: (address) => string; - getApartmentNumber: (address) => string | number; - isDefault: (address) => boolean; -} -``` - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useBilling, userBillingGetters } from '@vue-storefront/magento'; - -export default { - setup() { - const { - billing, - load, - addAddress, - deleteAddress, - updateAddress - } = useBilling(); - - // If you're using Nuxt or any other framework for Universal Vue apps - onSSR(async () => { - await load(); - }); - - return { - billing: computed(() => userBillingGetters.getAddresses(billing.value)), - userBillingGetters - }; - } -}; -``` diff --git a/docs/guide/composables/use-cart.md b/docs/guide/composables/use-cart.md deleted file mode 100644 index df12e35b3..000000000 --- a/docs/guide/composables/use-cart.md +++ /dev/null @@ -1,186 +0,0 @@ -# useCart - -## Features -`useCart` composable can be used to: -* load cart information, -* add, update and remove items in the cart, -* applying and removing coupons, -* checking if product is already added to the cart. - -## API -```typescript -interface UseCart { - cart: ComputedProperty; - setCart(cart: Cart): void; - addItem(params: { - product: Product; - quantity: number; - customQuery?: CustomQuery; - }): Promise; - isInCart: ({ product: Product }: { - product: any; - }) => boolean; - removeItem(params: { - product: CartItem; - customQuery?: CustomQuery; - }): Promise; - updateItemQty(params: { - product: CartItem; - quantity?: number; - customQuery?: CustomQuery; - }): Promise; - clear(): Promise; - applyCoupon(params: { - couponCode: string; - customQuery?: CustomQuery; - }): Promise; - removeCoupon(params: { - coupon: Coupon; - customQuery?: CustomQuery; - }): Promise; - load(): Promise; - load(params: { - customQuery?: CustomQuery; - }): Promise; - error: ComputedProperty; - loading: ComputedProperty; -} - -export interface Cart { - /** - * An array of coupons that have been applied to the cart - * @deprecated Use applied_coupons instead - */ - applied_coupon?: Maybe; - /** An array of `AppliedCoupon` objects. Each object contains the `code` text attribute, which specifies the coupon code */ - applied_coupons?: Maybe>>; - /** Available payment methods */ - available_payment_methods?: Maybe>>; - billing_address?: Maybe; - email?: Maybe; - /** The entered gift message for the cart */ - gift_message?: Maybe; - /** The unique ID for a `Cart` object */ - id: Scalars['ID']; - is_virtual: Scalars['Boolean']; - items?: Maybe>>; - prices?: Maybe; - selected_payment_method?: Maybe; - shipping_addresses: Array>; - total_quantity: Scalars['Float']; -} - -export interface CartItem { - prices?: Maybe; - product: ProductInterface; - quantity: Scalars['Float']; - /** The unique ID for a `CartItemInterface` object */ - uid: Scalars['ID']; -} - -export interface Coupon { - code: Scalars['String']; -} - -``` -> For more information on [Product interface](use-product) visit the dedicated documentation. - - -### `cart` -Returns the Items in the Cart as a `computed` property - -### `setCart` -set new Cart - -### `addItem` -Function that takes in a `product` and its `quantity` and adds it to the cart - -### `isInCart` -Function that takes in a `product` and returns `true` or `false` - -### `removeItem` -Function that takes in a `product` and removes it from the `cart` - -### `updateItemQty` -Function that takes in a `product` and its new `quantaty` and updates it accordingly - -### `clear` -Function that clears cart - -### `applyCoupon` -Function that takes in a `coupon` and applies it to the cart - -### `removeCoupon` -Function that removes all applied coupons - -### `load` -Function that loads the current `cart` - -### `error` -reactive object containing the error message, if some properties failed for any reason. - -### `loading` -a reactive object containing information about loading state of the cart. - - -## Getters - -````typescript -interface CartGetters { - getItems: (cart: Cart) => CartItem[]; - getItemName: (cartItem: CartItem) => string; - getItemImage: (cartItem: CartItem) => string; - getItemPrice: (cartItem: CartItem) => AgnosticPrice; - getItemQty: (cartItem: CartItem) => number; - getItemAttributes: ( - cartItem: CartItem, - _filterByAttributeName?: Array, - ) => Record; - getItemSku: (cartItem: CartItem) => string; - getTotals: (cart: Cart) => AgnosticTotals; - getShippingPrice: (cart: Cart) => number; - getTotalItems: (cart: Cart) => number; - getFormattedPrice: (price: number) => string; - getCoupons: (cart: Cart) => AgnosticCoupon[]; - getDiscounts: (cart: Cart) => AgnosticDiscount[]; -} -```` - -* `getItems` - returns all items from cart. -* `getItemName` - returns product name. -* `getItemImage` - returns product image. -* `getItemPrice` - returns product price. -* `getItemQty` - returns product quantity. -* `getItemAttributes` - returns product attribute. -* `getItemSku` - returns product SKU. -* `getTotals` - returns cart totals. -* `getShippingPrice` - returns current shipping price. -* `getTotalItems` - returns products amount. -* `getFormattedPrice` - returns product price with currency sign. -* `getCoupons` - returns applied coupons. -* `getDiscounts` - returns all discounts. - -## Example - -```javascript -import { useCart, cartGetters } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core' - -export default { - setup () { - const { cart, removeItem, updateItemQty, load } = useCart(); - - onSSR(async () => { - await load(); - }) - - return { - removeItem, - updateItemQty, - products: computed(() => cartGetters.getItems(cart.value)), - totals: computed(() => cartGetters.getTotals(cart.value)), - totalItems: computed(() => cartGetters.getTotalItems(cart.value)) - } - } -} -``` diff --git a/docs/guide/composables/use-category-search.md b/docs/guide/composables/use-category-search.md deleted file mode 100644 index 6808916d3..000000000 --- a/docs/guide/composables/use-category-search.md +++ /dev/null @@ -1,63 +0,0 @@ -# useCategorySearch - -## Features -`useCategorySearch` composable is responsible for fetching a list of categories based on search term provided. A common usage scenario for this composable is navigation subtrees. - -## API -The `useCategorySearch` composable implements custom factory `useCategorySearchFactory` located in `packages/composables/src/factories/useCategorySearchFactory.ts` and returns `UseCategorySearch` interface: - -```typescript -export interface UseCategorySearch { - search: (params: { term: string }) => Promise; - result: ComputedProperty; - error: ComputedProperty; - loading: ComputedProperty; -} - -export interface UseCategorySearchErrors { - search: Error; -} -``` -> For more information on [Category interface](use-category) visit the dedicated documentation. - -### `search` -Function that takes `term` as search param and gets the `categories` accordingly - -### `result` -Returns an array of categories fetched by `search` method as a `computed` property. -See [useCategory](use-category.html) for more information on `categories` interface - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useCategorySearch } from '@vue-storefront/magento'; - -export default { - setup () { - const { - loading, - error, - result: categories, - search: categoriesSearch, - } = useCategorySearch('AppHeader:Categories'); - - onSSR(async () => { - await categoriesSearch({ - term: 'value', - }); - }); - - return { - categories, - loading, - error, - } - } -} -``` diff --git a/docs/guide/composables/use-category.md b/docs/guide/composables/use-category.md deleted file mode 100644 index 51c7a603e..000000000 --- a/docs/guide/composables/use-category.md +++ /dev/null @@ -1,142 +0,0 @@ -# useCategory - -## Features -`useCategory` composable is responsible for fetching a list of categories. A common usage scenario for this composable is navigation. - -## API -```typescript -interface UseCategory { - categories: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; - loading: ComputedProperty; - error: ComputedProperty; -} - -export type CategoryListQueryVariables = Exact<{ [key: string]: never; }>; - -export interface Category { - available_sort_by?: Maybe>>; - /** Breadcrumbs, parent categories info. */ - breadcrumbs?: Maybe>>; - /** Relative canonical URL. This value is returned only if the system setting 'Use Canonical Link Meta Tag For Categories' is enabled */ - canonical_url?: Maybe; - /** Child categories tree. */ - children?: Maybe>>; - children_count?: Maybe; - /** Category CMS Block. */ - cms_block?: Maybe; - /** - * Timestamp indicating when the category was created. - * @deprecated The field should not be used on the storefront. - */ - created_at?: Maybe; - custom_layout_update_file?: Maybe; - /** The attribute to use for sorting. */ - default_sort_by?: Maybe; - /** An optional description of the category. */ - description?: Maybe; - display_mode?: Maybe; - filter_price_range?: Maybe; - /** - * An ID that uniquely identifies the category. - * @deprecated Use the `uid` argument instead. - */ - id?: Maybe; - image?: Maybe; - include_in_menu?: Maybe; - is_anchor?: Maybe; - landing_page?: Maybe; - /** Indicates the depth of the category within the tree. */ - level?: Maybe; - meta_description?: Maybe; - meta_keywords?: Maybe; - meta_title?: Maybe; - /** The display name of the category. */ - name?: Maybe; - /** Category Path. */ - path?: Maybe; - /** Category path in store. */ - path_in_store?: Maybe; - /** The position of the category relative to other categories at the same level in tree. */ - position?: Maybe; - /** The number of products in the category that are marked as visible. By default, in complex products, parent products are visible, but their child products are not. */ - product_count?: Maybe; - /** The list of products assigned to the category. */ - products?: Maybe; - /** The unique ID for a `CategoryInterface` object. */ - uid: Scalars['ID']; - /** - * Timestamp indicating when the category was updated. - * @deprecated The field should not be used on the storefront. - */ - updated_at?: Maybe; - /** The url key assigned to the category. */ - url_key?: Maybe; - /** The url path assigned to the category. */ - url_path?: Maybe; - /** The part of the category URL that is appended after the url key */ - url_suffix?: Maybe; -} -``` - -### `search` -Function that takes `CategoryListQueryVariables`as optional param and gets the `categories` accordingly - -### `categories` -Returns an array of categories fetched by `search` method as a `computed` property. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Getters -````typescript -interface CategoryGetters { - getTree: (category: Category) => AgnosticCategoryTree | null; - getBreadcrumbs: (category: Category) => AgnosticBreadcrumb[]; - getCategoryTree?: ( - category: Category, - currentCategory: string, - withProducts: boolean, - ) => AgnosticCategoryTree | null; -} - -export interface AgnosticBreadcrumb { - text: string; - link: string; -} - -export interface AgnosticCategoryTree { - label: string; - slug?: string; - items: AgnosticCategoryTree[]; - isCurrent: boolean; - count?: number; - [x: string]: unknown; -} -```` -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useCategory } from '@vue-storefront/magento'; - -export default { - setup () { - const { categories, search, loading } = useCategory('AppHeader:Categories'); - - onSSR(async () => { - await search({ - pageSize: 100, - }); - }); - - return { - categories, - loading - } - } -} -``` diff --git a/docs/guide/composables/use-config.md b/docs/guide/composables/use-config.md deleted file mode 100644 index c48f7288e..000000000 --- a/docs/guide/composables/use-config.md +++ /dev/null @@ -1,209 +0,0 @@ -# useConfig - -## Features -`useConfig` composable is responsible, as its name suggests, for interactions with the configuration in your eCommerce. - -## API -The `useConfig` composable implements custom factory `useConfigFactory` located in `packages/composables/src/factories/useConfigFactory.ts` and returns `UseConfig` interface: -```typescript -interface UseConfig { - config: ComputedRef; - loadConfig: () => Promise; - loading: ComputedRef; -} - -export interface StoreConfig { - /** Footer Miscellaneous HTML */ - absolute_footer?: Maybe; - /** Indicates whether guest users can write product reviews. Possible values: 1 (Yes) and 0 (No) */ - allow_guests_to_write_product_reviews?: Maybe; - /** The value of the Allow Gift Messages for Order Items option */ - allow_items?: Maybe; - /** The value of the Allow Gift Messages on Order Level option */ - allow_order?: Maybe; - /** Enable autocomplete on login and forgot password forms */ - autocomplete_on_storefront?: Maybe; - /** Base currency code */ - base_currency_code?: Maybe; - /** Base link URL for the store */ - base_link_url?: Maybe; - /** Base media URL for the store */ - base_media_url?: Maybe; - /** Base static URL for the store */ - base_static_url?: Maybe; - /** Base URL for the store */ - base_url?: Maybe; - /** Braintree cc vault status. */ - braintree_cc_vault_active?: Maybe; - /** Default Sort By. */ - catalog_default_sort_by?: Maybe; - /** Corresponds to the 'Display Prices In Product Lists' field. It indicates how FPT information is displayed on category pages */ - category_fixed_product_tax_display_setting?: Maybe; - /** Category URL Suffix. */ - category_url_suffix?: Maybe; - /** CMS Home Page */ - cms_home_page?: Maybe; - /** CMS No Cookies Page */ - cms_no_cookies?: Maybe; - /** CMS No Route Page */ - cms_no_route?: Maybe; - /** - * A code assigned to the store to identify it - * @deprecated Use `store_code` instead. - */ - code?: Maybe; - /** The configuration setting determines which thumbnail should be used in the cart for configurable products. */ - configurable_thumbnail_source?: Maybe; - /** Copyright */ - copyright?: Maybe; - /** Default Meta Description */ - default_description?: Maybe; - /** Default display currency code */ - default_display_currency_code?: Maybe; - /** Default Meta Keywords */ - default_keywords?: Maybe; - /** Default Page Title */ - default_title?: Maybe; - /** Display Demo Store Notice */ - demonotice?: Maybe; - /** Default Web URL */ - front?: Maybe; - /** Products per Page on Grid Default Value. */ - grid_per_page?: Maybe; - /** Products per Page on Grid Allowed Values. */ - grid_per_page_values?: Maybe; - /** Scripts and Style Sheets */ - head_includes?: Maybe; - /** Favicon Icon */ - head_shortcut_icon?: Maybe; - /** Logo Image */ - header_logo_src?: Maybe; - /** - * The ID number assigned to the store - * @deprecated Use `store_code` instead. - */ - id?: Maybe; - /** Indicates whether the store view has been designated as the default within the store group */ - is_default_store?: Maybe; - /** Indicates whether the store group has been designated as the default within the website */ - is_default_store_group?: Maybe; - /** List Mode. */ - list_mode?: Maybe; - /** Products per Page on List Default Value. */ - list_per_page?: Maybe; - /** Products per Page on List Allowed Values. */ - list_per_page_values?: Maybe; - /** Store locale */ - locale?: Maybe; - /** Logo Image Alt */ - logo_alt?: Maybe; - /** Logo Attribute Height */ - logo_height?: Maybe; - /** Logo Attribute Width */ - logo_width?: Maybe; - /** Indicates whether wishlists are enabled (1) or disabled (0) */ - magento_wishlist_general_is_enabled?: Maybe; - /** The minimum number of characters required for a valid password. */ - minimum_password_length?: Maybe; - /** Default No-route URL */ - no_route?: Maybe; - /** Payflow Pro vault status. */ - payment_payflowpro_cc_vault_active?: Maybe; - /** Corresponds to the 'Display Prices On Product View Page' field. It indicates how FPT information is displayed on product pages */ - product_fixed_product_tax_display_setting?: Maybe; - /** Indicates whether product reviews are enabled. Possible values: 1 (Yes) and 0 (No) */ - product_reviews_enabled?: Maybe; - /** Product URL Suffix. */ - product_url_suffix?: Maybe; - /** The number of different character classes required in a password (lowercase, uppercase, digits, special characters). */ - required_character_classes_number?: Maybe; - /** - * The ID of the root category - * @deprecated Use `root_category_uid` instead - */ - root_category_id?: Maybe; - /** The unique ID for a `CategoryInterface` object. */ - root_category_uid?: Maybe; - /** Corresponds to the 'Display Prices In Sales Modules' field. It indicates how FPT information is displayed on cart, checkout, and order pages */ - sales_fixed_product_tax_display_setting?: Maybe; - /** Secure base link URL for the store */ - secure_base_link_url?: Maybe; - /** Secure base media URL for the store */ - secure_base_media_url?: Maybe; - /** Secure base static URL for the store */ - secure_base_static_url?: Maybe; - /** Secure base URL for the store */ - secure_base_url?: Maybe; - /** Email to a Friend configuration. */ - send_friend?: Maybe; - /** Show Breadcrumbs for CMS Pages */ - show_cms_breadcrumbs?: Maybe; - /** The unique ID of the store view. In the Admin, this is called the Store View Code. When making a GraphQL call, assign this value to the `Store` header to provide the scope */ - store_code?: Maybe; - /** The unique ID assigned to the store group. In the Admin, this is called the Store Name */ - store_group_code?: Maybe; - /** The label assigned to the store group */ - store_group_name?: Maybe; - /** The label assigned to the store view */ - store_name?: Maybe; - /** The store view sort order */ - store_sort_order?: Maybe; - /** Timezone of the store */ - timezone?: Maybe; - /** Page Title Prefix */ - title_prefix?: Maybe; - /** Page Title Separator. */ - title_separator?: Maybe; - /** Page Title Suffix */ - title_suffix?: Maybe; - /** The configuration determines if the store code should be used in the URL */ - use_store_in_url?: Maybe; - /** The unique ID for the website */ - website_code?: Maybe; - /** - * The ID number assigned to the website store - * @deprecated The field should not be used on the storefront - */ - website_id?: Maybe; - /** The label assigned to the website */ - website_name?: Maybe; - /** The unit of weight */ - weight_unit?: Maybe; - /** Welcome Text */ - welcome?: Maybe; -} -``` - -### `config` -Returns the loaded `config` as `computed` property - -### `loadConfig` -Function to load the `config` - -### `loading` -Return state of `loadConfig` Function as `computed` property - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useConfig } from '@vue-storefront/magento'; - -export default { - setup() { - const { - config, - loadConfig, - loading - } = useConfig(); - - onSSR(async () => { - await loadConfig(); - }) - - return { - config, - loading - }; - } -}; -``` diff --git a/docs/guide/composables/use-content.md b/docs/guide/composables/use-content.md deleted file mode 100644 index 0c6c6fac6..000000000 --- a/docs/guide/composables/use-content.md +++ /dev/null @@ -1,66 +0,0 @@ -# usePage - -## Features -`usePage` is the alias used by `useContent` composable, and can be used to fetch content pages. - -## API -The `useContent` composable implements custom factory `useContentFactory` located in `packages/composables/src/factories/useContentFactory.ts` and returns `UsePage` interface: - -```typescript -interface UseContent { - page: ComputedProperty; - loadPage: (identifier: string) => Promise; - loading: ComputedProperty; -} - -export interface CmsPage { - /** CMS page content */ - content?: Maybe; - /** CMS page content heading */ - content_heading?: Maybe; - /** Identifier of the CMS page */ - identifier?: Maybe; - /** CMS page meta description */ - meta_description?: Maybe; - /** CMS page meta keywords */ - meta_keywords?: Maybe; - /** CMS page meta title */ - meta_title?: Maybe; - /** CMS page content heading */ - page_layout?: Maybe; - /** CMS page title */ - title?: Maybe; - /** URL key of CMS page */ - url_key?: Maybe; -} -``` - -### `loadPage` -Function that takes in `identifier` as param and gets the `page` accordingly - -### `page` -Returns `page` as a `computed` property - -### `loading` -Returns the `loading` state of `loadPage` - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { usePage } from '@vue-storefront/magento'; - -export default { - setup(props) { - const { page, loadPage, loading } = usePage('cmsPage'); - - onSSR(async () => { - await loadPage(props.identifier); - }); - - return { - page, - loading, - }; - } -}; -``` diff --git a/docs/guide/composables/use-country-search.md b/docs/guide/composables/use-country-search.md deleted file mode 100644 index e5e78f711..000000000 --- a/docs/guide/composables/use-country-search.md +++ /dev/null @@ -1,77 +0,0 @@ -# useCountrySearch - -## Features -`useCountrySearch` composable is responsible for fetching a list of categories. A common usage scenario for this composable is navigation. - -## API -The `useCountrySearch` composable implements custom factory `useCountrySearchFactory` located in `packages/composables/src/composables/useCountrySearch/index.ts` and returns `UseCountrySearch` interface: -```typescript -export interface UseCountrySearch { - load: () => Promise; - search: (params: { id: string }) => Promise; - countries: ComputedProperty; - country: ComputedProperty; - error: ComputedProperty; - loading: ComputedProperty; -} - -export type Countries = CountriesListQuery['countries'][0]; - -export interface Country { - available_regions?: Maybe>>; - full_name_english?: Maybe; - full_name_locale?: Maybe; - /** The unique ID for a `Country` object. */ - id?: Maybe; - three_letter_abbreviation?: Maybe; - two_letter_abbreviation?: Maybe; -} -``` - -### `load` -Function that takes no params and gets the `Countries` array accordingly - -### `search` -Function that takes `id`as search param and gets the `Country` accordingly - -### `countries` -Returns an array of countries fetched by `load` method as a `computed` property. - -### `country` -Returns a single `Country` object fetched by `search` method as a `computed` property. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useCountrySearch } from '@vue-storefront/magento'; - -export default { - setup (props) { - const { - load: loadCountries, - countries, - search: searchCountry, - country, - } = useCountrySearch('Step:Billing'); - - onSSR(async () => { - await searchCountry({ - id: props.identifier, - }); - }); - - return { - loadCountries, - countries, - country, - } - } -} -``` diff --git a/docs/guide/composables/use-custom-mutation.md b/docs/guide/composables/use-custom-mutation.md deleted file mode 100644 index 1c983d1b3..000000000 --- a/docs/guide/composables/use-custom-mutation.md +++ /dev/null @@ -1,84 +0,0 @@ -# useCustomMutation - -## Features -`useCustomMutation` composition function can be used to execute custom Mutation on the Magento GraphQL API. - -What makes it powerful is the ability to accept any GraphQL mutation, and execute it. - -## API -```typescript -export interface UseCustomMutation extends Composable { - setMutationString: (newMutationString: string) => void; - mutationString: ComputedProperty; - mutation: ({ variables, fetchPolicy }: { - variables: MUTATION_VARIABLES, - fetchPolicy?: FetchPolicy, - }) => Promise; - result: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; - [x: string]: any; -} -``` - -### `setMutationString` -Function to define the mutation to be executed on the GraphQL Mutation - -### `mutationString` -`sharedRef` of the GraphQL mutation string - -### `query` -Actual query function to mutate the data under the Magento GraphQL API. - -### `result` -Reactive object containing the result information from mutation method. - -### `loading` -Reactive object containing the loading state of the query function. - -### `error` -Reactive object containing the error message, if mutation failed for any reason. - -## Example -`customMutationExample.ts` - -```typescript -import { useCustomMutation } from '@vue-storefront/magento'; - -export const customMutation = (id?: string) => { - const { - error, - loading, - mutation, - result, - setMutationString, - } = useCustomMutation(id); - - setMutationString(` - mutation subscribeEmailToNewsletter($email: String!){ - subscribeEmailToNewsletter(email: $email) { - status - } - }`); - - return { - error, - loading, - mutation, - result, - }; -}; -``` - -`Any File` -```typescript -import { customQuery } from '~/composables/customMutationExample.ts'; - -const { mutation } = customQuery(id); - -await mutation({ - variables: { - email: `${newEmail}`, - }, -}); -``` diff --git a/docs/guide/composables/use-custom-query.md b/docs/guide/composables/use-custom-query.md deleted file mode 100644 index dda849fd1..000000000 --- a/docs/guide/composables/use-custom-query.md +++ /dev/null @@ -1,87 +0,0 @@ -# useCustomQuery - -## Features -`useCustomQuery` composition function can be used to execute custom Queries on the Magento GraphQL API. - -What makes it powerful is the ability to accept any GraphQL query, and execute it. - -## API -```typescript -export interface UseCustomQuery extends Composable { - setQueryString: (newQueryString: string) => void; - queryString: ComputedProperty; - query: ({ variables, fetchPolicy, }: { - variables: QUERY_VARIABLES, - fetchPolicy?: FetchPolicy, - }) => Promise; - result: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; -} -``` - -### `setQueryString` -Function to define the query to be executed on the GraphQL Query - -### `queryString` -`sharedRef` of the GraphQL query string - -### `query` -Actual query function to fetch the data under the Magento GraphQL API. - -### `result` -Reactive object containing the result information from query method. - -### `loading` -Reactive object containing the loading state of the query function. - -### `error` -Reactive object containing the error message, if query failed for any reason. - -## Example -`customQueryExample.ts` - -```typescript -import { useCustomQuery } from '@vue-storefront/magento'; - -export const customQuery = (id?: string) => { - const { - error, - loading, - query, - result, - setQueryString, - } = useCustomQuery(id); - - setQueryString(` - query urlResolver($url: String!) { - urlResolver(url:$url) { - id, - redirectCode, - relative_url, - type - entity_uid - } - }`); - - return { - error, - loading, - query, - result, - }; -}; -``` - -`Any File` -```typescript -import { customQuery } from '~/composables/customQueryExample.ts'; - -const { query } = customQuery(path); - -await query({ - variables: { - url: path.replace(/\/[cp|]\//gi, ''), - }, -}); -``` diff --git a/docs/guide/composables/use-external-checkout.md b/docs/guide/composables/use-external-checkout.md deleted file mode 100644 index b4b31bd1d..000000000 --- a/docs/guide/composables/use-external-checkout.md +++ /dev/null @@ -1,47 +0,0 @@ -# useExternalCheckout - -## Features -`useExternalCheckout` composable is responsible for redirecting checkout process and depends on [Magento 2 External Checkout for Vue Storefront](https://github.com/Vendic/magento2-external-checkout) repository. - -## API -The `useExternalCheckout` composable implements custom factory `useExternalCheckoutFactory` located in `packages/composables/src/factories/useExternalCheckoutFactory.ts` and returns `UseExternalCheckout` interface: -```typescript -export interface UseExternalCheckout { - initializeCheckout: (baseUrl: string) => Promise; - error: ComputedProperty; - loading: ComputedProperty; -} - -export interface UseExternalCheckoutErrors { - initializeCheckout: Error; -} -``` -### `initializeCheckout` -Function that takes `baseUrl`as search param. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example - -```javascript -import { useExternalCheckout } from '@vue-storefront/magento'; - -export default { - setup (props) { - const { initializeCheckout } = useExternalCheckout(); - - const goToCheckout = async () => { - const redirectUrl = await initializeCheckout('/checkout/user-account'); - await router.push(redirectUrl); - }; - - return { - goToCheckout, - } - } -} -``` diff --git a/docs/guide/composables/use-facet.md b/docs/guide/composables/use-facet.md deleted file mode 100644 index 1ff36d2dc..000000000 --- a/docs/guide/composables/use-facet.md +++ /dev/null @@ -1,102 +0,0 @@ -# useFacet - -## Features -`useFacet` composition function can be used to fetch data related to: -* products, -* categories, -* breadcrumbs. - -What makes it powerful is the ability to accept multiple filters, allowing to narrow down the results to a specific category, search term, etc. - -## API -```typescript -interface UseFacet { - result: ComputedProperty>; - loading: ComputedProperty; - search: (params?: AgnosticFacetSearchParams) => Promise; - error: ComputedProperty; -} -``` - -### `search` -Function for searching and classifying records, allowing users to browse the catalog data. It accepts a single object as a parameter -```typescript -interface AgnosticFacetSearchParams { - categorySlug?: string; - rootCatSlug?: string; - term?: string; - page?: number; - itemsPerPage?: number; - sort?: string; - filters?: Record; - metadata?: any; - [x: string]: any; -} -``` - -### `result` -Reactive data object containing the response from the backend. - -### `loading` -Reactive object containing information about the loading state of search. - -### `error` -Reactive object containing the error message, if search failed for any reason. - - -## Getters -````typescript -interface FacetsGetters { - getAll: (searchData: FacetSearchResult, criteria?: CRITERIA) => AgnosticFacet[]; - getGrouped: (searchData: FacetSearchResult, criteria?: CRITERIA) => AgnosticGroupedFacet[]; - getCategoryTree: (searchData: FacetSearchResult) => AgnosticCategoryTree; - getSortOptions: (searchData: FacetSearchResult) => AgnosticSort; - getProducts: (searchData: FacetSearchResult) => RESULTS; - getPagination: (searchData: FacetSearchResult) => AgnosticPagination; - getBreadcrumbs: (searchData: FacetSearchResult) => AgnosticBreadcrumb[]; -} -```` - -* `getAll` - returns all available facets. -* `getGrouped` - returns grouped facets by facet name. -* `getCategoryTree` - return the tree of nested categories. -* `getSortOptions` - returns available and currently selected sorting options. -* `getProducts` - returns products matching current filters. -* `getPagination` - returns pagination information. -* `getBreadcrumbs` - returns breadcrumbs information. - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useFacet, facetGetters } from '@vue-storefront/magento'; - -export default { - setup (props, context) { - const { result, search, loading } = useFacet(`facetId:${path}`); - - const products = computed(() => facetGetters.getProducts(result.value)); - const breadcrumbs = computed(() => facetGetters.getBreadcrumbs(result.value)); - const sortBy = computed(() => facetGetters.getSortOptions(result.value)); - const facets = computed(() => facetGetters.getGrouped(result.value)); - const pagination = computed(() => facetGetters.getPagination(result.value)); - - onSSR(async () => { - await search({ - categorySlug: 'clothing', - sort: 'latest', - itemsPerPage: 10, - term: 'some search query' - }); - }); - - return { - produproducts, - breadcrumbs, - sortBy, - facets, - pagination, - loading, - }; - } -} -``` diff --git a/docs/guide/composables/use-forgot-password.md b/docs/guide/composables/use-forgot-password.md deleted file mode 100644 index c356323f1..000000000 --- a/docs/guide/composables/use-forgot-password.md +++ /dev/null @@ -1,27 +0,0 @@ -# useForgotPassword - -`useForgotPassword` - -## API -```typescript -export interface UseForgotPassword { - result: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; - setNew(params: ComposableFunctionArgs<{ - tokenValue: string, - newPassword: string, - email: string, - }>): Promise; - request(params: ComposableFunctionArgs<{ - email: string - }>): Promise; -} -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-get-shipping-methods.md b/docs/guide/composables/use-get-shipping-methods.md deleted file mode 100644 index 5bcb6515a..000000000 --- a/docs/guide/composables/use-get-shipping-methods.md +++ /dev/null @@ -1,90 +0,0 @@ -# useGetShippingMethods - -## Features -`useGetShippingMethods` composable is responsible for fetching a Shipping Method - -## API -The `useGetShippingMethods` composable implements custom factory `useGetShippingMethodsFactory` located in `packages/composables/src/factories/useGetShippingMethodsFactory.ts` and returns `UseGetShippingMethods` interface: -```typescript -export interface UseGetShippingMethods { - state: ComputedProperty; - setState(state: ShippingMethod[]): void; - load: (params: { cartId: string }) => Promise; - result: ComputedProperty; - error: ComputedProperty; - loading: ComputedProperty; -} - -export type ShippingMethod = AvailableShippingMethod; - -export interface AvailableShippingMethod { - amount: Money; - available: Scalars['Boolean']; - /** @deprecated The field should not be used on the storefront */ - base_amount?: Maybe; - carrier_code: Scalars['String']; - carrier_title: Scalars['String']; - error_message?: Maybe; - /** Could be null if method is not available */ - method_code?: Maybe; - /** Could be null if method is not available */ - method_title?: Maybe; - price_excl_tax: Money; - price_incl_tax: Money; -} - -export interface Money { - /** A three-letter currency code, such as USD or EUR */ - currency?: Maybe; - /** A number expressing a monetary value */ - value?: Maybe; -} -``` -### `state` -Get all `ShippingMethods` as array. - -### `setState` -Set one or more `ShippingMethods` state. - -### `load` -Function that takes `cartId` as param and gets the `result` array accordingly - -### `result` -Returns a list of `ShippingMethods` fetched by `load` method as a `computed` property. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useGetShippingMethods } from '@vue-storefront/magento'; - -export default { - setup (props) { - const { - load, - result: shippingMethods, - loading: loadingShippingMethods, - error: errorUseGetShippingMethods, - } = useGetShippingMethods('VsfShippingProvider'); - - - onSSR(async () => { - await load({ - cartId: props.identifier, - }); - }); - - return { - shippingMethods, - loadingShippingMethods, - errorUseGetShippingMethods, - } - } -} -``` diff --git a/docs/guide/composables/use-guest-user.md b/docs/guide/composables/use-guest-user.md deleted file mode 100644 index 26a1e4e14..000000000 --- a/docs/guide/composables/use-guest-user.md +++ /dev/null @@ -1,69 +0,0 @@ -# useGuestUser - -## Features -`useGuestUser` composable is responsible for fetching a Shipping Method - -## API -The `useGuestUser` composable implements custom factory `useGuestUserFactory` located in `packages/composables/src/factories/useGuestUserFactory.ts` and returns `UseGuestUser` interface: -```typescript -export interface UseGuestUser { - guestUser: ComputedProperty; - setGuestUser: (user: any) => void; - attachToCart: (params: { user: UseGuestUserRegisterParams }) => Promise; - loading: ComputedProperty; - error: ComputedProperty; -} - -export interface UseGuestUserRegisterParams { - email: string; - password: string; - firstName?: string; - lastName?: string; - [x: string]: any; -} - -export interface UseGuestUserErrors { - attachToCart: Error; -} -``` -### `guestUser` -Returns a User as a computed property - -### `setGuestUser` -Set the User - -### `attachToCart` -Function that takes `user` as `UseGuestUserRegisterParams` param. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useGuestUser } from '@vue-storefront/magento'; - -export default { - setup (props) { - const { - attachToCart, - loading: loadingGuestUser, - error: errorGuestUser, - } = useGuestUser(); - - const handleFormSubmit = () => async () => { - await attachToCart({ user: props.user }); - }; - - return { - handleFormSubmit, - loadingGuestUser, - errorGuestUser, - } - } -} -``` diff --git a/docs/guide/composables/use-make-oder.md b/docs/guide/composables/use-make-oder.md deleted file mode 100644 index 67b3762d1..000000000 --- a/docs/guide/composables/use-make-oder.md +++ /dev/null @@ -1,103 +0,0 @@ -# useMakeOrder -`useMakeOrder` composable is responsible for making an order - -## API -````typescript -interface UseMakeOrder { - order: Ref; - make(params: { customQuery?: CustomQuery }): Promise; - error: ComputedProperty; - loading: ComputedProperty; -} - -export interface Order extends OrderItem { - /** @deprecated The order_id field is deprecated, use order_number instead. */ - order_id?: Maybe; - /** The unique ID for a `Order` object. */ - order_number: Scalars['String']; -} - -export interface OrderItem { - /** The final discount information for the product */ - discounts?: Maybe>>; - /** The entered option for the base product, such as a logo or image */ - entered_options?: Maybe>>; - /** The unique ID for a `OrderItemInterface` object */ - id: Scalars['ID']; - /** The name of the base product */ - product_name?: Maybe; - /** The sale price of the base product, including selected options */ - product_sale_price: Money; - /** The SKU of the base product */ - product_sku: Scalars['String']; - /** The type of product, such as simple, configurable, etc. */ - product_type?: Maybe; - /** URL key of the base product */ - product_url_key?: Maybe; - /** The number of canceled items */ - quantity_canceled?: Maybe; - /** The number of invoiced items */ - quantity_invoiced?: Maybe; - /** The number of units ordered for this item */ - quantity_ordered?: Maybe; - /** The number of refunded items */ - quantity_refunded?: Maybe; - /** The number of returned items */ - quantity_returned?: Maybe; - /** The number of shipped items */ - quantity_shipped?: Maybe; - /** The selected options for the base product, such as color or size */ - selected_options?: Maybe>>; - /** The status of the order item */ - status?: Maybe; -} -```` -### `make` -function for making an order. This method accepts a single optional params object. - -### `order` -a main data object that contains a made order. - -### `loading` -a reactive object containing information about loading state of your make method. - -### `error` -a reactive object containing the error message, if load or save failed for any reason. - - -## Getters -````typescript -interface UserOrderGetters { - getDate: (order: Order) => string; - getId: (order: Order) => string; - getStatus: (order: Order) => string; - getPrice: (order: Order) => number; - getItems: (order: Order) => OrderItem[]; - getItemSku: (item: OrderItem) => string; - getItemName: (item: OrderItem) => string; - getItemQty: (item: OrderItem) => number; - getItemPrice: (item: OrderItem) => number; - getFormattedPrice: (price: number) => string; -} -```` - -## Example -````javascript -import { useMakeOrder } from '@vue-storefront/magento'; -export default { - setup () { - const { order, make, loading } = useMakeOrder(); - - const processOrder = async () => { - await make(); - router.push(`/checkout/thank-you?order=${order.value.order_number}`); - }; - - return { - processOrder, - order, - loading, - }; - } -} -```` diff --git a/docs/guide/composables/use-menu-category.md b/docs/guide/composables/use-menu-category.md deleted file mode 100644 index 8df7a2006..000000000 --- a/docs/guide/composables/use-menu-category.md +++ /dev/null @@ -1,50 +0,0 @@ -# useMenuCategory - -## Features -`useMenuCategory` composable is responsible for fetching a list of categories with a dedicated file structure for AppHeader Menu. - -## API -```typescript -export interface UseCategory { - categories: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; - loading: ComputedProperty; - error: ComputedProperty; -} - -export type CategoryMenu = CategoryTree; -``` -> For more information on [Category Tree interface](use-category) visit the dedicated documentation. - -### `search` -Function that takes `CategoryListQueryVariables` and `CustomQuery` as optional params and gets the `categories` accordingly - -### `categories` -Returns an array of categories fetched by `search` method as a `computed` property. - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useMenuCategory } from '@vue-storefront/magento'; - -export default { - setup () { - const { categories, search, loading } = useMenuCategory('category-id'); - - onSSR(async () => { - await search({}); - }); - - return { - categories, - loading - } - } -} -``` diff --git a/docs/guide/composables/use-newsletter.md b/docs/guide/composables/use-newsletter.md deleted file mode 100644 index bcfe02a81..000000000 --- a/docs/guide/composables/use-newsletter.md +++ /dev/null @@ -1,21 +0,0 @@ -# useNewsletter - -`useNewsletter` - -## API -```typescript -export interface UseNewsletter extends Composable{ - error: ComputedProperty; - loading: ComputedProperty; - updateSubscription: (params: { - email: UPDATE_NEWSLETTER_PARAMS, - }) => Promise; -} -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-payment-provider.md b/docs/guide/composables/use-payment-provider.md deleted file mode 100644 index 7ce292458..000000000 --- a/docs/guide/composables/use-payment-provider.md +++ /dev/null @@ -1,80 +0,0 @@ -# usePaymentProvider - -## Features -`usePaymentProvider` composable is responsible for fetching a Shipping Method - -## API -The `usePaymentProvider` composable implements custom factory `usePaymentProviderFactory` located in `packages/composables/src/factories/usePaymentProviderFactory.ts` and returns `UsePaymentProvider` interface: -```typescript -interface UsePaymentProvider { - error: ComputedProperty; - loading: ComputedProperty; - state: ComputedProperty; - setState(state: any): void; - load(params: { customQuery?: CustomQuery }): Promise; - save(params: { paymentMethod: any, customQuery?: CustomQuery }): Promise; -} - -export interface UsePaymentProviderErrors { - load: Error; - save: Error; -} -``` -### `state` -Get all `PaymentProviders` as array. - -### `setState` -Set one or more `PaymentProviders` state. - -### `load` -Function that takes `customQuery` as param and gets the `state` array accordingly - -### `save` -Function that takes `paymentMethod` as param and saves it - -### `loading` -Returns the current state of `search` as `computed` boolean property - -### `error` -Reactive object containing the error message, if search failed for any reason. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { usePaymentProvider } from '@vue-storefront/magento'; - -export default { - setup (props) { - const { load, state, save } = usePaymentProvider(); - - onMounted(async () => { - await load(); - }); - - const paymentMethods = computed(() => (Array.isArray(state.value) ? state.value.map((p) => ({ - label: p.title, - value: p.code, - })) : [])); - - const definePaymentMethods = async (paymentMethod) => { - try { - await save({ - paymentMethod: { - code: paymentMethod, - }, - }); - - emit('status', paymentMethod); - } catch (e) { - console.error(e); - } - }; - - return { - definePaymentMethods, - state, - } - } -} -``` diff --git a/docs/guide/composables/use-product.md b/docs/guide/composables/use-product.md deleted file mode 100644 index 3347cd1b6..000000000 --- a/docs/guide/composables/use-product.md +++ /dev/null @@ -1,309 +0,0 @@ -# useProduct - -## Features -`useProduct` composable is responsible for fetching a list of products. - -## API -```typescript -interface UseProduct { - products: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; -} - -export interface ProductsSearchParams { - perPage?: number; - page?: number; - sort?: any; - term?: any; - filters?: any; - [x: string]: any; -} - -export interface Products { - /** Layered navigation aggregations. */ - aggregations?: Maybe>>; - /** - * Layered navigation filters array. - * @deprecated Use aggregations instead - */ - filters?: Maybe>>; - /** An array of products that match the specified search criteria. */ - items?: Maybe>>; - /** An object that includes the page_info and currentPage values specified in the query. */ - page_info?: Maybe; - /** An object that includes the default sort field and all available sort fields. */ - sort_fields?: Maybe; - /** The number of products that are marked as visible. By default, in complex products, parent products are visible, but their child products are not. */ - total_count?: Maybe; -} - -export interface ProductInterface { - activity?: Maybe; - /** - * The attribute set assigned to the product. - * @deprecated The field should not be used on the storefront. - */ - attribute_set_id?: Maybe; - /** Relative canonical URL. This value is returned only if the system setting 'Use Canonical Link Meta Tag For Products' is enabled */ - canonical_url?: Maybe; - /** The categories assigned to a product. */ - categories?: Maybe>>; - category_gear?: Maybe; - climate?: Maybe; - collar?: Maybe; - color?: Maybe; - /** The product's country of origin. */ - country_of_manufacture?: Maybe; - /** - * Timestamp indicating when the product was created. - * @deprecated The field should not be used on the storefront. - */ - created_at?: Maybe; - /** Crosssell Products */ - crosssell_products?: Maybe>>; - /** Detailed information about the product. The value can include simple HTML tags. */ - description?: Maybe; - eco_collection?: Maybe; - erin_recommends?: Maybe; - features_bags?: Maybe; - format?: Maybe; - gender?: Maybe; - /** Indicates whether a gift message is available. */ - gift_message_available?: Maybe; - /** - * The ID number assigned to the product. - * @deprecated Use the `uid` field instead. - */ - id?: Maybe; - /** The relative path to the main image on the product page. */ - image?: Maybe; - /** A number representing the product's manufacturer. */ - manufacturer?: Maybe; - material?: Maybe; - /** An array of Media Gallery objects. */ - media_gallery?: Maybe>>; - /** - * An array of MediaGalleryEntry objects. - * @deprecated Use product's `media_gallery` instead - */ - media_gallery_entries?: Maybe>>; - /** A brief overview of the product for search results listings, maximum 255 characters. */ - meta_description?: Maybe; - /** A comma-separated list of keywords that are visible only to search engines. */ - meta_keyword?: Maybe; - /** A string that is displayed in the title bar and tab of the browser and in search results lists. */ - meta_title?: Maybe; - /** The product name. Customers use this name to identify the product. */ - name?: Maybe; - new?: Maybe; - /** - * The beginning date for new product listings, and determines if the product is featured as a new product. - * @deprecated The field should not be used on the storefront. - */ - new_from_date?: Maybe; - /** - * The end date for new product listings. - * @deprecated The field should not be used on the storefront. - */ - new_to_date?: Maybe; - /** Product stock only x left count */ - only_x_left_in_stock?: Maybe; - /** If the product has multiple options, determines where they appear on the product page. */ - options_container?: Maybe; - pattern?: Maybe; - performance_fabric?: Maybe; - /** - * A ProductPrices object, indicating the price of an item. - * @deprecated Use price_range for product price information. - */ - price?: Maybe; - /** A PriceRange object, indicating the range of prices for the product */ - price_range: PriceRange; - /** An array of TierPrice objects. */ - price_tiers?: Maybe>>; - /** An array of ProductLinks objects. */ - product_links?: Maybe>>; - /** The average of all the ratings given to the product. */ - rating_summary: Scalars['Float']; - /** Related Products */ - related_products?: Maybe>>; - /** The total count of all the reviews given to the product. */ - review_count: Scalars['Int']; - /** The list of products reviews. */ - reviews: ProductReviews; - sale?: Maybe; - /** A short description of the product. Its use depends on the theme. */ - short_description?: Maybe; - size?: Maybe; - /** A number or code assigned to a product to identify the product, options, price, and manufacturer. */ - sku?: Maybe; - sleeve?: Maybe; - /** The relative path to the small image, which is used on catalog pages. */ - small_image?: Maybe; - /** - * The beginning date that a product has a special price. - * @deprecated The field should not be used on the storefront. - */ - special_from_date?: Maybe; - /** The discounted price of the product. */ - special_price?: Maybe; - /** The end date that a product has a special price. */ - special_to_date?: Maybe; - /** Stock status of the product */ - stock_status?: Maybe; - strap_bags?: Maybe; - style_bags?: Maybe; - style_bottom?: Maybe; - style_general?: Maybe; - /** The file name of a swatch image */ - swatch_image?: Maybe; - /** The relative path to the product's thumbnail image. */ - thumbnail?: Maybe; - /** - * The price when tier pricing is in effect and the items purchased threshold has been reached. - * @deprecated Use price_tiers for product tier price information. - */ - tier_price?: Maybe; - /** - * An array of ProductTierPrices objects. - * @deprecated Use price_tiers for product tier price information. - */ - tier_prices?: Maybe>>; - /** - * One of simple, virtual, bundle, downloadable, grouped, or configurable. - * @deprecated Use __typename instead. - */ - type_id?: Maybe; - /** The unique ID for a `ProductInterface` object. */ - uid: Scalars['ID']; - /** - * Timestamp indicating when the product was updated. - * @deprecated The field should not be used on the storefront. - */ - updated_at?: Maybe; - /** Upsell Products */ - upsell_products?: Maybe>>; - /** The part of the URL that identifies the product */ - url_key?: Maybe; - /** @deprecated Use product's `canonical_url` or url rewrites instead */ - url_path?: Maybe; - /** URL rewrites list */ - url_rewrites?: Maybe>>; - /** The part of the product URL that is appended after the url key */ - url_suffix?: Maybe; - /** - * An array of websites in which the product is available. - * @deprecated The field should not be used on the storefront. - */ - websites?: Maybe>>; -} - -export interface UseProductErrors { - search: Error; -} -``` - -### `search` -Function that takes in `ProductsSearchParams` as optional params and gets the `products` accordingly - -### `products` -Returns `products` as a `computed` property - -### `loading` -Returns the `loading` state of `search` - -### `error` -reactive object containing the error message, if search failed for any reason. - - -## Getters - -```typescript -interface ProductGetters { - getAttributes: ( - products: Product, - _filterByAttributeName?: string[], - ) => Record, - getAverageRating: () => number, - getBreadcrumbs: ( - product: Product, - category?: Category, - ) => AgnosticBreadcrumb[], - getCategory: ( - product: Product, - currentUrlPath: string, - ) => Category | null, - getCategoryIds: (product: Product) => string[], - getCoverImage: (product: Product) => string, - getDescription: (product: Product) => string, - getFiltered: ( - products: Product[], - _filters: ProductsSearchParams, - ) => Product[], - getFormattedPrice: (price: number) => string | null, - getGallery: (product: Product) => AgnosticMediaGalleryItem[], - getId: (product: Product) => string, - getName: (product: Product) => string, - getPrice: (product: Product) => AgnosticPrice, - getProductRelatedProduct: (product: Product) => Product[] | [], - getProductUpsellProduct: (product: Product) => Product[] | [], - getProductSku: (product: Product) => string, - getProductThumbnailImage: (product: Product) => string, - getShortDescription: (product: Product) => string, - getSlug: (product: Product, category?: Category) => string, - getTotalReviews: () => number, - getTypeId: (product: Product) => string, -} -``` -* `getAttributes` - returns product attributes. -* `getAverageRating` - returns average rating from all reviews. -* `getBreadcrumbs` - returns 'Breadcrumbs'. -* `getCategoryIds` - returns all product categories. -* `getCategory` - returns 'Category'. -* `getCoverImage` - returns cover image of product. -* `getDescription` - returns product description. -* `getFiltered` - returns filtered product. -* `getFormattedPrice` - returns product price with currency sign. -* `getGallery` - returns product gallery. -* `getId` - returns product ID. -* `getName` - returns product name. -* `getPrice` - returns product price. -* `getProductRelatedProduct` - returns 'ProductRelatedProduct'. -* `getProductSku` - returns 'ProductSku'. -* `getProductThumbnailImage` - returns 'ProductThumbnailImage'. -* `getProductUpsellProduct` - returns 'ProductUpsellProduct'. -* `getShortDescription` - returns 'ShortDescription'. -* `getSlug` - returns product slug. -* `getTotalReviews` - returns total number of reviews product has. -* `getTypeId` - returns 'TypeId'. - -## Example - -```javascript -import { useProduct, productGetters } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core' - -export default { - setup () { - const { products, search, loading, error } = useProduct(''); - - onSSR(async () => { - await search({ - pageSize: 10, - currentPage: 1, - sort: { - position: 'ASC', - }, - }) - }) - - return { - loading, - error, - product: computed(() => productGetters.getFiltered(products.value?.items, { master: true })[0]), - } - } -} -``` diff --git a/docs/guide/composables/use-related-products.md b/docs/guide/composables/use-related-products.md deleted file mode 100644 index be90af824..000000000 --- a/docs/guide/composables/use-related-products.md +++ /dev/null @@ -1,26 +0,0 @@ -# useRelatedProducts - -`useRelatedProducts` - -## API -```typescript -export interface UseRelatedProducts< - PRODUCTS, - RELATED_PRODUCT_SEARCH_PARAMS, - API extends PlatformApi = any> - extends Composable { - products: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; - [x: string]: any; -} - -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-review.md b/docs/guide/composables/use-review.md deleted file mode 100644 index 8bc23b055..000000000 --- a/docs/guide/composables/use-review.md +++ /dev/null @@ -1,14 +0,0 @@ -# useReview - -`useReview` - -## API -```typescript -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-shipping-provider.md b/docs/guide/composables/use-shipping-provider.md deleted file mode 100644 index 99e96b860..000000000 --- a/docs/guide/composables/use-shipping-provider.md +++ /dev/null @@ -1,45 +0,0 @@ -# useShippingProvider -`useShippingProvider` composable can be used for: -* Loading shipping methods for the current cart. -* Selecting shipping method for the current cart. - -> WIP - -## API -```typescript -interface UseShippingProvider { - error: ComputedProperty; - loading: ComputedProperty; - state: ComputedProperty; - setState(state: STATE): void; - load(): Promise; - load(params: { customQuery?: CustomQuery }): Promise; - save(params: { shippingMethod: SHIPPING_METHOD, customQuery?: CustomQuery }): Promise; -} -``` -* `load` - function for fetching shipping method. When invoked, it requests data from the API and populates the response key inside the state property. This method accepts a single optional params object. -* `save` - function for selecting shipping method. This method accepts a single saveParams object. -* `state` - function for selecting shipping method. This method accepts a single saveParams object. -* `loading` - a reactive object containing information about loading state of your load or save method. -* `error` - a reactive object containing the error message, if load or save failed for any reason. - -## Example -````javascript -import { useShippingProvider } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core'; -import { computed } from '@vue/composition-api'; - -export default { - setup () { - const { load, state } = useShippingProvider(); - - onSSR(async () => { - await load(); - }); - - return { - selectedShippingMethod: computed(() => state.value && state.value.response) - }; - } -} -```` diff --git a/docs/guide/composables/use-shipping.md b/docs/guide/composables/use-shipping.md deleted file mode 100644 index d30a7662d..000000000 --- a/docs/guide/composables/use-shipping.md +++ /dev/null @@ -1,43 +0,0 @@ -# useShipping -`useShipping` composable can be used for: -* Loading shipping address for the current cart. -* Saving shipping address for the current cart. - -> WIP - -## API -```typescript -interface UseShipping { - error: ComputedProperty; - loading: ComputedProperty; - shipping: ComputedProperty; - load(): Promise; - load(params: { customQuery?: CustomQuery }): Promise; - save: (params: { params: SHIPPING_PARAMS; shippingDetails: SHIPPING; customQuery?: CustomQuery }) => Promise; -} -``` -* `load` - function for fetching shipping address. When invoked, it requests data from the API and populates shipping property. This method accepts a single optional params object. -* `save` - function for saving shipping address. This method accepts a single saveParams object. -* `shipping` - a main data object that contains a shipping address. -* `loading` - a reactive object containing information about loading state of your load or save method. -* `error` - a reactive object containing the error message, if load or save failed for any reason. - -## Example -````javascript -import { useShipping } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core'; - -export default { - setup () { - const { load, shipping } = useShipping(); - - onSSR(async () => { - await load(); - }); - - return { - shipping - }; - } -} -```` diff --git a/docs/guide/composables/use-store.md b/docs/guide/composables/use-store.md deleted file mode 100644 index 9775c0d8f..000000000 --- a/docs/guide/composables/use-store.md +++ /dev/null @@ -1,52 +0,0 @@ -# `useStore` - -## Features - -`useStore` composable is responsible, for interactions with the available stores in Magento. It allows to: -* fetch available stores -* switch to another store - -## API -The `useStore` composable implements custom factory `useStoreFactory` located in `packages/composables/src/factories/useStoreFactory.ts` and returns `UseStore` interface: -```typescript -interface UseStore extends Composable { - load: () => Promise; - change: (params: ComposableFunctionArgs) => void; - stores: ComputedRef; - loading: ComputedRef; -} - -export interface AvailableStores = { - availableStores? : Maybe>> -}; -``` - -## Getters - -`storeGetter` object contains following methods: - -* `getItems` - returns list of available stores. -* `getSelected` - returns if the selected store is equal to the config store. - - -## Example - -```js -import { useStore, storeGetters } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core'; - -export default { - setup () { - const { load: loadStores, stores } = useStore(); - - onSSR(async () => { - await loadStores(); - }); - - return { - stores: storesGetters.getItems(stores.value), - selectedStore: storesGetters.getSelected(stores.value) - }; - } -} -``` diff --git a/docs/guide/composables/use-upsell-products.md b/docs/guide/composables/use-upsell-products.md deleted file mode 100644 index bdc914dff..000000000 --- a/docs/guide/composables/use-upsell-products.md +++ /dev/null @@ -1,24 +0,0 @@ -# useUpsellProducts - -`useUpsellProducts` - -## API -```typescript -export interface UseUpsellProducts< - PRODUCTS, UPSELL_PRODUCTS_SEARCH_PARAMS, - API extends PlatformApi = any> - extends Composable { - products: ComputedProperty; - loading: ComputedProperty; - error: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; - [x: string]: any; -} -``` - -* `` - - -## Example - -```javascript -``` diff --git a/docs/guide/composables/use-url-resolver.md b/docs/guide/composables/use-url-resolver.md deleted file mode 100644 index 038f9863c..000000000 --- a/docs/guide/composables/use-url-resolver.md +++ /dev/null @@ -1,58 +0,0 @@ -# useRouter - -`useRouter` composition API function is responsible, as its name suggests, for interactions with the routes in your eCommerce. This function returns following values: - -## API -```typescript -interface UseRouter { - search: (url: string) => Promise; - route: Readonly>>; - loading: Readonly>>; -} -``` - -* `search` - Function that takes in a `url` and fills the `route` property -* `route` - Returns the current Page -* `loading` - Returns state of `search` - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useRouter } from '@vue-storefront/magento'; -import { computed } from '@vue/composition-api'; - -export default { - setup(props, context) { - const { - path - } = context.root.$route; - const { - loading, - search, - route - } = useRouter('router:' + path); - onSSR(async () => { - await search(path); - if (route.value.data.urlResolver === null) { - context.root.$nuxt.error({ - statusCode: 404, - message: 'Page not found' - }); - } - }); - - const routeType = computed(() => { - if (loading.value || route.value.data.urlResolver === null) { - return {}; - } - return route.value.data.urlResolver; - }); - - return { - loading, - routeType - }; - } -}; -``` diff --git a/docs/guide/composables/use-user-billing.md b/docs/guide/composables/use-user-billing.md deleted file mode 100644 index 6570b9c33..000000000 --- a/docs/guide/composables/use-user-billing.md +++ /dev/null @@ -1,106 +0,0 @@ -# useUserBilling -`useUserBilling` composable can be used to: -* fetch existing billing addresses, -* submit new billing addresses, -* modify and delete existing billing addresses. - -````typescript -interface UseUserBilling { - billing: ComputedProperty; - addAddress: (params: { - address: USER_BILLING_ITEM; - }) => Promise; - deleteAddress: (params: { - address: USER_BILLING_ITEM; - }) => Promise; - updateAddress: (params: { - address: USER_BILLING_ITEM; - }) => Promise; - load: () => Promise; - setDefaultAddress: (params: { - address: USER_BILLING_ITEM; - }) => Promise; - loading: ComputedProperty; - error: ComputedProperty; -} -```` - -* `load` - function for fetching user addresses. When invoked, it requests data from the API and populates billing property. -* `addAddress`- function for posting new billing address. This method accepts a single params object. -* `deleteAddress` - function for deleting existing billing address. This method accepts a single params object. -* `updateAddress` - function for updating existing billing address. This method accepts a single params object. -* `setDefaultAddress` - function for settings an existing billing address as default. This method accepts a single params object. -* `billing` - reactive data object containing response from the backend. -* `loading` - reactive object containing information about loading state of load, addAddress, deleteAddress, updateAddress and setDefaultAddress methods. -* `error` - reactive object containing the error message, if some properties failed for any reason. - -## Getter -````typescript -interface UserBillingGetters { - getAddresses: (billing: USER_BILLING, criteria?: Record) => USER_BILLING_ITEM[]; - getDefault: (billing: USER_BILLING) => USER_BILLING_ITEM; - getTotal: (billing: USER_BILLING) => number; - getPostCode: (address: USER_BILLING_ITEM) => string; - getStreetName: (address: USER_BILLING_ITEM) => string; - getStreetNumber: (address: USER_BILLING_ITEM) => string | number; - getCity: (address: USER_BILLING_ITEM) => string; - getFirstName: (address: USER_BILLING_ITEM) => string; - getLastName: (address: USER_BILLING_ITEM) => string; - getCountry: (address: USER_BILLING_ITEM) => string; - getPhone: (address: USER_BILLING_ITEM) => string; - getEmail: (address: USER_BILLING_ITEM) => string; - getProvince: (address: USER_BILLING_ITEM) => string; - getCompanyName: (address: USER_BILLING_ITEM) => string; - getTaxNumber: (address: USER_BILLING_ITEM) => string; - getId: (address: USER_BILLING_ITEM) => string; - getApartmentNumber: (address: USER_BILLING_ITEM) => string | number; - isDefault: (address: USER_BILLING_ITEM) => boolean; -} -```` - -* `getAddresses` - returns list of billing addresses. -* `getDefault` - returns a default billing address. -* `getTotal` - returns total number of billing addresses user has. -* `getId` - returns id from an individual address. -* `getPostCode` - returns post code from an individual address. -* `getStreetName` - returns street name from an individual address. -* `getStreetNumber` - returns street number from an individual address. -* `getCity` - returns city name from an individual address. -* `getFirstName` - returns first name from an individual address. -* `getLastName` - returns last name from an individual address. -* `getCountry` - returns country name from an individual address. -* `getPhone` - return phone number from an individual address. -* `getEmail` - returns e-mail address from an individual address. -* `getProvince` - returns province (state) from an individual address. -* `getCompanyName` - returns company name from an individual address. -* `getTaxNumber` - returns tax number from an individual address. -* `getApartmentNumber` - returns apartment number from an individual address. -* `isDefault` - return information if address is current default. - -## Example -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useUserBilling, userBillingGetters } from '@vue-storefront/magento'; - -export default { - setup() { - const { - billing, - load, - addAddress, - deleteAddress, - updateAddress - } = useUserBilling(); - - // If you're using Nuxt or any other framework for Universal Vue apps - onSSR(async () => { - await load(); - }); - - return { - billing: computed(() => userBillingGetters.getAddresses(billing.value)), - userBillingGetters - }; - } -}; -``` diff --git a/docs/guide/composables/use-user-order.md b/docs/guide/composables/use-user-order.md deleted file mode 100644 index 68f2f149f..000000000 --- a/docs/guide/composables/use-user-order.md +++ /dev/null @@ -1,44 +0,0 @@ -# useUserOrder - -`useUserOrders` composable is responsible, as it's name suggests for interactions with user's order history from your eCommerce. - -## API - -```typescript -interface UseUserOrder { - orders: ComputedProperty; - search(params: ComposableFunctionArgs): Promise; - loading: ComputedProperty; - error: ComputedProperty; -} -``` - -* `orders` - a main data object that contains an array of orders fetched by searchOrders method. -* `totalOrder` - Returns the total `number` of `orders` for the current User -* `error` - reactive object containing the error message, if some properties failed for any reason. -* `loading` - a reactive object containing information about loading state of your searchOrders method. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useUserOrder } from '@vue-storefront/magento'; -import { computed } from '@vue/composition-api'; - -export default { - setup() { - const { - orders, - searchOrders - } = useUserOrders(); - - onSSR(async () => { - await searchOrder(); - }); - - return { - orders: computed(() => orders ? orders.value : []) - } - } -} -``` diff --git a/docs/guide/composables/use-user-shipping.md b/docs/guide/composables/use-user-shipping.md deleted file mode 100644 index 8820f9cbb..000000000 --- a/docs/guide/composables/use-user-shipping.md +++ /dev/null @@ -1,56 +0,0 @@ -# useUserShipping - -`useShipping` composable can be used for: -* Loading shipping address for the current cart. -* Saving shipping address for the current cart. - -## API -````typescript -interface UseUserShipping { - shipping: ComputedProperty; - addAddress: (params: { - address: USER_SHIPPING_ITEM; - }) => Promise; - deleteAddress: (params: { - address: USER_SHIPPING_ITEM; - }) => Promise; - updateAddress: (params: { - address: USER_SHIPPING_ITEM; - }) => Promise; - load: () => Promise; - setDefaultAddress: (params: { - address: USER_SHIPPING_ITEM; - }) => Promise; - loading: ComputedProperty; - error: ComputedProperty; -} -```` - -* `load` - function for fetching shipping address. When invoked, it requests data from the API and populates shipping property. This method accepts a single optional params object. -* `save` - function for saving shipping address. This method accepts a single saveParams object. -* `shipping` - a main data object that contains a shipping address. -* `addAddress` - function for adding a shipping address. This method accepts addressParams object -* `deleteAddress` - function for deleting a shipping address. This method accepts addressParams object -* `updateAddress` - function for updating a shipping address. This method accepts addressParams object -* `loading` - a reactive object containing information about loading state of your load or save method. -* `error` - a reactive object containing the error message, if load or save failed for any reason. - -## Example -```javascript -import { useShipping } from '@vue-storefront/magento'; -import { onSSR } from '@vue-storefront/core'; - -export default { - setup () { - const { load, shipping } = useShipping(); - - onSSR(async () => { - await load(); - }); - - return { - shipping - }; - } -} -``` diff --git a/docs/guide/composables/use-user.md b/docs/guide/composables/use-user.md deleted file mode 100644 index 31cfce636..000000000 --- a/docs/guide/composables/use-user.md +++ /dev/null @@ -1,82 +0,0 @@ -# useUser - -`useUser` composable can be used to: -* manage user authentication -* manage authentication data like email address, login or password. -* If you want to fetch/save other user data you should use the following composables: - -* `useUserBilling` -* `useUserShipping` -* `useUserOrders` - -## API -```typescript -interface UseUser { - user: ComputedProperty; - setUser: (user: USER) => void; - updateUser: (params: { - user: UPDATE_USER_PARAMS; - }) => Promise; - register: (params: { - user: UseUserRegisterParams; - }) => Promise; - login: (params: { - user: UseUserLoginParams; - }) => Promise; - logout: () => Promise; - changePassword: (params: { - current: string; - new: string; - }) => Promise; - load: () => Promise; - isAuthenticated: Ref; - loading: ComputedProperty; - error: ComputedProperty; -} -``` - -* `user` - reactive object containing information about current user. -* `updateUser` - function for updating user data. When invoked, it submits data to the API and populates user property with updated information. This method accepts a single params object. -* `register` - function for creating a new user. When invoked, it submits new user data to the API and saves them. This method accepts a single params object. -* `login` - function for log in a user based on a username and password. This method accepts a single params object. -* `logout` - function for logout a user. -* `changePassword` - function for changing user password. This method accepts a single params object. -* `isAuthenticated` - checks if user is authenticated or not. -* `loading` - reactive object containing information about loading state of user. -* `error` - reactive object containing the error message, if some properties failed for any reason. - -## Getters -````typescript -interface UserGetters { - getFirstName: (customer: USER) => string; - getLastName: (customer: USER) => string; - getFullName: (customer: USER) => string; - getEmailAddress: (customer: USER) => string; - [getterName: string]: (element: any, options?: any) => unknown; -} -```` -* `getFirstName` - returns user first name. -* `getLastName` - returns user last name. -* `getFullName` - returns full user name. -* `getEmailAddress` - returns user email address. - -## Example -```javascript -import { - useUser -} from '@vue-storefront/magento'; - -export default { - setup () { - const { user, register, login, loading } = useUser(); - - return { - register, - login, - loading, - firstName: userGetters.getFirstName(user.value), - email: userGetters.getEmailAddress(user.value) - } - } -} -``` diff --git a/docs/guide/composables/use-wishlist.md b/docs/guide/composables/use-wishlist.md deleted file mode 100644 index 0fd5c3d9f..000000000 --- a/docs/guide/composables/use-wishlist.md +++ /dev/null @@ -1,94 +0,0 @@ -# useWishlist - -`useWishlist` composable is responsible, for integrating with wishlist from Magento. It allows to: -* fetch products from wishlist -* add products to wishlist -* remove products from wishlist -* check if product is on wishlist - -## API -```typescript - interface UseWishlist { - wishlist: ComputedProperty; - loading: ComputedProperty; - addItem(params: { - product: PRODUCT; - customQuery?: CustomQuery; - }): Promise; - removeItem(params: { - product: WISHLIST_ITEM; - customQuery?: CustomQuery; - }): Promise; - load(): Promise; - load(params: { - customQuery?: CustomQuery; - }): Promise; - clear(): Promise; - setWishlist: (wishlist: WISHLIST) => void; - isOnWishlist({ product: PRODUCT }: { - product: any; - }): boolean; - error: ComputedProperty; -} -``` - -* `wishlist` - a main data object. -* `load` - function used to retrieve wishlist products. When invoked, it requests data from the API and populates wishlist property. This method accepts a single params object. -* `addItem` - function used to add new product to wishlist. When invoked, it submits data to the API and populates wishlist property with updated information. This method accepts a single params object. -* `removeItem` - function that removes products from the wishlist. It submits data to the API and populates updated wishlist property. This method accepts a single params object. -* `clear` - function that removes all products from the wishlist and populates clear wishlist property. -* `isOnWishlist` - function that checks if product is on the wishlist. It returns boolean value. This method accepts a single params object. -* `loading` - function that checks if product is on the wishlist. It returns boolean value. This method accepts a single params object. -* `error` - reactive object containing the error message, if some properties failed for any reason. - -## Getters -> WIP - -````typescript -interface WishlistGetters { - getItems: (wishlist: WISHLIST) => WISHLIST_ITEM[]; - getItemName: (wishlistItem: WISHLIST_ITEM) => string; - getItemImage: (wishlistItem: WISHLIST_ITEM) => string; - getItemPrice: (wishlistItem: WISHLIST_ITEM) => AgnosticPrice; - getItemAttributes: (wishlistItem: WISHLIST_ITEM, filters?: Array) => Record; - getItemSku: (wishlistItem: WISHLIST_ITEM) => string; - getTotals: (wishlist: WISHLIST) => AgnosticTotals; - getTotalItems: (wishlist: WISHLIST) => number; - getFormattedPrice: (price: number) => string; - [getterName: string]: (element: any, options?: any) => unknown; -} -```` -* `getItems` - returns list of products on wishlist -* `getItemName` - returns product's name from wishlist. -* `getItemImage` - returns product's image from wishlist. -* `getItemPrice` - returns product's price from wishlist. -* `getItemQty` - returns quantity of product which is on wishlist. -* `getItemAttributes` - returns product variant attribute chosen by its name. -* `getItemSku` - returns product's SKU code. -* `getTotals` - returns price of products. -* `getTotalItems` - returns amount of all items that are currently on wishlist. -* `getFormattedPrice` - returns price in formatted manner taking into account local specifics. - -## Example - -```javascript -import { onSSR } from '@vue-storefront/core'; -import { useWishlist, wishlistGetters } from '@vue-storefront/magento'; -export default { - setup() { - const { load: loadWishlist } = useWishlist(); - - const wishlistItems = computed(() => wishlistGetters.getItems()); - - // If you're using Nuxt or any other framework for Universal Vue apps - onSSR(async () => { - await loadWishlist(); - }); - - return { - loadWishlist, - wishlistItems - }; - } -}; -``` diff --git a/docs/guide/configuration.md b/docs/guide/configuration.md index cfa5e8305..88023878e 100644 --- a/docs/guide/configuration.md +++ b/docs/guide/configuration.md @@ -11,8 +11,8 @@ For configure the integration using `environment variables`, you can have a `.en STORE_ENV=dev # Store environment (Usage for file configuration) NUXT_APP_ENV=development # Define nuxt application environment NUXT_APP_PORT=3000 # Define nuxt port -MAGENTO_GRAPHQL=https://{YOUR_SITE_FRONT_URL}/graphql # Define Magento GraphQL endpoint -MAGENTO_EXTERNAL_CHECKOUT=false # Flag if VSF will use External Checkout +MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql # Define Magento GraphQL endpoint +MAGENTO_EXTERNAL_CHECKOUT_ENABLED=false # Flag if VSF will use External Checkout MAGENTO_EXTERNAL_CHECKOUT_URL=https://{YOUR_SITE_FRONT_URL} # External checkout URL MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH=/vue/cart/sync # External Checkout synchronization path MAGENTO_BASE_URL={YOUR_SITE_FRONT_URL} # base url of your Magento instance @@ -45,6 +45,12 @@ Then on the `config` folder create a file `dev.json` with your configurations. } ``` + +## Store Config +This type contains information about the Magento's Store Configuration which is stored in Pinia `$state.storeConfig`. To avoid over fetch, by default, the amount of data pulled from Magento is minimal but as your application grows you might want to pull more config data for different purposes. + +Plugin `plugins/storeConfigPlugin.ts` is responsible for initial population of the Store Config data based on query in `plugins/query/StoreConfig.gql.ts`. To modify the initial Store Configuration state simply adjust the query to your needs. + ## Multistore and localization Each Magento Store View need to have corresponding locale configuration object in `i18n.locales` array in `nuxt.config.js`. @@ -87,23 +93,23 @@ By default, we use the `ipx` provider. that means the images are fetched from Ma ### How to configure external image provider 1. Configure ENV variables - 1. `MAGENTO_BASE_URL` - base URL of Magento shop. It's used by the `useImage` composable to extract image's path from full Magento URL. - 2. `IMAGE_PROVIDER` - for example: `cloudinary`. List of available providers is [here](https://image.nuxtjs.org/getting-started/providers) - 3. `IMAGE_PROVIDER_BASE_URL` - the base url of your project in for example cloudinary or other image providers + 1. `MAGENTO_BASE_URL` - base URL of Magento shop. It's used by the `useImage` composable to extract image's path from full Magento URL. + 2. `IMAGE_PROVIDER` - for example: `cloudinary`. List of available providers is [here](https://image.nuxtjs.org/getting-started/providers) + 3. `IMAGE_PROVIDER_BASE_URL` - the base url of your project in for example cloudinary or other image providers 2. Configure your provider in `nuxt.config.js`. Here is the example: ```javascript image: { - provider: config.get('imageProvider'), + provider: process.env.VSF_IMAGE_PROVIDER magekit: { - baseURL: config.get('imageProviderBaseUrl'), + baseURL: process.env.VSF_IMAGE_PROVIDER_BASE_URL } }, ``` 3. Sync your Magento images with external provider - 1. For example if you have anb image in Magento with path `{YOUR_MAGENTO_BASE_URL}o/media/catalog/product/w/g/wg02-bk-0.jpg` - you should have corresponding image in your external provider: `media/catalog/product/w/g/wg02-bk-0.jpg` + 1. For example if you have anb image in Magento with path `{YOUR_MAGENTO_BASE_URL}o/media/catalog/product/w/g/wg02-bk-0.jpg` + you should have corresponding image in your external provider: `media/catalog/product/w/g/wg02-bk-0.jpg` 4. Sync your local images with external provider - 1. Upload content of `static` directory to your external media library + 1. Upload content of `static` directory to your external media library ### The useImage composable @@ -117,20 +123,21 @@ That methods returns an URL to image, without magento base url, and cache part. When you want to use this composable you need to: 1. import it in component -`import { useImage } from '~/composables';` + `import { useImage } from '~/composables';` 2. Export `getMagentoImage to a template ```javascript // component body (typically a setup() function) const { getMagentoImage } = useImage(); return { - ... // other things like computed properties, methods and so on - getMagentoImage + ... // other things like computed properties, methods and so on + getMagentoImage } ``` 3. Use the `getMagentoImage` method in template like this: ```vue - ({ + products: (context) => ({ ...context, query: customProductsQuery, // Your custom query }) @@ -92,6 +92,6 @@ In order to query `cld_data`, you need to have [Cloudinary Magento extension](ht ### Important notes -**Only** attributes presented on `ProductInterface` are accessible via GraphQL without any additional modification on the Magento side. +**Only** attributes presented on `ProductInterface` are accessible via GraphQL without any additional modification on the Magento side. To be able to get any custom attributes you must extend GraphQL schema in the Magento2. Follow [Magento 2 documentation](https://devdocs.magento.com/guides/v2.4/graphql/develop/extend-existing-schema.html) to achieve that. diff --git a/docs/guide/ssr.md b/docs/guide/ssr.md index 0d741e161..069d7d4ca 100644 --- a/docs/guide/ssr.md +++ b/docs/guide/ssr.md @@ -17,11 +17,11 @@ The cached pages are: To invalidate a tag and remove pages associated with that tag, use the [Invalidation endpoint](https://docs.vuestorefront.io/v2/performance/ssr-cache.html#invalidating-tags). -Go to the route configured in the `.env` file under the `REDIS__CACHE_INVALIDATE_KEY` key with two query parameters: -* `key` — string matching the `REDIS__CACHE_INVALIDATE_KEY` key in the `.env` file. +Go to the route configured in the `.env` file under the `VSF_REDIS_CACHE_INVALIDATE_KEY` key with two query parameters: +* `key` — string matching the `VSF_REDIS_CACHE_INVALIDATE_KEY` key in the `.env` file. * `tags` — a comma-separated list of tags for invalidation. -Assuming that you are running the application locally, the `REDIS__CACHE_INVALIDATE_URL` key is equal to `/cache-invalidate,` and the `REDIS__CACHE_INVALIDATE_KEY` key is equal to `secret_key`, and you want to invalidate the `Vhome` tag, the full URL will look like this: +Assuming that you are running the application locally, the `VSF_REDIS_CACHE_INVALIDATE_URL` key is equal to `/cache-invalidate,` and the `VSF_REDIS_CACHE_INVALIDATE_KEY` key is equal to `secret_key`, and you want to invalidate the `Vhome` tag, the full URL will look like this: ## How to cache other pages @@ -50,22 +50,21 @@ Once you have the Redis driver installed, you need to add the Redis configuratio ``` .env -REDIS__HOST=127.0.0.1 -REDIS__PORT=6379 -REDIS_PASSWORD= -REDIS__KEY_PREFIX= -REDIS__CACHE_INVALIDATE_URL=/cache-invalidate -REDIS__ENABLED=false +VSF_REDIS_HOST=127.0.0.1 +VSF_REDIS_PORT=6379 +VSF_REDIS_KEY_PREFIX= +VSF_REDIS_CACHE_INVALIDATE_URL=/cache-invalidate +VSF_REDIS_ENABLED=true ``` Then you have to update `nuxt.config.js file` and add this to the `modules` object: ```javascript ['@vue-storefront/cache/nuxt', { - enabled: process.env.REDIS__ENABLED, + enabled: process.env.VSF_REDIS_ENABLED, invalidation: { - endpoint: process.env.REDIS__CACHE_INVALIDATE_URL, - key: process.env.REDIS__CACHE_INVALIDATE_KEY, + endpoint: process.env.VSF_REDIS_CACHE_INVALIDATE_URL, + key: process.env.VSF_REDIS_CACHE_INVALIDATE_KEY, handlers: [ '@vue-storefront/cache/defaultHandler', ], @@ -75,9 +74,9 @@ Then you have to update `nuxt.config.js file` and add this to the `modules` obje { // docs: https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options redis: { - keyPrefix: process.env.REDIS__KEY_PREFIX, - host: process.env.REDIS__HOST, - port: process.env.REDIS__PORT, + keyPrefix: process.env.VSF_REDIS_KEY_PREFIX, + host: process.env.VSF_REDIS_HOST, + port: process.env.VSF_REDIS_PORT, }, }, ], diff --git a/docs/guide/supported-features.md b/docs/guide/supported-features.md new file mode 100644 index 000000000..b02db5176 --- /dev/null +++ b/docs/guide/supported-features.md @@ -0,0 +1,97 @@ +# Supported features + +This page shows the Magento 2 features supported by this integration. If the feature you need is not supported, check out our [Roadmap](./roadmap.html) or reach out to us on [our Discord server](https://discord.vuestorefront.io/). + +## Product types + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Simple | ✅ | +| Grouped | ✅ | +| Configurable | ✅ | +| Bundle | ✅ | +| Virtual | 🚧 Partial | Virtual products are displayed and can be added to the cart. However, you have to modify the checkout to hide the shipping step when virtual products are in the cart. +| Downloadable | 🚧 Partial | + +## CMS content + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| CMS Pages | ✅ | +| CMS Blocks | ✅ | +| CMS Widgets | 🚧 Partial | +| Page Builder | ❌ | Support is planned for version 1.1. However, we have other ready to use integrations with headless CMS platforms. + +## Category & Search Results Page + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Quick search | ✅ | +| Grid/list mode | ✅ | +| Adding product to cart | ✅ | +| Adding product to wishlist | ✅ | +| Configurable product swatches | ❌ | +| Filtering | ✅ | +| Sorting | ✅ | +| Breadcrumb | ❌ | +| Category Landing Pages | ❌ | + +## Product page + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Breadcrumb | ✅ | +| Pricing | ✅ | +| Special pricing | ✅ | +| Product swatches | ✅ | +| Customizable product options | ❌ | +| Image gallery | ✅ | +| Video in gallery | ❌ | +| Add to wishlist | ✅ | +| Add to compare | ❌ | +| Customer Reviews | ✅ | +| Adding a new review | ✅ | +| Product description | ✅ | +| Product short description | ✅ | +| Related products | ✅ | +| Up-sell products | ✅ | + +## Checkout process + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Mini Cart | ✅ | +| Standalone cart page | ❌ | +| Checkout - shipping step | ✅ | +| Checkout - payment step | ✅ | +| In-Store delivery | ❌ | +| Shipping methods | 🚧 Partial | +| Payment methods | 🚧 Partial | + +## Customer account + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Account Information | ✅ | +| Order history | ✅ | +| Order detail view | ✅ | +| Re-order | ❌ | +| Invoices | ❌ | +| Returns | ❌ | +| Order shipments | ❌ | +| Print order | ❌ | +| Downloadable products | ❌ | +| Wishlist | ✅ | +| Address book | ✅ | +| Stored payment methods | ❌ | +| Reviews | ✅ | +| Newsletter subscription | ✅ | + +## Other features + +| Feature | Support | Additional comments | +|-------------------------------|------------|---------------------| +| Internationalization | ✅ | +| Multistore | ✅ | +| Mega menu | ❌ | +| Product comparison | ❌ | diff --git a/docs/migration-guides/1.0.0-rc.7/index.md b/docs/migration-guides/1.0.0-rc.7/index.md new file mode 100644 index 000000000..13ed518dd --- /dev/null +++ b/docs/migration-guides/1.0.0-rc.7/index.md @@ -0,0 +1,108 @@ +# Vue Storefront for Magento 1.0.0-rc.7 release notes + +Vue Storefront for Magento 1.0.0.rc.7 contains backward-incompatible changes. To review these backward-incompatible changes, see + +[1.0.0-rc.7 **Backward incompatible changes reference**](./rc.7-bic.md) + +## Vue Storefront for Magento 1.0.0-rc.7 highlights + +### Refactoring of composables + +In this version, the integration packages `@vue-storefront/magento` has been marked as deprecated. All things from this package, including composables, getters, and helpers have been moved to `@vue-storefront/magento-theme` + +**All composables have been refactored and moved to the theme.** + +- SharedRefs are not used anymore. + - from now we use the Pinia store for global state management + - instead of sharing context between each composables we use the useContext hook from Nuxt Composition API + - factories have been removed, and from now each composable is a function without dependencies on the `@vue-storefront/core` package + + +**Getters have been moved to the theme package and marked as deprecated.** + +In the next releases, getters will be removed. + +**Helpers have been moved to the theme package** + +### The onSSR hook is not used anymore + +From now, each operation that should be performed on the server-side must be called inside on the `useFetch` and the `useAsync` functions that are part of **Nuxt Composition API**. + +### The i18n plugin is not used anymore + +The i18n plugin from `@vue-storefront/core` is not used anymore. Configuring i18n is the responsibility of the theme package from now. + +### Modularization + +We started the process of split whole app into modules. The first module is the category module that contains components and logic responsible for catalog category pages. In next releases we will continue refactorization and add modules for other parts of app like product, checkout, account, wishlist and so on. + +### New features + +- Breadcrumbs on Category pages [#819](https://github.com/vuestorefront/magento2/pull/819) +- Loading skeletons: [#681](https://github.com/vuestorefront/magento2/pull/681) +- Styles for default Magento Static Blocks that appear on Category Landing Pages: [#685](https://github.com/vuestorefront/magento2/pull/685) +- Added possibility to navigate to nested categories in the mobile side menu [#709](https://github.com/vuestorefront/magento2/pull/709) +- Added information about selected filters in the filters sidebar [#830](https://github.com/vuestorefront/magento2/pull/830) +- Display category title below breadcrumbs [#892](https://github.com/vuestorefront/magento2/pull/892) +- Added mega menu on desktop view [#903](https://github.com/vuestorefront/magento2/pull/903) + +### Performance improvements + +- From now, user data is loaded only on pages where it’s necessary like checkout and my account pages. In other cases, user data is not loading and thanks to that the performance on mobile is better because we decreased the time of JS long tasks. https://github.com/vuestorefront/magento2/pull/859 +- We added the storeConfig plugin and changed the approach to getting config from Magento. [#862](https://github.com/vuestorefront/magento2/pull/862) + - before we loaded the whole Magento config on page load, and we did that in layout so it was not possible to change the use different layout than the default + - after this change, we load only a few necessary fields by the Nuxt plugin. + - Thanks to that it’s possible to use other layouts like default. Moreover, this has an impact on performance because the storeConfig Magento query is not cached on the Magento side, so when we decreased the amount of data, the time of response should be faster. +- Once we updated the Storefront UI to the newest version, we were able to add support for the NuxtImage for images in the Gallery on ta Product Page [#850](https://github.com/vuestorefront/magento2/pull/850) + +### **Bugfix** + +- color swatches are visible on the product page on a mobile device so from now it’s possible to add a configurable product to the cart on mobile devices. [#926](https://github.com/vuestorefront/magento2/pull/926) +- Wishlist and cart transition works correctly from now when a user opens the wishlist sidebar or cart sidebar [#918](https://github.com/vuestorefront/magento2/pull/918) +- Once the message about the not authorized user is displayed, the cookie with a message will be removed to avoid displaying the message endlessly. [#775](https://github.com/vuestorefront/magento2/pull/775) +- From now, it’s possible to add more than one product to the cart from the Category page in list mode [#680](https://github.com/vuestorefront/magento2/pull/680) +- The “your bag is empty” phrase is centered correctly from now [#679](https://github.com/vuestorefront/magento2/pull/679) +- updated the useUser composable to assign error values for an email update action [#777](https://github.com/vuestorefront/magento2/pull/777) +- removed redundant form handling requests to avoid duplicated/multiplicated requests [#777](https://github.com/vuestorefront/magento2/pull/777) +- fixed 404-page issues and my-account redirects for non-logged users [#722](https://github.com/vuestorefront/magento2/pull/722) +- fixed price caching issue on category page [#793](https://github.com/vuestorefront/magento2/pull/793) +- fallow one digit house numbers [#824](https://github.com/vuestorefront/magento2/pull/824) +- The billing address is no longer cleared while returning to the billing step on checkout [#783](https://github.com/vuestorefront/magento2/pull/783) +- removed placeholder for a sorting mechanism in the category navbar [#782](https://github.com/vuestorefront/magento2/pull/782) +- fixed wrong direction of the draggable icon on the product page (mobile) [#927](https://github.com/vuestorefront/magento2/pull/927) +- Click on a product tab click to scroll to tab content from now [#931](https://github.com/vuestorefront/magento2/pull/931) +- Prevented content jump when an option or variant is selected [#933](https://github.com/vuestorefront/magento2/pull/933) + +### Refactors + +- Removed categoryGetters call from AppHeader.vue [#853](https://github.com/vuestorefront/magento2/pull/853) +- Removed storeConfigGetters and storeGetters from StoreSwitcher and StoresModal +- Removed categoryGetters from SearchBar.vue +- Removed category results from the Search results components [#867](https://github.com/vuestorefront/magento2/pull/867) +- Created the category module and refactored the category three components +- refactored Category page’s filters on desktop view [#815](https://github.com/vuestorefront/magento2/pull/815) +- refactored store switcher [#794](https://github.com/vuestorefront/magento2/pull/794) +- refactored cookie retrieval [#797](https://github.com/vuestorefront/magento2/pull/797) +- removed links from order's product [#778](https://github.com/vuestorefront/magento2/pull/778) +- Moved filters to sidebar on desktop view [#884](https://github.com/vuestorefront/magento2/pull/884) +- Created Grid/list components on Category page [#910](https://github.com/vuestorefront/magento2/pull/910) +- Refactored project config & env variables [#813](https://github.com/vuestorefront/magento2/pull/813) +- refactored useUiState [#595](https://github.com/vuestorefront/magento2/pull/595) +- changed homepage slider to the hero section [#928](https://github.com/vuestorefront/magento2/pull/928) +- changed products carousel on the home page to non-carousel section [#914](https://github.com/vuestorefront/magento2/pull/914) +- added skeleton loaders in category nabvar [#936](https://github.com/vuestorefront/magento2/pull/936) + +### Chore + +- Updated StorefrontUI to 0.13.0 [#781](https://github.com/vuestorefront/magento2/pull/781) +- Updated @vue-storefront packages to 2.5.6 [#740](https://github.com/vuestorefront/magento2/pull/740) +- fixed .lintstagedrc {.vue} warning [#779](https://github.com/vuestorefront/magento2/pull/779) +- lint-staged should run only once [#789](https://github.com/vuestorefront/magento2/pull/789) +- auto-assign team members to pull requests [#759](https://github.com/vuestorefront/magento2/pull/759) +- removed commitizen prepare-commit-msg git hook [#780](https://github.com/vuestorefront/magento2/pull/780) +- Merged the three .lintstagedrc regexes into one [#787](https://github.com/vuestorefront/magento2/pull/787) + +### Documentation + +- documentation about composables has been fully rewrote +- added documentation for API Client methods diff --git a/docs/migration-guides/1.0.0-rc.7/rc.7-bic.md b/docs/migration-guides/1.0.0-rc.7/rc.7-bic.md new file mode 100644 index 000000000..19c34a5f9 --- /dev/null +++ b/docs/migration-guides/1.0.0-rc.7/rc.7-bic.md @@ -0,0 +1,88 @@ +# 1.0.0-rc.7 Backward incompatible changes reference + +In this document you can see crucial breaking changes in the `1.0.0-rc.7` comparing to `1.0.0-rc.6` release. To see all changes, please take a look at [the release PR](https://github.com/vuestorefront/magento2/pull/949/files). + +## Composables (@vue-storefront/magento package) + +| File | what and how it changed | +|---------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| packages/composables/nuxt/plugin.js | Has been moved to packages/theme/modules/magento/plugin.ts | +| packages/composables/package.json | build scripts have been changed | +| packages/composables/src/composables/useAddresses/index.ts | - Marked as deprecated - use packages/theme/modules/customer/composables/useAddresses/index.ts instead, return values of the useAddresses composable have been changed | +| packages/composables/src/composables/useBilling/index.ts | - Marked as deprecated - use packages/theme/composables/useBilling/index.ts instead, return values of the useBilling composable have been changed | +| packages/composables/src/composables/useCart/index.ts | - Marked as deprecated - use packages/theme/composables/useCart/index.ts instead, return values of the useCart composable have been changed | +| packages/composables/src/composables/useCategory/index.ts | - Marked as deprecated - use packages/theme/modules/catalog/category/composables/useCategory/index.ts instead,return values of the useCategory composable have been changed | +| packages/composables/src/composables/useCategorySearch/index.ts | - Marked as deprecated - use packages/theme/modules/catalog/category/composables/useCatgegorySearch/index.ts instead | +| packages/composables/src/composables/useConfig/index.ts | - Marked as deprecated - use packages/theme/composables/useConfig/index.ts instead | +| packages/composables/src/composables/useContent/index.ts | - Marked as deprecated - use packages/theme/composables/useContent/index.ts instead, return values of the useContent composable have been changed | +| packages/composables/src/composables/useCountrySearch/index.ts | - Marked as deprecated - use packages/theme/composables/useCountry/index.ts instead, return values of the useCountrySearch composable have been changed | +| packages/composables/src/composables/useCurrency/index.ts | - Marked as deprecated - use packages/theme/composables/useCurrency/index.ts instead, return values of the useCurrency composable have been changed | +| packages/composables/src/composables/useCustomMutation/index.ts | - Marked as deprecated - use the useApi composable to send custom mutations | +| packages/composables/src/composables/useCustomQuery/index.ts | - Marked as deprecated - use the useApi composable to send custom mutations | +| packages/composables/src/composables/useExternalCheckout/index.ts | - Marked as deprecated - use packages/theme/composables/useExternalCheckout/index.ts instead | +| packages/composables/src/composables/useFacet/index.ts | - Marked as deprecated - use packages/theme/composables/useFacet/index.ts instead | +| packages/composables/src/composables/useForgotPassword/index.ts | - Marked as deprecated - use packages/theme/modules/customer/composables/useForgotPassword/index.ts instead | +| packages/composables/src/composables/useGetShippingMethods/index.ts | - Marked as deprecated - use packages/theme/composables/useGetShippingMethods/index.ts instead, return values of the useGetShippingMethods composable have been changed | +| packages/composables/src/composables/useGuestUser/index.ts | - Marked as deprecated - use packages/theme/modules/customer/composables/useGuestUser/index.ts instead, return values of the useGuestUser composable have been changed | +| packages/composables/src/composables/useMakeOrder/index.ts | - Marked as deprecated - use packages/theme/composables/useMakeOrder/index.ts instead, return values of the useMakeOrder composable have been changed | +| packages/composables/src/composables/useNewsletter/index.ts | - Marked as deprecated - use packages/theme/composables/useNewsletter/index.ts instead | +| packages/composables/src/composables/usePaymentProvider/index.ts | - Marked as deprecated - use packages/theme/composables/usePaymentProvider/index.ts instead, return values of the usePaymentProvider composable have been changed | +| packages/composables/src/composables/useProduct/index.ts | - Marked as deprecated - use packages/theme/modules/catalog/product/composables/useProduct/index.ts instead, return values of the useProduct composable have been changed | +| packages/composables/src/composables/useRelatedProducts/index.ts | - Marked as deprecated - use packages/theme/modules/catalog/product/composables/useRelatedProducts/index.ts instead, return values of the useRelatedProducts composable have been changed | +| packages/composables/src/composables/useReview/index.ts | - Marked as deprecated - use packages/theme/composables/useReview/index.ts instead, return values of the useReview composable have been changed | +| packages/composables/src/composables/useShipping/index.ts | - Marked as deprecated - use packages/theme/composables/useShipping/index.ts instead, return values of the useShipping composable have been changed | +| packages/composables/src/composables/useShippingProvider/index.ts | - Marked as deprecated - use packages/theme/composables/useShippingProvider/index.ts instead, return values of the useShippingProvider composable have been changed | +| packages/composables/src/composables/useStore/index.ts | - Marked as deprecated - use packages/theme/composables/useStore/index.ts instead, return values of the useStore composable have been changed | +| packages/composables/src/composables/useUpsellProducts/index.ts | - Marked as deprecated - use packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts instead, return values of the useUpsellProducts composable have been changed | +| packages/composables/src/composables/useUrlResolver/index.ts | - Marked as deprecated - use packages/theme/composables/useUrlResolver/index.ts instead, return values of the useUrlResolver composable have been changed | +| packages/composables/src/composables/useUser/index.ts | - Marked as deprecated - use packages/theme/modules/customer/composables/useUser/index.ts instead, return values of the useUser composable have been changed | +| packages/composables/src/composables/useUserBilling/index.ts | - Marked as deprecated | +| packages/composables/src/composables/useUserShipping/index.ts | - Marked as deprecated | +| packages/composables/src/composables/useUserOrder/index.ts | - Marked as deprecated - use packages/theme/modules/customer/composables/useUserOrder/index.ts instead, return values of the useUserOrder composable have been changed | +| packages/composables/src/composables/useWishlist/index.ts | - Marked as deprecated - use packages/theme/modules/wishlist/composables/useWishlist/index.ts instead, return values of the useWishlist composable have been changed | +| packages/composables/src/getters/_utils.ts | - marked as deprecated. Use packages/theme/getters/_utils.ts instead | +| packages/composables/src/getters/addressGetter.ts | - marked as deprecated. Use packages/theme/modules/customer/getters/addressGetter.ts instead | +| packages/composables/src/getters/cartGetters.ts | - marked as deprecated. Use packages/theme/getters/cartGetters.ts instead | +| packages/composables/src/getters/categoryGetters.ts | - marked as deprecated | +| packages/composables/src/getters/checkoutGetters.ts | - marked as deprecated. Use packages/theme/getters/checkoutGetters.ts instead | +| packages/composables/src/getters/facetGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/facetGetters.ts instead | +| packages/composables/src/getters/forgotPasswordGetters.ts | - marked as deprecated. | +| packages/composables/src/getters/orderGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/orderGetters.ts instead | +| packages/composables/src/getters/productGetters.ts | - marked as deprecated. Use packages/theme/modules/catalog/product/getters/productGetters.ts instead | +| packages/composables/src/getters/reviewGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/reviewGetters.ts instead | +| packages/composables/src/getters/storeConfigGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/storeConfigGetters.ts instead | +| packages/composables/src/getters/storeGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/storeGetters.ts instead | +| packages/composables/src/getters/userAddressesGetters.ts | - marked as deprecated. Use packages/theme/modules/customer/getters/userAddressesGetters.ts instead | +| packages/composables/src/getters/userBillingGetters.ts | - marked as deprecated. Use packages/theme/modules/customer/getters/userBillingGetters.ts instead | +| packages/composables/src/getters/userGetters.ts | - marked as deprecated. Use packages/theme/modules/customer/getters/userGetters.ts instead | +| packages/composables/src/getters/userShippingGetters.ts | - marked as deprecated. Use packages/theme/modules/customer/getters/userShippingGetters.ts instead | +| packages/composables/src/getters/wishlistGetters.ts | - marked as deprecated. Use packages/theme/getters/packages/theme/getters/wishlistGetters.ts instead | +| packages/composables/src/helpers/buildCategoryTree.ts | - marked as deprecated | +| packages/composables/src/helpers/compareWishlist.ts | - marked as deprecated | +| packages/composables/src/helpers/findItemOnWishlist.ts | - marked as deprecated. Use packages/theme/modules/wishlist/helpers/findItemOnWishlist.ts instead | +| packages/composables/src/helpers/htmlDecoder.ts | - marked as deprecated. Use packages/theme/modules/wishlist/helpers/htmlDecoder.ts instead | +| packages/composables/src/helpers/userAddressManipulator.ts | - marked as deprecated. Use packages/theme/modules/customer/helpers/userAddressManipulator.ts instead | +| packages/composables/src/helpers/userDataGenerator.ts | - marked as deprecated. Use packages/theme/modules/customer/helpers/generateUserData.ts instead | + +## Theme + +In this document, we described the most crucial changes. We recommend checking each component/template to see all changes. + +| File | what and how it changed | +|--------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| +| packages/theme/.env.example | Variables’ names have been changed | +| packages/theme/components/Category/CategorySidebarMenu.vue | The component has been removed | +| packages/theme/components/Header/SearchBar/SearchResults.vue | Search results for categories have been removed | +| packages/theme/components/MobileMenuSidebar.vue | The component has been removed | +| packages/theme/components/Products/BundleProductSelector.vue | The component has been removed. Use packages/theme/modules/catalog/product/components/BundleProductSelector.vue instead | +| packages/theme/components/UpsellProducts.vue | The component has been removed | +| packages/theme/config.js | This file has been deleted. Use ENV variables instead | + +## API Client + +| File | what and how it changed | +|------------------------------------------|---------------------------------------------------------------------------| +| packages/api-client/package.json | - agentkeepalive dependency has been added, npm scripts have been updated | +| packages/api-client/possible-types.js | Magento URL env variable name has been changed | +| packages/api-client/src/types/GraphQL.ts | types have been updated | +| packages/api-client/src/types/setup.ts | types have been updated | diff --git a/docs/migration-guides/index.md b/docs/migration-guides/index.md new file mode 100644 index 000000000..eda652111 --- /dev/null +++ b/docs/migration-guides/index.md @@ -0,0 +1,3 @@ +# Migration guides + +- [1.0.0-rc.7](./1.0.0-rc.7/) diff --git a/docs/package.json b/docs/package.json index a972b4494..745d1785a 100755 --- a/docs/package.json +++ b/docs/package.json @@ -7,23 +7,23 @@ "repository": "https://github.com/vuestorefront/magento2", "scripts": { "dev": "vuepress dev", - "build": "vuepress build", - "api-extract": "yarn api-ref && yarn comp-ref && yarn ref-md", + "build": "yarn api-extract && vuepress build --max-concurrency=32", + "api-extract": "rimraf api-reference && yarn api-ref && yarn theme-ref && yarn ref-md", "api-ref": "cd ../packages/api-client && api-extractor run --local", - "comp-ref": "cd ../packages/composables && api-extractor run --local", + "theme-ref": "cd ../scripts && node generateApiReference.mjs", "ref-md": "api-documenter markdown --i api-reference --o api-reference" }, "devDependencies": { - "@microsoft/api-documenter": "^7.13.7", - "@microsoft/api-extractor": "^7.18.3", - "@vue-storefront/commercetools-api": "~1.2.0", - "@vuepress/plugin-active-header-links": "^1.8.2", - "@vuepress/plugin-back-to-top": "^1.8.2", - "@vuepress/plugin-medium-zoom": "^1.8.2", - "@vuepress/plugin-search": "^1.8.2", + "@microsoft/api-documenter": "^7.17.12", + "@microsoft/api-extractor": "^7.23.1", + "@vuepress/plugin-active-header-links": "^1.9.7", + "@vuepress/plugin-back-to-top": "^1.9.7", + "@vuepress/plugin-medium-zoom": "^1.9.7", + "@vuepress/plugin-search": "^1.9.7", "handlebars": "^4.7.7", - "typescript": "^3.6.4", - "vuepress": "^1.2.0" + "rimraf": "^3.0.2", + "typescript": "^4.5.4", + "vuepress": "^1.9.7" }, "dependencies": { "sass-loader": "^8.0.2", diff --git a/docs/typedoc.json b/docs/typedoc.json deleted file mode 100644 index 3c5786882..000000000 --- a/docs/typedoc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "hideBreadcrumbs": true, - "hideInPageTOC": true, - "readme": "none", - "plugin": "typedoc-plugin-markdown", - "theme": "./typedoc-vsf-theme", - "entryPoints": ["src/index.ts", "src/api/index.ts"], - "out": "../../docs/api-client" -} diff --git a/docs/yarn.lock b/docs/yarn.lock index 374b01998..07f6037fc 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -2,24 +2,6 @@ # yarn lockfile v1 -"@apollo/client@^3.2.9": - version "3.5.7" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.7.tgz#38051c0a414ebf784319fa5131faa19df24fa9ec" - integrity sha512-HSLqTGp3sp/PVIWYLLr5v3fjQSr6Fxg6Z5RQj5Q9ALyseIVudD8GZk1jHplaUblTFMBueXGw3Z6DXObuVAr3tw== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@wry/context" "^0.6.0" - "@wry/equality" "^0.5.0" - "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" - hoist-non-react-statics "^3.3.2" - optimism "^0.16.1" - prop-types "^15.7.2" - symbol-observable "^4.0.0" - ts-invariant "^0.9.4" - tslib "^2.3.0" - zen-observable-ts "^1.2.0" - "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -941,79 +923,60 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@commercetools/sdk-auth@^3.0.1": - version "3.0.12" - resolved "https://registry.yarnpkg.com/@commercetools/sdk-auth/-/sdk-auth-3.0.12.tgz#6b6930f697f2311beeb909677df08bd5c7f523b8" - integrity sha512-t7F71oNK+A23hLGzlEYnjTtqhxDUFST8f4l9YAf7mmVCA9Qeu668pDvJ/kf5gVLMQVazEQM8Vjy4JyyeQctEkQ== +"@microsoft/api-documenter@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.17.12.tgz#2596b2e2c6f12a6ebbecf7738af2ae249290a19c" + integrity sha512-XJq58+HwLxw5bY/YPnJnmn2rG1DXHBUIXKWWwphHj9A/sNyYxf5elbvwcsx41+MSNz07pcfW8/neyK5v05MFgA== dependencies: - "@commercetools/sdk-middleware-http" "^6.0.11" - lodash.defaultsdeep "^4.6.0" - qss "2.0.3" - -"@commercetools/sdk-middleware-http@^6.0.11": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-http/-/sdk-middleware-http-6.1.0.tgz#e4aebc0a4865dab00cd986449d7b395dc86fe124" - integrity sha512-j/k66riaQv50Y3iK0CLJglHh56id7PfxGIDyL0PjlLSkQe2TPVGFnM//CZAQ8a6fHT9adQYLxDMYqlb1nWEDZw== - -"@graphql-typed-document-node/core@^3.0.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== - -"@microsoft/api-documenter@^7.13.7": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.14.1.tgz#e3b008c51fef4f31b9e53e3c4c8c81b87d89b9b4" - integrity sha512-IFwS3TzVxFh9LSGJuYOWiZ5V+AdYfnLE+WC/VKpeHnSsiW1goLEO+qkoqonvirJr/jQTNuC7NScIjXS2pXODMQ== - dependencies: - "@microsoft/api-extractor-model" "7.15.3" - "@microsoft/tsdoc" "0.13.2" - "@rushstack/node-core-library" "3.45.0" - "@rushstack/ts-command-line" "4.10.6" + "@microsoft/api-extractor-model" "7.17.2" + "@microsoft/tsdoc" "0.14.1" + "@rushstack/node-core-library" "3.45.4" + "@rushstack/ts-command-line" "4.10.10" colors "~1.2.1" js-yaml "~3.13.1" resolve "~1.17.0" -"@microsoft/api-extractor-model@7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.15.3.tgz#cf76deeeb2733d974da678f530c2dbaceb18a065" - integrity sha512-NkSjolmSI7NGvbdz0Y7kjQfdpD+j9E5CwXTxEyjDqxd10MI7GXV8DnAsQ57GFJcgHKgTjf2aUnYfMJ9w3aMicw== - dependencies: - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.45.0" - -"@microsoft/api-extractor@^7.18.3": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.19.4.tgz#95d43d410a1dfb28a02062c4693bcb9c52afe9eb" - integrity sha512-iehC6YA3DGJvxTUaK7HUtQmP6hAQU07+Q/OR8TG4dVR6KpqCi9UPEVk8AgCvQkiK+6FbVEFQTx0qLuYk4EeuHg== - dependencies: - "@microsoft/api-extractor-model" "7.15.3" - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.45.0" - "@rushstack/rig-package" "0.3.7" - "@rushstack/ts-command-line" "4.10.6" +"@microsoft/api-extractor-model@7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.17.2.tgz#033b39a7bac4f3eee3e5ffd406d2af61cedc727e" + integrity sha512-fYfCeBeLm7jnZligC64qHiH4/vzswFLDfyPpX+uKO36OI2kIeMHrYG0zaezmuinKvE4vg1dAz38zZeDbPvBKGg== + dependencies: + "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc-config" "~0.16.1" + "@rushstack/node-core-library" "3.45.4" + +"@microsoft/api-extractor@^7.23.1": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.23.1.tgz#483e339cc73669c709ff215a76eb0e6d9a31de5b" + integrity sha512-J5cTjbMzSZPRZT4AKvFI1KmLGHVhV6bHnFcPo3Og9cN9QmknzpKg5BxvpBecEdFKNZxUpUrBkps2xOQ4Fjc6zg== + dependencies: + "@microsoft/api-extractor-model" "7.17.2" + "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc-config" "~0.16.1" + "@rushstack/node-core-library" "3.45.4" + "@rushstack/rig-package" "0.3.11" + "@rushstack/ts-command-line" "4.10.10" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" semver "~7.3.0" source-map "~0.6.1" - typescript "~4.5.2" + typescript "~4.6.3" -"@microsoft/tsdoc-config@~0.15.2": - version "0.15.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz#eb353c93f3b62ab74bdc9ab6f4a82bcf80140f14" - integrity sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA== +"@microsoft/tsdoc-config@~0.16.1": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz#4de11976c1202854c4618f364bf499b4be33e657" + integrity sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ== dependencies: - "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc" "0.14.1" ajv "~6.12.6" jju "~1.4.0" resolve "~1.19.0" -"@microsoft/tsdoc@0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" - integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== +"@microsoft/tsdoc@0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" + integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -1028,10 +991,10 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@rushstack/node-core-library@3.45.0": - version "3.45.0" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.0.tgz#8c86b39271b6d84260b1e70db87e1e265b54f620" - integrity sha512-YMuIJl19vQT1+g/OU9mLY6T5ZBT9uDlmeXExDQACpGuxTJW+LHNbk/lRX+eCApQI2eLBlaL4U68r3kZlqwbdmw== +"@rushstack/node-core-library@3.45.4": + version "3.45.4" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.4.tgz#a5e1246c462940d16a5acc667c1ffe460b514087" + integrity sha512-FMoEQWjK7nWAO2uFgV1eVpVhY9ZDGOdIIomi9zTej64cKJ+8/Nvu+ny0xKaUDEjw/ALftN2D2ml7L0RDpW/Z9g== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -1043,18 +1006,18 @@ timsort "~0.3.0" z-schema "~5.0.2" -"@rushstack/rig-package@0.3.7": - version "0.3.7" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.7.tgz#3fa564b1d129d28689dd4309502792b15e84bf81" - integrity sha512-pzMsTSeTC8IiZ6EJLr53gGMvhT4oLWH+hxD7907cHyWuIUlEXFtu/2pK25vUQT13nKp5DJCWxXyYoGRk/h6rtA== +"@rushstack/rig-package@0.3.11": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.11.tgz#92a05929822610e8b42f2ad330d9ea20afae5165" + integrity sha512-uI1/g5oQPtyrT9nStoyX/xgZSLa2b+srRFaDk3r1eqC7zA5th4/bvTGl2QfV3C9NcP+coSqmk5mFJkUfH6i3Lw== dependencies: resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.10.6": - version "4.10.6" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.6.tgz#5669e481e4339ceb4e1428183eb0937d3bc3841b" - integrity sha512-Y3GkUag39sTIlukDg9mUp8MCHrrlJ27POrBNRQGc/uF+VVgX8M7zMzHch5zP6O1QVquWgD7Engdpn2piPYaS/g== +"@rushstack/ts-command-line@4.10.10": + version "4.10.10" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.10.tgz#69da17b03ce57795b67ea2aabf7c976c81816078" + integrity sha512-F+MH7InPDXqX40qvvcEsnvPpmg566SBpfFqj2fcCh8RjM6AyOoWlXc8zx7giBD3ZN85NVAEjZAgrcLU0z+R2yg== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -1175,7 +1138,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@>=6": +"@types/node@*": version "17.0.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.9.tgz#0b7f161afb5b1cc12518d29b2cdc7175d5490628" integrity sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ== @@ -1257,46 +1220,6 @@ anymatch "^3.0.0" source-map "^0.6.0" -"@types/zen-observable@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" - integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== - -"@types/zen-observable@^0.8.0": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" - integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== - -"@vue-storefront/commercetools-api@~1.2.0": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue-storefront/commercetools-api/-/commercetools-api-1.2.4.tgz#c85fb21dfc931143f1516f64aeac003a7de38a47" - integrity sha512-rHV3wXfIT85Si5po+hwrnUnP5KWtw7SbNt7akxMDWOSbkg3z+tMAhDDU9lwVOFIvsCiOdBmxty/gQFPbdFrcXw== - dependencies: - "@apollo/client" "^3.2.9" - "@commercetools/sdk-auth" "^3.0.1" - "@vue-storefront/core" "^2.3.4" - apollo-cache-inmemory "^1.6.6" - apollo-client "^2.6.10" - apollo-link "^1.2.14" - apollo-link-context "^1.0.20" - apollo-link-error "^1.1.13" - apollo-link-http "^1.5.17" - apollo-link-retry "^2.2.16" - graphql "^14.5.8" - graphql-tag "^2.10.1" - isomorphic-fetch "^2.2.1" - -"@vue-storefront/core@^2.3.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@vue-storefront/core/-/core-2.5.4.tgz#214ec0d2bdc3d2f18abdc45991ac7389aa9e1044" - integrity sha512-J/zzReZ5D1pwKibFyLbcm1355L8+DKYgBms32QZ79AmscoFeRRRhnBFQHQ+DoygtxU2cKNzyMddTIocYdtEBeQ== - dependencies: - axios "0.21.1" - express "^4.17.1" - is-https "^3.0.2" - lodash-es "^4.17.15" - vue "^2.6.11" - "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" @@ -1435,19 +1358,19 @@ optionalDependencies: prettier "^1.18.2 || ^2.0.0" -"@vuepress/core@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.9.6.tgz#9f76d82414155e75fce41176ae9fd7fd085c35e4" - integrity sha512-wZF6Ufz9MubmLgik0uYuNj97xIZ4PMp1DCJMMf2BNwH974CCsKiRmKODoYVEc260FOdnFUINEeqaPL/HscAaPA== +"@vuepress/core@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.9.7.tgz#a23388377f84322b933fc97b6cca32a90d8f5ce2" + integrity sha512-u5eb1mfNLV8uG2UuxlvpB/FkrABxeMHqymTsixOnsOg2REziv9puEIbqaZ5BjLPvbCDvSj6rn+DwjENmBU+frQ== dependencies: "@babel/core" "^7.8.4" "@vue/babel-preset-app" "^4.1.2" - "@vuepress/markdown" "1.9.6" - "@vuepress/markdown-loader" "1.9.6" - "@vuepress/plugin-last-updated" "1.9.6" - "@vuepress/plugin-register-components" "1.9.6" - "@vuepress/shared-utils" "1.9.6" - "@vuepress/types" "1.9.6" + "@vuepress/markdown" "1.9.7" + "@vuepress/markdown-loader" "1.9.7" + "@vuepress/plugin-last-updated" "1.9.7" + "@vuepress/plugin-register-components" "1.9.7" + "@vuepress/shared-utils" "1.9.7" + "@vuepress/types" "1.9.7" autoprefixer "^9.5.1" babel-loader "^8.0.4" bundle-require "2.1.8" @@ -1482,21 +1405,21 @@ webpack-merge "^4.1.2" webpackbar "3.2.0" -"@vuepress/markdown-loader@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.9.6.tgz#dd39e4a70f5e8be94e4051b883b606d95de749c0" - integrity sha512-uPyVzYygBaCsmKPfke+u/c8a855GLJ3iykCkcuAQ5v7NAY9PNtCkND3V5PhmRUGqaN5tHNXJoF74aD0mN1FXOw== +"@vuepress/markdown-loader@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.9.7.tgz#acd4fa13f1e48f153d509996ccd2895a0dcb5ee2" + integrity sha512-mxXF8FtX/QhOg/UYbe4Pr1j5tcf/aOEI502rycTJ3WF2XAtOmewjkGV4eAA6f6JmuM/fwzOBMZKDyy9/yo2I6Q== dependencies: - "@vuepress/markdown" "1.9.6" + "@vuepress/markdown" "1.9.7" loader-utils "^1.1.0" lru-cache "^5.1.1" -"@vuepress/markdown@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.9.6.tgz#b987288030506969aa13e84dc81382ce539dd583" - integrity sha512-UOq/Wtr5BI5h0O2Iy25O7Xe9RNE1HiBXREOKdjnCDg4lsyenzev5UOVpGCPnbynUb2/kpE8KujEKCgy4a1dWNg== +"@vuepress/markdown@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.9.7.tgz#6310458b7e2ea08a14d31349209d0b54455e957a" + integrity sha512-DFOjYkwV6fT3xXTGdTDloeIrT1AbwJ9pwefmrp0rMgC6zOz3XUJn6qqUwcYFO5mNBWpbiFQ3JZirCtgOe+xxBA== dependencies: - "@vuepress/shared-utils" "1.9.6" + "@vuepress/shared-utils" "1.9.7" markdown-it "^8.4.1" markdown-it-anchor "^5.0.2" markdown-it-chain "^1.3.0" @@ -1504,62 +1427,77 @@ markdown-it-table-of-contents "^0.4.0" prismjs "^1.13.0" -"@vuepress/plugin-active-header-links@1.9.6", "@vuepress/plugin-active-header-links@^1.8.2": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.6.tgz#4204f7d7d660031c7759a01892ff2a18e75a06e9" - integrity sha512-YETxkgEabpUYB56wy0K26tAsta0+MbP0uieTdykm3HpRzwx2pceJkDPV7axLAPHfvHj9MQ6n67Hv+vR+z36krw== +"@vuepress/plugin-active-header-links@1.9.7", "@vuepress/plugin-active-header-links@^1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.9.7.tgz#11b3b148d50ebd0a9a9d9e97aa34d81ae04e7307" + integrity sha512-G1M8zuV9Og3z8WBiKkWrofG44NEXsHttc1MYreDXfeWh/NLjr9q1GPCEXtiCjrjnHZHB3cSQTKnTqAHDq35PGA== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" lodash.debounce "^4.0.8" -"@vuepress/plugin-back-to-top@^1.8.2": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.9.6.tgz#ab724adb646de6f0fc9e61c0c25944414b8601a3" - integrity sha512-GvLyXE8aDOzttwpr9t6EOOP/hEF5Yfr858K4ksRfY9AnGGfGXnNhFgK3uCRweeWQkUKlOAFSdzrmoAHX33DP9w== +"@vuepress/plugin-back-to-top@^1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.9.7.tgz#249a76d79f1e0c8c71a2804485ad0245837e6bfd" + integrity sha512-DM1S+Q8Xn/i+zhe4zThekxb1M2abfKLklg/NKtQloklHKdNdVfk+EcxWYNmNfSii+ymDWaaG8lmH0xjVhy0iXw== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" lodash.debounce "^4.0.8" -"@vuepress/plugin-last-updated@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.6.tgz#b5b1db9474169e25a1844192bd36b37e6d4c7031" - integrity sha512-tKP90ujnnrIMa/qb6ErjVfhil7nf7uWIV/T5UZzMvZNBwx25lpdXLPcBtfnCBA1rmxe7PSexCK9wQfrgP6R0VQ== +"@vuepress/plugin-last-updated@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.9.7.tgz#9f2d78fe7ced618d0480bf40a3e32b40486bac6d" + integrity sha512-FiFBOl49dlFRjbLRnRAv77HDWfe+S/eCPtMQobq4/O3QWuL3Na5P4fCTTVzq1K7rWNO9EPsWNB2Jb26ndlQLKQ== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" cross-spawn "^6.0.5" -"@vuepress/plugin-medium-zoom@^1.8.2": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-1.9.6.tgz#1e9165f2a9dcd194b12ef447f95416967b44b6a2" - integrity sha512-jAJg/iO9rttr5OyTgbiH8zjhC5CXqoTgrusK1aEP1gX7TLlXfNPuNzYvfgDQScgJye0L1qG7NyKk4nrGdChD3A== +"@vuepress/plugin-medium-zoom@^1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-1.9.7.tgz#077330aafd23e2cc8372e0041589875345edb80a" + integrity sha512-P00chXEEoFyQyDWiiSw1mUIdywS6vqM9jolM/3Gv3/TywqemWEm1MKMM7mLsjGiaXJbBQZE+U3/lHmzcaroYLQ== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" medium-zoom "^1.0.4" -"@vuepress/plugin-nprogress@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.6.tgz#413c069768b7295ba64f2b59e316fd9bd6298e2c" - integrity sha512-tNBwsR5H5kTQfTM6fE/UOUxC7J2xOmed6LGVF5ZcsjfnjiLcKHqOn0EPkaLVqgVMGWkV8ZqGS9sQWAEncYDa+Q== +"@vuepress/plugin-nprogress@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.9.7.tgz#76d8368fa26c190ee23c399401a71ec78ffb9744" + integrity sha512-sI148igbdRfLgyzB8PdhbF51hNyCDYXsBn8bBWiHdzcHBx974sVNFKtfwdIZcSFsNrEcg6zo8YIrQ+CO5vlUhQ== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" nprogress "^0.2.0" -"@vuepress/plugin-register-components@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.9.6.tgz#033012d54bcdc66812e3ba4dd67a3f0af49a87b8" - integrity sha512-Efxb8xqinFathB5ZUMVjolY3uYXqM3lL4vNbZjwJVcDgtz13Vc9ZpHcqdEUfsYGtiwiMrwp796oTKw45RdPJMw== +"@vuepress/plugin-register-components@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.9.7.tgz#0234f887b32c1d836fa68cdd06d7e851397fd268" + integrity sha512-l/w1nE7Dpl+LPMb8+AHSGGFYSP/t5j6H4/Wltwc2QcdzO7yqwC1YkwwhtTXvLvHOV8O7+rDg2nzvq355SFkfKA== dependencies: - "@vuepress/shared-utils" "1.9.6" - "@vuepress/types" "1.9.6" + "@vuepress/shared-utils" "1.9.7" + "@vuepress/types" "1.9.7" -"@vuepress/plugin-search@1.9.6", "@vuepress/plugin-search@^1.8.2": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.9.6.tgz#580d8988c619ed05a929f6bf157745867757e56f" - integrity sha512-zDhSUZAhelJEIV7DwpSbmGI0jz+zzNQdWVfGdE0xj7Ca6SMPq9ay9imZYjNBEVG9MYu0McubsvB1gpaBpc1Umg== +"@vuepress/plugin-search@1.9.7", "@vuepress/plugin-search@^1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.9.7.tgz#37a4714973ccac8c28837fc72a38ae0888d874bf" + integrity sha512-MLpbUVGLxaaHEwflFxvy0pF9gypFVUT3Q9Zc6maWE+0HDWAvzMxo6GBaj6mQPwjOqNQMf4QcN3hDzAZktA+DQg== dependencies: - "@vuepress/types" "1.9.6" + "@vuepress/types" "1.9.7" -"@vuepress/shared-utils@1.9.6", "@vuepress/shared-utils@^1.2.0": +"@vuepress/shared-utils@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.9.7.tgz#f1203c7f48e9d546078f5f9b2ec5200b29da481b" + integrity sha512-lIkO/eSEspXgVHjYHa9vuhN7DuaYvkfX1+TTJDiEYXIwgwqtvkTv55C+IOdgswlt0C/OXDlJaUe1rGgJJ1+FTw== + dependencies: + chalk "^2.3.2" + escape-html "^1.0.3" + fs-extra "^7.0.1" + globby "^9.2.0" + gray-matter "^4.0.1" + hash-sum "^1.0.2" + semver "^6.0.0" + toml "^3.0.0" + upath "^1.1.0" + +"@vuepress/shared-utils@^1.2.0": version "1.9.6" resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.9.6.tgz#2c9add7d03535205b77ad6be49b911e40de44592" integrity sha512-Bzn5q2Yjpji4ZF8zD9p1brTQFOTqNRCSOkoMDqR+oNt4L1SbreT08gi7BNjaeJTbNsr/S+SNSIcQHHgGO+5GOg== @@ -1574,15 +1512,15 @@ toml "^3.0.0" upath "^1.1.0" -"@vuepress/theme-default@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.9.6.tgz#11da7d1d0ba28660f77198992d51660992dcf213" - integrity sha512-bw4L2h5yZReQM5qbz8dqF8+VlohtEH/PS7OCBU0x4HEiCo3cr0KpWP+unfxEY+CWqHeFljywCwwQQH2ikp6luQ== +"@vuepress/theme-default@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.9.7.tgz#9e928b724fdcb12715cc513fdbc27b965944c4a1" + integrity sha512-NZzCLIl+bgJIibhkqVmk/NSku57XIuXugxAN3uiJrCw6Mu6sb3xOvbk0En3k+vS2BKHxAZ6Cx7dbCiyknDQnSA== dependencies: - "@vuepress/plugin-active-header-links" "1.9.6" - "@vuepress/plugin-nprogress" "1.9.6" - "@vuepress/plugin-search" "1.9.6" - "@vuepress/types" "1.9.6" + "@vuepress/plugin-active-header-links" "1.9.7" + "@vuepress/plugin-nprogress" "1.9.7" + "@vuepress/plugin-search" "1.9.7" + "@vuepress/types" "1.9.7" docsearch.js "^2.5.2" lodash "^4.17.15" stylus "^0.54.8" @@ -1590,10 +1528,10 @@ vuepress-plugin-container "^2.0.2" vuepress-plugin-smooth-scroll "^0.0.3" -"@vuepress/types@1.9.6": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@vuepress/types/-/types-1.9.6.tgz#72f27ade625a6504fa9fb14c90fe59231e89ad5f" - integrity sha512-xNhgCeH2/cCACeZyAXhZ2yTJcC1OsE8aBP6vIHme+69ZcpAs4ZkvAHADCrouqSzgz73IOhN1ZPV8jkMvTtyoNg== +"@vuepress/types@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@vuepress/types/-/types-1.9.7.tgz#aeb772fd0f7c2a10c6ec1d3c803a2e4b1d756c24" + integrity sha512-moLQzkX3ED2o18dimLemUm7UVDKxhcrJmGt5C0Ng3xxrLPaQu7UqbROtEKB3YnMRt4P/CA91J+Ck+b9LmGabog== dependencies: "@types/markdown-it" "^10.0.0" "@types/webpack-dev-server" "^3" @@ -1744,42 +1682,6 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@wry/context@^0.4.0": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" - integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag== - dependencies: - "@types/node" ">=6" - tslib "^1.9.3" - -"@wry/context@^0.6.0": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" - integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== - dependencies: - tslib "^2.3.0" - -"@wry/equality@^0.1.2": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" - integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== - dependencies: - tslib "^1.9.3" - -"@wry/equality@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.2.tgz#72c8a7a7d884dff30b612f4f8464eba26c080e73" - integrity sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA== - dependencies: - tslib "^2.3.0" - -"@wry/trie@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.1.tgz#2279b790f15032f8bcea7fc944d27988e5b3b139" - integrity sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw== - dependencies: - tslib "^2.3.0" - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -1933,103 +1835,6 @@ anymatch@^3.0.0, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-cache-inmemory@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz#56d1f2a463a6b9db32e9fa990af16d2a008206fd" - integrity sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A== - dependencies: - apollo-cache "^1.3.5" - apollo-utilities "^1.3.4" - optimism "^0.10.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -apollo-cache@1.3.5, apollo-cache@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.5.tgz#9dbebfc8dbe8fe7f97ba568a224bca2c5d81f461" - integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== - dependencies: - apollo-utilities "^1.3.4" - tslib "^1.10.0" - -apollo-client@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.10.tgz#86637047b51d940c8eaa771a4ce1b02df16bea6a" - integrity sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA== - dependencies: - "@types/zen-observable" "^0.8.0" - apollo-cache "1.3.5" - apollo-link "^1.0.0" - apollo-utilities "1.3.4" - symbol-observable "^1.0.2" - ts-invariant "^0.4.0" - tslib "^1.10.0" - zen-observable "^0.8.0" - -apollo-link-context@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.20.tgz#1939ac5dc65d6dff0c855ee53521150053c24676" - integrity sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA== - dependencies: - apollo-link "^1.2.14" - tslib "^1.9.3" - -apollo-link-error@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.13.tgz#c1a1bb876ffe380802c8df0506a32c33aad284cd" - integrity sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg== - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link-http-common@^0.2.16: - version "0.2.16" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" - integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== - dependencies: - apollo-link "^1.2.14" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@^1.5.17: - version "1.5.17" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" - integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link-retry@^2.2.16: - version "2.2.16" - resolved "https://registry.yarnpkg.com/apollo-link-retry/-/apollo-link-retry-2.2.16.tgz#745ff51e60a7a68b34c8d382832856c43a9c306c" - integrity sha512-7F9+meFAz4dw5gtgtLsRFqJW6QzNOhTzt5R5Hsy+yFhkTW9LddgYO7gxN9n7RN/7Ouosh3TcpUkdHs2laC+0sA== - dependencies: - "@types/zen-observable" "0.8.0" - apollo-link "^1.2.14" - tslib "^1.9.3" - -apollo-link@^1.0.0, apollo-link@^1.2.14: - version "1.2.14" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" - integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" - integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2176,13 +1981,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - babel-loader@^8.0.4: version "8.2.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" @@ -3648,13 +3446,6 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4182,7 +3973,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.10.0: +follow-redirects@^1.0.0: version "1.14.7" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== @@ -4442,20 +4233,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -graphql-tag@^2.10.1, graphql-tag@^2.12.3: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql@^14.5.8: - version "14.7.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" - integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== - dependencies: - iterall "^1.2.2" - gray-matter@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" @@ -4627,13 +4404,6 @@ hogan.js@^3.0.2: mkdirp "0.3.0" nopt "1.0.10" -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -4779,13 +4549,6 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -5135,11 +4898,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-https@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-https/-/is-https-3.0.2.tgz#4d24e002e47edd3f1b07f14bc722433354ccba49" - integrity sha512-jFgAKhbNF7J+lTMJxbq5z9bf1V9f8rXn9mP5RSY2GUEW5M0nOiVhVC9dNra96hQDjGpNzskIzusUnXwngqmhAA== - is-installed-globally@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" @@ -5241,7 +4999,7 @@ is-shared-array-buffer@^1.0.1: resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== -is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -5314,24 +5072,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-fetch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -iterall@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== - javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" @@ -5347,7 +5092,7 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -5551,11 +5296,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -5571,11 +5311,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.defaultsdeep@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -5626,13 +5361,6 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -6033,14 +5761,6 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -6269,21 +5989,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimism@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" - integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw== - dependencies: - "@wry/context" "^0.4.0" - -optimism@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.1.tgz#7c8efc1f3179f18307b887e18c15c5b7133f6e7d" - integrity sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg== - dependencies: - "@wry/context" "^0.6.0" - "@wry/trie" "^0.3.0" - optimize-css-assets-webpack-plugin@^5.0.1: version "5.0.8" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" @@ -6931,15 +6636,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -prop-types@^15.7.2: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -7037,11 +6733,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -qss@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/qss/-/qss-2.0.3.tgz#630b38b120931b52d04704f3abfb0f861604a9ec" - integrity sha512-j48ZBT5IZbSqJiSU8EX4XrN8nXiflHvmMvv2XpFc31gh7n6EpSs75bNr6+oj3FOLWyT8m09pTmqLNl34L7/uPQ== - query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -7106,11 +6797,6 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -7381,6 +7067,13 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -7413,7 +7106,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -8064,16 +7757,6 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-observable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -8218,30 +7901,6 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -ts-invariant@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" - integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== - dependencies: - tslib "^2.1.0" - -tslib@^1.10.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.1.0, tslib@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -8289,15 +7948,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.6.4: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== +typescript@^4.5.4: + version "4.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" + integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== -typescript@~4.5.2: - version "4.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" - integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== +typescript@~4.6.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -8639,7 +8298,7 @@ vue-template-es2015-compiler@^1.9.0: resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== -vue@^2.6.10, vue@^2.6.11: +vue@^2.6.10: version "2.6.14" resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== @@ -8672,14 +8331,14 @@ vuepress-plugin-smooth-scroll@^0.0.3: dependencies: smoothscroll-polyfill "^0.4.3" -vuepress@^1.2.0: - version "1.9.6" - resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.9.6.tgz#77e4cf32c2adf462c222294a2f350277d08104b3" - integrity sha512-iac2E2hUai5x23t+XwNgPEXR7Gt0Q0QDtxq/ZepyIXATsGK2SNyrsdK1pIbUzzv+m3wx/cZs7lwlOA0Putb8RA== +vuepress@^1.9.7: + version "1.9.7" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.9.7.tgz#2cd6709a2228f5cef588115aaeabf820ab9ed7cc" + integrity sha512-aSXpoJBGhgjaWUsT1Zs/ZO8JdDWWsxZRlVme/E7QYpn+ZB9iunSgPMozJQNFaHzcRq4kPx5A4k9UhzLRcvtdMg== dependencies: - "@vuepress/core" "1.9.6" - "@vuepress/theme-default" "1.9.6" - "@vuepress/types" "1.9.6" + "@vuepress/core" "1.9.7" + "@vuepress/theme-default" "1.9.7" + "@vuepress/types" "1.9.7" cac "^6.5.6" envinfo "^7.2.0" opencollective-postinstall "^2.0.2" @@ -8856,11 +8515,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-fetch@>=0.10.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - when@~3.6.x: version "3.6.4" resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" @@ -9004,26 +8658,6 @@ z-schema@~5.0.2: optionalDependencies: commander "^2.7.1" -zen-observable-ts@^0.8.21: - version "0.8.21" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable-ts@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.3.tgz#c2f5ccebe812faf0cfcde547e6004f65b1a6d769" - integrity sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g== - dependencies: - zen-observable "0.8.15" - -zen-observable@0.8.15, zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zepto@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/zepto/-/zepto-1.2.0.tgz#e127bd9e66fd846be5eab48c1394882f7c0e4f98" diff --git a/internals/eslint-import/package.json b/internals/eslint-import/package.json index c50ed6a06..aa57a97e8 100644 --- a/internals/eslint-import/package.json +++ b/internals/eslint-import/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-import", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-jest/package.json b/internals/eslint-jest/package.json index 418868040..05e93deb1 100644 --- a/internals/eslint-jest/package.json +++ b/internals/eslint-jest/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-jest", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-typescript/package.json b/internals/eslint-typescript/package.json index d69df46b7..f07801f2f 100644 --- a/internals/eslint-typescript/package.json +++ b/internals/eslint-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-typescript", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/internals/eslint-vue/index.js b/internals/eslint-vue/index.js index 1fac39010..98bb06df1 100644 --- a/internals/eslint-vue/index.js +++ b/internals/eslint-vue/index.js @@ -1,6 +1,9 @@ +// eslint-disable-next-line unicorn/prefer-module module.exports = { extends: [ './rules/plugins', './rules/extends', + './rules/rules', + // eslint-disable-next-line unicorn/prefer-module, unicorn/no-array-callback-reference ].map(require.resolve), }; diff --git a/internals/eslint-vue/package.json b/internals/eslint-vue/package.json index 94c062619..0f465e077 100644 --- a/internals/eslint-vue/package.json +++ b/internals/eslint-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-vue", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { @@ -29,6 +29,7 @@ "rules" ], "dependencies": { + "@vue/eslint-config-typescript": "^10.0.0", "eslint-plugin-vue": "^8.4.0" }, "main": "index.js" diff --git a/internals/eslint-vue/rules/rules.js b/internals/eslint-vue/rules/rules.js new file mode 100644 index 000000000..3d14a54d3 --- /dev/null +++ b/internals/eslint-vue/rules/rules.js @@ -0,0 +1,12 @@ +// eslint-disable-next-line unicorn/prefer-module +module.exports = { + rules: { + 'vue/block-lang': ['error', + { + script: { + lang: 'ts', + }, + }, + ], + }, +}; diff --git a/internals/eslint/package.json b/internals/eslint/package.json index a78c451b5..429bc2761 100644 --- a/internals/eslint/package.json +++ b/internals/eslint/package.json @@ -1,6 +1,6 @@ { "name": "@vue-storefront/eslint-config-base", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": "Heitor Ramon Ribeiro ", "license": "MIT", "scripts": { diff --git a/package.json b/package.json index 9d88b4b02..658a6de16 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,12 @@ "internals/*" ], "scripts": { - "build": "yarn build:api-client && yarn build:composables && yarn build:theme", + "build": "yarn build:api-client && yarn build:theme", "build:api-client": "cd packages/api-client && yarn build", - "build:composables": "cd packages/composables && yarn build", "build:theme": "cd packages/theme && yarn build", "contributors:add": "all-contributors add", "contributors:generate": "all-contributors generate", "dev:api-client": "cd packages/api-client && yarn dev", - "dev:composables": "cd packages/composables && yarn dev", "dev:theme": "cd packages/theme && yarn dev", "docs:install": "cd docs && yarn", "docs:dev": "cd docs && yarn dev", @@ -27,17 +25,15 @@ "lint": "eslint . --ext .ts,.vue --fix", "prepare": "[ -d '.husky' ] && (husky install && shx rm -rf .git/hooks && shx ln -s ../.husky .git/hooks) || true", "publish:api-client": "node ./scripts/publishApi.js", - "publish:composables": "node ./scripts/publishComposable.js", "start": "cd packages/theme && yarn start", - "test": "yarn test:api-client && yarn test:composables && yarn test:theme", + "test": "yarn test:api-client && yarn test:theme", "test:api-client": "cd packages/api-client && yarn test --passWithNoTests", - "test:composables": "cd packages/composables && yarn test --passWithNoTests", "test:theme": "cd packages/theme && yarn test --passWithNoTests", "update:check": "ncu && lerna run update:check --stream", "update:update": "ncu -u && lerna run update:update --stream" }, "devDependencies": { - "@babel/core": "^7.16.12", + "@babel/core": "^7.17.5", "@babel/plugin-proposal-private-methods": "^7.16.11", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", @@ -47,22 +43,23 @@ "@graphql-codegen/typescript-operations": "^2.2.3", "@graphql-tools/utils": "^8.6.1", "@manypkg/cli": "^0.19.1", - "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-node-resolve": "^13.1.3", "@types/graphql": "^14.5.0", "@types/jest": "^27.4.0", "@types/jsdom": "^16.2.14", "@types/node": "^17.0.14", "@types/webpack": "^5.28.0", + "@types/yargs": "^17.0.8", "@typescript-eslint/parser": "^5.10.2", - "@vue/eslint-config-typescript": "^10.0.0", "all-contributors-cli": "^6.20.0", "babel-eslint": "^10.1.0", "commitizen": "^4.2.4", "ejs": "^3.1.6", + "esbuild": "^0.14.23", "eslint": "8.8.0", + "execa": "^6.1.0", + "graphql": "^16.0.0", "husky": "^7.0.4", - "jest": "^27.4.7", + "jest": "^27.5.1", "jest-date-mock": "^1.0.8", "jest-localstorage-mock": "^2.4.18", "jest-silent-reporter": "^0.5.0", @@ -74,15 +71,13 @@ "majestic": "^1.8.1", "npm-check-updates": "^12.2.1", "rimraf": "^3.0.2", - "rollup": "^2.66.1", - "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-typescript2": "^0.31.1", "shx": "^0.3.4", "ts-jest": "^27.1.3", "ts-node": "^10.4.0", "tslib": "^2.3.1", "typescript": "^4.5.4", - "vue-eslint-parser": "^8.2.0" + "vue-eslint-parser": "^8.2.0", + "yargs": "^17.3.1" }, "engines": { "node": ">=16.x.x", diff --git a/packages/api-client/.env.example b/packages/api-client/.env.example index 30c9fcd3f..0cf706fde 100644 --- a/packages/api-client/.env.example +++ b/packages/api-client/.env.example @@ -1 +1 @@ -MAGENTO_GRAPHQL=https://{YOUR_SITE_FRONT_URL}/graphql +VSF_MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql diff --git a/packages/api-client/.lintstagedrc b/packages/api-client/.lintstagedrc deleted file mode 100644 index 9b476f414..000000000 --- a/packages/api-client/.lintstagedrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "*.{js,jsx}": [ - "eslint --fix" - ], - "*.{ts,tsx}": [ - "eslint --fix" - ], -} diff --git a/packages/api-client/README.md b/packages/api-client/README.md index ddb826077..87ba9b077 100644 --- a/packages/api-client/README.md +++ b/packages/api-client/README.md @@ -71,20 +71,16 @@ Find more information about the module [GraphQl Custom Config](https://github.co ``` 3. Checkout develop branch `git checkout develop` 4. Run `yarn` to install dependencies -5. Define a store running environment by adding a `STORE_ENV` to your running project or execute the code +5. Copy `.env.example` to `.env` ```bash - $ echo "STORE_ENV=dev" >> .env + $ cp packages/theme/.env.example packages/theme/config/.env ``` -6. Copy `config/example.json` to an environment named config and update GraphQL Endpoint - ```bash - $ cp packages/theme/config/example.json packages/theme/config/dev.json - ``` -7. Update `magentoGraphQl` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. +6. Update `VSF_MAGENTO_GRAPHQL_URL` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. ``` - "magentoGraphQl": "https://{YOUR_SITE_FRONT_URL}/graphql", + VSF_MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql ``` -8. Build dependencies `yarn build:api-client && yarn build:composables` -9. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` +7. Build dependencies `yarn build:api-client && yarn build:composables` +8. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` - If you need HMR on Api Client/Composables run `yarn dev:api-client` or `yarn dev:composables` on a separate terminal window. ## Resources diff --git a/packages/api-client/babel.config.js b/packages/api-client/babel.config.js new file mode 100644 index 000000000..d3540f51b --- /dev/null +++ b/packages/api-client/babel.config.js @@ -0,0 +1,9 @@ +module.exports = { + presets: [ + ['@babel/preset-env', { + targets: { + node: 'current' + } + }] + ] +}; diff --git a/packages/api-client/jest.config.js b/packages/api-client/jest.config.js index 8d990f8a0..180a0a0ec 100644 --- a/packages/api-client/jest.config.js +++ b/packages/api-client/jest.config.js @@ -22,8 +22,8 @@ module.exports = { }, testEnvironment: 'jsdom', transform: { - '^.+\\.(ts)$': 'ts-jest', - '^.+\\.js$': 'babel-jest', + '^.+\\.(m)js$': 'babel-jest', + '^.+\\.ts$': 'ts-jest' }, transformIgnorePatterns: [ 'node_modules', diff --git a/packages/api-client/package.json b/packages/api-client/package.json index b7395e3ba..3956c6091 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,19 +1,26 @@ { "name": "@vue-storefront/magento-api", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "sideEffects": false, "homepage": "https://github.com/vuestorefront/magento2", "bugs": { "url": "https://github.com/vuestorefront/magento2/issues" }, "license": "MIT", - "server": "server/index.js", - "main": "lib/index.cjs.js", - "module": "lib/index.es.js", + "main": "./lib/index.js", + "exports": { + ".": "./lib/index.js", + "./server": "./lib/index.server.js", + "./package.json": "./package.json" + }, "types": "lib/index.d.ts", "scripts": { - "build": "rimraf lib server && rollup -c", - "dev": "rimraf lib server && rollup -c -w", + "build": "yarn build:clear && yarn build:package && yarn build:server && yarn build:types", + "build:clear": "rimraf lib", + "build:package": "node ../../scripts/build --file=src/index.ts", + "build:server": "node ../../scripts/build --file=src/index.server.ts", + "build:types": "tsc --emitDeclarationOnly", + "dev": "concurrently \"yarn build:package --watch\" \"yarn build:server --watch\"", "lint": "eslint ./src --ext .ts,.vue", "lint:fix": "eslint ./src --ext .ts --fix", "partial:types": "node ./possible-types.js", @@ -25,16 +32,15 @@ }, "dependencies": { "@apollo/client": "^3.5.8", + "agentkeepalive": "^4.2.1", "dotenv": "^15.0.0", "graphql": "^16.3.0", "graphql-tag": "^2.12.6", "isomorphic-fetch": "^3.0.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-graphql": "^1.1.0", - "@rollup/plugin-json": "^4.1.0", "@types/isomorphic-fetch": "^0.0.35", + "concurrently": "^7.0.0", "cross-fetch": "^3.1.5", "graphql-tools": "^8.2.0", "jest-transform-graphql": "^2.1.0", @@ -43,7 +49,7 @@ "webpack": "4.46.0" }, "peerDependencies": { - "@vue-storefront/core": "~2.5.4" + "@vue-storefront/core": "~2.5.6" }, "files": [ "lib/**/*", diff --git a/packages/api-client/possible-types.js b/packages/api-client/possible-types.js index 1c7bc88c6..53590aae3 100644 --- a/packages/api-client/possible-types.js +++ b/packages/api-client/possible-types.js @@ -2,7 +2,7 @@ require('dotenv').config(); const fetch = require('cross-fetch'); const fs = require('fs'); -fetch(process.env.MAGENTO_GRAPHQL, { +fetch(process.env.VSF_MAGENTO_GRAPHQL_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ diff --git a/packages/api-client/rollup.config.js b/packages/api-client/rollup.config.js deleted file mode 100644 index 3142d2ebf..000000000 --- a/packages/api-client/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import commonjs from '@rollup/plugin-commonjs'; -import graphql from '@rollup/plugin-graphql'; -import json from '@rollup/plugin-json'; -import nodeResolve from '@rollup/plugin-node-resolve'; -import typescript from 'rollup-plugin-typescript2'; -import pkg from './package.json'; -import { generateBaseConfig } from '../../rollup.base.config'; - -const extensions = ['.js', '.jsx', '.es6', '.es', '.mjs', '.ts', '.graphql']; - -const server = { - input: 'src/index.server.ts', - output: [ - { - file: pkg.server, - format: 'cjs', - sourcemap: true, - }, - ], - external: [ - '@apollo/client/utilities', - 'node:url', - ...Object.keys(pkg.dependencies || {}), - ...Object.keys(pkg.peerDependencies || {}), - ], - plugins: [ - typescript({ - rollupCommonJSResolveHack: false, - useTsconfigDeclarationDir: true, - // eslint-disable-next-line unicorn/prefer-module - tslib: require.resolve('typescript'), - }), - commonjs({ - extensions, - }), - nodeResolve({ - extensions, - }), - json(), - graphql(), - ], -}; - -export default [ - generateBaseConfig(pkg, true), - server, -]; diff --git a/packages/api-client/src/api-extractor-data.ts b/packages/api-client/src/api-extractor-data.ts index ef432ddfa..abb27e0ae 100644 --- a/packages/api-client/src/api-extractor-data.ts +++ b/packages/api-client/src/api-extractor-data.ts @@ -1,10 +1,10 @@ /** - * `api-client` for Magento 2 integration for Vue Storefront 2. + * Api Client for Magento 2 integration for Vue Storefront 2. * * @remarks - * The `@vue-storefront/magento2` library includes everything needed to fetch data from the - * Magento 2 eCommerce platform. This includes API client configuration, API endpoints, and - * GraphQL types and fragments. + * The `@vue-storefront/magento-api` library includes Apollo Client, + * GraphQL operations and Middleware endpoints that allow you to communicate + * with Magento. * * @packageDocumentation */ diff --git a/packages/api-client/src/api/addConfigurableProductsToCart/addConfigurableProductsToCart.ts b/packages/api-client/src/api/addConfigurableProductsToCart/addConfigurableProductsToCart.ts index 266e481e2..646f16c51 100644 --- a/packages/api-client/src/api/addConfigurableProductsToCart/addConfigurableProductsToCart.ts +++ b/packages/api-client/src/api/addConfigurableProductsToCart/addConfigurableProductsToCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that adds configurable products to shopping cart */ export default gql` mutation addConfigurableProductsToCart($input: AddConfigurableProductsToCartInput) { addConfigurableProductsToCart(input: $input) { diff --git a/packages/api-client/src/api/addConfigurableProductsToCart/index.ts b/packages/api-client/src/api/addConfigurableProductsToCart/index.ts index 4c8cd57f5..0bceff723 100644 --- a/packages/api-client/src/api/addConfigurableProductsToCart/index.ts +++ b/packages/api-client/src/api/addConfigurableProductsToCart/index.ts @@ -1,23 +1,27 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import addConfigurableProductsToCart from './addConfigurableProductsToCart'; +import type { Context } from '../../types/context'; import { - AddConfigurableProductsToCartMutationVariables, - AddConfigurableProductsToCartMutation, - AddConfigurableProductsToCartInput, + AddConfigurableProductsToCartInput, AddConfigurableProductsToCartMutation, AddConfigurableProductsToCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import addConfigurableProductsToCartMutation from './addConfigurableProductsToCart'; -export default async ( +/** + * Adds a set of configurable products to a specified cart + * @param context VSF Context + * @param input ID of the cart and products to be added + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function addConfigurableProductsToCart( context: Context, input: AddConfigurableProductsToCartInput, customQuery: CustomQuery = { addConfigurableProductsToCart: 'addConfigurableProductsToCart' }, -): Promise> => { +): Promise> { const { addConfigurableProductsToCart: addConfigurableProductsToCartGQL } = context.extendQuery( customQuery, { addConfigurableProductsToCart: { - query: addConfigurableProductsToCart, + query: addConfigurableProductsToCartMutation, variables: { input }, }, }, @@ -26,4 +30,4 @@ export default async ( mutation: addConfigurableProductsToCartGQL.query, variables: addConfigurableProductsToCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/addDownloadableProductsToCart/addDownloadableProductsToCart.ts b/packages/api-client/src/api/addDownloadableProductsToCart/addDownloadableProductsToCart.ts index 4c3212b36..7131fba54 100644 --- a/packages/api-client/src/api/addDownloadableProductsToCart/addDownloadableProductsToCart.ts +++ b/packages/api-client/src/api/addDownloadableProductsToCart/addDownloadableProductsToCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that adds downloadable products to shopping cart */ export default gql` mutation addDownloadableProductsToCart($input: AddDownloadableProductsToCartInput) { addDownloadableProductsToCart(input: $input) { diff --git a/packages/api-client/src/api/addDownloadableProductsToCart/index.ts b/packages/api-client/src/api/addDownloadableProductsToCart/index.ts index 3537a814b..f70a27f9a 100644 --- a/packages/api-client/src/api/addDownloadableProductsToCart/index.ts +++ b/packages/api-client/src/api/addDownloadableProductsToCart/index.ts @@ -1,23 +1,29 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import addDownloadableProductsToCart from './addDownloadableProductsToCart'; +import type { Context } from '../../types/context'; import { AddDownloadableProductsToCartInput, AddDownloadableProductsToCartMutation, AddDownloadableProductsToCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import addDownloadableProductsToCartMutation from './addDownloadableProductsToCart'; -export default async ( +/** + * Adds a set of downloadable products to a specified cart + * @param context VSF Context + * @param input ID of the cart and products to be added + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function addDownloadableProductsToCart( context: Context, input: AddDownloadableProductsToCartInput, customQuery: CustomQuery = { addDownloadableProductsToCart: 'addDownloadableProductsToCart' }, -): Promise> => { +): Promise> { const { addDownloadableProductsToCart: addDownloadableProductsToCartGQL } = context.extendQuery( customQuery, { addDownloadableProductsToCart: { - query: addDownloadableProductsToCart, + query: addDownloadableProductsToCartMutation, variables: { input }, }, }, @@ -26,4 +32,4 @@ export default async ( mutation: addDownloadableProductsToCartGQL.query, variables: addDownloadableProductsToCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/addProductsToCart/addProductsToCart.ts b/packages/api-client/src/api/addProductsToCart/addProductsToCart.ts index 3b41eb183..00b4f46ba 100644 --- a/packages/api-client/src/api/addProductsToCart/addProductsToCart.ts +++ b/packages/api-client/src/api/addProductsToCart/addProductsToCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that adds a product to the cart */ export default gql` mutation addProductsToCart($cartId: String!, $cartItems: [CartItemInput!]!) { addProductsToCart(cartId,: $cartId, cartItems,: $cartItems) { diff --git a/packages/api-client/src/api/addProductsToCart/index.ts b/packages/api-client/src/api/addProductsToCart/index.ts index 90961cba4..6db9bce1a 100644 --- a/packages/api-client/src/api/addProductsToCart/index.ts +++ b/packages/api-client/src/api/addProductsToCart/index.ts @@ -1,26 +1,32 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import addProductsToCart from './addProductsToCart'; +import { Context } from '../../types/context'; import { AddProductsToCartMutation, CartItemInput, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import addProductsToCartMutation from './addProductsToCart'; export type AddProductsToCartInput = { cartId: string; cartItems: CartItemInput[]; }; -export default async ( +/** + * Adds products to the specified cart + * @param context VSF Context + * @param input ID of the cart and products to be added + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function addProductsToCart( context: Context, input: AddProductsToCartInput, customQuery: CustomQuery = { addProductsToCart: 'addProductsToCart' }, -): Promise> => { +): Promise> { const { addProductsToCart: addProductsToCartGQL } = context.extendQuery( customQuery, { addProductsToCart: { - query: addProductsToCart, + query: addProductsToCartMutation, variables: { ...input }, }, }, @@ -29,4 +35,4 @@ export default async ( mutation: addProductsToCartGQL.query, variables: addProductsToCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/addVirtualProductsToCart/addVirtualProductsToCart.ts b/packages/api-client/src/api/addVirtualProductsToCart/addVirtualProductsToCart.ts index 17feb83f2..940d4a4c8 100644 --- a/packages/api-client/src/api/addVirtualProductsToCart/addVirtualProductsToCart.ts +++ b/packages/api-client/src/api/addVirtualProductsToCart/addVirtualProductsToCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that adds virtual products to shopping cart */ export default gql` mutation addVirtualProductsToCart($input: AddVirtualProductsToCartInput) { addVirtualProductsToCart(input: $input) { diff --git a/packages/api-client/src/api/addVirtualProductsToCart/index.ts b/packages/api-client/src/api/addVirtualProductsToCart/index.ts index c14642fbd..4b118def8 100644 --- a/packages/api-client/src/api/addVirtualProductsToCart/index.ts +++ b/packages/api-client/src/api/addVirtualProductsToCart/index.ts @@ -1,23 +1,29 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import addVirtualProductsToCart from './addVirtualProductsToCart'; +import type { Context } from '../../types/context'; import { AddVirtualProductsToCartInput, AddVirtualProductsToCartMutation, AddVirtualProductsToCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import addVirtualProductsToCartMutation from './addVirtualProductsToCart'; -export default async ( +/** + * Adds a set of virtual products to a specified cart + * @param context VSF Context + * @param input ID of the cart and products to add + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function addVirtualProductsToCart( context: Context, input: AddVirtualProductsToCartInput, customQuery: CustomQuery = { addVirtualProductsToCart: 'addVirtualProductsToCart' }, -): Promise> => { +): Promise> { const { addVirtualProductsToCart: addVirtualProductsToCartGQL } = context.extendQuery( customQuery, { addVirtualProductsToCart: { - query: addVirtualProductsToCart, + query: addVirtualProductsToCartMutation, variables: { input }, }, }, @@ -26,4 +32,4 @@ export default async ( mutation: addVirtualProductsToCartGQL.query, variables: addVirtualProductsToCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/applyCouponToCart/applyCouponToCart.ts b/packages/api-client/src/api/applyCouponToCart/applyCouponToCart.ts index 771ca4f9b..0a21c7939 100644 --- a/packages/api-client/src/api/applyCouponToCart/applyCouponToCart.ts +++ b/packages/api-client/src/api/applyCouponToCart/applyCouponToCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation to apply a coupon to a card */ export default gql` mutation applyCouponToCart($input: ApplyCouponToCartInput) { applyCouponToCart(input: $input) { diff --git a/packages/api-client/src/api/applyCouponToCart/index.ts b/packages/api-client/src/api/applyCouponToCart/index.ts index 42451cb23..15c6c21ee 100644 --- a/packages/api-client/src/api/applyCouponToCart/index.ts +++ b/packages/api-client/src/api/applyCouponToCart/index.ts @@ -1,24 +1,30 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import applyCouponToCart from './applyCouponToCart'; +import type { Context } from '../../types/context'; import { ApplyCouponToCartInput, ApplyCouponToCartMutation, ApplyCouponToCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import applyCouponToCartMutation from './applyCouponToCart'; // @TODO : Add Mutation FROM CodeGEN -export default async ( +/** + * Applies a coupon to a given card + * @param context VSF context + * @param input ID of the card and coupon to apply + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function applyCouponToCart( context: Context, input: ApplyCouponToCartInput, customQuery: CustomQuery = { applyCouponToCart: 'applyCouponToCart' }, -): Promise> => { +): Promise> { const { applyCouponToCart: applyCouponToCartGQL } = context.extendQuery( customQuery, { applyCouponToCart: { - query: applyCouponToCart, + query: applyCouponToCartMutation, variables: { input }, }, }, @@ -27,4 +33,4 @@ export default async ( mutation: applyCouponToCartGQL.query, variables: applyCouponToCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/availableStores/index.ts b/packages/api-client/src/api/availableStores/index.ts index 72209c00f..7c016163b 100644 --- a/packages/api-client/src/api/availableStores/index.ts +++ b/packages/api-client/src/api/availableStores/index.ts @@ -6,6 +6,9 @@ import { import availableStores from './availableStores'; import { Context } from '../../types/context'; +/** + * Returns list of available stores + */ export default async ( context: Context, customQuery: CustomQuery = { availableStores: 'availableStores' }, diff --git a/packages/api-client/src/api/cart/cart.ts b/packages/api-client/src/api/cart/cart.ts index d1df36e58..482d581f7 100644 --- a/packages/api-client/src/api/cart/cart.ts +++ b/packages/api-client/src/api/cart/cart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL query to fetch a cart */ export default gql` query cart($cartId: String!) { cart(cart_id:$cartId) { diff --git a/packages/api-client/src/api/cart/index.ts b/packages/api-client/src/api/cart/index.ts index b9b782f50..1d0e18a6b 100644 --- a/packages/api-client/src/api/cart/index.ts +++ b/packages/api-client/src/api/cart/index.ts @@ -1,19 +1,25 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import { CartQuery, CartQueryVariables } from '../../types/GraphQL'; -import cart from './cart'; import { Context } from '../../types/context'; +import type { CartQuery, CartQueryVariables } from '../../types/GraphQL'; +import cartQuery from './cart'; -export default async ( +/** + * Fetches a cart by its ID + * @param context VSF context + * @param cartId ID of the cart to fetch + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function cart( context: Context, cartId: string, customQuery: CustomQuery = { cart: 'cart' }, -): Promise> => { +): Promise> { const { cart: cartGQL } = context.extendQuery( customQuery, { cart: { - query: cart, + query: cartQuery, variables: { cartId: cartId ?? '' }, }, }, @@ -22,4 +28,4 @@ export default async ( query: cartGQL.query, variables: cartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/categoryList/categoryList.ts b/packages/api-client/src/api/categoryList/categoryList.ts index 41f2e19d8..10ec08e96 100644 --- a/packages/api-client/src/api/categoryList/categoryList.ts +++ b/packages/api-client/src/api/categoryList/categoryList.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches the category list. */ export default gql` query categoryList { categories { diff --git a/packages/api-client/src/api/categoryList/index.ts b/packages/api-client/src/api/categoryList/index.ts index 177430023..edba70589 100644 --- a/packages/api-client/src/api/categoryList/index.ts +++ b/packages/api-client/src/api/categoryList/index.ts @@ -1,25 +1,30 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; import { CategoryListQuery, CategoryListQueryVariables } from '../../types/GraphQL'; -import categoryList from './categoryList'; +import categoryListQuery from './categoryList'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetches the category list. + * + * @param context VSF Context + * @param params + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function categoryList( context: Context, params: CategoryListQueryVariables, customQuery: CustomQuery = { categoryList: 'categoryList' }, -): Promise> => { - const { categoryList: categoryListGQL } = context.extendQuery( - customQuery, - { - categoryList: { - query: categoryList, - variables: { ...params }, - }, +): Promise> { + const { categoryList: categoryListGQL } = context.extendQuery(customQuery, { + categoryList: { + query: categoryListQuery, + variables: { ...params }, }, - ); + }); + return context.client.query({ query: categoryListGQL.query, variables: categoryListGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/categorySearch/categorySearch.ts b/packages/api-client/src/api/categorySearch/categorySearch.ts index 91d6ae9c9..e3b6558c2 100644 --- a/packages/api-client/src/api/categorySearch/categorySearch.ts +++ b/packages/api-client/src/api/categorySearch/categorySearch.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that searches for categories using filters. */ export default gql` query categorySearch($filters: CategoryFilterInput) { categoryList(filters: $filters) { diff --git a/packages/api-client/src/api/categorySearch/index.ts b/packages/api-client/src/api/categorySearch/index.ts index fed407222..115e1bd98 100644 --- a/packages/api-client/src/api/categorySearch/index.ts +++ b/packages/api-client/src/api/categorySearch/index.ts @@ -1,26 +1,32 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; import { CategorySearchQuery, CategorySearchQueryVariables } from '../../types/GraphQL'; -import categorySearch from './categorySearch'; +import categorySearchQuery from './categorySearch'; import { Context } from '../../types/context'; -export default async ( +/** + * Searches for categories using received filters. + * + * @param context VSF Context + * @param filters filters used to search for categories. A filter contains at + * least one attribute, a comparison operator, and the value that is being + * searched for. + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function categorySearch( context: Context, filters: CategorySearchQueryVariables, customQuery: CustomQuery = { categorySearch: 'categorySearch' }, -): Promise> => { - const { categorySearch: categorySearchGQL } = context.extendQuery( - customQuery, - { - categorySearch: { - query: categorySearch, - variables: { ...filters }, - }, +): Promise> { + const { categorySearch: categorySearchGQL } = context.extendQuery(customQuery, { + categorySearch: { + query: categorySearchQuery, + variables: { ...filters }, }, - ); + }); return context.client.query({ query: categorySearchGQL.query, variables: categorySearchGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/changeCustomerPassword/index.ts b/packages/api-client/src/api/changeCustomerPassword/index.ts index 467a3eddb..8d3473859 100644 --- a/packages/api-client/src/api/changeCustomerPassword/index.ts +++ b/packages/api-client/src/api/changeCustomerPassword/index.ts @@ -7,6 +7,9 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; +/** + * Changes password of the current customer. To override the default query, use the `changeCustomerPassword` query key. + */ export default async ( context: Context, params: { currentPassword: string; newPassword: string; }, diff --git a/packages/api-client/src/api/cmsBlocks/index.ts b/packages/api-client/src/api/cmsBlocks/index.ts index 6898b18ba..fd425ae6d 100644 --- a/packages/api-client/src/api/cmsBlocks/index.ts +++ b/packages/api-client/src/api/cmsBlocks/index.ts @@ -4,11 +4,18 @@ import { CmsBlockQuery, CmsBlockQueryVariables } from '../../types/GraphQL'; import cmsBlocks from './cmsBlocks'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetch CMS Blocks from Magento Api. + * + * @param context - VSF Context + * @param identifiers - identifiers of CMS blocks + * @param [customQuery] - (optional) - custom GraphQL query that extends the default cmsBlocks query + */ +export default async function getCmsBlocks( context: Context, identifiers: string, customQuery: CustomQuery = { cmsBlocks: 'cmsBlocks' }, -): Promise> => { +): Promise> { const { cmsBlocks: cmsBlocksGQL } = context.extendQuery( customQuery, { @@ -22,4 +29,4 @@ export default async ( query: cmsBlocksGQL.query, variables: cmsBlocksGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/cmsPage/index.ts b/packages/api-client/src/api/cmsPage/index.ts index add81edd4..67dcb7ed8 100644 --- a/packages/api-client/src/api/cmsPage/index.ts +++ b/packages/api-client/src/api/cmsPage/index.ts @@ -4,11 +4,17 @@ import { CmsPageQueryVariables, CmsPageQuery } from '../../types/GraphQL'; import cmsPage from './cmsPage'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetch CMS Page from Magento + * @param context - VSF Context + * @param identifier - identifier of CMS page + * @param customQuery - (optional) - custom query that extends default cmsPage GraphQL query + */ +export default async function getCmsPage( context: Context, identifier: string, customQuery: CustomQuery = { cmsPage: 'cmsPage' }, -): Promise> => { +): Promise> { try { const { cmsPage: cmsPageGQL } = context.extendQuery( customQuery, diff --git a/packages/api-client/src/api/countries/countriesList.ts b/packages/api-client/src/api/countries/countriesList.ts index 3b0ca4af2..b01000bf0 100644 --- a/packages/api-client/src/api/countries/countriesList.ts +++ b/packages/api-client/src/api/countries/countriesList.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches the list of countries from the API */ export default gql` query countriesList { countries { diff --git a/packages/api-client/src/api/countries/index.ts b/packages/api-client/src/api/countries/index.ts index d2c34ab4d..1290fa452 100644 --- a/packages/api-client/src/api/countries/index.ts +++ b/packages/api-client/src/api/countries/index.ts @@ -1,22 +1,27 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; import { CountriesListQuery } from '../../types/GraphQL'; -import countriesList from './countriesList'; +import countriesListQuery from './countriesList'; import { Context } from '../../types/context'; -export default async ( +/** + * Loads the list of countries + * @param context VSF Context + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function countries( context: Context, customQuery: CustomQuery = { countries: 'countries' }, -): Promise> => { +): Promise> { const { countries: countriesGQL } = context.extendQuery( customQuery, { countries: { - query: countriesList, + query: countriesListQuery, }, }, ); return context.client.query({ query: countriesGQL.query, }); -}; +} diff --git a/packages/api-client/src/api/country/index.ts b/packages/api-client/src/api/country/index.ts index 6915961df..cd48e15df 100644 --- a/packages/api-client/src/api/country/index.ts +++ b/packages/api-client/src/api/country/index.ts @@ -4,11 +4,17 @@ import { CountryInformationQuery, CountryInformationQueryVariables } from '../.. import countryInformation from './countryInformation'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetches the information about a country given its ID + * @param context VSF Context + * @param id ID of the country to be fetched + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function country( context: Context, id: string, customQuery: CustomQuery = { country: 'country' }, -): Promise> => { +): Promise> { const { country: countryGQL } = context.extendQuery( customQuery, { @@ -22,4 +28,4 @@ export default async ( query: countryGQL.query, variables: countryGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/createCustomer/index.ts b/packages/api-client/src/api/createCustomer/index.ts index a3f45e4a4..456b16080 100644 --- a/packages/api-client/src/api/createCustomer/index.ts +++ b/packages/api-client/src/api/createCustomer/index.ts @@ -10,6 +10,9 @@ import { import createCustomer from './createCustomer'; import { Context } from '../../types/context'; +/** + * Registers a new customer. To override the default query, use the `createCustomer` query key. + */ export default async ( context: Context, input: CustomerCreateInput, diff --git a/packages/api-client/src/api/createCustomerAddress/createCustomerAddress.ts b/packages/api-client/src/api/createCustomerAddress/createCustomerAddress.ts index 2c0bb3ee5..63509d116 100644 --- a/packages/api-client/src/api/createCustomerAddress/createCustomerAddress.ts +++ b/packages/api-client/src/api/createCustomerAddress/createCustomerAddress.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that creates new customer address. */ export default gql` mutation createCustomerAddress($input: CustomerAddressInput!) { createCustomerAddress(input: $input) { diff --git a/packages/api-client/src/api/createCustomerAddress/index.ts b/packages/api-client/src/api/createCustomerAddress/index.ts index f3d595e73..098c12700 100644 --- a/packages/api-client/src/api/createCustomerAddress/index.ts +++ b/packages/api-client/src/api/createCustomerAddress/index.ts @@ -1,6 +1,6 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import createCustomerAddress from './createCustomerAddress'; +import createCustomerAddressMutation from './createCustomerAddress'; import { CreateCustomerAddressMutation, CreateCustomerAddressMutationVariables, @@ -8,16 +8,23 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Creates a customer address. + * + * @param context VSF Context + * @param input new customer address data + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function createCustomerAddress( context: Context, input: CustomerAddressInput, customQuery: CustomQuery = { createCustomerAddress: 'createCustomerAddress' }, -): Promise> => { +): Promise> { const { createCustomerAddress: createCustomerAddressGQL } = context.extendQuery( customQuery, { createCustomerAddress: { - query: createCustomerAddress, + query: createCustomerAddressMutation, variables: { input }, }, }, @@ -27,4 +34,4 @@ export default async ( mutation: createCustomerAddressGQL.query, variables: createCustomerAddressGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/createProductReview/index.ts b/packages/api-client/src/api/createProductReview/index.ts index f227a98d4..217a0a49a 100644 --- a/packages/api-client/src/api/createProductReview/index.ts +++ b/packages/api-client/src/api/createProductReview/index.ts @@ -6,6 +6,9 @@ import createProductReview from './createProductReview'; import { Context } from '../../types/context'; import recaptchaValidator from '../../helpers/recaptcha/recaptchaValidator'; +/** + * Creates a new product review + */ export default async ( context: Context, input: CreateProductReviewInput, diff --git a/packages/api-client/src/api/currency/currency.ts b/packages/api-client/src/api/currency/currency.ts index 8ba84449c..697d58078 100644 --- a/packages/api-client/src/api/currency/currency.ts +++ b/packages/api-client/src/api/currency/currency.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches the currency information. */ export default gql` query currency { currency{ diff --git a/packages/api-client/src/api/currency/index.ts b/packages/api-client/src/api/currency/index.ts index 68efbe0f8..a42c70d7b 100644 --- a/packages/api-client/src/api/currency/index.ts +++ b/packages/api-client/src/api/currency/index.ts @@ -1,25 +1,26 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import { - CurrencyQuery, -} from '../../types/GraphQL'; -import currency from './currency'; +import { CurrencyQuery } from '../../types/GraphQL'; +import currencyQuery from './currency'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetches the currency information. + * + * @param context VSF context + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function currency( context: Context, customQuery: CustomQuery = { currency: 'currency' }, -): Promise> => { - const { currency: currencyGQL } = context.extendQuery( - customQuery, - { - currency: { - query: currency, - }, +): Promise> { + const { currency: currencyGQL } = context.extendQuery(customQuery, { + currency: { + query: currencyQuery, }, - ); + }); return context.client.query({ query: currencyGQL.query, }); -}; +} diff --git a/packages/api-client/src/api/customer/index.ts b/packages/api-client/src/api/customer/index.ts index 09d152d54..2a72aa6c0 100644 --- a/packages/api-client/src/api/customer/index.ts +++ b/packages/api-client/src/api/customer/index.ts @@ -4,6 +4,9 @@ import { CustomerQuery } from '../../types/GraphQL'; import customer from './customer'; import { Context } from '../../types/context'; +/** + * Returns the information about the current customer. To override the default query, use the `customer` query key. + */ export default async ( context: Context, customQuery: CustomQuery = { customer: 'customer' }, diff --git a/packages/api-client/src/api/customerCart/customerCart.ts b/packages/api-client/src/api/customerCart/customerCart.ts index 7a2b7fc4f..7dac27ec3 100644 --- a/packages/api-client/src/api/customerCart/customerCart.ts +++ b/packages/api-client/src/api/customerCart/customerCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL query to get the cart of the current logged in customer */ export default gql` query customerCart { customerCart { diff --git a/packages/api-client/src/api/customerCart/index.ts b/packages/api-client/src/api/customerCart/index.ts index 293774e8b..443642722 100644 --- a/packages/api-client/src/api/customerCart/index.ts +++ b/packages/api-client/src/api/customerCart/index.ts @@ -1,18 +1,23 @@ import { ApolloQueryResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import { CustomerCartQuery } from '../../types/GraphQL'; -import customerCart from './customerCart'; -import { Context } from '../../types/context'; +import type { CustomQuery } from '@vue-storefront/core'; +import type { Context } from '../../types/context'; +import type { CustomerCartQuery } from '../../types/GraphQL'; +import customerCartQuery from './customerCart'; -export default async ( +/** + * Fetches the cart of the current logged in user + * @param context VSF context + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function customerCart( context: Context, customQuery: CustomQuery = { customerCart: 'customerCart' }, -): Promise> => { +): Promise> { const { customerCart: customerCartGQL } = context.extendQuery( customQuery, { customerCart: { - query: customerCart, + query: customerCartQuery, }, }, ); @@ -20,4 +25,4 @@ export default async ( return context.client.query({ query: customerCartGQL.query, }); -}; +} diff --git a/packages/api-client/src/api/customerOrders/index.ts b/packages/api-client/src/api/customerOrders/index.ts index eb506c695..4f8c8eec3 100644 --- a/packages/api-client/src/api/customerOrders/index.ts +++ b/packages/api-client/src/api/customerOrders/index.ts @@ -15,6 +15,9 @@ type Variables = { filter?: CustomerOrdersFilterInput; }; +/** + * Returns customer orders. To override the default query, use the `customerOrders` query key. + */ export default async ( context: Context, searchParams: GetOrdersSearchParams, diff --git a/packages/api-client/src/api/customerProductReview/index.ts b/packages/api-client/src/api/customerProductReview/index.ts index 4c5ba9622..bc21cfd39 100644 --- a/packages/api-client/src/api/customerProductReview/index.ts +++ b/packages/api-client/src/api/customerProductReview/index.ts @@ -12,6 +12,9 @@ export type CustomerProductReviewParams = { currentPage: number; }; +/** + * Returns product reviews created by the current customer + */ export default async ( context: Context, searchParams?: CustomerProductReviewParams, diff --git a/packages/api-client/src/api/deleteCustomerAddress/deleteCustomerAddress.ts b/packages/api-client/src/api/deleteCustomerAddress/deleteCustomerAddress.ts index fe8bfc4ca..c726c16fc 100644 --- a/packages/api-client/src/api/deleteCustomerAddress/deleteCustomerAddress.ts +++ b/packages/api-client/src/api/deleteCustomerAddress/deleteCustomerAddress.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that deletes a customer address. */ export default gql` mutation deleteCustomerAddress($id: Int!) { deleteCustomerAddress(id: $id) diff --git a/packages/api-client/src/api/deleteCustomerAddress/index.ts b/packages/api-client/src/api/deleteCustomerAddress/index.ts index b50aaee84..455b3ab3d 100644 --- a/packages/api-client/src/api/deleteCustomerAddress/index.ts +++ b/packages/api-client/src/api/deleteCustomerAddress/index.ts @@ -1,25 +1,33 @@ import { ExecutionResult } from 'graphql'; import { CustomQuery } from '@vue-storefront/core'; -import deleteCustomerAddress from './deleteCustomerAddress'; +import deleteCustomerAddressMutation from './deleteCustomerAddress'; import { Context } from '../../types/context'; import { DeleteCustomerAddressMutation, DeleteCustomerAddressMutationVariables } from '../../types/GraphQL'; -export default async ( +/** + * Deletes a customer address. + * + * @param context VSF Context + * @param addressId ID of the customer address to delete + * @param customQuery (optional) - custom GraphQL query that extends the default query + */ +export default async function deleteCustomerAddress( context: Context, addressId: number, customQuery: CustomQuery = { deleteCustomerAddress: 'deleteCustomerAddress' }, -): Promise> => { +): Promise> { const { deleteCustomerAddress: deleteCustomerAddressGQL } = context.extendQuery( customQuery, { deleteCustomerAddress: { - query: deleteCustomerAddress, + query: deleteCustomerAddressMutation, variables: { id: addressId }, }, }, ); + return context.client.mutate({ mutation: deleteCustomerAddressGQL.query, variables: deleteCustomerAddressGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/generateCustomerToken/index.ts b/packages/api-client/src/api/generateCustomerToken/index.ts index 917f33267..b9c9e2dce 100644 --- a/packages/api-client/src/api/generateCustomerToken/index.ts +++ b/packages/api-client/src/api/generateCustomerToken/index.ts @@ -9,6 +9,9 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; +/** + * Logs in the customer based on provided username and password. To override the default query, use the `generateCustomerToken` query key. + */ export default async ( context: Context, params: { diff --git a/packages/api-client/src/api/getAvailableCustomerShippingMethods/CustomerShippingMethods.ts b/packages/api-client/src/api/getAvailableCustomerShippingMethods/CustomerShippingMethods.ts index 305411ef0..66a21caf8 100644 --- a/packages/api-client/src/api/getAvailableCustomerShippingMethods/CustomerShippingMethods.ts +++ b/packages/api-client/src/api/getAvailableCustomerShippingMethods/CustomerShippingMethods.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that retrieves a user's shipping methods */ export default gql` query CustomerAvailableShippingMethods { customerCart { diff --git a/packages/api-client/src/api/getAvailableCustomerShippingMethods/index.ts b/packages/api-client/src/api/getAvailableCustomerShippingMethods/index.ts index dc3cf22ae..88fb2d6f0 100644 --- a/packages/api-client/src/api/getAvailableCustomerShippingMethods/index.ts +++ b/packages/api-client/src/api/getAvailableCustomerShippingMethods/index.ts @@ -7,10 +7,15 @@ import { CustomerAvailableShippingMethodsQuery, } from '../../types/GraphQL'; -export default async ( +/** + * Retrive available shipping methods for current customer + * @param context VSF Context + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function getAvailableCustomerShippingMethods( context: Context, customQuery: CustomQuery = { shippingMethods: 'shippingMethods' }, -): Promise> => { +): Promise> { const { shippingMethods } = context.extendQuery( customQuery, { @@ -27,4 +32,4 @@ export default async ( } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/getAvailablePaymentMethods/GuestAvailablePaymentMethods.ts b/packages/api-client/src/api/getAvailablePaymentMethods/GuestAvailablePaymentMethods.ts index 8c6550fbf..f34147d52 100644 --- a/packages/api-client/src/api/getAvailablePaymentMethods/GuestAvailablePaymentMethods.ts +++ b/packages/api-client/src/api/getAvailablePaymentMethods/GuestAvailablePaymentMethods.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches available payment methods for received cart. */ export default gql` query GuestAvailablePaymentMethods($cartId: String!) { cart(cart_id: $cartId) { diff --git a/packages/api-client/src/api/getAvailablePaymentMethods/index.ts b/packages/api-client/src/api/getAvailablePaymentMethods/index.ts index 2f513de6e..c28bec00a 100644 --- a/packages/api-client/src/api/getAvailablePaymentMethods/index.ts +++ b/packages/api-client/src/api/getAvailablePaymentMethods/index.ts @@ -2,31 +2,32 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; import { Context } from '../../types/context'; import GuestAvailablePaymentMethods from './GuestAvailablePaymentMethods'; -import { - GuestAvailablePaymentMethodsQuery, - GuestAvailablePaymentMethodsQueryVariables, -} from '../../types/GraphQL'; +import type { GuestAvailablePaymentMethodsQuery, GuestAvailablePaymentMethodsQueryVariables } from '../../types/GraphQL'; -export default async ( +/** + * Fetches the available payment methods for the received cart. + * + * @param context VSF context + * @param params params containing the cart's ID + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function getAvailablePaymentMethods( context: Context, params: { cartId: string; }, customQuery: CustomQuery = { paymentMethods: 'paymentMethods' }, -): Promise> => { +): Promise> { const defaultVariables = { cartId: params.cartId || '', }; - const { paymentMethods } = context.extendQuery( - customQuery, - { - paymentMethods: { - query: GuestAvailablePaymentMethods, - variables: defaultVariables, - }, + const { paymentMethods } = context.extendQuery(customQuery, { + paymentMethods: { + query: GuestAvailablePaymentMethods, + variables: defaultVariables, }, - ); + }); try { return await context.client.query({ @@ -36,4 +37,4 @@ export default async ( } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/getCustomerAddresses/getCustomerAddresses.ts b/packages/api-client/src/api/getCustomerAddresses/getCustomerAddresses.ts index cd5a09468..f25fe43e2 100644 --- a/packages/api-client/src/api/getCustomerAddresses/getCustomerAddresses.ts +++ b/packages/api-client/src/api/getCustomerAddresses/getCustomerAddresses.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches customer addresses. */ export default gql` query getCustomerAddresses { customer { diff --git a/packages/api-client/src/api/getCustomerAddresses/index.ts b/packages/api-client/src/api/getCustomerAddresses/index.ts index fa1175ba1..96542bcfd 100644 --- a/packages/api-client/src/api/getCustomerAddresses/index.ts +++ b/packages/api-client/src/api/getCustomerAddresses/index.ts @@ -4,24 +4,27 @@ import { GetCustomerAddressesQuery } from '../../types/GraphQL'; import getCustomerAddressesQuery from './getCustomerAddresses'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetches customer addresses. + * + * @param context - VSF Context + * @param [customQuery] - (optional) - custom GraphQL query that extends the default query + */ +export default async function getCustomerAddresses( context: Context, customQuery: CustomQuery = { getCustomerAddresses: 'getCustomerAddresses' }, -): Promise> => { - const { getCustomerAddresses } = context.extendQuery( - customQuery, - { - getCustomerAddresses: { - query: getCustomerAddressesQuery, - }, +): Promise> { + const { getCustomerAddresses: getCustomerAddressesGQL } = context.extendQuery(customQuery, { + getCustomerAddresses: { + query: getCustomerAddressesQuery, }, - ); + }); try { return await context.client.query({ - query: getCustomerAddresses.query, + query: getCustomerAddressesGQL.query, }); } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/placeOrder/index.ts b/packages/api-client/src/api/placeOrder/index.ts index 3aa9d3a3c..1b00bb2ac 100644 --- a/packages/api-client/src/api/placeOrder/index.ts +++ b/packages/api-client/src/api/placeOrder/index.ts @@ -1,32 +1,34 @@ import { FetchResult } from '@apollo/client/core'; -import gql from 'graphql-tag'; import { CustomQuery } from '@vue-storefront/core'; -import placeOrderQuery from './placeOrder'; -import { - PlaceOrderInput, - PlaceOrderMutation, - PlaceOrderMutationVariables, -} from '../../types/GraphQL'; +import placeOrderMutation from './placeOrder'; +import { PlaceOrderInput, PlaceOrderMutation, PlaceOrderMutationVariables } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Places an order for received cart. + * + * @param context VSF Context + * @param input the order's input, containing the cart's ID + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function placeOrder( context: Context, input: PlaceOrderInput, customQuery: CustomQuery = { placeOrder: 'placeOrder' }, -): Promise> => { - const { placeOrder } = context.extendQuery(customQuery, { +): Promise> { + const { placeOrder: placeOrderGQL } = context.extendQuery(customQuery, { placeOrder: { - query: placeOrderQuery, + query: placeOrderMutation, variables: { input }, }, }); try { return await context.client.mutate({ - mutation: placeOrder.query, - variables: placeOrder.variables, + mutation: placeOrderGQL.query, + variables: placeOrderGQL.variables, }); } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/placeOrder/placeOrder.ts b/packages/api-client/src/api/placeOrder/placeOrder.ts index eff26145c..24cc11781 100644 --- a/packages/api-client/src/api/placeOrder/placeOrder.ts +++ b/packages/api-client/src/api/placeOrder/placeOrder.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutatiion that places an order. */ export default gql` mutation placeOrder($input: PlaceOrderInput) { placeOrder(input: $input) { diff --git a/packages/api-client/src/api/productDetail/index.ts b/packages/api-client/src/api/productDetail/index.ts index c9b76206a..216820ecd 100644 --- a/packages/api-client/src/api/productDetail/index.ts +++ b/packages/api-client/src/api/productDetail/index.ts @@ -1,14 +1,14 @@ -import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery, Logger } from '@vue-storefront/core'; -import { +import type { ApolloQueryResult } from '@apollo/client/core'; +import productDetailsQuery from './productDetailsQuery'; +import type { ProductAttributeFilterInput, ProductAttributeSortInput, ProductDetailsQuery, ProductDetailsQueryVariables, } from '../../types/GraphQL'; -import detailQuery from './productDetailsQuery'; -import { Context } from '../../types/context'; -import { GetProductSearchParams } from '../../types/API'; +import type { Context } from '../../types/context'; +import type { GetProductSearchParams } from '../../types/API'; type Variables = { pageSize: number; @@ -18,11 +18,18 @@ type Variables = { sort?: ProductAttributeSortInput; }; -export default async ( +/** + * Fetches the list of products with details using sort, filters and pagination. + * + * @param context VSF context + * @param searchParams params with sort, filters and pagination + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function productDetail( context: Context, searchParams?: GetProductSearchParams, customQuery: CustomQuery = { productDetail: 'productDetail' }, -): Promise> => { +): Promise> { const defaultParams = { pageSize: 10, currentPage: 1, @@ -41,17 +48,17 @@ export default async ( if (defaultParams.sort) variables.sort = defaultParams.sort; - const { productDetail } = context.extendQuery(customQuery, { + const { productDetail: productDetailGQL } = context.extendQuery(customQuery, { productDetail: { - query: detailQuery, + query: productDetailsQuery, variables, }, }); try { const result = await context.client.query({ - query: productDetail.query, - variables: productDetail.variables, + query: productDetailGQL.query, + variables: productDetailGQL.variables, }); if (result.data.products.items.length === 0) throw new Error('No products found'); @@ -71,4 +78,4 @@ export default async ( Logger.error(error); throw error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/productDetail/productDetailsQuery.ts b/packages/api-client/src/api/productDetail/productDetailsQuery.ts index e82720016..f4e0b60bb 100644 --- a/packages/api-client/src/api/productDetail/productDetailsQuery.ts +++ b/packages/api-client/src/api/productDetail/productDetailsQuery.ts @@ -1,5 +1,9 @@ import gql from 'graphql-tag'; +/** + * GraphQL Query that fetches the list of products with details using sort, + * filters and pagination. + */ export default gql` query productDetails( $search: String = "", diff --git a/packages/api-client/src/api/productReview/index.ts b/packages/api-client/src/api/productReview/index.ts index c4302cc87..f508c0156 100644 --- a/packages/api-client/src/api/productReview/index.ts +++ b/packages/api-client/src/api/productReview/index.ts @@ -18,6 +18,9 @@ type Variables = { sort?: ProductAttributeSortInput; }; +/** + * Returns reviews of the provided product + */ export default async ( context: Context, searchParams?: GetProductSearchParams, diff --git a/packages/api-client/src/api/productReviewRatingsMetadata/index.ts b/packages/api-client/src/api/productReviewRatingsMetadata/index.ts index ebbbbd266..4f630838e 100644 --- a/packages/api-client/src/api/productReviewRatingsMetadata/index.ts +++ b/packages/api-client/src/api/productReviewRatingsMetadata/index.ts @@ -4,6 +4,9 @@ import { ProductReviewRatingsMetadataQuery } from '../../types/GraphQL'; import productReviewRatingsMetadata from './productReviewRatingsMetadata'; import { Context } from '../../types/context'; +/** + * Returns additional product reviews data + */ export default async ( context: Context, customQuery: CustomQuery = { productReviewRatingsMetadata: 'productReviewRatingsMetadata' }, diff --git a/packages/api-client/src/api/products/index.ts b/packages/api-client/src/api/products/index.ts index 245712868..6424b83d6 100644 --- a/packages/api-client/src/api/products/index.ts +++ b/packages/api-client/src/api/products/index.ts @@ -6,7 +6,7 @@ import { ProductsListQuery, ProductsListQueryVariables, } from '../../types/GraphQL'; -import productsList from './productsList'; +import productsListQuery from './productsList'; import { Context } from '../../types/context'; import { GetProductSearchParams } from '../../types/API'; @@ -18,11 +18,19 @@ type Variables = { sort?: ProductAttributeSortInput; }; -export default async ( +/** + * Fetches products using received search term and params for filter, sort and + * pagination. + * + * @param context VSF context + * @param searchParams search term and params for filter, sort and pagination + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function products( context: Context, searchParams?: GetProductSearchParams, customQuery: CustomQuery = { products: 'products' }, -): Promise> => { +): Promise> { const defaultParams = { pageSize: 10, currentPage: 1, @@ -40,22 +48,19 @@ export default async ( if (defaultParams.sort) variables.sort = defaultParams.sort; - const { products } = context.extendQuery( - customQuery, - { - products: { - query: productsList, - variables, - }, + const { products: productsGQL } = context.extendQuery(customQuery, { + products: { + query: productsListQuery, + variables, }, - ); + }); try { return await context.client.query({ - query: products.query, - variables: products.variables, + query: productsGQL.query, + variables: productsGQL.variables, }); } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/products/productsList.ts b/packages/api-client/src/api/products/productsList.ts index 30a64a07f..b84fc32fb 100644 --- a/packages/api-client/src/api/products/productsList.ts +++ b/packages/api-client/src/api/products/productsList.ts @@ -1,5 +1,9 @@ import gql from 'graphql-tag'; +/** + * GraphQL Query that fetches products using received search term and the params + * for filter, sort and pagination. + */ export default gql` query productsList($search: String = "", $filter: ProductAttributeFilterInput, $pageSize: Int = 10, $currentPage: Int = 1, $sort: ProductAttributeSortInput) { products(search: $search, filter: $filter, pageSize: $pageSize, currentPage: $currentPage, sort: $sort) { diff --git a/packages/api-client/src/api/relatedProduct/index.ts b/packages/api-client/src/api/relatedProduct/index.ts index 88c9ea1e1..054021d1c 100644 --- a/packages/api-client/src/api/relatedProduct/index.ts +++ b/packages/api-client/src/api/relatedProduct/index.ts @@ -1,14 +1,14 @@ -import { ApolloQueryResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import { +import type { ApolloQueryResult } from '@apollo/client/core'; +import type { CustomQuery } from '@vue-storefront/core'; +import type { ProductAttributeFilterInput, ProductAttributeSortInput, RelatedProductQuery, RelatedProductQueryVariables, } from '../../types/GraphQL'; -import relatedProduct from './relatedProduct'; -import { Context } from '../../types/context'; -import { GetProductSearchParams } from '../../types/API'; +import relatedProductQuery from './relatedProduct'; +import type { Context } from '../../types/context'; +import type { GetProductSearchParams } from '../../types/API'; type Variables = { pageSize: number; @@ -18,11 +18,19 @@ type Variables = { sort?: ProductAttributeSortInput; }; -export default async ( +/** + * Searches for related products using params for sorting, filtering and + * pagination. + * + * @param context VSF context + * @param searchParams params for sorting, filtering and pagination + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function relatedProduct( context: Context, searchParams?: GetProductSearchParams, customQuery: CustomQuery = { relatedProduct: 'relatedProduct' }, -): Promise> => { +): Promise> { const defaultParams = { pageSize: 10, currentPage: 1, @@ -42,7 +50,7 @@ export default async ( const { relatedProduct: relatedProductGQL } = context.extendQuery(customQuery, { relatedProduct: { - query: relatedProduct, + query: relatedProductQuery, variables, }, }); @@ -55,4 +63,4 @@ export default async ( } catch (error) { throw error.graphQLErrors?.[0].message || error.networkError?.result || error; } -}; +} diff --git a/packages/api-client/src/api/relatedProduct/relatedProduct.ts b/packages/api-client/src/api/relatedProduct/relatedProduct.ts index 266e8a334..1b4b5c3f2 100644 --- a/packages/api-client/src/api/relatedProduct/relatedProduct.ts +++ b/packages/api-client/src/api/relatedProduct/relatedProduct.ts @@ -1,5 +1,9 @@ import gql from 'graphql-tag'; +/** + * GraphQL Query that searches for related products using params for sorting, + * filtering and pagination. + */ export default gql` query relatedProduct( $search: String = "" diff --git a/packages/api-client/src/api/removeCouponFromCart/index.ts b/packages/api-client/src/api/removeCouponFromCart/index.ts index 53d658c7e..ef40bb40b 100644 --- a/packages/api-client/src/api/removeCouponFromCart/index.ts +++ b/packages/api-client/src/api/removeCouponFromCart/index.ts @@ -1,23 +1,29 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import removeCouponFromCart from './removeCouponFromCart'; +import type { Context } from '../../types/context'; import { RemoveCouponFromCartInput, RemoveCouponFromCartMutation, RemoveCouponFromCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import removeCouponFromCartMutation from './removeCouponFromCart'; -export default async ( +/** + * Removes a coupon from a cart + * @param context VSF context + * @param input ID of the cart and coupon to remove + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function removeCouponFromCart( context: Context, input: RemoveCouponFromCartInput, customQuery: CustomQuery = { removeCouponFromCart: 'removeCouponFromCart' }, -): Promise> => { +): Promise> { const { removeCouponFromCart: removeCouponFromCartGQL } = context.extendQuery( customQuery, { removeCouponFromCart: { - query: removeCouponFromCart, + query: removeCouponFromCartMutation, variables: { input }, }, }, @@ -27,4 +33,4 @@ export default async ( mutation: removeCouponFromCartGQL.query, variables: removeCouponFromCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/removeCouponFromCart/removeCouponFromCart.ts b/packages/api-client/src/api/removeCouponFromCart/removeCouponFromCart.ts index 55e981478..0a9f4f83f 100644 --- a/packages/api-client/src/api/removeCouponFromCart/removeCouponFromCart.ts +++ b/packages/api-client/src/api/removeCouponFromCart/removeCouponFromCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL query to remove a coupon from a cart */ export default gql` mutation removeCouponFromCart($input: RemoveCouponFromCartInput) { removeCouponFromCart(input: $input) { diff --git a/packages/api-client/src/api/removeItemFromCart/index.ts b/packages/api-client/src/api/removeItemFromCart/index.ts index 24eb27787..3d43970e0 100644 --- a/packages/api-client/src/api/removeItemFromCart/index.ts +++ b/packages/api-client/src/api/removeItemFromCart/index.ts @@ -1,23 +1,29 @@ import { FetchResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import removeItemFromCart from './removeItemFromCart'; +import type { CustomQuery } from '@vue-storefront/core'; +import type { Context } from '../../types/context'; import { RemoveItemFromCartInput, RemoveItemFromCartMutation, RemoveItemFromCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import removeItemFromCartMutation from './removeItemFromCart'; -export default async ( +/** + * Removes an item from the given cart + * @param context VSF context + * @param input ID of the cart and item to be removed from it + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function removeItemFromCart( context: Context, input: RemoveItemFromCartInput, customQuery: CustomQuery = { removeItemFromCart: 'removeItemFromCart' }, -): Promise> => { +): Promise> { const { removeItemFromCart: removeItemFromCartGQL } = context.extendQuery( customQuery, { removeItemFromCart: { - query: removeItemFromCart, + query: removeItemFromCartMutation, variables: { input }, }, }, @@ -27,4 +33,4 @@ export default async ( mutation: removeItemFromCartGQL.query, variables: removeItemFromCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/removeItemFromCart/removeItemFromCart.ts b/packages/api-client/src/api/removeItemFromCart/removeItemFromCart.ts index e7fc77e35..0876cc7a2 100644 --- a/packages/api-client/src/api/removeItemFromCart/removeItemFromCart.ts +++ b/packages/api-client/src/api/removeItemFromCart/removeItemFromCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation to remove an item from a cart */ export default gql` mutation removeItemFromCart($input: RemoveItemFromCartInput) { removeItemFromCart(input: $input) { diff --git a/packages/api-client/src/api/requestPasswordResetEmail/index.ts b/packages/api-client/src/api/requestPasswordResetEmail/index.ts index 4550c46a3..acdd60873 100644 --- a/packages/api-client/src/api/requestPasswordResetEmail/index.ts +++ b/packages/api-client/src/api/requestPasswordResetEmail/index.ts @@ -9,11 +9,17 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Requests a password reset email to be sent to the user + * @param context VSF Context + * @param input Email for which to request a password reset + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function requestPasswordResetEmail( context: Context, input: RequestPasswordResetEmailMutationVariables, customQuery: CustomQuery = { requestPasswordResetEmail: 'requestPasswordResetEmail' }, -): Promise> => { +): Promise> { const { recaptchaToken, ...variables } = input; @@ -32,7 +38,7 @@ export default async ( } } - const { requestPasswordResetEmail } = context.extendQuery(customQuery, { + const { requestPasswordResetEmail: extendedMutation } = context.extendQuery(customQuery, { requestPasswordResetEmail: { query: requestPasswordResetEmailMutation, variables: { ...variables }, @@ -42,11 +48,11 @@ export default async ( Logger.debug('[VSF: Magento] requestPasswordResetEmail', JSON.stringify(input, null, 2)); const result = await context.client .mutate({ - mutation: requestPasswordResetEmail.query, - variables: requestPasswordResetEmail.variables, + mutation: extendedMutation.query, + variables: extendedMutation.variables, }); if (!result.data.requestPasswordResetEmail) throw new Error('Email was not found, or not available.'); return result; -}; +} diff --git a/packages/api-client/src/api/requestPasswordResetEmail/requestPasswordResetEmail.ts b/packages/api-client/src/api/requestPasswordResetEmail/requestPasswordResetEmail.ts index a1e454982..22fddc39a 100644 --- a/packages/api-client/src/api/requestPasswordResetEmail/requestPasswordResetEmail.ts +++ b/packages/api-client/src/api/requestPasswordResetEmail/requestPasswordResetEmail.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that requests a password reset email to be sent */ export default gql` mutation requestPasswordResetEmail($email: String!){ requestPasswordResetEmail(email: $email) diff --git a/packages/api-client/src/api/resetPassword/index.ts b/packages/api-client/src/api/resetPassword/index.ts index acc54945f..1f2b8803d 100644 --- a/packages/api-client/src/api/resetPassword/index.ts +++ b/packages/api-client/src/api/resetPassword/index.ts @@ -1,6 +1,5 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery, Logger } from '@vue-storefront/core'; -import gql from 'graphql-tag'; import { GraphQLError } from 'graphql'; import resetPasswordMutation from './resetPassword'; import { @@ -10,11 +9,17 @@ import { import { Context } from '../../types/context'; import recaptchaValidator from '../../helpers/recaptcha/recaptchaValidator'; -export default async ( +/** + * Resets a user's password + * @param context VSF Context + * @param input Params used to reset a user's password + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function resetPassword( context: Context, input: ResetPasswordMutationVariables, customQuery: CustomQuery = { resetPassword: 'resetPassword' }, -): Promise> => { +): Promise> { const { recaptchaToken, ...variables } = input; @@ -33,7 +38,7 @@ export default async ( } } - const { resetPassword } = context.extendQuery(customQuery, { + const { resetPassword: extendedResetPasswordMutation } = context.extendQuery(customQuery, { resetPassword: { query: resetPasswordMutation, variables: { ...variables }, @@ -43,11 +48,11 @@ export default async ( Logger.debug('[VSF: Magento] requestPasswordResetEmail', JSON.stringify(input, null, 2)); const result = await context.client .mutate({ - mutation: resetPassword.query, - variables: resetPassword.variables, + mutation: extendedResetPasswordMutation.query, + variables: extendedResetPasswordMutation.variables, }); if (!result.data.resetPassword) throw new Error('It was not possible to change the user password.'); return result; -}; +} diff --git a/packages/api-client/src/api/resetPassword/resetPassword.ts b/packages/api-client/src/api/resetPassword/resetPassword.ts index 9ae5bfa28..c09964c2c 100644 --- a/packages/api-client/src/api/resetPassword/resetPassword.ts +++ b/packages/api-client/src/api/resetPassword/resetPassword.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that resets a users's password */ export default gql` mutation resetPassword($email: String!, $newPassword: String!, $resetPasswordToken: String!){ resetPassword(email: $email, newPassword: $newPassword, resetPasswordToken: $resetPasswordToken) diff --git a/packages/api-client/src/api/revokeCustomerToken/index.ts b/packages/api-client/src/api/revokeCustomerToken/index.ts index 58c9aeab2..e3f26ebe7 100644 --- a/packages/api-client/src/api/revokeCustomerToken/index.ts +++ b/packages/api-client/src/api/revokeCustomerToken/index.ts @@ -4,6 +4,9 @@ import revokeCustomerToken from './revokeCustomerToken'; import { Context } from '../../types/context'; import { RevokeCustomerTokenMutation } from '../../types/GraphQL'; +/** + * Logs out the current customer. To override the default query, use the `revokeCustomerToken` query key. + */ export default async ( context: Context, customQuery: CustomQuery = { revokeCustomerToken: 'revokeCustomerToken' }, diff --git a/packages/api-client/src/api/setGuestEmailOnCart/index.ts b/packages/api-client/src/api/setGuestEmailOnCart/index.ts index e9fca9eb8..4d63036ed 100644 --- a/packages/api-client/src/api/setGuestEmailOnCart/index.ts +++ b/packages/api-client/src/api/setGuestEmailOnCart/index.ts @@ -1,21 +1,27 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import setGuestEmailOnCart from './setGuestEmailOnCart'; +import setGuestEmailOnCartMutation from './setGuestEmailOnCart'; import { SetGuestEmailOnCartInput, SetGuestEmailOnCartMutation, SetGuestEmailOnCartMutationVariables, } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Set the guest user email on the cart + * @param context VSF Context + * @param input Variables to set guest email + * @param [customQuery] (optional) - Custom query that will extend default one + */ +export default async function setGuestEmailOnCart( context: Context, input: SetGuestEmailOnCartInput, customQuery: CustomQuery = { setGuestEmailOnCart: 'setGuestEmailOnCart' }, -): Promise> => { +): Promise> { const { setGuestEmailOnCart: setGuestEmailOnCartGQL } = context.extendQuery( customQuery, { setGuestEmailOnCart: { - query: setGuestEmailOnCart, + query: setGuestEmailOnCartMutation, variables: { input }, }, }, @@ -25,4 +31,4 @@ export default async ( mutation: setGuestEmailOnCartGQL.query, variables: setGuestEmailOnCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/setGuestEmailOnCart/setGuestEmailOnCart.ts b/packages/api-client/src/api/setGuestEmailOnCart/setGuestEmailOnCart.ts index 286409522..cab8312b5 100644 --- a/packages/api-client/src/api/setGuestEmailOnCart/setGuestEmailOnCart.ts +++ b/packages/api-client/src/api/setGuestEmailOnCart/setGuestEmailOnCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that sets the guest user email on a cart */ export default gql` mutation setGuestEmailOnCart($input: SetGuestEmailOnCartInput) { setGuestEmailOnCart(input: $input) { diff --git a/packages/api-client/src/api/setPaymentMethodOnCart/index.ts b/packages/api-client/src/api/setPaymentMethodOnCart/index.ts index 9f1ad945d..68d6a4910 100644 --- a/packages/api-client/src/api/setPaymentMethodOnCart/index.ts +++ b/packages/api-client/src/api/setPaymentMethodOnCart/index.ts @@ -1,34 +1,34 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import setPaymentMethodOnCart from './setPaymentMethodOnCart'; -import { - SetPaymentMethodOnCartInput, - SetPaymentMethodOnCartMutation, - SetPaymentMethodOnCartMutationVariables, -} from '../../types/GraphQL'; +import setPaymentMethodOnCartMutation from './setPaymentMethodOnCart'; +import type { SetPaymentMethodOnCartInput, SetPaymentMethodOnCartMutation, SetPaymentMethodOnCartMutationVariables } from '../../types/GraphQL'; import { Context } from '../../types/context'; export interface SetPaymentMethodOnCartInputs extends SetPaymentMethodOnCartInput { [k: string]: any; } -export default async ( +/** + * Sets received payment method on cart. + * + * @param context VSF context + * @param input params containing the cart's ID and the payment method + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function setPaymentMethodOnCart( context: Context, input: SetPaymentMethodOnCartInputs, customQuery: CustomQuery = { setPaymentMethodOnCart: 'setPaymentMethodOnCart' }, -): Promise> => { - const { setPaymentMethodOnCart: setPaymentMethodOnCartGQL } = context.extendQuery( - customQuery, - { - setPaymentMethodOnCart: { - query: setPaymentMethodOnCart, - variables: { input }, - }, +): Promise> { + const { setPaymentMethodOnCart: setPaymentMethodOnCartGQL } = context.extendQuery(customQuery, { + setPaymentMethodOnCart: { + query: setPaymentMethodOnCartMutation, + variables: { input }, }, - ); + }); return context.client.mutate({ mutation: setPaymentMethodOnCartGQL.query, variables: setPaymentMethodOnCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/setPaymentMethodOnCart/setPaymentMethodOnCart.ts b/packages/api-client/src/api/setPaymentMethodOnCart/setPaymentMethodOnCart.ts index f0c2571b6..b13e601d7 100644 --- a/packages/api-client/src/api/setPaymentMethodOnCart/setPaymentMethodOnCart.ts +++ b/packages/api-client/src/api/setPaymentMethodOnCart/setPaymentMethodOnCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that sets received payment method on cart. */ export default gql` mutation setPaymentMethodOnCart($input: SetPaymentMethodOnCartInput) { setPaymentMethodOnCart(input: $input) { diff --git a/packages/api-client/src/api/setShippingAddressesOnCart/index.ts b/packages/api-client/src/api/setShippingAddressesOnCart/index.ts index 600f0c3c3..0eb86b4f3 100644 --- a/packages/api-client/src/api/setShippingAddressesOnCart/index.ts +++ b/packages/api-client/src/api/setShippingAddressesOnCart/index.ts @@ -1,30 +1,34 @@ -import { FetchResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import setShippingAddressesOnCart from './setShippingAddressesOnCart'; -import { +import type { FetchResult } from '@apollo/client/core'; +import type { CustomQuery } from '@vue-storefront/core'; +import setShippingAddressesOnCartQuery from './setShippingAddressesOnCart'; +import type { SetShippingAddressesOnCartInput, SetShippingAddressesOnCartMutation, SetShippingAddressesOnCartMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import type { Context } from '../../types/context'; -export default async ( +/** + * Sets a shipping address on received cart. + * + * @param context VSF context + * @param input params with cart ID and shipping address. + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function setShippingAddressesOnCart( context: Context, input: SetShippingAddressesOnCartInput, customQuery: CustomQuery = { setShippingAddressesOnCart: 'setShippingAddressesOnCart' }, -): Promise> => { - const { setShippingAddressesOnCart: setShippingAddressesOnCartGQL } = context.extendQuery( - customQuery, - { - setShippingAddressesOnCart: { - query: setShippingAddressesOnCart, - variables: { input }, - }, +): Promise> { + const { setShippingAddressesOnCart: setShippingAddressesOnCartGQL } = context.extendQuery(customQuery, { + setShippingAddressesOnCart: { + query: setShippingAddressesOnCartQuery, + variables: { input }, }, - ); + }); return context.client.mutate({ mutation: setShippingAddressesOnCartGQL.query, variables: setShippingAddressesOnCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/setShippingAddressesOnCart/setShippingAddressesOnCart.ts b/packages/api-client/src/api/setShippingAddressesOnCart/setShippingAddressesOnCart.ts index f8d08b4c3..07688c113 100644 --- a/packages/api-client/src/api/setShippingAddressesOnCart/setShippingAddressesOnCart.ts +++ b/packages/api-client/src/api/setShippingAddressesOnCart/setShippingAddressesOnCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that sets a shipping address on received cart. */ export default gql` mutation setShippingAddressesOnCart($input: SetShippingAddressesOnCartInput) { setShippingAddressesOnCart(input: $input) { diff --git a/packages/api-client/src/api/setShippingMethodsOnCart/index.ts b/packages/api-client/src/api/setShippingMethodsOnCart/index.ts index 7132bfeea..1c2b2f6e8 100644 --- a/packages/api-client/src/api/setShippingMethodsOnCart/index.ts +++ b/packages/api-client/src/api/setShippingMethodsOnCart/index.ts @@ -1,30 +1,30 @@ -import { FetchResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import setShippingMethodsOnCart from './setShippingMethodsOnCart'; -import { - SetShippingMethodsOnCartInput, - SetShippingMethodsOnCartMutation, - SetShippingMethodsOnCartMutationVariables, -} from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import type { FetchResult } from '@apollo/client/core'; +import type { CustomQuery } from '@vue-storefront/core'; +import setShippingMethodsOnCartMutation from './setShippingMethodsOnCart'; +import type { SetShippingMethodsOnCartInput, SetShippingMethodsOnCartMutation, SetShippingMethodsOnCartMutationVariables } from '../../types/GraphQL'; +import type { Context } from '../../types/context'; -export default async ( +/** + * Sets a shipping method on received cart. + * + * @param context VSF context + * @param input params with cart ID and shipping method. + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function setShippingMethodsOnCart( context: Context, input: SetShippingMethodsOnCartInput, customQuery: CustomQuery = { setShippingMethodsOnCart: 'setShippingMethodsOnCart' }, -): Promise> => { - const { setShippingMethodsOnCart: setShippingMethodsOnCartGQL } = context.extendQuery( - customQuery, - { - setShippingMethodsOnCart: { - query: setShippingMethodsOnCart, - variables: { input }, - }, +): Promise> { + const { setShippingMethodsOnCart: setShippingMethodsOnCartGQL } = context.extendQuery(customQuery, { + setShippingMethodsOnCart: { + query: setShippingMethodsOnCartMutation, + variables: { input }, }, - ); + }); return context.client.mutate({ mutation: setShippingMethodsOnCartGQL.query, variables: setShippingMethodsOnCartGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/setShippingMethodsOnCart/setShippingMethodsOnCart.ts b/packages/api-client/src/api/setShippingMethodsOnCart/setShippingMethodsOnCart.ts index ffd61ae18..b5ece0c82 100644 --- a/packages/api-client/src/api/setShippingMethodsOnCart/setShippingMethodsOnCart.ts +++ b/packages/api-client/src/api/setShippingMethodsOnCart/setShippingMethodsOnCart.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that sets a shipping method on received cart. */ export default gql` mutation setShippingMethodsOnCart($input: SetShippingMethodsOnCartInput) { setShippingMethodsOnCart(input: $input) { diff --git a/packages/api-client/src/api/storeConfig/index.ts b/packages/api-client/src/api/storeConfig/index.ts index 594ef550d..3546fef5c 100644 --- a/packages/api-client/src/api/storeConfig/index.ts +++ b/packages/api-client/src/api/storeConfig/index.ts @@ -1,18 +1,23 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; import { StoreConfigQuery } from '../../types/GraphQL'; -import storeConfig from './storeConfig'; +import storeConfigMutation from './storeConfig'; import { Context } from '../../types/context'; -export default async ( +/** + * Fetches the store configuration from the API + * @param context VSF Context + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function storeConfig( context: Context, customQuery: CustomQuery = { storeConfig: 'storeConfig' }, -): Promise> => { +): Promise> { const { storeConfig: storeConfigGQL } = context.extendQuery( customQuery, { storeConfig: { - query: storeConfig, + query: storeConfigMutation, }, }, ); @@ -20,4 +25,4 @@ export default async ( return context.client.query({ query: storeConfigGQL.query, }); -}; +} diff --git a/packages/api-client/src/api/storeConfig/storeConfig.ts b/packages/api-client/src/api/storeConfig/storeConfig.ts index f1c5e03b4..ebb65180c 100644 --- a/packages/api-client/src/api/storeConfig/storeConfig.ts +++ b/packages/api-client/src/api/storeConfig/storeConfig.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches store configuration from the API */ export default gql` query storeConfig { storeConfig { diff --git a/packages/api-client/src/api/subscribeEmailToNewsletter/index.ts b/packages/api-client/src/api/subscribeEmailToNewsletter/index.ts index 43b68c5b7..c9a7b8d64 100644 --- a/packages/api-client/src/api/subscribeEmailToNewsletter/index.ts +++ b/packages/api-client/src/api/subscribeEmailToNewsletter/index.ts @@ -1,30 +1,31 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import subscribeEmailToNewsletter from './subscribeEmailToNewsletter'; -import { - SubscribeEmailToNewsletterMutation, SubscribeEmailToNewsletterMutationVariables, -} from '../../types/GraphQL'; +import subscribeEmailToNewsletterMutation from './subscribeEmailToNewsletter'; +import type { SubscribeEmailToNewsletterMutation, SubscribeEmailToNewsletterMutationVariables } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Subscribes an email in the newsletter. + * @param context VSF context + * @param input params with the email to subscribe + * @param [customQuery] (optional) - custom GraphQL query that extends the default query + */ +export default async function subscribeEmailToNewsletter( context: Context, { email }: SubscribeEmailToNewsletterMutationVariables, customQuery: CustomQuery = { subscribeEmailToNewsletter: 'subscribeEmailToNewsletter' }, -): Promise> => { - const { subscribeEmailToNewsletter: subscribeEmailToNewsletterGQL } = context.extendQuery( - customQuery, - { - subscribeEmailToNewsletter: { - query: subscribeEmailToNewsletter, - variables: { - email, - }, +): Promise> { + const { subscribeEmailToNewsletter: subscribeEmailToNewsletterGQL } = context.extendQuery(customQuery, { + subscribeEmailToNewsletter: { + query: subscribeEmailToNewsletterMutation, + variables: { + email, }, }, - ); + }); return context.client.mutate({ mutation: subscribeEmailToNewsletterGQL.query, variables: subscribeEmailToNewsletterGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/subscribeEmailToNewsletter/subscribeEmailToNewsletter.ts b/packages/api-client/src/api/subscribeEmailToNewsletter/subscribeEmailToNewsletter.ts index 9a0b02c4b..367d552bf 100644 --- a/packages/api-client/src/api/subscribeEmailToNewsletter/subscribeEmailToNewsletter.ts +++ b/packages/api-client/src/api/subscribeEmailToNewsletter/subscribeEmailToNewsletter.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that subscribes an email in the newsletter. */ export default gql` mutation subscribeEmailToNewsletter($email: String!){ subscribeEmailToNewsletter(email: $email) { diff --git a/packages/api-client/src/api/updateCartItems/index.ts b/packages/api-client/src/api/updateCartItems/index.ts index 366ebb6f4..866a83e54 100644 --- a/packages/api-client/src/api/updateCartItems/index.ts +++ b/packages/api-client/src/api/updateCartItems/index.ts @@ -1,23 +1,29 @@ import { FetchResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import updateCartItems from './updateCartItems'; +import type { CustomQuery } from '@vue-storefront/core'; +import type { Context } from '../../types/context'; import { UpdateCartItemsInput, UpdateCartItemsMutation, UpdateCartItemsMutationVariables, } from '../../types/GraphQL'; -import { Context } from '../../types/context'; +import updateCartItemsMutation from './updateCartItems'; -export default async ( +/** + * Updates the contents of the given cart + * @param context VSF context + * @param input ID of the cart and the items to update it + * @param customQuery custom GraphQL query that extends the default one + */ +export default async function updateCartItems( context: Context, input: UpdateCartItemsInput, customQuery: CustomQuery = { updateCartItems: 'updateCartItems' }, -): Promise> => { +): Promise> { const { updateCartItems: updateCartItemsGQL } = context.extendQuery( customQuery, { updateCartItems: { - query: updateCartItems, + query: updateCartItemsMutation, variables: { input }, }, }, @@ -27,4 +33,4 @@ export default async ( mutation: updateCartItemsGQL.query, variables: updateCartItemsGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/updateCartItems/updateCartItems.ts b/packages/api-client/src/api/updateCartItems/updateCartItems.ts index 4da4a741e..af5082ae9 100644 --- a/packages/api-client/src/api/updateCartItems/updateCartItems.ts +++ b/packages/api-client/src/api/updateCartItems/updateCartItems.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation to update cart items */ export default gql` mutation updateCartItems($input: UpdateCartItemsInput) { updateCartItems(input: $input) { diff --git a/packages/api-client/src/api/updateCustomer/index.ts b/packages/api-client/src/api/updateCustomer/index.ts index 3f117dca4..2f1162fda 100644 --- a/packages/api-client/src/api/updateCustomer/index.ts +++ b/packages/api-client/src/api/updateCustomer/index.ts @@ -8,6 +8,9 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; +/** + * Updates the data of the current customer. To override the default query, use the `updateCustomer` query key. + */ export default async ( context: Context, input: CustomerUpdateInput, diff --git a/packages/api-client/src/api/updateCustomerAddress/index.ts b/packages/api-client/src/api/updateCustomerAddress/index.ts index 8516c89a5..256fc54c8 100644 --- a/packages/api-client/src/api/updateCustomerAddress/index.ts +++ b/packages/api-client/src/api/updateCustomerAddress/index.ts @@ -1,6 +1,6 @@ import { FetchResult } from '@apollo/client/core'; import { CustomQuery } from '@vue-storefront/core'; -import updateCustomerAddress from './updateCustomerAddress'; +import updateCustomerAddressMutation from './updateCustomerAddress'; import { CustomerAddressInput, UpdateCustomerAddressMutation, @@ -8,29 +8,33 @@ import { } from '../../types/GraphQL'; import { Context } from '../../types/context'; -export default async ( +/** + * Updates a customer address. + * + * @param context VSF Context + * @param params object with address identifier and the updated data + * @param [customQuery] (optional) custom GraphQL query that extends the default query + */ +export default async function updateCustomerAddress( context: Context, params: { addressId: number; input: CustomerAddressInput; }, customQuery: CustomQuery = { updateCustomerAddress: 'updateCustomerAddress' }, -): Promise> => { - const { updateCustomerAddress: updateCustomerAddressGQL } = context.extendQuery( - customQuery, - { - updateCustomerAddress: { - query: updateCustomerAddress, - variables: { - id: params.addressId, - input: params.input, - }, +): Promise> { + const { updateCustomerAddress: updateCustomerAddressGQL } = context.extendQuery(customQuery, { + updateCustomerAddress: { + query: updateCustomerAddressMutation, + variables: { + id: params.addressId, + input: params.input, }, }, - ); + }); return context.client.mutate({ mutation: updateCustomerAddressGQL.query, variables: updateCustomerAddressGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/updateCustomerAddress/updateCustomerAddress.ts b/packages/api-client/src/api/updateCustomerAddress/updateCustomerAddress.ts index 249fca615..a495d44dc 100644 --- a/packages/api-client/src/api/updateCustomerAddress/updateCustomerAddress.ts +++ b/packages/api-client/src/api/updateCustomerAddress/updateCustomerAddress.ts @@ -1,5 +1,6 @@ import gql from 'graphql-tag'; +/** GraphQL Mutation that updates a customer address. */ export default gql` mutation updateCustomerAddress($id: Int!, $input: CustomerAddressInput) { updateCustomerAddress(id: $id, input: $input) { diff --git a/packages/api-client/src/api/upsellProduct/index.ts b/packages/api-client/src/api/upsellProduct/index.ts index 9f40a81ab..09da6ee02 100644 --- a/packages/api-client/src/api/upsellProduct/index.ts +++ b/packages/api-client/src/api/upsellProduct/index.ts @@ -1,13 +1,14 @@ -import gql from 'graphql-tag'; -import { ApolloQueryResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import { +import type { ApolloQueryResult } from '@apollo/client/core'; +import type { CustomQuery } from '@vue-storefront/core'; +import upsellProducts from './upsellProducts'; +import type { Context } from '../../types/context'; +import type { GetProductSearchParams } from '../../types/API'; +import type { ProductAttributeFilterInput, - ProductAttributeSortInput, UpsellProductsQuery, UpsellProductsQueryVariables, + ProductAttributeSortInput, + UpsellProductsQuery, + UpsellProductsQueryVariables, } from '../../types/GraphQL'; -import upsellProducts from './upsellProducts'; -import { Context } from '../../types/context'; -import { GetProductSearchParams } from '../../types/API'; type Variables = { pageSize: number; @@ -17,6 +18,9 @@ type Variables = { sort?: ProductAttributeSortInput; }; +/** + * Returns upsell products matching the provided parameters. To override the default query, use the `upsellProducts` query key. + */ export default async ( context: Context, searchParams?: GetProductSearchParams, diff --git a/packages/api-client/src/api/urlResolver/index.ts b/packages/api-client/src/api/urlResolver/index.ts index d68e9f14f..6a0d26779 100644 --- a/packages/api-client/src/api/urlResolver/index.ts +++ b/packages/api-client/src/api/urlResolver/index.ts @@ -1,26 +1,30 @@ -import { ApolloQueryResult } from '@apollo/client/core'; -import { CustomQuery } from '@vue-storefront/core'; -import { UrlResolverQuery, UrlResolverQueryVariables } from '../../types/GraphQL'; -import urlResolver from './urlResolver'; -import { Context } from '../../types/context'; +import type { ApolloQueryResult } from '@apollo/client/core'; +import type { CustomQuery } from '@vue-storefront/core'; +import type { UrlResolverQuery, UrlResolverQueryVariables } from '../../types/GraphQL'; +import urlResolverQuery from './urlResolver'; +import type { Context } from '../../types/context'; -export default async ( +/** + * Fetches the resolver for received URL. + * + * @param context VSF Context + * @param url the URL to be resolved + * @param [customQuery] (optional) - custom GraphQL query that extends the default one + */ +export default async function urlResolver( context: Context, url: string, customQuery: CustomQuery = { urlResolver: 'urlResolver' }, -): Promise> => { - const { urlResolver: urlResolverGQL } = context.extendQuery( - customQuery, - { - urlResolver: { - query: urlResolver, - variables: { url }, - }, +): Promise> { + const { urlResolver: urlResolverGQL } = context.extendQuery(customQuery, { + urlResolver: { + query: urlResolverQuery, + variables: { url }, }, - ); + }); return context.client.query({ query: urlResolverGQL.query, variables: urlResolverGQL.variables, }); -}; +} diff --git a/packages/api-client/src/api/urlResolver/urlResolver.ts b/packages/api-client/src/api/urlResolver/urlResolver.ts index 1d4c3b2fb..9f1de1715 100644 --- a/packages/api-client/src/api/urlResolver/urlResolver.ts +++ b/packages/api-client/src/api/urlResolver/urlResolver.ts @@ -1,11 +1,12 @@ import gql from 'graphql-tag'; +/** GraphQL Query that fetches the resolver for received URL. */ export default gql` query urlResolver($url: String!) { - urlResolver(url:$url) { - id, - redirectCode, - relative_url, + urlResolver(url: $url) { + id + redirectCode + relative_url type entity_uid } diff --git a/packages/api-client/src/helpers/apiClient/defaultSettings.ts b/packages/api-client/src/helpers/apiClient/defaultSettings.ts index e0bccc073..c2133a6e2 100644 --- a/packages/api-client/src/helpers/apiClient/defaultSettings.ts +++ b/packages/api-client/src/helpers/apiClient/defaultSettings.ts @@ -23,6 +23,9 @@ export const defaultSettings: ClientConfig = { setLocale: () => {}, getCountry: () => '', setCountry: () => {}, + setMessage: () => {}, + // @ts-ignore + getMessage: () => ({}), }, externalCheckout: { enable: false, diff --git a/packages/api-client/src/helpers/magentoLink/graphQl.ts b/packages/api-client/src/helpers/magentoLink/graphQl.ts index ce2b1e245..1a21e7e5d 100644 --- a/packages/api-client/src/helpers/magentoLink/graphQl.ts +++ b/packages/api-client/src/helpers/magentoLink/graphQl.ts @@ -11,11 +11,15 @@ import { Logger } from '@vue-storefront/core'; import { onError } from '@apollo/client/link/error'; import { RetryLink } from '@apollo/client/link/retry'; import { setContext } from '@apollo/client/link/context'; +import AgentKeepAlive from 'agentkeepalive'; import { handleRetry } from './linkHandlers'; import { Config } from '../../types/setup'; import possibleTypes from '../../types/possibleTypes.json'; import standardURL from '../url/standardURL'; +const { HttpsAgent } = AgentKeepAlive; +const agent = new HttpsAgent(); + const createErrorHandler = () => onError(({ graphQLErrors, networkError, @@ -60,6 +64,9 @@ export const apolloLinkFactory = (settings: Config, handlers?: { uri: settings.api, // @ts-ignore fetch: (url, options) => fetch(standardURL(url), options), + fetchOptions: { + agent, + }, ...settings.customApolloHttpLinkOptions, }); diff --git a/packages/api-client/src/types/GraphQL.ts b/packages/api-client/src/types/GraphQL.ts index c4b78fc00..91f401bf7 100644 --- a/packages/api-client/src/types/GraphQL.ts +++ b/packages/api-client/src/types/GraphQL.ts @@ -660,13 +660,13 @@ export interface Cart { /** The entered gift message for the cart */ gift_message?: Maybe; /** The unique ID for a `Cart` object */ - id: Scalars['ID']; - is_virtual: Scalars['Boolean']; + id?: Maybe; + is_virtual: Maybe; items?: Maybe>>; prices?: Maybe; selected_payment_method?: Maybe; - shipping_addresses: Array>; - total_quantity: Scalars['Float']; + shipping_addresses?: Maybe>>; + total_quantity?: Maybe; } export interface CartAddressCountry { diff --git a/packages/api-client/src/types/setup.ts b/packages/api-client/src/types/setup.ts index ac480ecc0..cebc7b295 100644 --- a/packages/api-client/src/types/setup.ts +++ b/packages/api-client/src/types/setup.ts @@ -38,16 +38,25 @@ export type Store = { export type ConfigState = { getCartId(): string; setCartId(id?: string | null): void; + removeCartId(): void; getCustomerToken(): string; setCustomerToken(token?: string | null): void; + removeCustomerToken(): void; getStore(): string; setStore(id?: string | null): void; + removeStore(): void; getCurrency(): string; setCurrency(id?: string | null): void; + removeCurrency(): void; getLocale(): string; setLocale(id?: string | null): void; + removeLocale(): void; getCountry(): string; setCountry(id?: string | null): void; + removeCountry(): void; + getMessage(): T; + setMessage(id?: T | null): void; + removeMessage(): void; }; export interface ClientConfig { @@ -84,6 +93,7 @@ export interface Config extends ClientConfig { storage: Storage; customOptions?: ApolloClientOptions; customApolloHttpLinkOptions?: HttpOptions; + magentoApiEndpoint: string; overrides: MagentoApiMethods; recaptcha: RecaptchaConfig; } diff --git a/packages/api-client/tsconfig.json b/packages/api-client/tsconfig.json index 2a7588488..7a4f18ffa 100644 --- a/packages/api-client/tsconfig.json +++ b/packages/api-client/tsconfig.json @@ -1,15 +1,17 @@ { - "extends": "../../tsconfig.base.json", - "include": ["src"], - "exclude": ["node_modules", "lib"], + "extends": "../../tsconfig.json", "compilerOptions": { - "lib": ["ESNext"], - "resolveJsonModule": true, + "outDir": "./lib", "rootDir": "./src", - "declaration": true, - "declarationDir": "./lib", - "declarationMap": true, - "sourceMap": true + "baseUrl": "./", + "lib": [] }, - "files": ["types/shims-graphql.d.ts"] + "include": [ + "src/**/*" + ], + "exclude": [ + "__tests__", + "lib", + "node_modules" + ] } diff --git a/packages/composables/.lintstagedrc b/packages/composables/.lintstagedrc deleted file mode 100644 index 9b476f414..000000000 --- a/packages/composables/.lintstagedrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "*.{js,jsx}": [ - "eslint --fix" - ], - "*.{ts,tsx}": [ - "eslint --fix" - ], -} diff --git a/packages/composables/README.md b/packages/composables/README.md index 2b211aa20..8c0ad9648 100644 --- a/packages/composables/README.md +++ b/packages/composables/README.md @@ -71,20 +71,16 @@ Find more information about the module [GraphQl Custom Config](https://github.co ``` 3. Checkout develop branch `git checkout develop` 4. Run `yarn` to install dependencies -5. Define a store running environment by adding a `STORE_ENV` to your running project or execute the code +5. Copy `.env.example` to `.env` ```bash - $ echo "STORE_ENV=dev" >> .env + $ cp packages/theme/.env.example packages/theme/.env ``` -6. Copy `config/example.json` to an environment named config and update GraphQL Endpoint - ```bash - $ cp packages/theme/config/example.json packages/theme/config/dev.json - ``` -7. Update `magentoGraphQl` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. +6. Update `VSF_MAGENTO_GRAPHQL_URL` with url to Magento >=2.4.2 GraphQL endpoint, and the other variable accordingly to your store configurations. ``` - "magentoGraphQl": "https://{YOUR_SITE_FRONT_URL}/graphql", + VSF_MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql ``` -8. Build dependencies `yarn build:api-client && yarn build:composables` -9. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` +7. Build dependencies `yarn build:api-client && yarn build:composables` +8. Run `yarn dev:theme` to run theme. You can find other commands in `package.json` - If you need HMR on Api Client/Composables run `yarn dev:api-client` or `yarn dev:composables` on a separate terminal window. ## Resources diff --git a/packages/composables/babel.config.js b/packages/composables/babel.config.js new file mode 100644 index 000000000..d3540f51b --- /dev/null +++ b/packages/composables/babel.config.js @@ -0,0 +1,9 @@ +module.exports = { + presets: [ + ['@babel/preset-env', { + targets: { + node: 'current' + } + }] + ] +}; diff --git a/packages/composables/jest.config.js b/packages/composables/jest.config.js index 6d23ed571..65abac5c8 100644 --- a/packages/composables/jest.config.js +++ b/packages/composables/jest.config.js @@ -21,8 +21,8 @@ module.exports = { }, testEnvironment: 'jsdom', transform: { - '^.+\\.(ts)$': 'ts-jest', - '^.+\\.js$': 'babel-jest', + '^.+\\.(m)js$': 'babel-jest', + '^.+\\.ts$': 'ts-jest' }, transformIgnorePatterns: [ 'node_modules', diff --git a/packages/composables/nuxt/plugin.js b/packages/composables/nuxt/plugin.js index 00a24f3f1..d3b40aa7f 100644 --- a/packages/composables/nuxt/plugin.js +++ b/packages/composables/nuxt/plugin.js @@ -1,10 +1,11 @@ -import { integrationPlugin } from '@vue-storefront/core' +import { integrationPlugin } from '@vue-storefront/magento-theme/helpers/integrationPlugin' import { mapConfigToSetupObject } from '@vue-storefront/magento/nuxt/helpers'; import defaultConfig from '@vue-storefront/magento/nuxt/defaultConfig'; import cookie from '@vue-storefront/magento/nuxt/cookie'; const moduleOptions = JSON.parse('<%= JSON.stringify(options) %>'); +// TODO should be moved to THEME and expose consistent cookie management API export default integrationPlugin(({ app, res, req, integration }) => { const cartCookieName = moduleOptions.cookies?.cartCookieName || defaultConfig.cookies.cartCookieName; const customerCookieName = moduleOptions.cookies?.customerCookieName || defaultConfig.cookies.customerCookieName; diff --git a/packages/composables/package.json b/packages/composables/package.json index 7f14c33c3..525729113 100644 --- a/packages/composables/package.json +++ b/packages/composables/package.json @@ -1,19 +1,25 @@ { "name": "@vue-storefront/magento", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "license": "MIT", "homepage": "https://github.com/vuestorefront/magento2", "bugs": { "url": "https://github.com/vuestorefront/magento2/issues" }, "sideEffects": false, - "main": "lib/index.cjs.js", - "module": "lib/index.es.js", - "tsModule": "src/index.ts", + "main": "./lib/index.js", + "exports": { + ".": "./lib/index.js", + "./nuxt": "./nuxt/index.js", + "./package.json": "./package.json" + }, "types": "lib/index.d.ts", "scripts": { - "build": "rimraf lib && rollup -c", - "dev": "rimraf lib && rollup -c -w", + "build": "yarn build:clear && yarn build:package && yarn build:types", + "build:clear": "rimraf lib", + "build:package": "node ../../scripts/build --file=src/index.ts", + "build:types": "tsc --emitDeclarationOnly", + "dev": "yarn build:package --watch", "lint:fix": "eslint ./src --ext .ts,.vue --fix", "precommit": "lint-staged", "prepublish": "yarn build", @@ -22,8 +28,8 @@ "update:update": "ncu -u" }, "dependencies": { - "@vue-storefront/core": "~2.5.4", - "@vue-storefront/magento-api": "^1.0.0-rc.6", + "@vue-storefront/core": "~2.5.6", + "@vue-storefront/magento-api": "^1.0.0-rc.7", "@vue/composition-api": "^1.4.1", "cookie-universal": "^2.1.5", "vue": "^2.6.14", diff --git a/packages/composables/rollup.config.js b/packages/composables/rollup.config.js deleted file mode 100644 index 10dc02f5e..000000000 --- a/packages/composables/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import pkg from './package.json'; -import { generateBaseConfig } from '../../rollup.base.config'; - -export default generateBaseConfig(pkg); diff --git a/packages/composables/src/composables/useAddresses/index.ts b/packages/composables/src/composables/useAddresses/index.ts index f060077a9..5f697fad8 100644 --- a/packages/composables/src/composables/useAddresses/index.ts +++ b/packages/composables/src/composables/useAddresses/index.ts @@ -1,4 +1,7 @@ /* eslint-disable no-param-reassign, consistent-return */ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, @@ -30,7 +33,7 @@ CustomQueryParams, SaveAddressInput, UpdateAddressInput, RemoveAddressInput> = { - load: async (context: Context, params?: CustomQueryParams) => { + load: async (context: Context) => { Logger.debug('[Magento] load user addresses'); const { data } = await context.$magento.api.getCustomerAddresses(); diff --git a/packages/composables/src/composables/useBilling/index.ts b/packages/composables/src/composables/useBilling/index.ts index bffdbc76e..969206577 100644 --- a/packages/composables/src/composables/useBilling/index.ts +++ b/packages/composables/src/composables/useBilling/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, diff --git a/packages/composables/src/composables/useCart/index.ts b/packages/composables/src/composables/useCart/index.ts index 414ff787d..34466777f 100644 --- a/packages/composables/src/composables/useCart/index.ts +++ b/packages/composables/src/composables/useCart/index.ts @@ -1,5 +1,6 @@ -/* istanbul ignore file */ -/* eslint-disable no-param-reassign */ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, diff --git a/packages/composables/src/composables/useCategory/index.ts b/packages/composables/src/composables/useCategory/index.ts index d5f33bee2..7df449a7b 100644 --- a/packages/composables/src/composables/useCategory/index.ts +++ b/packages/composables/src/composables/useCategory/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { useCategoryFactory, Context, diff --git a/packages/composables/src/composables/useCategorySearch/index.ts b/packages/composables/src/composables/useCategorySearch/index.ts index f023ff9b8..29c6eae27 100644 --- a/packages/composables/src/composables/useCategorySearch/index.ts +++ b/packages/composables/src/composables/useCategorySearch/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, } from '@vue-storefront/core'; diff --git a/packages/composables/src/composables/useConfig/index.ts b/packages/composables/src/composables/useConfig/index.ts index 8e8af7a1b..6772402be 100644 --- a/packages/composables/src/composables/useConfig/index.ts +++ b/packages/composables/src/composables/useConfig/index.ts @@ -1,4 +1,7 @@ -import {Context, Logger} from '@vue-storefront/core'; +/** + * @deprecated since version 1.0.0 + */ +import { Context, Logger } from '@vue-storefront/core'; import { StoreConfig } from '@vue-storefront/magento-api'; import { useConfigFactory, UseConfigFactoryParams } from '../../factories/useConfigFactory'; import { UseConfig } from '../../types/composables'; diff --git a/packages/composables/src/composables/useContent/index.ts b/packages/composables/src/composables/useContent/index.ts index 2de6bb29c..e1fe69146 100644 --- a/packages/composables/src/composables/useContent/index.ts +++ b/packages/composables/src/composables/useContent/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger } from '@vue-storefront/core'; import { Page, CmsBlock } from '@vue-storefront/magento-api'; import { useContentFactory, UseContentFactoryParams } from '../../factories/useContentFactory'; diff --git a/packages/composables/src/composables/useCountrySearch/index.ts b/packages/composables/src/composables/useCountrySearch/index.ts index 46b3f99d7..deca96596 100644 --- a/packages/composables/src/composables/useCountrySearch/index.ts +++ b/packages/composables/src/composables/useCountrySearch/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, } from '@vue-storefront/core'; diff --git a/packages/composables/src/composables/useCurrency/index.ts b/packages/composables/src/composables/useCurrency/index.ts index f117b04fe..008da2dbd 100644 --- a/packages/composables/src/composables/useCurrency/index.ts +++ b/packages/composables/src/composables/useCurrency/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context } from '@vue-storefront/core'; import { Currency } from '@vue-storefront/magento-api'; import { useCurrencyFactory, UseCurrencyFactoryParams } from '../../factories/useCurrencyFactory'; diff --git a/packages/composables/src/composables/useCustomMutation/index.ts b/packages/composables/src/composables/useCustomMutation/index.ts index 174a9f773..6e8d24632 100644 --- a/packages/composables/src/composables/useCustomMutation/index.ts +++ b/packages/composables/src/composables/useCustomMutation/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger } from '@vue-storefront/core'; import { FetchPolicy } from '../../types'; import { useCustomMutationFactory } from '../../factories/useMutationQueryFactory'; diff --git a/packages/composables/src/composables/useCustomQuery/index.ts b/packages/composables/src/composables/useCustomQuery/index.ts index f0cd387e9..fd14f404f 100644 --- a/packages/composables/src/composables/useCustomQuery/index.ts +++ b/packages/composables/src/composables/useCustomQuery/index.ts @@ -1,3 +1,7 @@ +/** + * @deprecated Will be removed in 1.1.0 release + * @use @vue-storefront/magento-theme/composables/useApi instead + */ import { Context, Logger } from '@vue-storefront/core'; import { useCustomQueryFactory, diff --git a/packages/composables/src/composables/useExternalCheckout/index.ts b/packages/composables/src/composables/useExternalCheckout/index.ts index f96c4b6b8..b42f4ca86 100644 --- a/packages/composables/src/composables/useExternalCheckout/index.ts +++ b/packages/composables/src/composables/useExternalCheckout/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger } from '@vue-storefront/core'; import { useExternalCheckoutFactory, UseExternalCheckoutFactoryParams } from '../../factories/useExternalCheckoutFactory'; import useCart from '../useCart'; diff --git a/packages/composables/src/composables/useFacet/_utils.ts b/packages/composables/src/composables/useFacet/_utils.ts index 83a4441e4..9d8297f2a 100644 --- a/packages/composables/src/composables/useFacet/_utils.ts +++ b/packages/composables/src/composables/useFacet/_utils.ts @@ -1,3 +1,5 @@ +// @depracated - moved to theme + import { SearchData } from '../../types'; const buildBreadcrumbsList = (rootCat, bc) => { diff --git a/packages/composables/src/composables/useFacet/index.ts b/packages/composables/src/composables/useFacet/index.ts index ea6fb2581..3d4a5ff30 100644 --- a/packages/composables/src/composables/useFacet/index.ts +++ b/packages/composables/src/composables/useFacet/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, @@ -58,6 +61,9 @@ const constructSortObject = (sortData: string) => { return baseData.length > 0 ? Object.fromEntries([baseData]) : {}; }; +/** + * @deprecated since version 1.0.0 + */ const factoryParams = { // eslint-disable-next-line @typescript-eslint/no-unused-vars search: async (context: Context, params: ComposableFunctionArgs>) => { diff --git a/packages/composables/src/composables/useForgotPassword/index.ts b/packages/composables/src/composables/useForgotPassword/index.ts index 8dba9e13c..24133c018 100644 --- a/packages/composables/src/composables/useForgotPassword/index.ts +++ b/packages/composables/src/composables/useForgotPassword/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, useForgotPasswordFactory, diff --git a/packages/composables/src/composables/useGetShippingMethods/index.ts b/packages/composables/src/composables/useGetShippingMethods/index.ts index c77087d2e..288df08bb 100644 --- a/packages/composables/src/composables/useGetShippingMethods/index.ts +++ b/packages/composables/src/composables/useGetShippingMethods/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, } from '@vue-storefront/core'; diff --git a/packages/composables/src/composables/useGuestUser/index.ts b/packages/composables/src/composables/useGuestUser/index.ts index 7074561fd..8c4054926 100644 --- a/packages/composables/src/composables/useGuestUser/index.ts +++ b/packages/composables/src/composables/useGuestUser/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { SetGuestEmailOnCartInput } from '@vue-storefront/magento-api'; import { Logger } from '@vue-storefront/core'; import { useGuestUserFactory, UseGuestUserFactoryParams } from '../../factories/useGuestUserFactory'; diff --git a/packages/composables/src/composables/useMakeOrder/index.ts b/packages/composables/src/composables/useMakeOrder/index.ts index 41179c28c..08089256b 100644 --- a/packages/composables/src/composables/useMakeOrder/index.ts +++ b/packages/composables/src/composables/useMakeOrder/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, UseMakeOrder, useMakeOrderFactory, UseMakeOrderFactoryParams, } from '@vue-storefront/core'; diff --git a/packages/composables/src/composables/useNewsletter/index.ts b/packages/composables/src/composables/useNewsletter/index.ts index 434aae0ee..10edf4d0b 100644 --- a/packages/composables/src/composables/useNewsletter/index.ts +++ b/packages/composables/src/composables/useNewsletter/index.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, } from '@vue-storefront/core'; diff --git a/packages/composables/src/composables/usePaymentProvider/index.ts b/packages/composables/src/composables/usePaymentProvider/index.ts index 255ab316b..281712780 100644 --- a/packages/composables/src/composables/usePaymentProvider/index.ts +++ b/packages/composables/src/composables/usePaymentProvider/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, diff --git a/packages/composables/src/composables/useProduct/index.ts b/packages/composables/src/composables/useProduct/index.ts index 81854b4bc..c1b20659a 100644 --- a/packages/composables/src/composables/useProduct/index.ts +++ b/packages/composables/src/composables/useProduct/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, diff --git a/packages/composables/src/composables/useRelatedProducts/index.ts b/packages/composables/src/composables/useRelatedProducts/index.ts index c14c1124d..89e02efb1 100644 --- a/packages/composables/src/composables/useRelatedProducts/index.ts +++ b/packages/composables/src/composables/useRelatedProducts/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, diff --git a/packages/composables/src/composables/useReview/index.ts b/packages/composables/src/composables/useReview/index.ts index 2ee3abe5d..ee2b930c3 100644 --- a/packages/composables/src/composables/useReview/index.ts +++ b/packages/composables/src/composables/useReview/index.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, diff --git a/packages/composables/src/composables/useShipping/index.ts b/packages/composables/src/composables/useShipping/index.ts index dbbc1ba92..33bb092cc 100644 --- a/packages/composables/src/composables/useShipping/index.ts +++ b/packages/composables/src/composables/useShipping/index.ts @@ -1,3 +1,7 @@ +/** + * @deprecated since version 1.0.0 + */ + import { Context, Logger, diff --git a/packages/composables/src/composables/useShippingProvider/index.ts b/packages/composables/src/composables/useShippingProvider/index.ts index 7f360d356..f961c5b6a 100644 --- a/packages/composables/src/composables/useShippingProvider/index.ts +++ b/packages/composables/src/composables/useShippingProvider/index.ts @@ -1,3 +1,7 @@ +/** + * @deprecated since version 1.0.0 + */ + import { Context, Logger, diff --git a/packages/composables/src/composables/useStore/index.ts b/packages/composables/src/composables/useStore/index.ts index 34b8a99b9..cf2e38511 100644 --- a/packages/composables/src/composables/useStore/index.ts +++ b/packages/composables/src/composables/useStore/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context } from '@vue-storefront/core'; import { AvailableStores, StoreConfig } from '@vue-storefront/magento-api'; import { useStoreFactory, UseStoreFactoryParams } from '../../factories/useStoreFactory'; diff --git a/packages/composables/src/composables/useUpsellProducts/index.ts b/packages/composables/src/composables/useUpsellProducts/index.ts index 20abe500a..81d5a812d 100644 --- a/packages/composables/src/composables/useUpsellProducts/index.ts +++ b/packages/composables/src/composables/useUpsellProducts/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, Context, diff --git a/packages/composables/src/composables/useUrlResolver/index.ts b/packages/composables/src/composables/useUrlResolver/index.ts index afd01bbe9..eb1f7d658 100644 --- a/packages/composables/src/composables/useUrlResolver/index.ts +++ b/packages/composables/src/composables/useUrlResolver/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger } from '@vue-storefront/core'; import { Route } from '@vue-storefront/magento-api'; import { useUrlResolverFactory, UseUrlResolverFactoryParams } from '../../factories/useUrlResolverFactory'; diff --git a/packages/composables/src/composables/useUser/index.ts b/packages/composables/src/composables/useUser/index.ts index c105e7f7b..1542fbfb6 100644 --- a/packages/composables/src/composables/useUser/index.ts +++ b/packages/composables/src/composables/useUser/index.ts @@ -1,11 +1,14 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { - Context, Logger, + Context, + CustomQuery, + Logger, useUserFactory, UseUserFactoryParams as UserUserFactoryParamsBase, } from '@vue-storefront/core'; import { CustomerCreateInput, UpdateCustomerEmailMutationVariables } from '@vue-storefront/magento-api'; -import { CustomQuery } from '@vue-storefront/core/lib/src/types'; import useCart from '../useCart'; import { generateUserData } from '../../helpers/userDataGenerator'; @@ -174,6 +177,7 @@ CustomerCreateInput return factoryParams.load(context); }, + changePassword: async (context: Context, params) => { Logger.debug('[Magento] changing user password'); const { data, errors } = await context.$magento.api.changeCustomerPassword(params); diff --git a/packages/composables/src/composables/useUserBilling/index.ts b/packages/composables/src/composables/useUserBilling/index.ts index ed316d010..d2b9dbb33 100644 --- a/packages/composables/src/composables/useUserBilling/index.ts +++ b/packages/composables/src/composables/useUserBilling/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, diff --git a/packages/composables/src/composables/useUserOrder/index.ts b/packages/composables/src/composables/useUserOrder/index.ts index ac641d67b..24099be8d 100644 --- a/packages/composables/src/composables/useUserOrder/index.ts +++ b/packages/composables/src/composables/useUserOrder/index.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, diff --git a/packages/composables/src/composables/useUserShipping/index.ts b/packages/composables/src/composables/useUserShipping/index.ts index 69d81b707..de231d6c1 100644 --- a/packages/composables/src/composables/useUserShipping/index.ts +++ b/packages/composables/src/composables/useUserShipping/index.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, diff --git a/packages/composables/src/composables/useWishlist/index.ts b/packages/composables/src/composables/useWishlist/index.ts index f657abb7a..a238636aa 100644 --- a/packages/composables/src/composables/useWishlist/index.ts +++ b/packages/composables/src/composables/useWishlist/index.ts @@ -1,5 +1,6 @@ -/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/require-await */ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { Context, Logger, @@ -8,6 +9,9 @@ import useUser from '../useUser'; import { findItemOnWishlist } from '../../helpers/findItemOnWishlist'; import { useWishlistFactory, UseWishlistFactoryParams } from '../../factories/useWishlistFactory'; +/** + * @deprecated since version 1.0.0 + */ // @ts-ignore const factoryParams: UseWishlistFactoryParams = { provide() { diff --git a/packages/composables/src/factories/useAddressesFactory.ts b/packages/composables/src/factories/useAddressesFactory.ts index 47a18b20d..0ef63c9f1 100644 --- a/packages/composables/src/factories/useAddressesFactory.ts +++ b/packages/composables/src/factories/useAddressesFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { configureFactoryParams, Context, @@ -5,9 +8,10 @@ import { FactoryParams, Logger, sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; import { computed, Ref } from '@vue/composition-api'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { CustomQueryParams, UseAddresses, UseAddressesErrors } from '../types/composables'; export interface UseAddressesParams) => Promise; } +/** + * @deprecated since version 1.0.0 + */ export const useAddressesFactory = extends FactoryParams { load: (context: Context, params: ComposableFunctionArgs<{ realCart?: boolean; }>) => Promise; diff --git a/packages/composables/src/factories/useCategorySearchFactory.ts b/packages/composables/src/factories/useCategorySearchFactory.ts index 46d8494ab..6d57e185a 100644 --- a/packages/composables/src/factories/useCategorySearchFactory.ts +++ b/packages/composables/src/factories/useCategorySearchFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed } from '@vue/composition-api'; import { configureFactoryParams, @@ -5,8 +8,9 @@ import { FactoryParams, Logger, sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseCategorySearch, UseCategorySearchErrors } from '../types/composables'; export interface UseCategorySearchFactory extends FactoryParams { diff --git a/packages/composables/src/factories/useConfigFactory.ts b/packages/composables/src/factories/useConfigFactory.ts index 727ccb060..cb6b81b50 100644 --- a/packages/composables/src/factories/useConfigFactory.ts +++ b/packages/composables/src/factories/useConfigFactory.ts @@ -1,11 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed } from '@vue/composition-api'; import { Context, sharedRef, Logger, - configureFactoryParams, FactoryParams, ComposableFunctionArgs, + configureFactoryParams, + FactoryParams, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseConfig } from '../types/composables'; export interface UseConfigFactoryParams extends FactoryParams{ diff --git a/packages/composables/src/factories/useContentFactory.ts b/packages/composables/src/factories/useContentFactory.ts index d8a3069bc..771bee30d 100644 --- a/packages/composables/src/factories/useContentFactory.ts +++ b/packages/composables/src/factories/useContentFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed, Ref } from '@vue/composition-api'; import { ComposableFunctionArgs, @@ -6,8 +9,8 @@ import { FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseContentErrors, UseContent } from '../types/composables'; export interface UseContentFactoryParams extends FactoryParams{ diff --git a/packages/composables/src/factories/useCountrySearchFactory.ts b/packages/composables/src/factories/useCountrySearchFactory.ts index 957c0b191..b51aed631 100644 --- a/packages/composables/src/factories/useCountrySearchFactory.ts +++ b/packages/composables/src/factories/useCountrySearchFactory.ts @@ -1,11 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed } from '@vue/composition-api'; import { Context, sharedRef, Logger, - configureFactoryParams, FactoryParams, ComposableFunctionArgs, + configureFactoryParams, + FactoryParams, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseCountrySearch, UseCountrySearchErrors } from '../types/composables'; export interface UseCountryFactoryParams extends FactoryParams{ diff --git a/packages/composables/src/factories/useCurrencyFactory.ts b/packages/composables/src/factories/useCurrencyFactory.ts index 17e00874a..294b4ea5b 100644 --- a/packages/composables/src/factories/useCurrencyFactory.ts +++ b/packages/composables/src/factories/useCurrencyFactory.ts @@ -1,12 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed } from '@vue/composition-api'; import { Context, sharedRef, Logger, configureFactoryParams, - FactoryParams, ComposableFunctionArgs, + FactoryParams, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseCurrency } from '../types/composables'; export interface UseCurrencyFactoryParams extends FactoryParams { diff --git a/packages/composables/src/factories/useCustomQueryFactory.ts b/packages/composables/src/factories/useCustomQueryFactory.ts index e08337e3a..9ea5b52f2 100644 --- a/packages/composables/src/factories/useCustomQueryFactory.ts +++ b/packages/composables/src/factories/useCustomQueryFactory.ts @@ -1,12 +1,16 @@ +/** + * @deprecated Will be removed in 1.1.0 release + * @use @vue-storefront/magento-theme/composables/useApi instead + */ import { configureFactoryParams, Context, FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; import { computed } from '@vue/composition-api'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { FetchPolicy } from '../types'; import { UseCustomQuery } from '../types/composables'; diff --git a/packages/composables/src/factories/useExternalCheckoutFactory.ts b/packages/composables/src/factories/useExternalCheckoutFactory.ts index e1c753daa..fd8be7198 100644 --- a/packages/composables/src/factories/useExternalCheckoutFactory.ts +++ b/packages/composables/src/factories/useExternalCheckoutFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ComposableFunctionArgs, configureFactoryParams, @@ -5,9 +8,9 @@ import { FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; import { computed } from '@vue/composition-api'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseExternalCheckout } from '../types/composables'; export interface UseExternalCheckoutFactoryParams extends FactoryParams { diff --git a/packages/composables/src/factories/useForgotPasswordFactory.ts b/packages/composables/src/factories/useForgotPasswordFactory.ts index ae2c50954..d8414b60f 100644 --- a/packages/composables/src/factories/useForgotPasswordFactory.ts +++ b/packages/composables/src/factories/useForgotPasswordFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Ref, computed } from '@vue/composition-api'; import { ComposableFunctionArgs, diff --git a/packages/composables/src/factories/useGetShippingMethodsFactory.ts b/packages/composables/src/factories/useGetShippingMethodsFactory.ts index d5e034797..b76ec4fb2 100644 --- a/packages/composables/src/factories/useGetShippingMethodsFactory.ts +++ b/packages/composables/src/factories/useGetShippingMethodsFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed, Ref } from '@vue/composition-api'; import { ComposableFunctionArgs, @@ -6,8 +9,8 @@ import { FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseGetShippingMethods, UseGetShippingMethodsErrors } from '../types/composables'; export interface UseGetShippingMethodsFactory extends FactoryParams { diff --git a/packages/composables/src/factories/useGuestUserFactory.ts b/packages/composables/src/factories/useGuestUserFactory.ts index 549ac9015..89dab407a 100644 --- a/packages/composables/src/factories/useGuestUserFactory.ts +++ b/packages/composables/src/factories/useGuestUserFactory.ts @@ -1,12 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { Ref, computed } from '@vue/composition-api'; import { Context, configureFactoryParams, FactoryParams, Logger, - sharedRef, ComposableFunctionArgs, + sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseGuestUser, UseGuestUserErrors } from '../types/composables'; export interface UseGuestUserFactoryParams extends FactoryParams { diff --git a/packages/composables/src/factories/usePaymentProviderFactory.ts b/packages/composables/src/factories/usePaymentProviderFactory.ts index 1668d99fe..ac6fda02b 100644 --- a/packages/composables/src/factories/usePaymentProviderFactory.ts +++ b/packages/composables/src/factories/usePaymentProviderFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Ref, computed } from '@vue/composition-api'; import { ComposableFunctionArgs, @@ -6,8 +9,8 @@ import { FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UsePaymentProvider, UsePaymentProviderErrors } from '../types/composables'; export interface UsePaymentProviderParams extends FactoryParams { diff --git a/packages/composables/src/factories/useRelatedProductsFactory.ts b/packages/composables/src/factories/useRelatedProductsFactory.ts index 80132e72e..54e5bf676 100644 --- a/packages/composables/src/factories/useRelatedProductsFactory.ts +++ b/packages/composables/src/factories/useRelatedProductsFactory.ts @@ -1,13 +1,17 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed, Ref } from '@vue/composition-api'; import { - configureFactoryParams, Context, - CustomQuery, + configureFactoryParams, + Context, FactoryParams, Logger, ProductsSearchParams, sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseRelatedProducts, UseRelatedProductsErrors } from '../types/composables'; export interface UseRelatedProductsFactoryParams< diff --git a/packages/composables/src/factories/useReviewFactory.ts b/packages/composables/src/factories/useReviewFactory.ts index ea2d4b5d1..bf4896af5 100644 --- a/packages/composables/src/factories/useReviewFactory.ts +++ b/packages/composables/src/factories/useReviewFactory.ts @@ -1,14 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { Ref, computed } from '@vue/composition-api'; import { ComposableFunctionArgs, configureFactoryParams, Context, - CustomQuery, FactoryParams, Logger, sharedRef, + PlatformApi, } from '@vue-storefront/core'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseReview, UseReviewErrors } from '../types/composables'; export interface UseReviewFactoryParams extends FactoryParams { diff --git a/packages/composables/src/factories/useUpsellProductsFactory.ts b/packages/composables/src/factories/useUpsellProductsFactory.ts index 98f64902c..d73818778 100644 --- a/packages/composables/src/factories/useUpsellProductsFactory.ts +++ b/packages/composables/src/factories/useUpsellProductsFactory.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { computed, Ref } from '@vue/composition-api'; import { configureFactoryParams, @@ -5,9 +8,11 @@ import { Logger, Context, ProductsSearchParams, - sharedRef, UseProductFactoryParams, + sharedRef, + UseProductFactoryParams, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseUpsellProducts, UseUpsellProductsErrors } from '../types/composables'; export interface UseUpsellProductsFactoryParams< diff --git a/packages/composables/src/factories/useUrlResolverFactory.ts b/packages/composables/src/factories/useUrlResolverFactory.ts index aa014c012..853733c6c 100644 --- a/packages/composables/src/factories/useUrlResolverFactory.ts +++ b/packages/composables/src/factories/useUrlResolverFactory.ts @@ -1,12 +1,16 @@ +/** + * @deprecated since version 1.0.0 + */ import { configureFactoryParams, Context, FactoryParams, Logger, sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; import { computed } from '@vue/composition-api'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseUrlResolver } from '../types/composables'; export interface UseUrlResolverFactoryParams extends FactoryParams { diff --git a/packages/composables/src/factories/useWishlistFactory.ts b/packages/composables/src/factories/useWishlistFactory.ts index 8fe11a60f..2bf155c17 100644 --- a/packages/composables/src/factories/useWishlistFactory.ts +++ b/packages/composables/src/factories/useWishlistFactory.ts @@ -1,7 +1,7 @@ -import { - Ref, - computed, -} from '@vue/composition-api'; +/** + * @deprecated since version 1.0.0 + */ +import { Ref } from '@vue/composition-api'; import { configureFactoryParams, Context, @@ -9,8 +9,9 @@ import { FactoryParams, Logger, sharedRef, + ComposableFunctionArgs, + PlatformApi, } from '@vue-storefront/core'; -import { ComposableFunctionArgs, PlatformApi } from '@vue-storefront/core/lib/src/types'; import { UseWishlist, UseWishlistErrors } from '../types/composables'; export interface UseWishlistFactoryParams boolean; } +/** + * @deprecated since version 1.0.0 + */ export const useWishlistFactory = ( factoryParams: UseWishlistFactoryParams, ) => { diff --git a/packages/composables/src/getVueContext.ts b/packages/composables/src/getVueContext.ts deleted file mode 100644 index b789510be..000000000 --- a/packages/composables/src/getVueContext.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable no-param-reassign */ -import { EffectScope } from '@vue/composition-api'; -import { NuxtAppOptions } from '@nuxt/types/app'; -import { getContextProperty } from './helpers/getContextProperty'; - -export const extendScopeContext = (scope: EffectScope, app: NuxtAppOptions) => { - // @ts-ignore - if (scope.vm) { - // @ts-ignore - scope.vm.interceptors = getContextProperty(app, 'interceptors'); - // @ts-ignore - scope.vm.i18n = getContextProperty(app, 'i18n'); - // @ts-ignore - scope.vm.routing = getContextProperty(app, 'routing'); - // @ts-ignore - scope.vm.magento = getContextProperty(app, 'magento'); - } -}; diff --git a/packages/composables/src/getters/_utils.ts b/packages/composables/src/getters/_utils.ts index f7b31bb3c..2ac3c9851 100644 --- a/packages/composables/src/getters/_utils.ts +++ b/packages/composables/src/getters/_utils.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { AgnosticAttribute } from '@vue-storefront/core'; import { Product } from '@vue-storefront/magento-api'; @@ -17,8 +20,11 @@ export const getVariantByAttributes = (products: Product[], attributes: any): Pr return null; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const configurationKeys = Object.keys(attributes); + // @ts-ignore return products[0].configurable_children.find((product) => configurationKeys + // @ts-ignore .every((attrName) => product[attrName] && product[attrName] === attributes[attrName])) || products[0].configurable_children[0]; }; diff --git a/packages/composables/src/getters/addressGetter.ts b/packages/composables/src/getters/addressGetter.ts index a0bd18293..7422ceb51 100644 --- a/packages/composables/src/getters/addressGetter.ts +++ b/packages/composables/src/getters/addressGetter.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Countries, Country } from '@vue-storefront/magento-api'; import { AddressGetter } from '../types'; diff --git a/packages/composables/src/getters/cartGetters.ts b/packages/composables/src/getters/cartGetters.ts index 5432d8b59..7aede9417 100644 --- a/packages/composables/src/getters/cartGetters.ts +++ b/packages/composables/src/getters/cartGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { CartGetters as CartGettersBase, AgnosticPrice, @@ -13,6 +16,7 @@ import { Product, SelectedShippingMethod, ConfigurableCartItem, ProductInterface, } from '@vue-storefront/magento-api'; + import productGetters from './productGetters'; import { AgnosticPaymentMethod } from '../types'; @@ -133,7 +137,7 @@ export const getTotalItems = (cart: Cart): number => { return cart.total_quantity; }; -export const getConfiguredVariant = (product: ConfigurableCartItem): ProductInterface | {} => product?.configured_variant || {}; +export const getConfiguredVariant = (product: ConfigurableCartItem): ProductInterface | null => product?.configured_variant || null; // eslint-disable-next-line import/no-named-as-default-member export const getFormattedPrice = (price: number) => productGetters.getFormattedPrice(price); @@ -145,7 +149,7 @@ export const getCoupons = (cart: Cart): AgnosticCoupon[] => (Array.isArray(cart? code: c.code, } as AgnosticCoupon)) : []); -export const getDiscounts = (cart: Cart): AgnosticDiscount[] => (Array.isArray(cart?.prices.discounts) ? cart.prices.discounts.map((d) => ({ +export const getDiscounts = (cart: Cart): AgnosticDiscount[] => (Array.isArray(cart?.prices?.discounts) ? cart.prices.discounts.map((d) => ({ id: d.label, name: d.label, description: '', @@ -176,6 +180,7 @@ export interface CartGetters extends CartGettersBase { getSelectedShippingMethod(cart: Cart): SelectedShippingMethod | null; productHasSpecialPrice(product: CartItem): boolean; getStockStatus(product: CartItem): string; + getConfiguredVariant(product: ConfigurableCartItem): ProductInterface | null; } const cartGetters: CartGetters = { diff --git a/packages/composables/src/getters/categoryGetters.ts b/packages/composables/src/getters/categoryGetters.ts index 5a90b2c5c..4298c4c6e 100644 --- a/packages/composables/src/getters/categoryGetters.ts +++ b/packages/composables/src/getters/categoryGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { CategoryGetters, AgnosticCategoryTree, AgnosticBreadcrumb } from '@vue-storefront/core'; import { Category } from '@vue-storefront/magento-api'; import { buildCategoryTree } from '../helpers/buildCategoryTree'; diff --git a/packages/composables/src/getters/checkoutGetters.ts b/packages/composables/src/getters/checkoutGetters.ts index bd6ba115f..b3945143c 100644 --- a/packages/composables/src/getters/checkoutGetters.ts +++ b/packages/composables/src/getters/checkoutGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ShippingMethod } from '@vue-storefront/magento-api'; import productGetters from './productGetters'; diff --git a/packages/composables/src/getters/facetGetters.ts b/packages/composables/src/getters/facetGetters.ts index 95ce57217..59192e0df 100644 --- a/packages/composables/src/getters/facetGetters.ts +++ b/packages/composables/src/getters/facetGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { FacetsGetters, AgnosticCategoryTree, diff --git a/packages/composables/src/getters/forgotPasswordGetters.ts b/packages/composables/src/getters/forgotPasswordGetters.ts index bbf9a2081..60e9376a3 100644 --- a/packages/composables/src/getters/forgotPasswordGetters.ts +++ b/packages/composables/src/getters/forgotPasswordGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { ForgotPasswordGetters } from '@vue-storefront/core'; // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/composables/src/getters/index.ts b/packages/composables/src/getters/index.ts index dc38dba8b..ad8e2e5a1 100644 --- a/packages/composables/src/getters/index.ts +++ b/packages/composables/src/getters/index.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ export { default as addressGetter } from './addressGetter'; export { default as cartGetters } from './cartGetters'; export { default as categoryGetters } from './categoryGetters'; diff --git a/packages/composables/src/getters/orderGetters.ts b/packages/composables/src/getters/orderGetters.ts index c4fe7d502..6512be9ec 100644 --- a/packages/composables/src/getters/orderGetters.ts +++ b/packages/composables/src/getters/orderGetters.ts @@ -1,5 +1,6 @@ -/* istanbul ignore file */ - +/** + * @deprecated since version 1.0.0 + */ import { AgnosticPagination } from '@vue-storefront/core'; export const getDate = (order: any): string => new Date(order?.created_at).toLocaleDateString() || ''; diff --git a/packages/composables/src/getters/productGetters.ts b/packages/composables/src/getters/productGetters.ts index abd2d7af7..630016e1f 100644 --- a/packages/composables/src/getters/productGetters.ts +++ b/packages/composables/src/getters/productGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { AgnosticAttribute, AgnosticBreadcrumb, diff --git a/packages/composables/src/getters/reviewGetters.ts b/packages/composables/src/getters/reviewGetters.ts index ec2cae0f0..2bf2ca85c 100644 --- a/packages/composables/src/getters/reviewGetters.ts +++ b/packages/composables/src/getters/reviewGetters.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { ReviewGetters, AgnosticRateCount } from '@vue-storefront/core'; import { ProductReview, diff --git a/packages/composables/src/getters/storeConfigGetters.ts b/packages/composables/src/getters/storeConfigGetters.ts index 4f9a5bdea..85c24792a 100644 --- a/packages/composables/src/getters/storeConfigGetters.ts +++ b/packages/composables/src/getters/storeConfigGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { StoreConfig } from '@vue-storefront/magento-api'; const getCode = (config: StoreConfig) => config.store_code; diff --git a/packages/composables/src/getters/storeGetters.ts b/packages/composables/src/getters/storeGetters.ts index ed5c1f52d..279c3999b 100644 --- a/packages/composables/src/getters/storeGetters.ts +++ b/packages/composables/src/getters/storeGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { AvailableStores, StoreConfig } from '@vue-storefront/magento-api'; // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/composables/src/getters/userAddressesGetters.ts b/packages/composables/src/getters/userAddressesGetters.ts index 3b9ebd1d3..110344e71 100644 --- a/packages/composables/src/getters/userAddressesGetters.ts +++ b/packages/composables/src/getters/userAddressesGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { UserAddressesGetters as BaseGetters } from '../types/getters'; import { transformUserGetter } from '../helpers/userAddressManipulator'; diff --git a/packages/composables/src/getters/userBillingGetters.ts b/packages/composables/src/getters/userBillingGetters.ts index 3ba53e7ec..21bfdbb0c 100644 --- a/packages/composables/src/getters/userBillingGetters.ts +++ b/packages/composables/src/getters/userBillingGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { UserBillingGetters as BaseGetters } from '@vue-storefront/core'; interface UserBillingGetters extends BaseGetters{ diff --git a/packages/composables/src/getters/userGetters.ts b/packages/composables/src/getters/userGetters.ts index 3193fcb7b..2c4c52f96 100644 --- a/packages/composables/src/getters/userGetters.ts +++ b/packages/composables/src/getters/userGetters.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { UserGetters as BaseUserGetters } from '@vue-storefront/core'; import { Customer } from '@vue-storefront/magento-api'; diff --git a/packages/composables/src/getters/userShippingGetters.ts b/packages/composables/src/getters/userShippingGetters.ts index 8e6b76cb5..b1c7c3798 100644 --- a/packages/composables/src/getters/userShippingGetters.ts +++ b/packages/composables/src/getters/userShippingGetters.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { Logger, UserShippingGetters } from '@vue-storefront/core'; const userShippingGetters: UserShippingGetters = { diff --git a/packages/composables/src/getters/wishlistGetters.ts b/packages/composables/src/getters/wishlistGetters.ts index a856a1dba..97763ad9a 100644 --- a/packages/composables/src/getters/wishlistGetters.ts +++ b/packages/composables/src/getters/wishlistGetters.ts @@ -1,4 +1,6 @@ -/* istanbul ignore file */ +/** + * @deprecated since version 1.0.0 + */ import { WishlistGetters as BaseWishlistGetters, AgnosticPrice, diff --git a/packages/composables/src/helpers/buildCategoryTree.ts b/packages/composables/src/helpers/buildCategoryTree.ts index cba4842fd..272b5556a 100644 --- a/packages/composables/src/helpers/buildCategoryTree.ts +++ b/packages/composables/src/helpers/buildCategoryTree.ts @@ -1,4 +1,6 @@ -import { Category } from '@vue-storefront/magento-api'; +/** + * @deprecated since version 1.0.0 + */ import { AgnosticCategoryTree } from '@vue-storefront/core'; import { htmlDecode } from './htmlDecoder'; diff --git a/packages/composables/src/helpers/compareWishlist.ts b/packages/composables/src/helpers/compareWishlist.ts index 6d7febe63..fedb79c66 100644 --- a/packages/composables/src/helpers/compareWishlist.ts +++ b/packages/composables/src/helpers/compareWishlist.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ export const compareWishlistProduct = ( productA, productB, diff --git a/packages/composables/src/helpers/findItemOnWishlist.ts b/packages/composables/src/helpers/findItemOnWishlist.ts index 8170d7088..a1b037688 100644 --- a/packages/composables/src/helpers/findItemOnWishlist.ts +++ b/packages/composables/src/helpers/findItemOnWishlist.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { compareWishlistProduct } from './compareWishlist'; export const findItemOnWishlist = (currentWishlist, product) => { diff --git a/packages/composables/src/helpers/getContextProperty.ts b/packages/composables/src/helpers/getContextProperty.ts deleted file mode 100644 index 9a898d2ba..000000000 --- a/packages/composables/src/helpers/getContextProperty.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const getContextProperty = (object: Record, name: string) => ( - object?.[`$${name}`] - || object?.[name]) as RETURN_TYPE; diff --git a/packages/composables/src/helpers/htmlDecoder.ts b/packages/composables/src/helpers/htmlDecoder.ts index 577dec84b..2e23e5247 100644 --- a/packages/composables/src/helpers/htmlDecoder.ts +++ b/packages/composables/src/helpers/htmlDecoder.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ export function htmlDecode(input) { const formatName = () => { try { diff --git a/packages/composables/src/helpers/userAddressManipulator.ts b/packages/composables/src/helpers/userAddressManipulator.ts index ebc2a9669..1219dad16 100644 --- a/packages/composables/src/helpers/userAddressManipulator.ts +++ b/packages/composables/src/helpers/userAddressManipulator.ts @@ -1,3 +1,6 @@ +/** + * @deprecated since version 1.0.0 + */ import { CustomerAddressInput } from '@vue-storefront/magento-api'; export const transformUserCreateAddressInput = (addressInputParams): CustomerAddressInput => { diff --git a/packages/composables/src/helpers/userDataGenerator.ts b/packages/composables/src/helpers/userDataGenerator.ts index 5d9830de1..d9446bd41 100644 --- a/packages/composables/src/helpers/userDataGenerator.ts +++ b/packages/composables/src/helpers/userDataGenerator.ts @@ -1,5 +1,9 @@ import { CustomerUpdateParameters } from '@vue-storefront/magento-api'; +/** + * @deprecated + * @use packages/theme/helpers/customer/userDataGenerator.ts + */ export const generateUserData = (userData): CustomerUpdateParameters => { const baseData = { email: userData.email, diff --git a/packages/composables/src/index.ts b/packages/composables/src/index.ts index 374dd5067..26126739d 100644 --- a/packages/composables/src/index.ts +++ b/packages/composables/src/index.ts @@ -4,7 +4,6 @@ import { track } from '@vue-storefront/core'; track('VSFMagento'); export * from './getters'; -export * from './getVueContext'; export { default as useAddresses } from './composables/useAddresses'; export { default as useBilling } from './composables/useBilling'; @@ -39,3 +38,12 @@ export { default as useUserOrder } from './composables/useUserOrder'; export { default as useUserShipping } from './composables/useUserShipping'; export { default as useWishlist } from './composables/useWishlist'; export * from './dataTypes'; +export * from './types'; +export * from './types/getters'; +export * from './helpers/userAddressManipulator'; +export * from './helpers/htmlDecoder'; +export { + Countries, Discount, + SelectedShippingMethod, ConfigurableCartItem, ProductInterface, ProductReviewRatingMetadata, + ProductReviews, WishlistQuery, +} from '@vue-storefront/magento-api'; diff --git a/packages/composables/src/types/composables.ts b/packages/composables/src/types/composables.ts index 6fe22188b..17e5d2b9d 100644 --- a/packages/composables/src/types/composables.ts +++ b/packages/composables/src/types/composables.ts @@ -3,9 +3,9 @@ import { ComposableFunctionArgs, ComputedProperty, CustomQuery, + PlatformApi, } from '@vue-storefront/core'; import { ComputedRef, Ref } from '@vue/composition-api'; -import { PlatformApi } from '@vue-storefront/core/lib/src/types'; import { FetchPolicy } from './index'; export type CustomQueryParams = { customQuery?: CustomQuery; [k: string]: any }; diff --git a/packages/composables/tsconfig.json b/packages/composables/tsconfig.json index 2ce4272ae..343ba1c69 100644 --- a/packages/composables/tsconfig.json +++ b/packages/composables/tsconfig.json @@ -1,18 +1,20 @@ { - "extends": "../../tsconfig.base.json", - "include": ["src"], - "exclude": ["node_modules", "lib"], + "extends": "../../tsconfig.json", "compilerOptions": { - "lib": ["DOM", "ESNext"], - "resolveJsonModule": true, + "outDir": "./lib", "rootDir": "./src", - "declaration": true, - "declarationDir": "./lib", - "sourceMap": true, - "importHelpers": true, - "allowJs": true, - "allowSyntheticDefaultImports": true, - "declarationMap": true, + "baseUrl": "./", + "lib": [ + "DOM" + ] }, + "include": [ + "src/**/*" + ], + "exclude": [ + "__tests__", + "lib", + "node_modules" + ], "files": ["types/shims-graphql.d.ts"] } diff --git a/packages/theme/.env.example b/packages/theme/.env.example index 5ef8ad12b..49567a852 100644 --- a/packages/theme/.env.example +++ b/packages/theme/.env.example @@ -1,27 +1,29 @@ -STORE_ENV=dev -STORE_URL=http://localhost:3000 -NUXT_APP_ENV=development -NUXT_APP_PORT=3000 -MAGENTO_GRAPHQL=https://{YOUR_SITE_FRONT_URL}/graphql -MAGENTO_EXTERNAL_CHECKOUT=false -MAGENTO_EXTERNAL_CHECKOUT_URL=https://{YOUR_SITE_FRONT_URL} -MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH=/vue/cart/sync -MAGENTO_BASE_URL={YOUR_SITE_FRONT_URL} -IMAGE_PROVIDER={YOUR_IMAGE_PROVIDER} -IMAGE_PROVIDER_BASE_URL={YOUR_IMAGE_PROVIDER_BASE_URL} -MAGENTO_BASE_URL={YOUR_SITE_FRONT_URL} -IMAGE_PROVIDER={YOUR_IMAGE_PROVIDER} -IMAGE_PROVIDER_BASE_URL={YOUR_IMAGE_PROVIDER_BASE_URL} -REDIS__HOST=127.0.0.1 -REDIS__PORT=6379 -REDIS_PASSWORD= -REDIS__KEY_PREFIX= -REDIS__CACHE_INVALIDATE_URL=/cache-invalidate -REDIS__ENABLED=false -RECAPTCHA_ENABLED=true -RECAPTCHA_HIDE_BADGE=false -RECAPTCHA_VERSION=3 -RECAPTCHA_SITE_KEY= -RECAPTCHA_SECRET_KEY= -RECAPTCHA_SIZE=invisible -RECAPTCHA_MIN_SCORE=0.5 +VSF_NUXT_APP_ENV=development +VSF_NUXT_APP_PORT=3000 + +VSF_STORE_URL=http://localhost:3000 + +VSF_MAGENTO_BASE_URL={YOUR_SITE_FRONT_URL} +VSF_MAGENTO_GRAPHQL_URL=https://{YOUR_SITE_FRONT_URL}/graphql + +VSF_MAGENTO_EXTERNAL_CHECKOUT_ENABLED=false +VSF_MAGENTO_EXTERNAL_CHECKOUT_URL=https://{YOUR_SITE_FRONT_URL} +VSF_MAGENTO_EXTERNAL_CHECKOUT_SYNC_PATH=/vue/cart/sync + +VSF_IMAGE_PROVIDER=cloudinary +VSF_IMAGE_PROVIDER_BASE_URL=https://res-4.cloudinary.com/{YOUR_ID}/image/upload/ +VSF_IMAGE_PROVIDER_DOMAIN=https://res-4.cloudinary.com + +VSF_REDIS_ENABLED=false +VSF_REDIS_HOST=127.0.0.1 +VSF_REDIS_PORT=6379 +VSF_REDIS_KEY_PREFIX= +VSF_REDIS_CACHE_INVALIDATE_URL=/cache-invalidate + +VSF_RECAPTCHA_ENABLED=false +VSF_RECAPTCHA_SITE_KEY= +VSF_RECAPTCHA_SECRET_KEY= +VSF_RECAPTCHA_HIDE_BADGE= +VSF_RECAPTCHA_SIZE=invisible +VSF_RECAPTCHA_MIN_SCORE=0.5 +VSF_RECAPTCHA_VERSION=3 diff --git a/packages/theme/.gitignore b/packages/theme/.gitignore index 0751876ef..a9a70a5cb 100644 --- a/packages/theme/.gitignore +++ b/packages/theme/.gitignore @@ -93,6 +93,5 @@ sw.* *.swp version -.env -!config/example.json -config/*.json +.env.* +!.env.example diff --git a/packages/theme/.lintstagedrc b/packages/theme/.lintstagedrc deleted file mode 100644 index ceb502920..000000000 --- a/packages/theme/.lintstagedrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "*.{js,jsx}": [ - "eslint --fix" - ], - "*.{ts,tsx}": [ - "eslint --fix" - ], - "*.{vue}": [ - "eslint --fix" - ], -} diff --git a/packages/theme/components/AppFooter.vue b/packages/theme/components/AppFooter.vue index 159499209..1a0b3043b 100644 --- a/packages/theme/components/AppFooter.vue +++ b/packages/theme/components/AppFooter.vue @@ -72,7 +72,7 @@ import { SfFooter, SfList, SfImage, SfMenuItem, } from '@storefront-ui/vue'; -import { addBasePath } from '@vue-storefront/core'; +import { addBasePath } from '~/helpers/addBasePath'; export default { components: { diff --git a/packages/theme/components/AppHeader.vue b/packages/theme/components/AppHeader.vue index caf482052..0c279e337 100644 --- a/packages/theme/components/AppHeader.vue +++ b/packages/theme/components/AppHeader.vue @@ -2,23 +2,14 @@
- + diff --git a/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductGrid.spec.ts b/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductGrid.spec.ts index d1bb9d173..54fb332ca 100644 --- a/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductGrid.spec.ts +++ b/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductGrid.spec.ts @@ -8,6 +8,16 @@ import { productsMock } from './productsMock'; const localVue = createLocalVue(); localVue.use(PiniaVuePlugin); +jest.mock('~/composables', () => { + const originalComposables = jest.requireActual('~/composables'); + return { + ...originalComposables, + useUiNotification: jest.fn(() => ({ + send: jest.fn(), + })), + }; +}); + describe('CategoryProductGrid', () => { it('shows skeleton loader when loading', async () => { const { findAllByTestId } = render(CategoryProductGrid, { props: { loading: true, products: [] }, localVue, pinia: createTestingPinia() }); diff --git a/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductList.spec.ts b/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductList.spec.ts index c66ca0bc1..51eeaced6 100644 --- a/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductList.spec.ts +++ b/packages/theme/modules/catalog/category/components/views/__tests__/CategoryProductList.spec.ts @@ -8,6 +8,16 @@ import CategoryProductList from '../CategoryProductList.vue'; const localVue = createLocalVue(); localVue.use(PiniaVuePlugin); +jest.mock('~/composables', () => { + const originalComposables = jest.requireActual('~/composables'); + return { + ...originalComposables, + useUiNotification: jest.fn(() => ({ + send: jest.fn(), + })), + }; +}); + describe('CategoryProductList', () => { it.each([ [true, true], diff --git a/packages/theme/modules/catalog/category/components/views/useProductsWithCommonCardProps.ts b/packages/theme/modules/catalog/category/components/views/useProductsWithCommonCardProps.ts index cc66612d4..7019fe2c9 100644 --- a/packages/theme/modules/catalog/category/components/views/useProductsWithCommonCardProps.ts +++ b/packages/theme/modules/catalog/category/components/views/useProductsWithCommonCardProps.ts @@ -40,6 +40,7 @@ export const useProductsWithCommonProductCardProps = (products: Ref) const priceProps = { regularPrice: context.app.$fc(price.regular), specialPrice: price.special && context.app.$fc(getPrice(product).special), + maximumPrice: price.maximum && context.app.$fc(getPrice(product).maximum), }; const reviewProps = { @@ -47,7 +48,7 @@ export const useProductsWithCommonProductCardProps = (products: Ref) scoreRating: getAverageRating(product), }; - const link = context.app.localePath(`/p/${getProductSku(product)}${getSlug(product, product.categories[0])}`); + const link = context.localeRoute({ name: 'product', params: { id: getProductSku(product), slug: getSlug(product).slice(1) } }); const commonProps = { title: getName(product), diff --git a/packages/theme/modules/catalog/category/composables/useCategorySearch/index.ts b/packages/theme/modules/catalog/category/composables/useCategorySearch/index.ts index e74aad84d..88c495211 100644 --- a/packages/theme/modules/catalog/category/composables/useCategorySearch/index.ts +++ b/packages/theme/modules/catalog/category/composables/useCategorySearch/index.ts @@ -4,8 +4,10 @@ import type { CategorySearchQueryVariables, CategoryTree } from '~/modules/Graph import type { UseCategorySearchErrors, UseCategorySearchInterface } from './useCategorySearch'; /** - * The `useCategorySearch()` composable allows searching for categories. It is + * The `useCategorySearch` composable allows searching for categories. It is * commonly used in subtrees navigation. + * + * See the {@link UseCategorySearchInterface} for a list of methods and values available in this composable. */ export function useCategorySearch(): UseCategorySearchInterface { const { app } = useContext(); diff --git a/packages/theme/modules/catalog/category/composables/useCategorySearch/useCategorySearch.ts b/packages/theme/modules/catalog/category/composables/useCategorySearch/useCategorySearch.ts index 083a8177e..3839e2bd2 100644 --- a/packages/theme/modules/catalog/category/composables/useCategorySearch/useCategorySearch.ts +++ b/packages/theme/modules/catalog/category/composables/useCategorySearch/useCategorySearch.ts @@ -3,18 +3,23 @@ import type { CategorySearchQueryVariables, CategoryTree } from '~/modules/Graph import type { ComposableFunctionArgs } from '~/composables/types'; /** - * The {@link useCategorySearch} error object. The properties values' are the - * errors thrown by its methods. + * Errors that occured in the {@link useCategorySearch|useCategorySearch()} composable */ export interface UseCategorySearchErrors { - /** Error when searching for categories fails, otherwise is `null`. */ + /** + * Contains error if `search` method failed, otherwise is `null` + */ search: Error | null; } -/** The params received by {@link useCategorySearch}'s `search` method. */ +/** + * The params object accepted by the `search` method in the {@link useCategorySearch|useCategorySearch()} composable + */ export type UseCategorySearchParams = ComposableFunctionArgs; -/** The interface provided by {@link useCategorySearch} composable. */ +/** + * The refs and methods returned by the {@link useCategorySearch|useCategorySearch()} composable + */ export interface UseCategorySearchInterface { /** * Searches for categories using the received filters and updates the @@ -22,7 +27,9 @@ export interface UseCategorySearchInterface { */ search(searchParams: UseCategorySearchParams): Promise; - /** Contains errors from any of the composable methods. */ + /** + * Contains errors from the composable methods + */ error: DeepReadonly>; /** @@ -31,6 +38,8 @@ export interface UseCategorySearchInterface { */ result: DeepReadonly>; - /** Indicates whether any of the composable methods is in progress. */ + /** + * Indicates whether any of the methods is in progress + */ loading: Readonly>; } diff --git a/packages/theme/modules/catalog/category/composables/useFacet/PerPageOptions.ts b/packages/theme/modules/catalog/category/composables/useFacet/PerPageOptions.ts new file mode 100644 index 000000000..eb39693ff --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/PerPageOptions.ts @@ -0,0 +1 @@ +export const PerPageOptions = [10, 20, 50]; diff --git a/packages/theme/modules/catalog/category/composables/useFacet/SortingOptions.ts b/packages/theme/modules/catalog/category/composables/useFacet/SortingOptions.ts new file mode 100644 index 000000000..f7c8a2da5 --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/SortingOptions.ts @@ -0,0 +1,35 @@ +export enum SortingOptionsValuesEnum { + DEFAULT = '', + NAME_ASC = 'name_ASC', + NAME_DESC = 'name_DESC', + PRICE_ASC = 'price_ASC', + PRICE_DESC = 'price_DESC', +} + +export interface SortingOptionsInterface { + label: string, + value: SortingOptionsValuesEnum +} + +export const SortingOptions: SortingOptionsInterface[] = [ + { + label: 'Sort: Default', + value: SortingOptionsValuesEnum.DEFAULT, + }, + { + label: 'Sort: Name A-Z', + value: SortingOptionsValuesEnum.NAME_ASC, + }, + { + label: 'Sort: Name Z-A', + value: SortingOptionsValuesEnum.NAME_DESC, + }, + { + label: 'Sort: Price from low to high', + value: SortingOptionsValuesEnum.PRICE_ASC, + }, + { + label: 'Sort: Price from high to low', + value: SortingOptionsValuesEnum.PRICE_DESC, + }, +]; diff --git a/packages/theme/modules/catalog/category/composables/useFacet/getFacetData.gql.ts b/packages/theme/modules/catalog/category/composables/useFacet/getFacetData.gql.ts new file mode 100644 index 000000000..1a441d25e --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/getFacetData.gql.ts @@ -0,0 +1,58 @@ +import { gql } from 'graphql-request'; + +/** + * GraphQL Query that fetches products using received search term and the params + * for filter, sort and pagination. + */ +export default gql` + query getFacetData($search: String = "", $filter: ProductAttributeFilterInput, $pageSize: Int = 10, $currentPage: Int = 1, $sort: ProductAttributeSortInput) { + products(search: $search, filter: $filter, pageSize: $pageSize, currentPage: $currentPage, sort: $sort) { + items { + __typename + uid + sku + name + stock_status + only_x_left_in_stock + thumbnail { + url + position + disabled + label + } + url_key + url_rewrites { + url + } + price_range { + maximum_price { + final_price { + currency + value + } + regular_price { + currency + value + } + } + minimum_price { + final_price { + currency + value + } + regular_price { + currency + value + } + } + } + } + page_info { + current_page + page_size + total_pages + } + total_count + } + } +`; diff --git a/packages/theme/modules/catalog/category/composables/useFacet/index.ts b/packages/theme/modules/catalog/category/composables/useFacet/index.ts new file mode 100644 index 000000000..87eff824e --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/index.ts @@ -0,0 +1,76 @@ +import { readonly, ref } from '@nuxtjs/composition-api'; +import { Logger } from '~/helpers/logger'; +import type { ComposableFunctionArgs } from '~/composables/types'; +import type { GetProductSearchParams } from '~/modules/catalog/product/types'; +import useApi from '~/composables/useApi'; +import { SortingOptions } from '~/modules/catalog/category/composables/useFacet/SortingOptions'; +import { PerPageOptions } from '~/modules/catalog/category/composables/useFacet/PerPageOptions'; +import { createProductAttributeFilterInput } from '~/modules/catalog/category/composables/useFacet/input/createProductAttributeFilterInput'; +import { createProductAttributeSortInput } from '~/modules/catalog/category/composables/useFacet/input/createProductAttributeSortInput'; +import { Products } from '~/modules/GraphQL/types'; +import GetFacetDataQuery from './getFacetData.gql'; +import type { + UseFacetInterface, UseFacetErrors, UseFacetSearchResult, FacetSearchParams, +} from './useFacet'; + +/** + * The `useFacet()` composable allows searching for products using facets. + * + * What makes it powerful is the ability to accept multiple filters, allowing to + * narrow down the results to a specific category, search term, etc. + */ +export function useFacet(): UseFacetInterface { + const { query } = useApi(); + const loading = ref(false); + const result = ref({ data: null, input: null }); + const error = ref({ + search: null, + }); + const defaultItemsPerPage = 20; + const search = async (params?: ComposableFunctionArgs) => { + Logger.debug('useFacet/search', params); + + result.value.input = params; + try { + loading.value = true; + + const pageSize = params.itemsPerPage ? params.itemsPerPage : defaultItemsPerPage; + + const productSearchParams: GetProductSearchParams = { + pageSize, + search: params.term ? params.term : '', + filter: createProductAttributeFilterInput(params), + sort: createProductAttributeSortInput(params.sort || ''), + currentPage: params.page, + }; + + const { products } = await query<{ products: Products }>(GetFacetDataQuery, productSearchParams); + + Logger.debug('[Result]:', { products }); + + result.value.data = { + items: products?.items ?? [], + total: products?.total_count, + availableSortingOptions: SortingOptions, + perPageOptions: PerPageOptions, + itemsPerPage: pageSize, + }; + error.value.search = null; + } catch (err) { + error.value.search = err; + Logger.error('useFacet/search', err); + } finally { + loading.value = false; + } + }; + + return { + search, + result, + error: readonly(error), + loading: readonly(loading), + }; +} + +export * from './useFacet'; +export default useFacet; diff --git a/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeFilterInput.ts b/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeFilterInput.ts new file mode 100644 index 000000000..2d2f7df41 --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeFilterInput.ts @@ -0,0 +1,37 @@ +import { ProductAttributeFilterInput } from '~/modules/GraphQL/types'; +import type { ComposableFunctionArgs } from '~/composables'; +import type { FacetSearchParams } from '../useFacet'; + +export const rangeFilters = ['price']; + +export function createProductAttributeFilterInput(params: ComposableFunctionArgs): ProductAttributeFilterInput { + const attributeFilter = {}; + const inputFilters = params?.filters ?? {}; + + const categoryFilter = { + category_id: { in: [params.categoryId, ...inputFilters.category_id ?? []] }, + }; + + Object.keys(inputFilters).forEach((key: string) => { + if (rangeFilters.includes(key)) { + const range = { from: 0, to: 0 }; + const flatValue = inputFilters[key] + .flatMap((inputFilter) => inputFilter.split('_')) + .map((str: string) => Number.parseFloat(str)) + .sort((a, b) => a - b); + + [range.from] = flatValue; + range.to = flatValue[flatValue.length - 1]; + + attributeFilter[key] = range; + } else if (typeof inputFilters[key] === 'string') { + attributeFilter[key] = { eq: inputFilters[key] }; + } else if (inputFilters[key].length === 1) { + attributeFilter[key] = { eq: inputFilters[key][0] }; + } else { + attributeFilter[key] = { in: inputFilters[key] }; + } + }); + + return { ...attributeFilter, ...categoryFilter }; +} diff --git a/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeSortInput.ts b/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeSortInput.ts new file mode 100644 index 000000000..9d6394a57 --- /dev/null +++ b/packages/theme/modules/catalog/category/composables/useFacet/input/createProductAttributeSortInput.ts @@ -0,0 +1,7 @@ +import { ProductAttributeSortInput } from '~/modules/GraphQL/types'; + +export function createProductAttributeSortInput(sortData: string): ProductAttributeSortInput { + const baseData = sortData.split(/_/gi); + + return baseData.length > 0 ? Object.fromEntries([baseData]) : {}; +} diff --git a/packages/theme/composables/useFacet/useFacet.ts b/packages/theme/modules/catalog/category/composables/useFacet/useFacet.ts similarity index 55% rename from packages/theme/composables/useFacet/useFacet.ts rename to packages/theme/modules/catalog/category/composables/useFacet/useFacet.ts index 3640caba8..a22152ea8 100644 --- a/packages/theme/composables/useFacet/useFacet.ts +++ b/packages/theme/modules/catalog/category/composables/useFacet/useFacet.ts @@ -1,16 +1,43 @@ import type { DeepReadonly, Ref } from '@nuxtjs/composition-api'; -import type { AgnosticFacetSearchParams, ComposableFunctionArgs } from '~/composables/types'; +import type { ComposableFunctionArgs } from '~/composables/types'; +import { ProductInterface } from '~/modules/GraphQL/types'; +import { SortingOptionsInterface } from '~/modules/catalog/category/composables/useFacet/SortingOptions'; + +/** + * The {@link useFacet} search params data structure + */ +export interface FacetSearchParams { + categorySlug?: string; + rootCatSlug?: string; + term?: string; + page?: number; + itemsPerPage?: number; + sort?: string; + filters?: Record; + metadata?: any; + [x: string]: any; +} + +/** + * The {@link useFacet} search result data structure + */ +export interface SearchResultData { + items: ProductInterface[], + total: number, + availableSortingOptions: SortingOptionsInterface[], + perPageOptions: number[], + itemsPerPage: number +} /** * The {@link useFacet} search results contain the parameters used to filter and * the obtained data that matches it. */ -export interface UseFacetSearchResult { +export interface UseFacetSearchResult { /** The data obtained in the search. */ - data: DATA; - + data: SearchResultData; /** The parameters used to filter the search. */ - input: AgnosticFacetSearchParams; + input: FacetSearchParams; } /** @@ -23,7 +50,7 @@ export interface UseFacetErrors { } /** The params received by {@link useFacet}'s `search` method. */ -export type UseFacetSearchParams = ComposableFunctionArgs; +export type UseFacetSearchParams = ComposableFunctionArgs; /** The interface provided by {@link useFacet} composable. */ export interface UseFacetInterface { @@ -39,7 +66,7 @@ export interface UseFacetInterface { * * Read {@link UseFacetSearchResult} documentation for more details. */ - result: Ref>; + result: Ref; /** Indicates whether any of the composable methods is in progress. */ loading: Readonly>; diff --git a/packages/theme/modules/catalog/category/config/__tests__/filtersConfig.spec.ts b/packages/theme/modules/catalog/category/config/__tests__/filtersConfig.spec.ts index 26be7f050..bad7c4947 100644 --- a/packages/theme/modules/catalog/category/config/__tests__/filtersConfig.spec.ts +++ b/packages/theme/modules/catalog/category/config/__tests__/filtersConfig.spec.ts @@ -1,8 +1,8 @@ +import config, { FilterTypeEnum } from '~/modules/catalog/category/config/config'; +import RendererTypesEnum from '~/modules/catalog/category/components/filters/renderer/RendererTypesEnum'; import { getFilterConfig, getDisabledFilters, } from '../FiltersConfig'; -import config, { FilterTypeEnum } from '~/modules/catalog/category/config/config'; -import RendererTypesEnum from '~/modules/catalog/category/components/filters/renderer/RendererTypesEnum'; jest.mock('~/modules/catalog/category/config/config'); diff --git a/packages/theme/modules/catalog/category/getters/facetGetters.ts b/packages/theme/modules/catalog/category/getters/facetGetters.ts new file mode 100644 index 000000000..e14d0dd1a --- /dev/null +++ b/packages/theme/modules/catalog/category/getters/facetGetters.ts @@ -0,0 +1,65 @@ +import type { + AgnosticPagination, + AgnosticSort, +} from '~/composables/types'; + +import { ProductInterface } from '~/modules/GraphQL/types'; +import { FacetSearchParams } from '~/modules/catalog/category/composables/useFacet'; +import { PerPageOptions } from '~/modules/catalog/category/composables/useFacet/PerPageOptions'; + +export interface FacetSearchResult { + data: S; + input: FacetSearchParams; +} + +export interface FacetsGetters { + getSortOptions: (searchData: FacetSearchResult) => AgnosticSort; + getProducts: (searchData: FacetSearchResult) => RESULTS; + getPagination: (searchData: FacetSearchResult) => AgnosticPagination; + [getterName: string]: (element: any, options?: any) => unknown; +} + +const getSortOptions = (searchData): AgnosticSort => { + if (!searchData || !searchData.data || !searchData.data.availableSortingOptions) { + return { + options: [], + selected: '', + } as AgnosticSort; + } + + return { + options: searchData.data.availableSortingOptions, + selected: searchData.input.sort, + }; +}; + +const getProducts = (searchData): ProductInterface[] => { + if (!searchData || !searchData.data || !searchData.data.items) { + return []; + } + return searchData.data.items; +}; + +const getPagination = (searchData): AgnosticPagination => { + const totalPages = (searchData?.data) ? ( + Number.isNaN(Math.ceil(searchData.data.total / searchData.input.itemsPerPage)) + ? 1 + : Math.ceil(searchData.data.total / searchData.input.itemsPerPage) + ) : 1; + + return { + currentPage: (searchData?.input?.page > totalPages ? 1 : searchData?.input?.page) || 1, + totalPages, + totalItems: (searchData?.data?.total) ? searchData.data.total : 0, + itemsPerPage: searchData?.input?.itemsPerPage || 10, + pageOptions: PerPageOptions, + }; +}; + +const facetGetters: FacetsGetters = { + getSortOptions, + getProducts, + getPagination, +}; + +export default facetGetters; diff --git a/packages/theme/modules/catalog/category/helpers/__tests__/useTraverseCategory.spec.ts b/packages/theme/modules/catalog/category/helpers/__tests__/useTraverseCategory.spec.ts index 09b0d2a17..8c50a262d 100644 --- a/packages/theme/modules/catalog/category/helpers/__tests__/useTraverseCategory.spec.ts +++ b/packages/theme/modules/catalog/category/helpers/__tests__/useTraverseCategory.spec.ts @@ -1,11 +1,11 @@ import { useTraverseCategory } from '~/modules/catalog/category/helpers/useTraverseCategory'; -import { useCategoryStore } from '~/stores/category'; +import { useCategoryStore } from '~/modules/catalog/category/stores/category'; import categoryTreeData from '~/test-utils/mocks/categoryTreeDataMock'; const mockUseCategoryStore = { categories: categoryTreeData[0], load: jest.fn() }; -jest.mock('~/stores/category', () => { - const originalModule = jest.requireActual('~/stores/category'); +jest.mock('~/modules/catalog/category/stores/category', () => { + const originalModule = jest.requireActual('~/modules/catalog/category/stores/category'); return { ...originalModule, diff --git a/packages/theme/modules/catalog/category/helpers/useTraverseCategory.ts b/packages/theme/modules/catalog/category/helpers/useTraverseCategory.ts index 2865f28ac..d10799158 100644 --- a/packages/theme/modules/catalog/category/helpers/useTraverseCategory.ts +++ b/packages/theme/modules/catalog/category/helpers/useTraverseCategory.ts @@ -1,7 +1,7 @@ import { computed, useContext, useRoute, } from '@nuxtjs/composition-api'; -import { useCategoryStore } from '~/stores/category'; +import { useCategoryStore } from '~/modules/catalog/category/stores/category'; import { findActiveCategory } from '~/modules/catalog/category/helpers/findActiveCategory'; import { findCategoryAncestors } from '~/modules/catalog/category/helpers/findCategoryAncestors'; diff --git a/packages/theme/stores/category.ts b/packages/theme/modules/catalog/category/stores/category.ts similarity index 100% rename from packages/theme/stores/category.ts rename to packages/theme/modules/catalog/category/stores/category.ts diff --git a/packages/theme/stores/graphql/categoryList.gql.ts b/packages/theme/modules/catalog/category/stores/graphql/categoryList.gql.ts similarity index 100% rename from packages/theme/stores/graphql/categoryList.gql.ts rename to packages/theme/modules/catalog/category/stores/graphql/categoryList.gql.ts diff --git a/packages/theme/modules/catalog/index.ts b/packages/theme/modules/catalog/index.ts index 2b6e7d439..1edc01a0f 100644 --- a/packages/theme/modules/catalog/index.ts +++ b/packages/theme/modules/catalog/index.ts @@ -1,11 +1,12 @@ import path from 'node:path'; import url from 'node:url'; -import { Module } from '@nuxt/types'; +import type { Module } from '@nuxt/types'; +import type { NuxtRouteConfig } from '@nuxt/types/config/router'; const nuxtModule : Module = function categoryModule() { const themeDir = path.dirname(url.fileURLToPath(import.meta.url)); - this.extendRoutes((routes) => { + this.extendRoutes((routes: NuxtRouteConfig[]) => { routes.unshift({ name: 'category', path: '/c/:slug_1/:slug_2?/:slug_3?/:slug_4?/:slug_5?', diff --git a/packages/theme/modules/catalog/pages/category.vue b/packages/theme/modules/catalog/pages/category.vue index bd03b32e3..a9fc61526 100644 --- a/packages/theme/modules/catalog/pages/category.vue +++ b/packages/theme/modules/catalog/pages/category.vue @@ -4,14 +4,11 @@ v-if="isShowCms" :content="cmsContent" /> - +
@@ -48,6 +45,7 @@ ([]); const sortBy = ref({}); - const facets = ref([]); const pagination = ref({}); const { search: resolveUrl } = useUrlResolver(); @@ -179,7 +176,7 @@ export default defineComponent({ : addItemToWishlistBase({ product })); }; - const searchCategoryProduct = async (categoryId: string) => { + const searchCategoryProduct = async (categoryId: number) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument await search({ ...uiHelpers.getFacetsFromURL(), @@ -187,27 +184,26 @@ export default defineComponent({ }); }; - const { - categoryAncestors, isCategoryTreeLoaded, loadCategoryTree, activeCategory, - } = useTraverseCategory(); - const activeCategoryLabel = computed(() => activeCategory.value?.name ?? ''); - const categoryAncestorsWithoutActiveCategory = computed(() => categoryAncestors.value.slice(0, -1)); + const { activeCategory } = useTraverseCategory(); + const activeCategoryName = computed(() => activeCategory.value?.name ?? ''); const routeData = ref({}); const { fetch } = useFetch(async () => { routeData.value = await resolveUrl(); - const content = await getContentData(routeData.value?.id); + + const [content] = await Promise.all([ + getContentData(routeData.value?.entity_uid), + searchCategoryProduct(routeData.value?.id), + ]); + cmsContent.value = content?.cmsBlock?.content ?? ''; isShowCms.value = content.isShowCms; isShowProducts.value = content.isShowProducts; - await searchCategoryProduct(routeData.value?.entity_uid); products.value = facetGetters.getProducts(result.value) ?? []; sortBy.value = facetGetters.getSortOptions(result.value); - facets.value = facetGetters.getGrouped( - result.value, - ); pagination.value = facetGetters.getPagination(result.value); + const tags = [{ prefix: CacheTagPrefix.View, value: 'category' }]; // eslint-disable-next-line no-underscore-dangle const productTags = products.value.map((product) => ({ @@ -217,10 +213,6 @@ export default defineComponent({ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument addTags([...tags, ...productTags]); - - if (!isCategoryTreeLoaded.value) { - await loadCategoryTree(); - } }); const isPriceLoaded = ref(false); @@ -252,15 +244,13 @@ export default defineComponent({ isFilterSidebarOpen, addItemToCart, addItemToWishlist, - facets, pagination, products, sortBy, isShowCms, isShowProducts, cmsContent, - categoryAncestorsWithoutActiveCategory, - activeCategoryLabel, + activeCategoryName, routeData, doChangeItemsPerPage, fetch, @@ -316,14 +306,6 @@ export default defineComponent({ display: flex; } -.breadcrumbs { - margin-left: var(--spacer-sm); - - @include for-mobile { - margin-top: var(--spacer-lg) - } -} - .category-title { margin-left: var(--spacer-sm); text-align: left; diff --git a/packages/theme/modules/catalog/pages/product.vue b/packages/theme/modules/catalog/pages/product.vue index 43ae7d2b7..5a2d7cafb 100644 --- a/packages/theme/modules/catalog/pages/product.vue +++ b/packages/theme/modules/catalog/pages/product.vue @@ -1,505 +1,116 @@ + diff --git a/packages/theme/modules/catalog/product/components/BundleProductSelector.vue b/packages/theme/modules/catalog/product/components/product-types/bundle/BundleProductSelector.vue similarity index 98% rename from packages/theme/modules/catalog/product/components/BundleProductSelector.vue rename to packages/theme/modules/catalog/product/components/product-types/bundle/BundleProductSelector.vue index 332a0c999..73c2b6f8c 100644 --- a/packages/theme/modules/catalog/product/components/BundleProductSelector.vue +++ b/packages/theme/modules/catalog/product/components/product-types/bundle/BundleProductSelector.vue @@ -95,7 +95,7 @@ import { bundleProductInitialSelector } from '~/modules/catalog/product/helpers/ import type { WithTypename } from '~/modules/catalog/product/types'; import type { BundleProduct } from '~/modules/GraphQL/types'; -import { useCart } from '~/composables'; +import useCart from '~/modules/checkout/composables/useCart'; export default defineComponent({ name: 'BundleProductSelector', @@ -134,7 +134,6 @@ export default defineComponent({ }; const price = computed(() => Object.keys(selectedOptions.value) - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument .reduce( (s, k) => s + Number.parseFloat(selectedOptions?.value[k]?.price as string) diff --git a/packages/theme/modules/catalog/product/components/product-types/configurable/ConfigurableProduct.vue b/packages/theme/modules/catalog/product/components/product-types/configurable/ConfigurableProduct.vue new file mode 100644 index 000000000..df0b906ed --- /dev/null +++ b/packages/theme/modules/catalog/product/components/product-types/configurable/ConfigurableProduct.vue @@ -0,0 +1,347 @@ + + + diff --git a/packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProduct.vue b/packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProduct.vue new file mode 100644 index 000000000..759761e3c --- /dev/null +++ b/packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProduct.vue @@ -0,0 +1,219 @@ + + + diff --git a/packages/theme/modules/catalog/product/components/GroupedProductSelector.vue b/packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProductSelector.vue similarity index 88% rename from packages/theme/modules/catalog/product/components/GroupedProductSelector.vue rename to packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProductSelector.vue index 8772d16cb..d75a082ec 100644 --- a/packages/theme/modules/catalog/product/components/GroupedProductSelector.vue +++ b/packages/theme/modules/catalog/product/components/product-types/grouped/GroupedProductSelector.vue @@ -30,6 +30,7 @@ @@ -62,9 +63,12 @@ import { getProductThumbnailImage, } from '~/modules/catalog/product/getters/productGetters'; -import { useCart, useImage } from '~/composables'; +import { getGroupedProductPriceCommand } from '~/modules/catalog/pricing/getGroupedProductPriceCommand'; + +import { useImage } from '~/composables'; +import useCart from '~/modules/checkout/composables/useCart'; import type { WithTypename } from '~/modules/catalog/product/types'; -import type { GroupedProduct, ProductInterface } from '~/modules/GraphQL/types'; +import type { GroupedProduct } from '~/modules/GraphQL/types'; export default defineComponent({ name: 'GroupedProductSelector', @@ -110,18 +114,9 @@ export default defineComponent({ }; watch( - groupedItems, + () => props.product, (newValue) => { - const evalProductPrice = (p: ProductInterface) => { - const { regular, special } = getProductPrice(p); - - return regular > special ? regular : special; - }; - - const price = newValue.reduce( - (acc, curr) => curr.qty * evalProductPrice(curr.product) + acc, - 0, - ); + const price = getGroupedProductPriceCommand(newValue); emit('update-price', price); }, diff --git a/packages/theme/modules/catalog/product/components/product-types/simple/SimpleProduct.vue b/packages/theme/modules/catalog/product/components/product-types/simple/SimpleProduct.vue new file mode 100644 index 000000000..9c884fa87 --- /dev/null +++ b/packages/theme/modules/catalog/product/components/product-types/simple/SimpleProduct.vue @@ -0,0 +1,216 @@ + + + diff --git a/packages/theme/modules/catalog/product/components/product-types/styles.scss b/packages/theme/modules/catalog/product/components/product-types/styles.scss new file mode 100644 index 000000000..f93cf85fe --- /dev/null +++ b/packages/theme/modules/catalog/product/components/product-types/styles.scss @@ -0,0 +1,189 @@ +.product { + @include for-desktop { + display: flex; + } + + &__info { + margin: var(--spacer-sm) auto; + @include for-desktop { + margin: 0; + max-width: 32.625rem; + padding-left: var(--spacer-lg); + width: 100%; + } + } + + &__header { + --heading-title-color: var(--c-link); + --heading-title-font-weight: var(--font-weight--bold); + --heading-padding: 0; + margin: 0 var(--spacer-sm); + display: flex; + justify-content: space-between; + @include for-desktop { + --heading-title-font-weight: var(--font-weight--semibold); + margin: 0 auto; + } + } + + &__drag-icon { + animation: moveicon 1s ease-in-out infinite; + color: var(--c-text-disabled); + } + + &__price-and-rating { + margin: 0 var(--spacer-sm) var(--spacer-base); + align-items: center; + @include for-desktop { + display: flex; + justify-content: space-between; + margin: var(--spacer-sm) 0 var(--spacer-lg) 0; + } + } + + &__rating { + display: flex; + align-items: center; + justify-content: flex-end; + margin: var(--spacer-xs) 0 var(--spacer-xs); + } + + &__count { + @include font( + --count-font, + var(--font-weight--normal), + var(--font-size--sm), + 1.4, + var(--font-family--secondary) + ); + color: var(--c-text); + text-decoration: none; + margin: 0 0 0 var(--spacer-xs); + } + + &__description { + @include font( + --product-description-font, + var(--font-weight--light), + var(--font-size--base), + 1.6, + var(--font-family--primary) + ); + } + + &__add-to-cart { + margin: var(--spacer-base) var(--spacer-sm) 0; + @include for-desktop { + margin-top: var(--spacer-2xl); + } + } + + &__guide, + &__compare, + &__save { + display: block; + margin: var(--spacer-xl) 0 var(--spacer-base) auto; + } + + &__compare { + margin-top: 0; + } + + &__tabs { + --tabs-title-z-index: 0; + margin: var(--spacer-lg) auto var(--spacer-2xl); + --tabs-title-font-size: var(--font-size--lg); + @include for-desktop { + margin-top: var(--spacer-2xl); + } + } + + &__property { + margin: var(--spacer-base) 0; + + &__button { + --button-font-size: var(--font-size--base); + } + } + + &__review { + padding-bottom: 24px; + border-bottom: var(--c-light) solid 1px; + margin-bottom: var(--spacer-base); + } + + &__additional-info { + color: var(--c-link); + @include font( + --additional-info-font, + var(--font-weight--light), + var(--font-size--sm), + 1.6, + var(--font-family--primary) + ); + + &__title { + font-weight: var(--font-weight--normal); + font-size: var(--font-size--base); + margin: 0 0 var(--spacer-sm); + + &:not(:first-child) { + margin-top: 3.5rem; + } + } + + &__paragraph { + margin: 0; + } + } + + &__additional-actions { + display: flex; + justify-content: flex-start; + margin: 0 var(--spacer-sm); + @include for-desktop { + margin: 0; + } + } + + &__gallery { + flex: 1; + } +} + +.sf-gallery { + ::v-deep .glide__slide { + flex: none; + } +} + +@keyframes moveicon { + 0% { + transform: translate3d(0, 0, 0) rotate(90deg) scale(1, -1); + } + 50% { + transform: translate3d(10%, 0, 0) rotate(90deg) scale(1, -1); + } + 100% { + transform: translate3d(0, 0, 0) rotate(90deg) scale(1, -1); + } +} + +.loading { + &--product { + padding: var(--spacer-3xl) auto; + @include for-desktop { + padding-top: 3.75rem; + padding-bottom: 3.75rem; + } + } + + &--product-gallery { + padding: var(--spacer-3xl) auto; + height: 700px; + @include for-desktop { + padding-top: 3.75rem; + padding-bottom: 3.75rem; + } + } +} diff --git a/packages/theme/modules/catalog/product/components/tabs/ProductTabs.vue b/packages/theme/modules/catalog/product/components/tabs/ProductTabs.vue new file mode 100644 index 000000000..47b143c87 --- /dev/null +++ b/packages/theme/modules/catalog/product/components/tabs/ProductTabs.vue @@ -0,0 +1,181 @@ + + diff --git a/packages/theme/modules/catalog/product/composables/useProductGallery/index.ts b/packages/theme/modules/catalog/product/composables/useProductGallery/index.ts new file mode 100644 index 000000000..0b4cf7d6d --- /dev/null +++ b/packages/theme/modules/catalog/product/composables/useProductGallery/index.ts @@ -0,0 +1,28 @@ +import { computed, Ref } from '@nuxtjs/composition-api'; +import { getGallery as getProductGallery } from '~/modules/catalog/product/getters/productGetters'; +import { useImage } from '~/composables'; +import type { Product } from '~/modules/catalog/product/types'; +import type { UseProductGalleryInterface } from '~/modules/catalog/product/composables/useProductGallery/useProductGallery'; + +/** + * The `useProductGallery()` composable allows building product's gallery data structure. + * + * See the {@link UseProductGalleryInterface} page for more information. + */ +export function useProductGallery(product: Ref): UseProductGalleryInterface { + const { getMagentoImage, imageSizes } = useImage(); + const productGallery = computed(() => getProductGallery(product.value).map((img) => ({ + mobile: { url: getMagentoImage(img.small) }, + desktop: { url: getMagentoImage(img.normal) }, + big: { url: getMagentoImage(img.big) }, + alt: product.value.name, + }))); + + return { + productGallery, + imageSizes, + }; +} + +export default useProductGallery; +export * from './useProductGallery'; diff --git a/packages/theme/modules/catalog/product/composables/useProductGallery/useProductGallery.ts b/packages/theme/modules/catalog/product/composables/useProductGallery/useProductGallery.ts new file mode 100644 index 000000000..9dceed6f9 --- /dev/null +++ b/packages/theme/modules/catalog/product/composables/useProductGallery/useProductGallery.ts @@ -0,0 +1,33 @@ +import { ComputedRef } from '@nuxtjs/composition-api'; +import { ImageSizes } from '~/composables'; + +/** + * Product gallery image data structure + */ +export interface ProductGalleryImageInterface { + url: string; +} + +/** + * Product gallery data structure + */ +export interface ProductGalleryInterface { + mobile?: ProductGalleryImageInterface; + desktop?: ProductGalleryImageInterface; + big?: ProductGalleryImageInterface; + alt?: string; +} + +/** + * Represents the data returned from and functions available in the `useProductGallery()` composable. + */ +export interface UseProductGalleryInterface { + /** + * Computed {@link ProductGalleryInterface} data array, mapped based on the product's gallery fetch + */ + productGallery: ComputedRef, + /** + * Available image sizes derived from {@link UseImageInterface} + */ + imageSizes: ImageSizes +} diff --git a/packages/theme/modules/catalog/product/composables/useProductTabs/index.ts b/packages/theme/modules/catalog/product/composables/useProductTabs/index.ts new file mode 100644 index 000000000..e2fb521be --- /dev/null +++ b/packages/theme/modules/catalog/product/composables/useProductTabs/index.ts @@ -0,0 +1,58 @@ +import { ref } from '@nuxtjs/composition-api'; +import type { TabsConfigInterface } from '~/modules/catalog/product/composables/useProductTabs/useProductTabs'; +import type { UseProductTabsInterface } from '~/modules/catalog/product/composables/useProductTabs'; + +export const TabsConfig: TabsConfigInterface = { + description: { + ID: 1, + title: 'Description', + }, + reviews: { + ID: 2, + title: 'Reviews', + }, + additional_info: { + ID: 3, + title: 'Additional info', + }, +}; + +/** + * The `useProductTabs()` composable allows manage product's tabs + * + * See the {@link UseProductTabsInterface} page for more information. + */ +export function useProductTabs(): UseProductTabsInterface { + const activeTab = ref(TabsConfig.description.ID); + + const setActiveTab = (tabId: number) => { + activeTab.value = tabId; + }; + + const openNewReviewTab = () => { + if (!process.client) return; + + setActiveTab(TabsConfig.reviews.ID); + const reviews = document.querySelector('#addReview'); + if (!reviews) return; + + setTimeout( + () => { + reviews.scrollIntoView({ + behavior: 'smooth', + block: 'end', + }); + }, + 500, + ); + }; + + return { + activeTab, + setActiveTab, + openNewReviewTab, + }; +} + +export default useProductTabs; +export * from './useProductTabs'; diff --git a/packages/theme/modules/catalog/product/composables/useProductTabs/useProductTabs.ts b/packages/theme/modules/catalog/product/composables/useProductTabs/useProductTabs.ts new file mode 100644 index 000000000..c9868084f --- /dev/null +++ b/packages/theme/modules/catalog/product/composables/useProductTabs/useProductTabs.ts @@ -0,0 +1,25 @@ +import { Ref } from '@nuxtjs/composition-api'; + +/** + * Single tab data structure + */ +export interface TabInterface { + ID: number; + title: string; +} + +/** + * Tabs configuration data structure + */ +export interface TabsConfigInterface { + [code: string]: TabInterface; +} + +/** + * Represents the data returned from and functions available in the `useProductTabs()` composable. + */ +export interface UseProductTabsInterface { + activeTab: Ref; + setActiveTab(tabId: number): void; + openNewReviewTab(): void; +} diff --git a/packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts b/packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts index da62d26b1..598090f70 100644 --- a/packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts +++ b/packages/theme/modules/catalog/product/composables/useUpsellProducts/index.ts @@ -1,13 +1,12 @@ import type { Ref } from '@nuxtjs/composition-api'; import { ref, readonly, useContext } from '@nuxtjs/composition-api'; +import { Logger } from '~/helpers/logger'; import type { UseUpsellProductsError, UseUpsellProductsInterface, UseUpsellProductsSearchParams, } from './useUpsellProducts'; -import { Logger } from '~/helpers/logger'; - /** * The `useUpsellProducts()` composable allows loading upsell products. * diff --git a/packages/theme/modules/catalog/product/enums/ProductTypeEnum.ts b/packages/theme/modules/catalog/product/enums/ProductTypeEnum.ts new file mode 100644 index 000000000..d39564e39 --- /dev/null +++ b/packages/theme/modules/catalog/product/enums/ProductTypeEnum.ts @@ -0,0 +1,7 @@ +export enum ProductTypeEnum { + SIMPLE_PRODUCT = 'SimpleProduct', + CONFIGURABLE_PRODUCT = 'ConfigurableProduct', + BUNDLE_PRODUCT = 'BundleProduct', + GROUPED_PRODUCT = 'GroupedProduct', + +} diff --git a/packages/theme/modules/catalog/product/getters/productGetters.ts b/packages/theme/modules/catalog/product/getters/productGetters.ts index 5b4a4ada1..607694656 100644 --- a/packages/theme/modules/catalog/product/getters/productGetters.ts +++ b/packages/theme/modules/catalog/product/getters/productGetters.ts @@ -73,10 +73,12 @@ export const getSlug = (product: ProductInterface, category?: CategoryTree | Cat export const getPrice = (product: ProductInterface): AgnosticPrice => { let regular = 0; let special = null; + let maximum = null; if (product?.price_range) { regular = product.price_range.minimum_price.regular_price.value; const final = product.price_range.minimum_price.final_price.value; + maximum = product.price_range.maximum_price.final_price.value; if (final < regular) { special = final; @@ -86,6 +88,7 @@ export const getPrice = (product: ProductInterface): AgnosticPrice => { return { regular, special, + maximum, }; }; diff --git a/packages/theme/modules/catalog/product/helpers/bundleProduct.ts b/packages/theme/modules/catalog/product/helpers/bundleProduct.ts index d7a292aaa..a59d3ddc2 100644 --- a/packages/theme/modules/catalog/product/helpers/bundleProduct.ts +++ b/packages/theme/modules/catalog/product/helpers/bundleProduct.ts @@ -3,13 +3,13 @@ import type { BundleProduct } from '~/modules/GraphQL/types'; // eslint-disable-next-line unicorn/prefer-object-from-entries export const bundleProductInitialSelector = (bundles: BundleProduct['items']) => (Array.isArray(bundles) ? bundles.reduce((acc, curr) => { const defaultValue = curr.options.find((o) => o.is_default); + const price = productGetters.getPrice(defaultValue.product); if (defaultValue) { acc[curr.uid] = { uid: defaultValue.uid, quantity: defaultValue.quantity || 1, - // @ts-ignore - price: productGetters.getPrice(defaultValue.product).regular, + price: price.special < price.regular && price.special !== null ? price.special : price.regular, }; } diff --git a/packages/theme/composables/useBilling/commands/saveBillingAddressCommand.ts b/packages/theme/modules/checkout/composables/useBilling/commands/saveBillingAddressCommand.ts similarity index 100% rename from packages/theme/composables/useBilling/commands/saveBillingAddressCommand.ts rename to packages/theme/modules/checkout/composables/useBilling/commands/saveBillingAddressCommand.ts diff --git a/packages/theme/composables/useBilling/index.ts b/packages/theme/modules/checkout/composables/useBilling/index.ts similarity index 84% rename from packages/theme/composables/useBilling/index.ts rename to packages/theme/modules/checkout/composables/useBilling/index.ts index 7c3c134e6..872f8cd6d 100644 --- a/packages/theme/composables/useBilling/index.ts +++ b/packages/theme/modules/checkout/composables/useBilling/index.ts @@ -1,8 +1,9 @@ import { readonly, ref, useContext } from '@nuxtjs/composition-api'; import { Logger } from '~/helpers/logger'; import { BillingCartAddress, Maybe } from '~/modules/GraphQL/types'; -import { saveBillingAddressCommand } from '~/composables/useBilling/commands/saveBillingAddressCommand'; -import { useShippingProvider, useCart } from '~/composables'; +import { saveBillingAddressCommand } from '~/modules/checkout/composables/useBilling/commands/saveBillingAddressCommand'; +import useShippingProvider from '~/modules/checkout/composables/useShippingProvider'; +import useCart from '~/modules/checkout/composables/useCart'; import type { UseBillingError, UseBillingInterface, @@ -11,8 +12,10 @@ import type { } from './useBilling'; /** - * The `useBilling()` composable allows loading and saving billing information + * The `useBilling` composable allows loading and saving billing information * of the current cart. + * + * See the {@link UseBillingInterface} for a list of methods and values available in this composable. */ export function useBilling(): UseBillingInterface { const context = useContext(); @@ -92,5 +95,4 @@ export function useBilling(): UseBillingInterface { } export * from './useBilling'; -export type { BillingDetails } from './BillingDetails'; export default useBilling; diff --git a/packages/theme/modules/checkout/composables/useBilling/useBilling.ts b/packages/theme/modules/checkout/composables/useBilling/useBilling.ts new file mode 100644 index 000000000..cfdf2fae1 --- /dev/null +++ b/packages/theme/modules/checkout/composables/useBilling/useBilling.ts @@ -0,0 +1,76 @@ +import type { Ref } from '@nuxtjs/composition-api'; +import type { BillingCartAddress } from '~/modules/GraphQL/types'; +import { ComposableFunctionArgs } from '~/composables/types'; + +/** + * The object used by the {@link useBilling|useBilling()} composable to save new billing information + */ +export interface BillingDetails { + apartment?: string; + city?: string; + country_code?: string; + customerAddressId: string; + extra?: string; + firstname?: string; + lastname?: string; + neighborhood?: string; + postcode?: string; + region?: string; + sameAsShipping: boolean; + street?: string; + telephone?: string; +} + +/** + * Errors that occured in the {@link useBilling|useBilling()} composable + */ +export interface UseBillingError { + /** + * Contains error if `load` method failed, otherwise is `null` + */ + load: Error | null; + + /** + * Contains error if `save` method failed, otherwise is `null` + */ + save: Error | null; +} + +/** + * The params object accepted by the `load` method in the {@link useBilling|useBilling()} composable + */ +export type UseBillingLoadParams = ComposableFunctionArgs<{}>; + +/** + * The params object accepted by the `save` method in the {@link useBilling|useBilling()} composable + */ +export interface UseBillingSaveParams { + billingDetails: BillingDetails; +} + +/** + * The refs and methods returned by the {@link useBilling|useBilling()} composable + */ +export interface UseBillingInterface { + /** + * Loads the billing information. It returns a `Promise` that resolves into + * the billing information, or `null` when fails or is empty. + */ + load(params?: UseBillingLoadParams): Promise; + + /** + * Saves the billing information. It, also, returns a `Promise` that resolves + * into the saved billing information, or `null` when fails. + */ + save(params: UseBillingSaveParams): Promise; + + /** + * Contains errors from the composable methods + */ + error: Readonly>; + + /** + * Indicates whether any of the methods is in progress + */ + loading: Readonly>; +} diff --git a/packages/theme/composables/useCart/commands/addItemCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/addItemCommand.ts similarity index 100% rename from packages/theme/composables/useCart/commands/addItemCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/addItemCommand.ts diff --git a/packages/theme/composables/useCart/commands/applyCouponCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/applyCouponCommand.ts similarity index 73% rename from packages/theme/composables/useCart/commands/applyCouponCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/applyCouponCommand.ts index 2237037e1..fd43b1063 100644 --- a/packages/theme/composables/useCart/commands/applyCouponCommand.ts +++ b/packages/theme/modules/checkout/composables/useCart/commands/applyCouponCommand.ts @@ -13,16 +13,17 @@ export const applyCouponCommand = { currentCart, }); - const { data } = await context.$magento.api.applyCouponToCart({ + const { data, errors } = await context.$magento.api.applyCouponToCart({ cart_id: currentCart.id, coupon_code: couponCode, }, customQuery); - Logger.debug('[Result]:', { data }); + Logger.debug('[Result]:', { data, errors }); return { - updatedCart: data.applyCouponToCart.cart as unknown as Cart, + updatedCart: data.applyCouponToCart?.cart as unknown as Cart, updatedCoupon: { code: couponCode }, + errors, }; }, }; diff --git a/packages/theme/composables/useCart/commands/clearCartCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/clearCartCommand.ts similarity index 100% rename from packages/theme/composables/useCart/commands/clearCartCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/clearCartCommand.ts diff --git a/packages/theme/composables/useCart/commands/loadCartCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/loadCartCommand.ts similarity index 95% rename from packages/theme/composables/useCart/commands/loadCartCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/loadCartCommand.ts index 015a9af8c..f6fce4d50 100644 --- a/packages/theme/composables/useCart/commands/loadCartCommand.ts +++ b/packages/theme/modules/checkout/composables/useCart/commands/loadCartCommand.ts @@ -1,4 +1,4 @@ -import { ComposableFunctionArgs } from '~/composables/types' +import { ComposableFunctionArgs } from '~/composables/types'; import { Logger } from '~/helpers/logger'; import { Cart } from '~/modules/GraphQL/types'; import { VsfContext } from '~/composables/context'; @@ -46,6 +46,7 @@ export const loadCartCommand = { return createVirtualCart(); } + // eslint-disable-next-line no-param-reassign cartId = await createRealCart(); apiState.setCartId(cartId); } diff --git a/packages/theme/composables/useCart/commands/loadTotalQtyCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/loadTotalQtyCommand.ts similarity index 100% rename from packages/theme/composables/useCart/commands/loadTotalQtyCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/loadTotalQtyCommand.ts diff --git a/packages/theme/composables/useCart/commands/removeCouponCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/removeCouponCommand.ts similarity index 76% rename from packages/theme/composables/useCart/commands/removeCouponCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/removeCouponCommand.ts index 8f384ed71..0b6d2fd87 100644 --- a/packages/theme/composables/useCart/commands/removeCouponCommand.ts +++ b/packages/theme/modules/checkout/composables/useCart/commands/removeCouponCommand.ts @@ -1,19 +1,21 @@ import { Logger } from '~/helpers/logger'; import { Cart } from '~/modules/GraphQL/types'; import { VsfContext } from '~/composables/context'; + export const removeCouponCommand = { execute: async (context: VsfContext, { currentCart, customQuery = { removeCouponFromCart: 'removeCouponFromCart' } }) => { Logger.debug('[Magento]: Remove coupon from cart', { currentCart }); - const { data } = await context.$magento.api.removeCouponFromCart({ + const { data, errors } = await context.$magento.api.removeCouponFromCart({ cart_id: currentCart.id, }, customQuery); Logger.debug('[Result]:', { data }); return { - updatedCart: data.removeCouponFromCart.cart as unknown as Cart, + updatedCart: data.removeCouponFromCart?.cart as unknown as Cart, updatedCoupon: { code: '' }, + errors, }; }, }; diff --git a/packages/theme/composables/useCart/commands/removeItemCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/removeItemCommand.ts similarity index 100% rename from packages/theme/composables/useCart/commands/removeItemCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/removeItemCommand.ts diff --git a/packages/theme/composables/useCart/commands/updateItemQtyCommand.ts b/packages/theme/modules/checkout/composables/useCart/commands/updateItemQtyCommand.ts similarity index 100% rename from packages/theme/composables/useCart/commands/updateItemQtyCommand.ts rename to packages/theme/modules/checkout/composables/useCart/commands/updateItemQtyCommand.ts diff --git a/packages/theme/composables/useCart/index.ts b/packages/theme/modules/checkout/composables/useCart/index.ts similarity index 67% rename from packages/theme/composables/useCart/index.ts rename to packages/theme/modules/checkout/composables/useCart/index.ts index 829a166bc..dedc6148d 100644 --- a/packages/theme/composables/useCart/index.ts +++ b/packages/theme/modules/checkout/composables/useCart/index.ts @@ -1,18 +1,20 @@ import { - computed, readonly, ref, useContext, + computed, readonly, ref, useContext, useRoute, } from '@nuxtjs/composition-api'; -import { addItemCommand } from '~/composables/useCart/commands/addItemCommand'; -import { applyCouponCommand } from '~/composables/useCart/commands/applyCouponCommand'; -import { clearCartCommand } from '~/composables/useCart/commands/clearCartCommand'; -import { loadCartCommand } from '~/composables/useCart/commands/loadCartCommand'; -import { loadTotalQtyCommand } from '~/composables/useCart/commands/loadTotalQtyCommand'; -import { removeCouponCommand } from '~/composables/useCart/commands/removeCouponCommand'; -import { removeItemCommand } from '~/composables/useCart/commands/removeItemCommand'; -import { updateItemQtyCommand } from '~/composables/useCart/commands/updateItemQtyCommand'; +import { addItemCommand } from '~/modules/checkout/composables/useCart/commands/addItemCommand'; +import { applyCouponCommand } from '~/modules/checkout/composables/useCart/commands/applyCouponCommand'; +import { clearCartCommand } from '~/modules/checkout/composables/useCart/commands/clearCartCommand'; +import { loadCartCommand } from '~/modules/checkout/composables/useCart/commands/loadCartCommand'; +import { loadTotalQtyCommand } from '~/modules/checkout/composables/useCart/commands/loadTotalQtyCommand'; +import { removeCouponCommand } from '~/modules/checkout/composables/useCart/commands/removeCouponCommand'; +import { removeItemCommand } from '~/modules/checkout/composables/useCart/commands/removeItemCommand'; +import { updateItemQtyCommand } from '~/modules/checkout/composables/useCart/commands/updateItemQtyCommand'; import { Logger } from '~/helpers/logger'; import { Cart, CartItemInterface, ProductInterface } from '~/modules/GraphQL/types'; -import { useCustomerStore } from '~/stores/customer'; +import { useCartStore } from '~/modules/checkout/stores/cart'; +import { useWishlist } from '~/modules/wishlist/composables/useWishlist'; import { UseCartErrors, UseCartInterface } from './useCart'; +import { Product } from '~/modules/catalog/product/types'; /** * The `useCart` composable provides functions and refs to deal with a user's cart from Magento API. @@ -37,9 +39,11 @@ PRODUCT }); const { app } = useContext(); const context = app.$vsf; - const customerStore = useCustomerStore(); - const cart = computed(() => customerStore.cart as CART); + const route = useRoute(); + const cartStore = useCartStore(); + const cart = computed(() => cartStore.cart as CART); const apiState = context.$magento.config.state; + const { loading: wishlistLoading, afterAddingWishlistItemToCart } = useWishlist(); /** * Assign new cart object @@ -50,7 +54,7 @@ PRODUCT const setCart = (newCart: CART): void => { Logger.debug('useCart.setCart', newCart); - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = newCart; }); }; @@ -70,7 +74,7 @@ PRODUCT try { loading.value = true; const loadedCart = await loadCartCommand.execute(context, { customQuery, realCart }); - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = loadedCart; }); error.value.load = null; @@ -90,7 +94,7 @@ PRODUCT clearCartCommand.execute(context); const loadedCart = await loadCartCommand.execute(context, { customQuery }); - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = loadedCart; }); } catch (err) { @@ -108,7 +112,7 @@ PRODUCT loading.value = true; const totalQuantity = await loadTotalQtyCommand.execute(context); - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart.total_quantity = totalQuantity; }); } catch (err) { @@ -135,13 +139,19 @@ PRODUCT quantity, }); error.value.addItem = null; - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = updatedCart; }); } catch (err) { error.value.addItem = err; Logger.error('useCart/addItem', err); } finally { + if (!wishlistLoading.value && route.value.query?.wishlist) { + afterAddingWishlistItemToCart({ + product, + cartError: error.value.addItem, + }); + } loading.value = false; } }; @@ -157,7 +167,7 @@ PRODUCT }); error.value.removeItem = null; - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = updatedCart; }); } catch (err) { @@ -185,7 +195,7 @@ PRODUCT }); error.value.updateItemQty = null; - customerStore.$patch((state) => { + cartStore.$patch((state) => { state.cart = updatedCart; }); } catch (err) { @@ -197,21 +207,35 @@ PRODUCT } }; + const handleCoupon = async (couponCode = null, customQuery = null): Promise => { + const variables = { + currentCart: cart.value, + customQuery, + couponCode, + }; + + const { updatedCart, errors } = couponCode + ? await applyCouponCommand.execute(context, variables) + : await removeCouponCommand.execute(context, variables); + + if (errors) { + throw errors[0]; + } + + if (updatedCart) { + cartStore.$patch((state) => { + state.cart = updatedCart; + }); + } + }; + const applyCoupon = async ({ couponCode, customQuery }): Promise => { Logger.debug('useCart.applyCoupon'); try { loading.value = true; - const { updatedCart } = await applyCouponCommand.execute(context, { - currentCart: cart.value, - couponCode, - customQuery, - }); - + await handleCoupon(couponCode, customQuery); error.value.applyCoupon = null; - customerStore.$patch((state) => { - state.cart = updatedCart; - }); } catch (err) { error.value.applyCoupon = err; Logger.error('useCart/applyCoupon', err); @@ -225,16 +249,8 @@ PRODUCT try { loading.value = true; - const { updatedCart } = await removeCouponCommand.execute(context, { - currentCart: cart.value, - customQuery, - }); - - error.value.removeCoupon = null; - customerStore.$patch((state) => { - state.cart = updatedCart; - }); - loading.value = false; + await handleCoupon(null, customQuery); + error.value.applyCoupon = null; } catch (err) { error.value.removeCoupon = err; Logger.error('useCart/removeCoupon', err); @@ -242,6 +258,20 @@ PRODUCT loading.value = false; } }; + + const canAddToCart = (product: Product, qty = 1) => { + // eslint-disable-next-line no-underscore-dangle + if (product?.__typename === 'ConfigurableProduct') { + return !!product?.configurable_product_options_selection?.variant + ?.uid; + } + const inStock = product?.stock_status || ''; + const stockLeft = product?.only_x_left_in_stock === null + ? true + : qty <= product?.only_x_left_in_stock; + return inStock && stockLeft; + }; + return { setCart, cart, @@ -254,6 +284,7 @@ PRODUCT updateItemQty, applyCoupon, removeCoupon, + canAddToCart, loading: readonly(loading), error: readonly(error), }; diff --git a/packages/theme/composables/useCart/useCart.ts b/packages/theme/modules/checkout/composables/useCart/useCart.ts similarity index 89% rename from packages/theme/composables/useCart/useCart.ts rename to packages/theme/modules/checkout/composables/useCart/useCart.ts index 908bc924c..2873536b2 100644 --- a/packages/theme/composables/useCart/useCart.ts +++ b/packages/theme/modules/checkout/composables/useCart/useCart.ts @@ -1,5 +1,6 @@ -import { ComputedRef, DeepReadonly, Ref } from '@nuxtjs/composition-api'; +import { ComputedRef, Ref } from '@nuxtjs/composition-api'; import { ComposableFunctionArgs } from '~/composables/types'; +import { Product } from '~/modules/catalog/product/types'; /** * Parameters accepted by the `addItem` method in the {@link useCart} composable @@ -12,8 +13,7 @@ export type UseCartAddItemParams = ComposableFunctionArgs<{ /** * Parameters accepted by the `removeItem` method in the {@link useCart} composable */ -type UseCartRemoveItemParams = ComposableFunctionArgs<{ - currentCart: CART +type UseCartRemoveItemParams = ComposableFunctionArgs<{ product: CART_ITEM }>; @@ -59,7 +59,7 @@ export interface UseCartInterface { params: UseCartAddItemParams ): Promise; /** Removes an `item` from a `cart` */ - removeItem(params: UseCartRemoveItemParams): Promise; + removeItem(params: UseCartRemoveItemParams< CART_ITEM>): Promise; /** Updates the `quantity` of an `item` in a cart */ updateItemQty(params: UseCartUpdateItemQtyParams): Promise; /** Removes all items from the cart */ @@ -74,6 +74,8 @@ export interface UseCartInterface { setCart(newCart: CART): void; /** Returns the Items in the Cart as a `computed` property */ cart: ComputedRef; + /** Checks wheter a `product` can be added to the `cart` */ + canAddToCart(product: Product, qty: number); /** * The loading state. * @@ -81,7 +83,7 @@ export interface UseCartInterface { */ loading: Readonly>; /** The error object */ - error: DeepReadonly>; + error: Readonly>; } /** The {@link useCart} error object. The properties values are the errors thrown by its methods */ diff --git a/packages/theme/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand.ts b/packages/theme/modules/checkout/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand.ts similarity index 100% rename from packages/theme/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand.ts rename to packages/theme/modules/checkout/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand.ts diff --git a/packages/theme/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand.ts b/packages/theme/modules/checkout/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand.ts similarity index 100% rename from packages/theme/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand.ts rename to packages/theme/modules/checkout/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand.ts diff --git a/packages/theme/composables/useGetShippingMethods/index.ts b/packages/theme/modules/checkout/composables/useGetShippingMethods/index.ts similarity index 79% rename from packages/theme/composables/useGetShippingMethods/index.ts rename to packages/theme/modules/checkout/composables/useGetShippingMethods/index.ts index 1ef09bc05..c69462913 100644 --- a/packages/theme/composables/useGetShippingMethods/index.ts +++ b/packages/theme/modules/checkout/composables/useGetShippingMethods/index.ts @@ -3,9 +3,9 @@ import { ComposableFunctionArgs, } from '~/composables/types'; import { Logger } from '~/helpers/logger'; -import { getGuestShippingMethodsCommand } from '~/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand'; -import { getCustomerShippingMethodsCommand } from '~/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand'; -import { UseGetShippingMethodsInterface } from '~/composables/useGetShippingMethods/useGetShippingMethods'; +import { getGuestShippingMethodsCommand } from '~/modules/checkout/composables/useGetShippingMethods/commands/getGuestShippingMethodsCommand'; +import { getCustomerShippingMethodsCommand } from '~/modules/checkout/composables/useGetShippingMethods/commands/getCustomerShippingMethodsCommand'; +import { UseGetShippingMethodsInterface } from '~/modules/checkout/composables/useGetShippingMethods/useGetShippingMethods'; import { AvailableShippingMethod } from '~/modules/GraphQL/types'; /** diff --git a/packages/theme/composables/useGetShippingMethods/useGetShippingMethods.ts b/packages/theme/modules/checkout/composables/useGetShippingMethods/useGetShippingMethods.ts similarity index 70% rename from packages/theme/composables/useGetShippingMethods/useGetShippingMethods.ts rename to packages/theme/modules/checkout/composables/useGetShippingMethods/useGetShippingMethods.ts index e63b52736..11c376920 100644 --- a/packages/theme/composables/useGetShippingMethods/useGetShippingMethods.ts +++ b/packages/theme/modules/checkout/composables/useGetShippingMethods/useGetShippingMethods.ts @@ -1,4 +1,4 @@ -import { DeepReadonly, Ref } from '@nuxtjs/composition-api'; +import { Ref } from '@nuxtjs/composition-api'; import { ComposableFunctionArgs, } from '~/composables/types'; @@ -13,7 +13,7 @@ export interface UseGetShippingMethodsInterface { /** Loads the shipping methods for a cart */ load (params: ComposableFunctionArgs<{ cartId: string }>): Promise; /** Possible errors when loading shipping methods */ - error: DeepReadonly>; - /** Indicates wheter the shipping methods are already being loaded */ - loading: DeepReadonly>; + error: Readonly>; + /** Indicates whether the shipping methods are already being loaded */ + loading: Readonly>; } diff --git a/packages/theme/composables/useMakeOrder/commands/placeOrderCommand.ts b/packages/theme/modules/checkout/composables/useMakeOrder/commands/placeOrderCommand.ts similarity index 100% rename from packages/theme/composables/useMakeOrder/commands/placeOrderCommand.ts rename to packages/theme/modules/checkout/composables/useMakeOrder/commands/placeOrderCommand.ts diff --git a/packages/theme/composables/useMakeOrder/index.ts b/packages/theme/modules/checkout/composables/useMakeOrder/index.ts similarity index 86% rename from packages/theme/composables/useMakeOrder/index.ts rename to packages/theme/modules/checkout/composables/useMakeOrder/index.ts index dc7ae994b..6fd7dc88a 100644 --- a/packages/theme/composables/useMakeOrder/index.ts +++ b/packages/theme/modules/checkout/composables/useMakeOrder/index.ts @@ -1,7 +1,7 @@ import { readonly, ref, useContext } from '@nuxtjs/composition-api'; import { Logger } from '~/helpers/logger'; -import { placeOrderCommand } from '~/composables/useMakeOrder/commands/placeOrderCommand'; -import { useCart } from '~/composables'; +import { placeOrderCommand } from '~/modules/checkout/composables/useMakeOrder/commands/placeOrderCommand'; +import useCart from '~/modules/checkout/composables/useCart'; import type { PlaceOrderOutput } from '~/modules/GraphQL/types'; import type { UseMakeOrderErrors, UseMakeOrderInterface } from './useMakeOrder'; diff --git a/packages/theme/composables/useMakeOrder/useMakeOrder.ts b/packages/theme/modules/checkout/composables/useMakeOrder/useMakeOrder.ts similarity index 86% rename from packages/theme/composables/useMakeOrder/useMakeOrder.ts rename to packages/theme/modules/checkout/composables/useMakeOrder/useMakeOrder.ts index 9e2509f89..afe3dc9a2 100644 --- a/packages/theme/composables/useMakeOrder/useMakeOrder.ts +++ b/packages/theme/modules/checkout/composables/useMakeOrder/useMakeOrder.ts @@ -1,4 +1,4 @@ -import type { DeepReadonly, Ref } from '@nuxtjs/composition-api'; +import type { Ref } from '@nuxtjs/composition-api'; import type { PlaceOrderOutput } from '~/modules/GraphQL/types'; /** @@ -20,7 +20,7 @@ export interface UseMakeOrderInterface { * * Read {@link UseMakeOrderErrors} documentation for more details. */ - error: DeepReadonly>; + error: Readonly>; /** Indicates whether any of the composable methods is in progress. */ loading: Readonly>; diff --git a/packages/theme/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand.ts b/packages/theme/modules/checkout/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand.ts similarity index 100% rename from packages/theme/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand.ts rename to packages/theme/modules/checkout/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand.ts diff --git a/packages/theme/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts b/packages/theme/modules/checkout/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts similarity index 88% rename from packages/theme/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts rename to packages/theme/modules/checkout/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts index eb0bb7512..190b27d36 100644 --- a/packages/theme/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts +++ b/packages/theme/modules/checkout/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand.ts @@ -1,6 +1,6 @@ import type { useContext } from '@nuxtjs/composition-api'; import type { AvailablePaymentMethod } from '~/modules/GraphQL/types'; -import type PaymentMethodParams from '../PaymentMethodParams'; +import type { PaymentMethodParams } from '../usePaymentProvider'; type Context = ReturnType; diff --git a/packages/theme/composables/usePaymentProvider/index.ts b/packages/theme/modules/checkout/composables/usePaymentProvider/index.ts similarity index 84% rename from packages/theme/composables/usePaymentProvider/index.ts rename to packages/theme/modules/checkout/composables/usePaymentProvider/index.ts index e99b796a9..10db9b893 100644 --- a/packages/theme/composables/usePaymentProvider/index.ts +++ b/packages/theme/modules/checkout/composables/usePaymentProvider/index.ts @@ -1,13 +1,14 @@ import { readonly, ref, useContext } from '@nuxtjs/composition-api'; import { Logger } from '~/helpers/logger'; -import { setPaymentMethodOnCartCommand } from '~/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand'; -import { useCart } from '~/composables'; -import { getAvailablePaymentMethodsCommand } from '~/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand'; -import type PaymentMethodParams from './PaymentMethodParams'; +import { setPaymentMethodOnCartCommand } from '~/modules/checkout/composables/usePaymentProvider/commands/setPaymentMethodOnCartCommand'; +import { getAvailablePaymentMethodsCommand } from '~/modules/checkout/composables/usePaymentProvider/commands/getAvailablePaymentMethodsCommand'; +import useCart from '~/modules/checkout/composables/useCart'; + import type { UsePaymentProviderErrors, UsePaymentProviderInterface, UsePaymentProviderSaveParams, + PaymentMethodParams, } from './usePaymentProvider'; /** diff --git a/packages/theme/composables/usePaymentProvider/usePaymentProvider.ts b/packages/theme/modules/checkout/composables/usePaymentProvider/usePaymentProvider.ts similarity index 87% rename from packages/theme/composables/usePaymentProvider/usePaymentProvider.ts rename to packages/theme/modules/checkout/composables/usePaymentProvider/usePaymentProvider.ts index bfb8ce8ce..31b4ecb72 100644 --- a/packages/theme/composables/usePaymentProvider/usePaymentProvider.ts +++ b/packages/theme/modules/checkout/composables/usePaymentProvider/usePaymentProvider.ts @@ -1,7 +1,12 @@ -import type { DeepReadonly, Ref } from '@nuxtjs/composition-api'; +import type { Ref } from '@nuxtjs/composition-api'; import type { ComposableFunctionArgs } from '~/composables/types'; import type { AvailablePaymentMethod, PaymentMethodInput } from '~/modules/GraphQL/types'; +export interface PaymentMethodParams { + cart_id: string; + payment_method: PaymentMethodInput; +} + /** * The {@link usePaymentProvider} error object. The properties values' are the * errors thrown by its methods. @@ -29,7 +34,7 @@ export interface UsePaymentProviderInterface { * * @see {@link UsePaymentProviderErrors} documentation for more details. */ - error: DeepReadonly>; + error: Readonly>; /** Loads the available payment methods for current cart. */ load(): Promise; diff --git a/packages/theme/composables/useShipping/index.ts b/packages/theme/modules/checkout/composables/useShipping/index.ts similarity index 97% rename from packages/theme/composables/useShipping/index.ts rename to packages/theme/modules/checkout/composables/useShipping/index.ts index 77a803091..4fd1a5984 100644 --- a/packages/theme/composables/useShipping/index.ts +++ b/packages/theme/modules/checkout/composables/useShipping/index.ts @@ -1,6 +1,6 @@ import { readonly, ref, useContext } from '@nuxtjs/composition-api'; import { Logger } from '~/helpers/logger'; -import { useCart } from '~/composables'; +import useCart from '~/modules/checkout/composables/useCart'; import type { ShippingCartAddress } from '~/modules/GraphQL/types'; import type { UseShippingErrors, diff --git a/packages/theme/composables/useShipping/useShipping.ts b/packages/theme/modules/checkout/composables/useShipping/useShipping.ts similarity index 92% rename from packages/theme/composables/useShipping/useShipping.ts rename to packages/theme/modules/checkout/composables/useShipping/useShipping.ts index d7d05f656..724410901 100644 --- a/packages/theme/composables/useShipping/useShipping.ts +++ b/packages/theme/modules/checkout/composables/useShipping/useShipping.ts @@ -1,4 +1,4 @@ -import type { DeepReadonly, Ref } from '@nuxtjs/composition-api'; +import type { Ref } from '@nuxtjs/composition-api'; import type { ShippingCartAddress } from '~/modules/GraphQL/types'; import type { ComposableFunctionArgs } from '~/composables/types'; @@ -30,7 +30,7 @@ export interface UseShippingInterface { * * @see {@link UseShippingErrors} documentation for more details. */ - error: DeepReadonly>; + error: Readonly>; /** Indicates whether any of the composable methods is in progress. */ loading: Readonly>; diff --git a/packages/theme/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand.ts b/packages/theme/modules/checkout/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand.ts similarity index 100% rename from packages/theme/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand.ts rename to packages/theme/modules/checkout/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand.ts diff --git a/packages/theme/composables/useShippingProvider/index.ts b/packages/theme/modules/checkout/composables/useShippingProvider/index.ts similarity index 85% rename from packages/theme/composables/useShippingProvider/index.ts rename to packages/theme/modules/checkout/composables/useShippingProvider/index.ts index 055000025..a455fbe5c 100644 --- a/packages/theme/composables/useShippingProvider/index.ts +++ b/packages/theme/modules/checkout/composables/useShippingProvider/index.ts @@ -1,7 +1,7 @@ import { readonly, ref, useContext } from '@nuxtjs/composition-api'; import { Logger } from '~/helpers/logger'; -import { useCart } from '~/composables'; -import { setShippingMethodsOnCartCommand } from '~/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand'; +import useCart from '~/modules/checkout/composables/useCart'; +import { setShippingMethodsOnCartCommand } from '~/modules/checkout/composables/useShippingProvider/commands/setShippingMethodsOnCartCommand'; import type { SetShippingMethodsOnCartInput } from '~/modules/GraphQL/types'; import type { UseShippingProviderErrors, @@ -11,9 +11,11 @@ import type { } from './useShippingProvider'; /** - * The `useShippingProvider()` composable allows loading the shipping provider + * The `useShippingProvider` composable allows loading the shipping provider * for the current cart and saving (selecting) other shipping provider for the * same cart. + * + * See the {@link UseShippingProviderInterface} for a list of methods and values available in this composable. */ export function useShippingProvider(): UseShippingProviderInterface { const loading = ref(false); diff --git a/packages/theme/modules/checkout/composables/useShippingProvider/useShippingProvider.ts b/packages/theme/modules/checkout/composables/useShippingProvider/useShippingProvider.ts new file mode 100644 index 000000000..7c9e53b0e --- /dev/null +++ b/packages/theme/modules/checkout/composables/useShippingProvider/useShippingProvider.ts @@ -0,0 +1,61 @@ +import type { Ref } from '@nuxtjs/composition-api'; +import type { SelectedShippingMethod } from '~/modules/GraphQL/types'; +import type { ComposableFunctionArgs } from '~/composables/types'; + +/** + * Errors that occured in the {@link useShippingProvider|useShippingProvider()} composable + */ +export interface UseShippingProviderErrors { + /** + * Contains error if `load` method failed, otherwise is `null` + */ + load: Error | null; + + /** + * Contains error if `save` method failed, otherwise is `null` + */ + save: Error | null; +} + +/** + * The params object accepted by the `load` method in the {@link useShippingProvider|useShippingProvider()} composable + */ +export type UseShippingProviderLoadParams = ComposableFunctionArgs<{}>; + +/** + * The params object accepted by the `save` method in the {@link useShippingProvider|useShippingProvider()} composable + */ +export type UseShippingProviderSaveParams = ComposableFunctionArgs<{ + // TODO: Define this type. + shippingMethod: any; +}>; + +/** + * The refs and methods returned by the {@link useShippingProvider|useShippingProvider()} composable + */ +export interface UseShippingProviderInterface { + /** + * Contains errors from the composable methods + */ + error: Readonly>; + + /** + * Indicates whether any of the methods is in progress + */ + loading: Readonly>; + + /** + * Loads the shipping provider for current cart + */ + load(params?: UseShippingProviderLoadParams): Promise; + + /** + * Save new shipping provider for current cart + * + * @remarks + * + * Internally, it calls the {@link @vue-storefront/magento-api#setShippingMethodsOnCart} API endpoint + * and accepts the custom queries named `setShippingMethodsOnCart`. + */ + save(params: UseShippingProviderSaveParams): Promise; +} diff --git a/packages/theme/getters/cartGetters.ts b/packages/theme/modules/checkout/getters/cartGetters.ts similarity index 79% rename from packages/theme/getters/cartGetters.ts rename to packages/theme/modules/checkout/getters/cartGetters.ts index ef5d8e926..f960ad45c 100644 --- a/packages/theme/getters/cartGetters.ts +++ b/packages/theme/modules/checkout/getters/cartGetters.ts @@ -4,23 +4,25 @@ import { AgnosticAttribute, AgnosticCoupon, AgnosticDiscount, - CartItem, AgnosticPaymentMethod, } from '~/composables/types'; -import type { Product } from '~/modules/catalog/product/types'; +import { PaymentMethodInterface } from '~/modules/checkout/types'; import { + CartItemInterface, Cart, Discount, ProductInterface, SelectedShippingMethod, ConfigurableCartItem, } from '~/modules/GraphQL/types'; +import type { Product } from '~/modules/catalog/product/types'; + import { CartGetters as CartGettersBase } from '~/getters/types'; import { getName, getSlug as getSlugGetter, getProductThumbnailImage } from '~/modules/catalog/product/getters/productGetters'; -export const getItems = (cart: Cart): CartItem[] => { +export const getItems = (cart: Cart): CartItemInterface[] => { if (!cart || !cart.items) { return []; } @@ -28,12 +30,12 @@ export const getItems = (cart: Cart): CartItem[] => { return cart.items; }; -export const getItemName = (product: CartItem): string => getName(product.product as Product); -export const getSlug = (product: CartItem): string => getSlugGetter(product.product as Product); +export const getItemName = (product: CartItemInterface): string => getName(product.product as Product); +export const getSlug = (product: CartItemInterface): string => getSlugGetter(product.product as Product); -export const getItemImage = (product: CartItem): string => getProductThumbnailImage(product.product as Product); +export const getItemImage = (product: CartItemInterface): string => getProductThumbnailImage(product.product as Product); -export const getItemPrice = (product: CartItem): AgnosticPrice => { +export const getItemPrice = (product: CartItemInterface): AgnosticPrice => { if (!product || !product.prices) { return { regular: 0, @@ -61,12 +63,12 @@ export const getItemPrice = (product: CartItem): AgnosticPrice => { }; }; -export const productHasSpecialPrice = (product: CartItem): boolean => getItemPrice(product).regular < getItemPrice(product).special; +export const productHasSpecialPrice = (product: CartItemInterface): boolean => getItemPrice(product).regular < getItemPrice(product).special; -export const getItemQty = (product: CartItem): number => product.quantity; +export const getItemQty = (product: CartItemInterface): number => product.quantity; export const getItemAttributes = ( - { product }: CartItem & { product: Product }, + { product }: CartItemInterface & { product: Product }, _filterByAttributeName?: Array, ): Record => { const attributes = {}; @@ -92,7 +94,7 @@ export const getItemAttributes = ( return attributes; }; -export const getItemSku = (product: CartItem): string => product?.product?.sku || ''; +export const getItemSku = (product: CartItemInterface): string => product?.product?.sku || ''; const calculateDiscounts = (discounts: Discount[]): number => discounts.reduce((a, b) => Number.parseFloat(`${a}`) + Number.parseFloat(`${b.amount.value}`), 0); @@ -167,18 +169,18 @@ export const getSelectedShippingMethod = (cart: Cart): SelectedShippingMethod | ? cart?.shipping_addresses[0]?.selected_shipping_method : null); -export const getAvailablePaymentMethods = (cart: Cart): AgnosticPaymentMethod[] => cart?.available_payment_methods.map((p) => ({ +export const getAvailablePaymentMethods = (cart: Cart): PaymentMethodInterface[] => cart?.available_payment_methods.map((p) => ({ label: p.title, value: p.code, })); -export const getStockStatus = (product: CartItem): string => product.product.stock_status; -export interface CartGetters extends CartGettersBase { +export const getStockStatus = (product: CartItemInterface): string => product.product.stock_status; +export interface CartGetters extends CartGettersBase { getAppliedCoupon(cart: Cart): AgnosticCoupon | null; - getAvailablePaymentMethods(cart: Cart): AgnosticPaymentMethod[]; + getAvailablePaymentMethods(cart: Cart): PaymentMethodInterface[]; getSelectedShippingMethod(cart: Cart): SelectedShippingMethod | null; - productHasSpecialPrice(product: CartItem): boolean; - getStockStatus(product: CartItem): string; + productHasSpecialPrice(product: CartItemInterface): boolean; + getStockStatus(product: CartItemInterface): string; getConfiguredVariant(product: ConfigurableCartItem): ProductInterface | null; } diff --git a/packages/theme/modules/checkout/getters/orderGetters.ts b/packages/theme/modules/checkout/getters/orderGetters.ts new file mode 100644 index 000000000..e965e582f --- /dev/null +++ b/packages/theme/modules/checkout/getters/orderGetters.ts @@ -0,0 +1,25 @@ +import type { AgnosticPagination } from '~/composables/types'; +import type { CustomerOrders, CustomerOrder, OrderItemInterface } from '~/modules/GraphQL/types'; + +export const getDate = (order: CustomerOrder): string => new Date(order?.order_date?.replace(/ /g, 'T')).toLocaleDateString(); + +export const getPrice = (order: CustomerOrder): number => order?.total?.base_grand_total?.value ?? 0; + +export const getItemPrice = (item: OrderItemInterface): number => item?.product_sale_price?.value ?? 0; + +const getPagination = (orders: CustomerOrders): AgnosticPagination => ({ + currentPage: orders?.page_info?.current_page || 1, + totalPages: orders?.page_info?.total_pages || 1, + totalItems: orders?.total_count || 0, + itemsPerPage: orders?.page_info?.page_size || 10, + pageOptions: [10, 50, 100], +}); + +const orderGetters = { + getDate, + getPrice, + getItemPrice, + getPagination, +}; + +export default orderGetters; diff --git a/packages/theme/modules/checkout/index.ts b/packages/theme/modules/checkout/index.ts new file mode 100644 index 000000000..c091eed38 --- /dev/null +++ b/packages/theme/modules/checkout/index.ts @@ -0,0 +1,46 @@ +import { Module } from '@nuxt/types'; +import path from 'node:path'; +import url from 'node:url'; + +const nuxtModule : Module = function checkoutModule() { + const moduleDir = path.dirname(url.fileURLToPath(import.meta.url)); + + this.extendRoutes((routes) => { + routes.unshift( + { + name: 'checkout', + path: '/checkout', + component: path.resolve(moduleDir, 'pages/Checkout.vue'), + children: [ + { + path: 'user-account', + name: 'user-account', + component: path.resolve(moduleDir, 'pages/Checkout/UserAccount.vue'), + }, + { + path: 'shipping', + name: 'shipping', + component: path.resolve(moduleDir, 'pages/Checkout/Shipping.vue'), + }, + { + path: 'billing', + name: 'billing', + component: path.resolve(moduleDir, 'pages/Checkout/Billing.vue'), + }, + { + path: 'payment', + name: 'payment', + component: path.resolve(moduleDir, 'pages/Checkout/Payment.vue'), + }, + { + path: 'thank-you', + name: 'thank-you', + component: path.resolve(moduleDir, 'pages/Checkout/ThankYou.vue'), + }, + ], + }, + ); + }); +}; + +export default nuxtModule; diff --git a/packages/theme/pages/Checkout.vue b/packages/theme/modules/checkout/pages/Checkout.vue similarity index 93% rename from packages/theme/pages/Checkout.vue rename to packages/theme/modules/checkout/pages/Checkout.vue index d91d35d66..23475cd63 100644 --- a/packages/theme/pages/Checkout.vue +++ b/packages/theme/modules/checkout/pages/Checkout.vue @@ -31,9 +31,8 @@
- diff --git a/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressEdit.vue b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressEdit.vue new file mode 100644 index 000000000..7d7acc6a5 --- /dev/null +++ b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressEdit.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/packages/theme/modules/customer/components/AddressForm.vue b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressForm.vue similarity index 78% rename from packages/theme/modules/customer/components/AddressForm.vue rename to packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressForm.vue index 774a7ace4..cdf8079ab 100644 --- a/packages/theme/modules/customer/components/AddressForm.vue +++ b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressForm.vue @@ -19,6 +19,7 @@ required :valid="!errors[0]" :error-message="$t(errors[0])" + :disabled="loading" /> @@ -50,6 +52,7 @@ required :valid="!errors[0]" :error-message="$t(errors[0])" + :disabled="loading" /> - {{ isNew ? $t('Add the address') : $t('Update the address') }} + - + + diff --git a/packages/theme/modules/customer/pages/AddressesDetails.vue b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressesDetails.vue similarity index 56% rename from packages/theme/modules/customer/pages/AddressesDetails.vue rename to packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressesDetails.vue index fc7ed3503..21bce9e30 100644 --- a/packages/theme/modules/customer/pages/AddressesDetails.vue +++ b/packages/theme/modules/customer/pages/MyAccount/AddressesDetails/AddressesDetails.vue @@ -1,38 +1,52 @@ - + + diff --git a/packages/theme/modules/customer/pages/MyNewsletter.vue b/packages/theme/modules/customer/pages/MyAccount/MyNewsletter.vue similarity index 91% rename from packages/theme/modules/customer/pages/MyNewsletter.vue rename to packages/theme/modules/customer/pages/MyAccount/MyNewsletter.vue index 0154f5332..ec7e355c7 100644 --- a/packages/theme/modules/customer/pages/MyNewsletter.vue +++ b/packages/theme/modules/customer/pages/MyAccount/MyNewsletter.vue @@ -1,8 +1,5 @@ - diff --git a/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/OrderSummaryRow.vue b/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/OrderSummaryRow.vue new file mode 100644 index 000000000..cd4f30656 --- /dev/null +++ b/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/OrderSummaryRow.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/SingleOrder.vue b/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/SingleOrder.vue new file mode 100644 index 000000000..0155d28a5 --- /dev/null +++ b/packages/theme/modules/customer/pages/MyAccount/OrderHistory/SingleOrder/SingleOrder.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/packages/theme/modules/customer/pages/MyAccount/useSidebarLinkGroups.ts b/packages/theme/modules/customer/pages/MyAccount/useSidebarLinkGroups.ts new file mode 100644 index 000000000..7f3032b2e --- /dev/null +++ b/packages/theme/modules/customer/pages/MyAccount/useSidebarLinkGroups.ts @@ -0,0 +1,62 @@ +import type { RawLocation } from 'vue-router'; +import { useRouter, useContext } from '@nuxtjs/composition-api'; +import { useUser } from '~/modules/customer/composables/useUser'; +import { useCart } from '~/modules/checkout/composables/useCart'; + +type LinkGroup = { title: string, items: LinkGroupItem[] }; +type LinkGroupItem = { label: string, link?: RawLocation, listeners?: Record (Promise | void)> }; + +export const useSidebarLinkGroups = () => { + const { localeRoute } = useContext(); + const { logout } = useUser(); + const { clear } = useCart(); + + const router = useRouter(); + const sidebarLinkGroups : LinkGroup[] = [ + { + title: 'Personal details', + items: [ + { + label: 'My profile', + link: { name: 'customer-my-profile' }, + }, + { + label: 'Addresses details', + link: { name: 'customer-addresses-details' }, + }, + { + label: 'My newsletter', + link: { name: 'customer-my-newsletter' }, + }, + { + label: 'My wishlist', + link: { name: 'customer-my-wishlist' }, + }, + ], + }, + { + title: 'Order details', + items: [ + { + label: 'Order history', + link: { name: 'customer-order-history' }, + }, + { + label: 'My reviews', + link: { name: 'customer-my-reviews' }, + }, + { + label: 'Log out', + listeners: { + click: async () => { + await Promise.all([logout({}), clear({})]); + await router.push(localeRoute({ name: 'home' })); + }, + }, + }, + ], + }, + ]; + + return { sidebarLinkGroups }; +}; diff --git a/packages/theme/stores/customer.ts b/packages/theme/modules/customer/stores/customer.ts similarity index 56% rename from packages/theme/stores/customer.ts rename to packages/theme/modules/customer/stores/customer.ts index d7331b958..f6ebbe9c6 100644 --- a/packages/theme/stores/customer.ts +++ b/packages/theme/modules/customer/stores/customer.ts @@ -1,19 +1,14 @@ import { defineStore } from 'pinia'; -import type { Cart } from '~/modules/GraphQL/types'; -import type { User } from '~/modules/customer/composables/useUser/useUser'; +import type { Customer } from '~/modules/GraphQL/types'; interface CustomerState { - cart: Cart, - user: User | null, + user: Customer | null, isLoggedIn: boolean, } export const useCustomerStore = defineStore('customer', { state: (): CustomerState => ({ user: null, - cart: { - id: '', is_virtual: false, total_quantity: 0, shipping_addresses: [], - }, isLoggedIn: false, }), actions: { diff --git a/packages/theme/modules/customer/types/form.ts b/packages/theme/modules/customer/types/form.ts new file mode 100644 index 000000000..5dd8422e3 --- /dev/null +++ b/packages/theme/modules/customer/types/form.ts @@ -0,0 +1,8 @@ +export type OnFormComplete = () => void; +export type OnFormError = (message: string) => void; + +export type SubmitEventPayload = { + form: TForm, + onComplete: OnFormComplete, + onError: OnFormError, +}; diff --git a/packages/theme/modules/magento/index.ts b/packages/theme/modules/magento/index.ts index 015feefc2..8e1deaa0d 100644 --- a/packages/theme/modules/magento/index.ts +++ b/packages/theme/modules/magento/index.ts @@ -3,7 +3,7 @@ import { Module } from '@nuxt/types'; /* eslint-disable unicorn/prefer-module */ const path = require('path'); -const nuxtModule : Module = function (options) { +const nuxtModule : Module = function magentoModule(options) { this.extendBuild((config) => { // eslint-disable-next-line no-param-reassign config.resolve.alias['@vue-storefront/magento-api$'] = require.resolve('@vue-storefront/magento-api'); diff --git a/packages/theme/modules/theme/index.ts b/packages/theme/modules/theme/index.ts deleted file mode 100644 index a5c7dab74..000000000 --- a/packages/theme/modules/theme/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Module } from '@nuxt/types'; - -const nuxtModule : Module = function themeModule() {}; - -export default nuxtModule; diff --git a/packages/theme/modules/wishlist/components/EmptyWishlist.vue b/packages/theme/modules/wishlist/components/EmptyWishlist.vue new file mode 100644 index 000000000..c7e5245cd --- /dev/null +++ b/packages/theme/modules/wishlist/components/EmptyWishlist.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/packages/theme/modules/theme/components/wishlist/WishlistSidebar.vue b/packages/theme/modules/wishlist/components/WishlistSidebar.vue similarity index 80% rename from packages/theme/modules/theme/components/wishlist/WishlistSidebar.vue rename to packages/theme/modules/wishlist/components/WishlistSidebar.vue index a81d84789..d618719a1 100644 --- a/packages/theme/modules/theme/components/wishlist/WishlistSidebar.vue +++ b/packages/theme/modules/wishlist/components/WishlistSidebar.vue @@ -48,14 +48,7 @@ :regular-price=" $fc(getItemPrice(wishlistItem).regular) " - :link=" - localePath( - `/p/${wishlistItem.product.sku}${productGetters.getSlug( - wishlistItem.product, - wishlistItem.product.categories[0] - )}` - ) - " + :link="getItemLink(wishlistItem)" :special-price="getItemPrice(wishlistItem).special && $fc(getItemPrice(wishlistItem).special)" :stock="99999" class="collected-product" @@ -65,16 +58,7 @@