From 749ab207d1b3aebdc589d40a3adeecb223d37dc0 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 14:05:57 +0200 Subject: [PATCH 001/189] Initial commit --- .github/workflows/cypress.yml | 17 + .github/workflows/docs.yml | 48 + .github/workflows/lint.yml | 23 + .gitignore | 7 + .nvmrc | 1 + README.md | 108 + cypress.json | 4 + cypress/fixtures/example.json | 5 + cypress/integration/actions.spec.js | 88 + cypress/plugins/index.js | 22 + cypress/support/commands.js | 25 + cypress/support/index.js | 20 + docs/.gitignore | 20 + docs/README.md | 33 + docs/babel.config.js | 3 + docs/docs/api/_category_.yml | 1 + docs/docs/api/index.md | 112 + docs/docs/api/modules.md | 93 + docs/docs/api/namespaces/_category_.yml | 2 + docs/docs/api/namespaces/sendTypes.md | 82 + docs/docusaurus.config.js | 87 + docs/package-lock.json | 11054 ++++++++++++++++ docs/package.json | 49 + docs/sidebars.js | 37 + .../components/HomepageFeatures.module.css | 12 + docs/src/components/HomepageFeatures.tsx | 69 + docs/src/css/custom.css | 54 + docs/src/pages/index.module.css | 23 + docs/src/pages/index.tsx | 40 + docs/src/pages/markdown-page.md | 7 + docs/static/.nojekyll | 0 docs/static/img/favicon.ico | Bin 0 -> 15086 bytes docs/static/img/sw6-logo.svg | 1 + docs/tsconfig.json | 7 + example/iframe-app/app.ts | 17 + example/iframe-app/index.html | 35 + example/iframe-app/style.css | 6 + example/main-app/main.ts | 18 + example/main-app/style.css | 17 + example/main-app/vite-env.d.ts | 1 + favicon.svg | 15 + index.html | 41 + lib/index.ts | 145 + lib/send-types.ts | 50 + package-lock.json | 4003 ++++++ package.json | 46 + tsconfig.json | 22 + vite.config.ts | 46 + 48 files changed, 16616 insertions(+) create mode 100644 .github/workflows/cypress.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 README.md create mode 100644 cypress.json create mode 100644 cypress/fixtures/example.json create mode 100644 cypress/integration/actions.spec.js create mode 100644 cypress/plugins/index.js create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.js create mode 100644 docs/.gitignore create mode 100644 docs/README.md create mode 100644 docs/babel.config.js create mode 100644 docs/docs/api/_category_.yml create mode 100644 docs/docs/api/index.md create mode 100644 docs/docs/api/modules.md create mode 100644 docs/docs/api/namespaces/_category_.yml create mode 100644 docs/docs/api/namespaces/sendTypes.md create mode 100644 docs/docusaurus.config.js create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/sidebars.js create mode 100644 docs/src/components/HomepageFeatures.module.css create mode 100644 docs/src/components/HomepageFeatures.tsx create mode 100644 docs/src/css/custom.css create mode 100644 docs/src/pages/index.module.css create mode 100644 docs/src/pages/index.tsx create mode 100644 docs/src/pages/markdown-page.md create mode 100644 docs/static/.nojekyll create mode 100644 docs/static/img/favicon.ico create mode 100644 docs/static/img/sw6-logo.svg create mode 100644 docs/tsconfig.json create mode 100644 example/iframe-app/app.ts create mode 100644 example/iframe-app/index.html create mode 100644 example/iframe-app/style.css create mode 100644 example/main-app/main.ts create mode 100644 example/main-app/style.css create mode 100644 example/main-app/vite-env.d.ts create mode 100644 favicon.svg create mode 100644 index.html create mode 100644 lib/index.ts create mode 100644 lib/send-types.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 000000000..dea6944db --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,17 @@ +name: E2E Tests + +on: [push, pull_request] + +jobs: + cypress-run: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + # Install NPM dependencies, cache them correctly + # and run all Cypress tests + - name: Cypress run + uses: cypress-io/github-action@v2 + with: + build: npm run build + start: npm run dev diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..1eea57362 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,48 @@ +name: Docs + +on: [push, pull_request] + +jobs: + create_docs: + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + + - name: Retrieve the cached main "node_modules" directory (if present) + uses: actions/cache@v2 + id: node-cache-main + with: + path: node_modules + key: node-modules-main-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + + - name: Retrieve the cached docs "node_modules" directory (if present) + uses: actions/cache@v2 + id: node-cache-docs + with: + path: node_modules + key: node-modules-cache-${{ runner.os }}-${{ hashFiles('docs/package-lock.json') }} + + - name: Install main dependencies (if the cached directory was not found) + if: steps.node-cache-main.outputs.cache-hit != 'true' + run: npm ci + + - name: Install docs dependencies (if the cached directory was not found) + if: steps.node-cache-docs.outputs.cache-hit != 'true' + run: cd ./docs && npm ci && cd ./.. + + - name: Test to see if the project compiles + run: npm run lint + + - name: Create the docs directory locally in CI + run: npm run doc + + - name: Deploy 🚀 + if: github.ref == 'refs/heads/main' + uses: JamesIves/github-pages-deploy-action@4.1.4 + with: + branch: gh-pages + folder: docs/build \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..15fe72862 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint + +on: [push, pull_request] + +jobs: + tsc: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + - name: Retrieve the cached "node_modules" directory (if present) + uses: actions/cache@v2 + id: node-cache + with: + path: node_modules + key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install dependencies (if the cached directory was not found) + if: steps.node-cache.outputs.cache-hit != 'true' + run: npm ci + - name: lint + run: npm run lint diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..717d81d81 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules +.DS_Store +dist +dist-ssr +dist-example +*.local +coverage \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..518633e16 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/fermium diff --git a/README.md b/README.md new file mode 100644 index 000000000..3faae14f1 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +# Warning: +### This repository is still under development and should not be used yet. + +-------- + +# Admin app actions +### for the Shopware 6 app system + +This small library is for using admin actions in your app iframes. + +Your app can then extend the Administration with many different actions, customizing UI elements and more. It can send actions to the administration or receive data from it. + +```js +send('redirect', { + url: 'https://www.shopware.com', + newTab: true +}) +``` + +[![E2E Tests](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml) [![Lint](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml) + +## Installation + +#### Using NPM: +Install it to your `package.json` +``` +npm i --save @shopware/admin-app-actions +``` + +Then import it in your app: +```js +import { send } from '@shopware/admin-app-actions; +``` + +#### Using CDN: +Import the source from the CDN: + +```js +// use the latest version available + + +// use a fix version (example here: 1.2.3) + +``` + +Then you can access it with the global variable `AdminAppActions`. + +```js +const { send } = AdminAppActions; +``` + +## Features + +- Simple API +- Sending actions to the admin +- Receive data from the admin +- Extremely small footprint on app side +- Full Typescript support + +### Simple API +The API is very expressive and easy to learn. You just need to import our library and then you can use the send method for sending actions and receiving data. + +The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. + +```js +import { send } from 'sw-app-actions'; + +send('redirect', { + url: 'https://www.shopware.com', + newTab: true, +}) +``` + +If the action has a response then you can get the information with the returned Promise value: + +```javascript +import { send } from 'sw-app-actions'; + +const pageTitle = await send('getPageTitle', {}); +``` + +## Extremely small footprint on app side +The bundle size of this library is extremely small and will not grow when new actions will be defined. How is this done? The functions only execute the commands. Only types are describing the API and therefore not increase the bundle size. + +## Full Typescript support +Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. + +A full auto-generated API documentation can be found in the documentation: [TODO: Add link here] + +___________ + +## Recipient (only for usage in the Shopware 6 Administration): +The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: + +```ts +import { on } from 'sw-app-actions' + +on('redirect', ({ newTab, url }) => { + // call a method which redirects to the url + redirect({ newTab, url }); +}) + +on('getPageTitle', () => { + // or return the value if the type needs a response + return document.title; +}) + +``` \ No newline at end of file diff --git a/cypress.json b/cypress.json new file mode 100644 index 000000000..da1963402 --- /dev/null +++ b/cypress.json @@ -0,0 +1,4 @@ +{ + "chromeWebSecurity": false, + "video": false +} diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 000000000..02e425437 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/integration/actions.spec.js b/cypress/integration/actions.spec.js new file mode 100644 index 000000000..941b26973 --- /dev/null +++ b/cypress/integration/actions.spec.js @@ -0,0 +1,88 @@ +/// + +Cypress.Commands.add('getIframe', (iframe = 'iframe') => { + return cy.get(iframe) + .its('0.contentDocument.body') + .should('be.visible') + .then(cy.wrap); +}) + +describe('Test the actions', () => { + beforeEach(() => { + cy.visit('http://localhost:8181') + }) + + // Test void actions + ;[ + { + type: 'createAlert', + data: { + message: "Hello from the iframe!" + } + }, + { + type: 'redirect', + data: { + url: "https://www.shopware.com", + newTab: true + } + } + ].forEach((action) => { + it(`"${action.type}" action`, () => { + // set listener + cy.get('#actionType').type(action.type); + cy.get('#listenToAction').click(); + + // set send + cy.getIframe() + .find('#actionType') + .type(action.type) + + cy.getIframe() + .find('#actionValue') + .type(JSON.stringify(action.data), { parseSpecialCharSequences: false }) + + // send value + cy.getIframe() + .find('#sendAction') + .click() + + // check if value is correct + cy.get('#result').contains(JSON.stringify(action.data)) + }); + }); + + // Test actions which get data back + ;[ + { + type: 'getPageTitle', + data: {}, + responseData: 'Product Listing - Shopware' + }, + ].forEach((action) => { + it(`"${action.type}" action`, () => { + // set listener + cy.get('#actionType').type(action.type); + cy.get('#responseData').type(JSON.stringify(action.responseData)); + cy.get('#listenToAction').click(); + + // set send + cy.getIframe() + .find('#actionType') + .type(action.type) + + cy.getIframe() + .find('#actionValue') + .type(JSON.stringify(action.data), { parseSpecialCharSequences: false }) + + // send value + cy.getIframe() + .find('#sendAction') + .click() + + // check if value is correct + cy.get('#result').contains(JSON.stringify(action.data)) + cy.getIframe().find('#result').contains(JSON.stringify(action.responseData)) + }); + }) +}) diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 000000000..59b2bab6e --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,22 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 000000000..119ab03f7 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 000000000..d68db96df --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..55d0c3ef4 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,33 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +``` +$ GIT_USER= USE_SSH=true yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/babel.config.js b/docs/babel.config.js new file mode 100644 index 000000000..e00595dae --- /dev/null +++ b/docs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/docs/docs/api/_category_.yml b/docs/docs/api/_category_.yml new file mode 100644 index 000000000..24a460261 --- /dev/null +++ b/docs/docs/api/_category_.yml @@ -0,0 +1 @@ +label: "API" \ No newline at end of file diff --git a/docs/docs/api/index.md b/docs/docs/api/index.md new file mode 100644 index 000000000..6d7c0161a --- /dev/null +++ b/docs/docs/api/index.md @@ -0,0 +1,112 @@ +--- +id: "index" +title: "@shopware-ag/admin-app-actions" +slug: "/api/" +sidebar_label: "Getting started" +sidebar_position: 0 +custom_edit_url: null +--- + +# Admin app actions +### for the Shopware 6 app system + +This small library is for using admin actions in your app iframes. + +Your app can then extend the Administration with many different actions, customizing UI elements and more. It can send actions to the administration or receive data from it. + +```js +send('redirect', { + url: 'https://www.shopware.com', + newTab: true +}) +``` + +[![E2E Tests](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml) [![Lint](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml) + +## Installation + +#### Using NPM: +Install it to your `package.json` +``` +npm i --save @shopware/admin-app-actions +``` + +Then import it in your app: +```js +import { send } from '@shopware/admin-app-actions; +``` + +#### Using CDN: +Import the source from the CDN: + +```js +// use the latest version available + + +// use a fix version (example here: 1.2.3) + +``` + +Then you can access it with the global variable `AdminAppActions`. + +```js +const { send } = AdminAppActions; +``` + +## Features + +- Simple API +- Sending actions to the admin +- Receive data from the admin +- Extremely small footprint on app side +- Full Typescript support + +### Simple API +The API is very expressive and easy to learn. You just need to import our library and then you can use the send method for sending actions and receiving data. + +The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. + +```js +import { send } from 'sw-app-actions'; + +send('redirect', { + url: 'https://www.shopware.com', + newTab: true, +}) +``` + +If the action has a response then you can get the information with the returned Promise value: + +```javascript +import { send } from 'sw-app-actions'; + +const pageTitle = await send('getPageTitle', {}); +``` + +## Extremely small footprint on app side +The bundle size of this library is extremely small and will not grow when new actions will be defined. How is this done? The functions only execute the commands. Only types are describing the API and therefore not increase the bundle size. + +## Full Typescript support +Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. + +A full auto-generated API documentation can be found in the documentation: [TODO: Add link here] + +___________ + +## Recipient (only for usage in the Shopware 6 Administration): +The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: + +```ts +import { on } from 'sw-app-actions' + +on('redirect', ({ newTab, url }) => { + // call a method which redirects to the url + redirect({ newTab, url }); +}) + +on('getPageTitle', () => { + // or return the value if the type needs a response + return document.title; +}) + +``` diff --git a/docs/docs/api/modules.md b/docs/docs/api/modules.md new file mode 100644 index 000000000..d4f157524 --- /dev/null +++ b/docs/docs/api/modules.md @@ -0,0 +1,93 @@ +--- +id: "modules" +title: "@shopware-ag/admin-app-actions" +sidebar_label: "Exports" +sidebar_position: 0.5 +custom_edit_url: null +--- + +## Namespaces + +- [sendTypes](namespaces/sendTypes) + +## Functions + +### on + +▸ **on**<`SEND_TYPE`\>(`type`, `method`): () => `void` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `SEND_TYPE` | extends keyof `ShopwareSendTypes` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `type` | `SEND_TYPE` | Choose a type of action from the {@link send-types} | +| `method` | (`data`: `SendDataType`<`SEND_TYPE`\>) => `ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``] | This method should return the response value | + +#### Returns + +`fn` + +The return value is a cancel function to stop listening to the events + +▸ (): `void` + +##### Returns + +`void` + +The return value is a cancel function to stop listening to the events + +#### Defined in + +[index.ts:105](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/index.ts#L105) + +___ + +### send + +▸ **send**<`SEND_TYPE`\>(`type`, `data`): `Promise`<`ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``]\> + +With this method you can send actions: + +```javascript + send('redirect', { + url: 'https://www.shopware.com', + newTab: true, + }) +``` + +or you can request data: +```javascript +send('getPageTitle', {}).then((pageTitle) => { + console.log(pageTitle) +}) +``` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `SEND_TYPE` | extends keyof `ShopwareSendTypes` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `type` | `SEND_TYPE` | Choose a type of action from the {@link send-types} | +| `data` | `SendDataType`<`SEND_TYPE`\> | The matching data for the type | + +#### Returns + +`Promise`<`ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``]\> + +A promise with the response data in the given responseType + +#### Defined in + +[index.ts:62](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/index.ts#L62) diff --git a/docs/docs/api/namespaces/_category_.yml b/docs/docs/api/namespaces/_category_.yml new file mode 100644 index 000000000..1833bbb58 --- /dev/null +++ b/docs/docs/api/namespaces/_category_.yml @@ -0,0 +1,2 @@ +label: "Namespaces" +position: 1 \ No newline at end of file diff --git a/docs/docs/api/namespaces/sendTypes.md b/docs/docs/api/namespaces/sendTypes.md new file mode 100644 index 000000000..7a2a4ba8a --- /dev/null +++ b/docs/docs/api/namespaces/sendTypes.md @@ -0,0 +1,82 @@ +--- +id: "sendTypes" +title: "Namespace: sendTypes" +sidebar_label: "sendTypes" +sidebar_position: 0 +custom_edit_url: null +--- + +## Type aliases + +### createAlert + +Ƭ **createAlert**: `Object` + +Create a alert notification. + +```js +send('createAlert', { + message: 'My alert message' +}) +``` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `message` | `string` | This message will be shown in the alert | +| `responseType` | `void` | - | + +#### Defined in + +[send-types.ts:10](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L10) + +___ + +### getPageTitle + +Ƭ **getPageTitle**: `Object` + +Get the actual page title +```js +send('redirect', {}).then(pageTitle => { + console.log(pageTitle) +}) +``` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `responseType` | `string` | + +#### Defined in + +[send-types.ts:48](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L48) + +___ + +### redirect + +Ƭ **redirect**: `Object` + +Redirect to another URL + +```js +send('redirect', { + url: 'https://www.shopware.com', + newTab: true +}) +``` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `newTab` | `boolean` | If this is activated then the link will be opened in a new tab | +| `responseType` | `void` | - | +| `url` | `string` | The URL for the redirection | + +#### Defined in + +[send-types.ts:28](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L28) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js new file mode 100644 index 000000000..06232d136 --- /dev/null +++ b/docs/docusaurus.config.js @@ -0,0 +1,87 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Admin App Actions', + tagline: 'for Shopware 6 apps', + url: 'https://your-docusaurus-test-site.com', + baseUrl: '/', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + favicon: 'img/favicon.ico', + organizationName: 'Shopware AG', // Usually your GitHub org/user name. + projectName: 'admin-app-actions', // Usually your repo name. + + plugins: [ + [ + 'docusaurus-plugin-typedoc', + + // Plugin / TypeDoc options + { + entryPoints: ['../lib/index.ts'], + tsconfig: '../tsconfig.json', + watch: process.env.TYPEDOC_WATCH, + excludeInternal: true, + hideBreadcrumbs: true, + hideInPageTOC: true, + sidebar: { + fullNames: true, + readmeLabel: 'Getting started' + } + }, + ] + ], + + presets: [ + [ + '@docusaurus/preset-classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve('./sidebars.js'), + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + navbar: { + title: 'Admin App Actions', + logo: { + alt: 'Shopware 6 Logo', + src: 'img/sw6-logo.svg', + }, + items: [ + { + to: 'docs/api', + activeBasePath: 'docs/api', + position: 'left', + label: 'Documentation', + }, + { + href: 'https://github.com/shopware/admin-app-actions', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + copyright: `Copyright © ${new Date().getFullYear()} Shopware AG`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 000000000..34ad187d5 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,11054 @@ +{ + "name": "docs", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@algolia/autocomplete-core": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.2.2.tgz", + "integrity": "sha512-JOQaURze45qVa8OOFDh+ozj2a/ObSRsVyz6Zd0aiBeej+RSTqrr1hDVpGNbbXYLW26G5ujuc9QIdH+rBHn95nw==", + "requires": { + "@algolia/autocomplete-shared": "1.2.2" + } + }, + "@algolia/autocomplete-preset-algolia": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.2.tgz", + "integrity": "sha512-AZkh+bAMaJDzMZTelFOXJTJqkp5VPGH8W3n0B+Ggce7DdozlMRsDLguKTCQAkZ0dJ1EbBPyFL5ztL/JImB137Q==", + "requires": { + "@algolia/autocomplete-shared": "1.2.2" + } + }, + "@algolia/autocomplete-shared": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz", + "integrity": "sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw==" + }, + "@algolia/cache-browser-local-storage": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz", + "integrity": "sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww==", + "requires": { + "@algolia/cache-common": "4.10.5" + } + }, + "@algolia/cache-common": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.10.5.tgz", + "integrity": "sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw==" + }, + "@algolia/cache-in-memory": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz", + "integrity": "sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA==", + "requires": { + "@algolia/cache-common": "4.10.5" + } + }, + "@algolia/client-account": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.10.5.tgz", + "integrity": "sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q==", + "requires": { + "@algolia/client-common": "4.10.5", + "@algolia/client-search": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "@algolia/client-analytics": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.10.5.tgz", + "integrity": "sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw==", + "requires": { + "@algolia/client-common": "4.10.5", + "@algolia/client-search": "4.10.5", + "@algolia/requester-common": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "@algolia/client-common": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.10.5.tgz", + "integrity": "sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA==", + "requires": { + "@algolia/requester-common": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "@algolia/client-personalization": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.10.5.tgz", + "integrity": "sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w==", + "requires": { + "@algolia/client-common": "4.10.5", + "@algolia/requester-common": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "@algolia/client-search": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.10.5.tgz", + "integrity": "sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg==", + "requires": { + "@algolia/client-common": "4.10.5", + "@algolia/requester-common": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "@algolia/logger-common": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.10.5.tgz", + "integrity": "sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA==" + }, + "@algolia/logger-console": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.10.5.tgz", + "integrity": "sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ==", + "requires": { + "@algolia/logger-common": "4.10.5" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz", + "integrity": "sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g==", + "requires": { + "@algolia/requester-common": "4.10.5" + } + }, + "@algolia/requester-common": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.10.5.tgz", + "integrity": "sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q==" + }, + "@algolia/requester-node-http": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz", + "integrity": "sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w==", + "requires": { + "@algolia/requester-common": "4.10.5" + } + }, + "@algolia/transporter": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.10.5.tgz", + "integrity": "sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA==", + "requires": { + "@algolia/cache-common": "4.10.5", + "@algolia/logger-common": "4.10.5", + "@algolia/requester-common": "4.10.5" + } + }, + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + }, + "@babel/core": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", + "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "requires": { + "@babel/code-frame": "^7.15.8", + "@babel/generator": "^7.15.8", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.8", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.8", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6", + "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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", + "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", + "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "requires": { + "@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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", + "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", + "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", + "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + }, + "@babel/helper-wrap-function": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", + "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "requires": { + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", + "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", + "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", + "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", + "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.15.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", + "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", + "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", + "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", + "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + } + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", + "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "requires": { + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + } + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", + "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "requires": { + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + } + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", + "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", + "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", + "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.15.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", + "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", + "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.9" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", + "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.14.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", + "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", + "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", + "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", + "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", + "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", + "@babel/plugin-proposal-async-generator-functions": "^7.15.8", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.15.4", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.15.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@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.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.15.3", + "@babel/plugin-transform-classes": "^7.15.4", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.15.4", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.15.4", + "@babel/plugin-transform-modules-systemjs": "^7.15.4", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.15.4", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.15.8", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.15.6", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.16.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@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/preset-react": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", + "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + } + }, + "@babel/preset-typescript": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", + "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.15.0" + } + }, + "@babel/runtime": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", + "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", + "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", + "requires": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@docsearch/css": { + "version": "3.0.0-alpha.40", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.40.tgz", + "integrity": "sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg==" + }, + "@docsearch/react": { + "version": "3.0.0-alpha.40", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.40.tgz", + "integrity": "sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ==", + "requires": { + "@algolia/autocomplete-core": "1.2.2", + "@algolia/autocomplete-preset-algolia": "1.2.2", + "@docsearch/css": "3.0.0-alpha.40", + "algoliasearch": "^4.0.0" + } + }, + "@docusaurus/core": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.6.tgz", + "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==", + "requires": { + "@babel/core": "^7.12.16", + "@babel/generator": "^7.12.15", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/preset-react": "^7.12.13", + "@babel/preset-typescript": "^7.12.16", + "@babel/runtime": "^7.12.5", + "@babel/runtime-corejs3": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@docusaurus/cssnano-preset": "2.0.0-beta.6", + "@docusaurus/react-loadable": "5.5.0", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-common": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "@slorber/static-site-generator-webpack-plugin": "^4.0.0", + "@svgr/webpack": "^5.5.0", + "autoprefixer": "^10.2.5", + "babel-loader": "^8.2.2", + "babel-plugin-dynamic-import-node": "2.3.0", + "boxen": "^5.0.1", + "chalk": "^4.1.1", + "chokidar": "^3.5.1", + "clean-css": "^5.1.5", + "commander": "^5.1.0", + "copy-webpack-plugin": "^9.0.0", + "core-js": "^3.9.1", + "css-loader": "^5.1.1", + "css-minimizer-webpack-plugin": "^3.0.1", + "cssnano": "^5.0.4", + "del": "^6.0.0", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^1.12.1", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "github-slugger": "^1.3.0", + "globby": "^11.0.2", + "html-minifier-terser": "^5.1.1", + "html-tags": "^3.1.0", + "html-webpack-plugin": "^5.3.2", + "import-fresh": "^3.3.0", + "is-root": "^2.1.0", + "leven": "^3.1.0", + "lodash": "^4.17.20", + "mini-css-extract-plugin": "^1.6.0", + "module-alias": "^2.2.2", + "nprogress": "^0.2.0", + "postcss": "^8.2.15", + "postcss-loader": "^5.3.0", + "prompts": "^2.4.1", + "react-dev-utils": "^11.0.1", + "react-error-overlay": "^6.0.9", + "react-helmet": "^6.1.0", + "react-loadable": "^5.5.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.2.0", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.2.0", + "remark-admonitions": "^1.2.1", + "resolve-pathname": "^3.0.0", + "rtl-detect": "^1.0.3", + "semver": "^7.3.4", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.4", + "std-env": "^2.2.1", + "strip-ansi": "^6.0.0", + "terser-webpack-plugin": "^5.1.3", + "tslib": "^2.2.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^5.3.0", + "webpack": "^5.40.0", + "webpack-bundle-analyzer": "^4.4.2", + "webpack-dev-server": "^3.11.2", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.0-3" + } + }, + "@docusaurus/cssnano-preset": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz", + "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==", + "requires": { + "cssnano-preset-advanced": "^5.1.1", + "postcss": "^8.2.15", + "postcss-sort-media-queries": "^3.10.11" + } + }, + "@docusaurus/mdx-loader": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.6.tgz", + "integrity": "sha512-yO6N+OESR77WZ/pXz7muOJGLletYYksx7s7wrwrr0x+A8tzdSwiHZ9op0NyjjpW5AnItU/WQQfcjv37qv4K6HA==", + "requires": { + "@babel/parser": "^7.12.16", + "@babel/traverse": "^7.12.13", + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@mdx-js/mdx": "^1.6.21", + "@mdx-js/react": "^1.6.21", + "chalk": "^4.1.1", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "github-slugger": "^1.3.0", + "gray-matter": "^4.0.3", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.1.0", + "stringify-object": "^3.3.0", + "unist-util-visit": "^2.0.2", + "url-loader": "^4.1.1", + "webpack": "^5.40.0" + } + }, + "@docusaurus/module-type-aliases": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.6.tgz", + "integrity": "sha512-TrJ0u4F3mZ7uQNga22why3SsoNwlHp6vltDLlWI80jZmZpnk9BJglpcR8MPOTSEjyUgMxJ6B3q0PA/rWzupWZA==", + "dev": true + }, + "@docusaurus/plugin-content-blog": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.6.tgz", + "integrity": "sha512-ohfMt7+rPiFQImc4Clpvc9m/1yWUQAjpG3e/coJywlJYbDXvi1pmH0VKkDUMBSe/35Wtz9457DYgNFG81lhV7Q==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/mdx-loader": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "chalk": "^4.1.1", + "escape-string-regexp": "^4.0.0", + "feed": "^4.2.2", + "fs-extra": "^10.0.0", + "globby": "^11.0.2", + "js-yaml": "^4.0.0", + "loader-utils": "^2.0.0", + "lodash": "^4.17.20", + "reading-time": "^1.3.0", + "remark-admonitions": "^1.2.1", + "tslib": "^2.2.0", + "webpack": "^5.40.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@docusaurus/plugin-content-docs": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.6.tgz", + "integrity": "sha512-cM5WWogWmX+qKPKv332eDWGRVVT5OjskbmFKe2QimwoaON3Cv6XY8Fo2xdYopqGIU0r0z8dVtRmoGS0ji7zB7w==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/mdx-loader": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "chalk": "^4.1.1", + "combine-promises": "^1.1.0", + "escape-string-regexp": "^4.0.0", + "execa": "^5.0.0", + "fs-extra": "^10.0.0", + "globby": "^11.0.2", + "import-fresh": "^3.2.2", + "js-yaml": "^4.0.0", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "remark-admonitions": "^1.2.1", + "shelljs": "^0.8.4", + "tslib": "^2.2.0", + "utility-types": "^3.10.0", + "webpack": "^5.40.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "@docusaurus/plugin-content-pages": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.6.tgz", + "integrity": "sha512-N6wARzOA8gTFeBXZSKbAN5s1Ej6R/pVg+J946E8GCYefXTFikTNRQ8+OPhax4MRzgzoOvhTQbLbRCSoAzSmjig==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/mdx-loader": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "globby": "^11.0.2", + "lodash": "^4.17.20", + "remark-admonitions": "^1.2.1", + "tslib": "^2.1.0", + "webpack": "^5.40.0" + } + }, + "@docusaurus/plugin-debug": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.6.tgz", + "integrity": "sha512-TJXDBR2Gr/mhBrcj+/4+rTShSm/Qg56Jfezbm/2fFvuPgVlUwy6oj08s2/kYSTmkfG7G+c4iX1GBHjtyo1KxZA==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "fs-extra": "^9.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@docusaurus/plugin-google-analytics": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.6.tgz", + "integrity": "sha512-AHbMNPN3gkWXYFnmHL9MBcRODByAgzHZoH/5v3xwbSV2FOZo6kx4Hp94I6oFM0o5mp+i6X7slDncgGTWSGxCMg==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6" + } + }, + "@docusaurus/plugin-google-gtag": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.6.tgz", + "integrity": "sha512-uJyQ30sXbVRS3TGtVJFA0s1ozrluuREu6NK2Z3TLtKpeT2NTe5iaqXN0Xp749hr3bjbgpEe6gMixVh//jg503w==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6" + } + }, + "@docusaurus/plugin-sitemap": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.6.tgz", + "integrity": "sha512-jpTaODqyCgg+20RtMw8gSvCKQOvH18FpKhIu6FG+z4zgHP33qaJouVM7/1ZKPrfNt4z7xDOyBNUzzdmpssHA8A==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-common": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "fs-extra": "^10.0.0", + "sitemap": "^7.0.0", + "tslib": "^2.2.0" + } + }, + "@docusaurus/preset-classic": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.6.tgz", + "integrity": "sha512-riqQRcNssNH7oto8nAjYIO79/ZucidexHTDlgD+trP56ploHLJp4kIlxb44IGOmx3es8/z4egWtM+acY/39N2Q==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/plugin-content-blog": "2.0.0-beta.6", + "@docusaurus/plugin-content-docs": "2.0.0-beta.6", + "@docusaurus/plugin-content-pages": "2.0.0-beta.6", + "@docusaurus/plugin-debug": "2.0.0-beta.6", + "@docusaurus/plugin-google-analytics": "2.0.0-beta.6", + "@docusaurus/plugin-google-gtag": "2.0.0-beta.6", + "@docusaurus/plugin-sitemap": "2.0.0-beta.6", + "@docusaurus/theme-classic": "2.0.0-beta.6", + "@docusaurus/theme-search-algolia": "2.0.0-beta.6" + } + }, + "@docusaurus/react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==", + "requires": { + "prop-types": "^15.6.2" + } + }, + "@docusaurus/theme-classic": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.6.tgz", + "integrity": "sha512-fMb6gAKUdaojInZabimIJE+yPWs8dQfmZII7v/LHmgxafh/FylmrBkKhyJfa2ix4QRibo9E01LGX44/aKzemxw==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/plugin-content-blog": "2.0.0-beta.6", + "@docusaurus/plugin-content-docs": "2.0.0-beta.6", + "@docusaurus/plugin-content-pages": "2.0.0-beta.6", + "@docusaurus/theme-common": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-common": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "@mdx-js/mdx": "^1.6.21", + "@mdx-js/react": "^1.6.21", + "chalk": "^4.1.1", + "clsx": "^1.1.1", + "copy-text-to-clipboard": "^3.0.1", + "fs-extra": "^10.0.0", + "globby": "^11.0.2", + "infima": "0.2.0-alpha.33", + "lodash": "^4.17.20", + "parse-numeric-range": "^1.2.0", + "postcss": "^8.2.15", + "prism-react-renderer": "^1.2.1", + "prismjs": "^1.23.0", + "prop-types": "^15.7.2", + "react-router-dom": "^5.2.0", + "rtlcss": "^3.1.2" + } + }, + "@docusaurus/theme-common": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.6.tgz", + "integrity": "sha512-53nFWMjpFdyHEvBfQQQoDm9rNKgGangy7vSp1B/F3+uRyYAItE7O4l8MdOALXFALlddiiPYvCtI1qGx2dnzndA==", + "requires": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/plugin-content-blog": "2.0.0-beta.6", + "@docusaurus/plugin-content-docs": "2.0.0-beta.6", + "@docusaurus/plugin-content-pages": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.6", + "clsx": "^1.1.1", + "fs-extra": "^10.0.0", + "tslib": "^2.1.0" + } + }, + "@docusaurus/theme-search-algolia": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.6.tgz", + "integrity": "sha512-GaaYdf6EEKL3jwmt9LRyiMtNvobOhw4vGuYJKbJcgba/M75kOJSbZPRrhALBAe6o4gOYbV44afzFC/jUUp7dsA==", + "requires": { + "@docsearch/react": "^3.0.0-alpha.39", + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/theme-common": "2.0.0-beta.6", + "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/utils-validation": "2.0.0-beta.6", + "algoliasearch": "^4.8.4", + "algoliasearch-helper": "^3.3.4", + "clsx": "^1.1.1", + "eta": "^1.12.1", + "lodash": "^4.17.20" + } + }, + "@docusaurus/types": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.6.tgz", + "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==", + "requires": { + "commander": "^5.1.0", + "joi": "^17.4.0", + "querystring": "0.2.0", + "webpack": "^5.40.0", + "webpack-merge": "^5.8.0" + } + }, + "@docusaurus/utils": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.6.tgz", + "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==", + "requires": { + "@docusaurus/types": "2.0.0-beta.6", + "@types/github-slugger": "^1.3.0", + "chalk": "^4.1.1", + "escape-string-regexp": "^4.0.0", + "fs-extra": "^10.0.0", + "globby": "^11.0.4", + "gray-matter": "^4.0.3", + "lodash": "^4.17.20", + "micromatch": "^4.0.4", + "resolve-pathname": "^3.0.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, + "@docusaurus/utils-common": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.6.tgz", + "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==", + "requires": { + "@docusaurus/types": "2.0.0-beta.6", + "tslib": "^2.2.0" + } + }, + "@docusaurus/utils-validation": { + "version": "2.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.6.tgz", + "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==", + "requires": { + "@docusaurus/utils": "2.0.0-beta.6", + "chalk": "^4.1.1", + "joi": "^17.4.0", + "tslib": "^2.1.0" + } + }, + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "requires": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } + } + }, + "@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" + }, + "@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz", + "integrity": "sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==", + "requires": { + "bluebird": "^3.7.1", + "cheerio": "^0.22.0", + "eval": "^0.1.4", + "url": "^0.11.0", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "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" + } + } + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@tsconfig/docusaurus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz", + "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", + "dev": true + }, + "@types/eslint": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "@types/github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==" + }, + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "requires": { + "@types/unist": "*" + } + }, + "@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "requires": { + "@types/unist": "*" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node": { + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "@types/sax": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.3.tgz", + "integrity": "sha512-+QSw6Tqvs/KQpZX8DvIl3hZSjNFLW/OqE5nlyHXtTwODaJvioN2rOWpBNEWZp2HZUFhOh+VohmJku/WxEXU2XA==", + "requires": { + "@types/node": "*" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "algoliasearch": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.10.5.tgz", + "integrity": "sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ==", + "requires": { + "@algolia/cache-browser-local-storage": "4.10.5", + "@algolia/cache-common": "4.10.5", + "@algolia/cache-in-memory": "4.10.5", + "@algolia/client-account": "4.10.5", + "@algolia/client-analytics": "4.10.5", + "@algolia/client-common": "4.10.5", + "@algolia/client-personalization": "4.10.5", + "@algolia/client-search": "4.10.5", + "@algolia/logger-common": "4.10.5", + "@algolia/logger-console": "4.10.5", + "@algolia/requester-browser-xhr": "4.10.5", + "@algolia/requester-common": "4.10.5", + "@algolia/requester-node-http": "4.10.5", + "@algolia/transporter": "4.10.5" + } + }, + "algoliasearch-helper": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.5.5.tgz", + "integrity": "sha512-JDH14gMpSj8UzEaKwVkrqKOeAOyK0dDWsFlKvWhk0Xl5yw9FyafYf1xZPb4uSXaPBAFQtUouFlR1Zt68BCY0/w==", + "requires": { + "events": "^1.1.1" + }, + "dependencies": { + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "10.3.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", + "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", + "requires": { + "browserslist": "^4.17.3", + "caniuse-lite": "^1.0.30001264", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^0.2.1", + "postcss-value-parser": "^4.1.0" + } + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "requires": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "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" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", + "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "requires": { + "caniuse-lite": "^1.0.30001264", + "electron-to-chromium": "^1.3.857", + "escalade": "^3.1.1", + "node-releases": "^1.1.77", + "picocolors": "^0.2.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "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" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "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" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001265", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", + "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" + }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", + "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colord": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", + "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==" + }, + "combine-promises": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", + "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==" + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "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" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "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": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-text-to-clipboard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", + "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==" + }, + "copy-webpack-plugin": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", + "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", + "requires": { + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + } + } + }, + "core-js": { + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.2.tgz", + "integrity": "sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ==" + }, + "core-js-compat": { + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.2.tgz", + "integrity": "sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==", + "requires": { + "browserslist": "^4.17.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.2.tgz", + "integrity": "sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "requires": { + "node-fetch": "2.6.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==" + }, + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "requires": { + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.3.5", + "schema-utils": "^3.1.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "requires": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-advanced": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.4.tgz", + "integrity": "sha512-pFtIM15OzryDk09RcK+bBBtwSl80+g/POTAf/sVPqPmnOAleK6vBkY5wTmPjqGyV5/UTPjEzWMtbOQ3Z0kCBXA==", + "requires": { + "autoprefixer": "^10.2.0", + "cssnano-preset-default": "^5.1.4", + "postcss-discard-unused": "^5.0.1", + "postcss-merge-idents": "^5.0.1", + "postcss-reduce-idents": "^5.0.1", + "postcss-zindex": "^5.0.1" + } + }, + "cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "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": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "docusaurus-plugin-typedoc": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.16.3.tgz", + "integrity": "sha512-feVKPyAcH98KuZ3wtrVkEnutEUo3zbKvVB/9crbo4W9CjZ0QczSdBtKWuasHWuPxWbThZ6gbBZp/5oeFnSVWbg==", + "dev": true + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.862", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.862.tgz", + "integrity": "sha512-o+FMbCD+hAUJ9S8bfz/FaqA0gE8OpCCm58KhhGogOEqiA1BLFSoVYLi+tW+S/ZavnqBn++n0XZm7HQiBVPs8Jg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "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-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eta": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/eta/-/eta-1.12.3.tgz", + "integrity": "sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eval": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz", + "integrity": "sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==", + "requires": { + "require-like": ">= 0.1.1" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "requires": { + "original": "^1.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "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" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", + "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", + "requires": { + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "requires": { + "xml-js": "^1.6.11" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "filesize": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flux": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.2.tgz", + "integrity": "sha512-u/ucO5ezm3nBvdaSGkWpDlzCePoV+a9x3KHmy13TV/5MzOaCZDN8Mfd94jmf0nOi8ZZay+nOKbBUkOe2VNaupQ==", + "requires": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.0" + } + }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "requires": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "github-slugger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", + "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + } + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@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": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "requires": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + } + }, + "hast-util-from-parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", + "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "requires": { + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + } + }, + "hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" + }, + "hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "dependencies": { + "hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "requires": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + } + }, + "hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + } + } + }, + "hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "requires": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + } + }, + "hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "requires": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + } + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" + }, + "html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" + }, + "html-webpack-plugin": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", + "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "html-minifier-terser": "^5.0.1", + "lodash": "^4.17.21", + "pretty-error": "^3.0.4", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "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" + }, + "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "immer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", + "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infima": { + "version": "0.2.0-alpha.33", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.33.tgz", + "integrity": "sha512-iLZI8/vGTbbhbeFhlWv1zwvrqfNDLAayuEdqZqNqCyGuh0IW469dRIRm0FLZ98YyLikt2njzuKfy6xUrBWRXcg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + } + } + }, + "is-core-module": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "jest-worker": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", + "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" + }, + "marked": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.7.tgz", + "integrity": "sha512-ctKqbnLuNbsHbI26cfMyOlKgXGfl1orOv1AvWWDX7AkgfMOwCWvmuYc+mVLeWhQ9W6hdWVBynOs96VkcscKo0Q==", + "dev": true + }, + "mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "requires": { + "unist-util-remove": "^2.0.0" + } + }, + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "requires": { + "mime-db": "1.50.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "requires": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + } + }, + "mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, + "nanocolors": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" + }, + "nanoid": { + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", + "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "requires": { + "lodash": "^4.17.21" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node-releases": { + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "8.3.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", + "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "requires": { + "nanoid": "^3.1.28", + "picocolors": "^0.2.1", + "source-map-js": "^0.6.2" + } + }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==" + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==" + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==" + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==" + }, + "postcss-discard-unused": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz", + "integrity": "sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-loader": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", + "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.4" + } + }, + "postcss-merge-idents": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.0.1.tgz", + "integrity": "sha512-xu8ueVU0RszbI2gKkxR6mluupsOSSLvt8q4gA2fcKFkA+x6SlH3cb4cFHpDvcRCNFbUmCR/VUub+Y6zPOjPx+Q==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==" + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-idents": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz", + "integrity": "sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-sort-media-queries": { + "version": "3.12.13", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz", + "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==", + "requires": { + "sort-css-media-queries": "2.0.4" + } + }, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "postcss-zindex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.0.1.tgz", + "integrity": "sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "pretty-error": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", + "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.6" + } + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "prism-react-renderer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", + "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==" + }, + "prismjs": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", + "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "requires": { + "xtend": "^4.0.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "requires": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "react-dev-utils": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", + "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", + "requires": { + "@babel/code-frame": "7.10.4", + "address": "1.1.2", + "browserslist": "4.14.2", + "chalk": "2.4.2", + "cross-spawn": "7.0.3", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.1.0", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "4.1.6", + "global-modules": "2.0.0", + "globby": "11.0.1", + "gzip-size": "5.1.1", + "immer": "8.0.1", + "is-root": "2.1.0", + "loader-utils": "2.0.0", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "prompts": "2.4.0", + "react-error-overlay": "^6.0.9", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "browserslist": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "requires": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" + }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-helmet": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.1.1", + "react-side-effect": "^2.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "requires": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "requires": { + "prop-types": "^15.5.0" + } + }, + "react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "requires": { + "@babel/runtime": "^7.10.3" + } + }, + "react-router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-router-dom": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", + "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", + "requires": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, + "react-side-effect": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", + "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==" + }, + "react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "requires": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "requires": { + "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": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "rehype-parse": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", + "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", + "requires": { + "hast-util-from-parse5": "^5.0.0", + "parse5": "^5.0.0", + "xtend": "^4.0.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remark-admonitions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", + "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", + "requires": { + "rehype-parse": "^6.0.2", + "unified": "^8.4.2", + "unist-util-visit": "^2.0.1" + } + }, + "remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "requires": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" + }, + "remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "requires": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "requires": { + "mdast-squeeze-paragraphs": "^4.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "rtlcss": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.3.0.tgz", + "integrity": "sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A==", + "requires": { + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "mkdirp": "^1.0.4", + "postcss": "^8.2.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shiki": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.11.tgz", + "integrity": "sha512-tjruNTLFhU0hruCPoJP0y+B9LKOmcqUhTpxn7pcJB3fa+04gFChuEmxmrUfOJ7ZO6Jd+HwMnDHgY3lv3Tqonuw==", + "dev": true, + "requires": { + "jsonc-parser": "^3.0.0", + "onigasm": "^2.2.5", + "vscode-textmate": "5.2.0" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + }, + "sirv": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", + "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", + "requires": { + "@polka/url": "^1.0.0-next.20", + "mime": "^2.3.1", + "totalist": "^1.0.0" + }, + "dependencies": { + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "sitemap": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.0.0.tgz", + "integrity": "sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g==", + "requires": { + "@types/node": "^15.0.1", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "sockjs-client": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", + "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-css-media-queries": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", + "integrity": "sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "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": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "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" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "std-env": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.1.tgz", + "integrity": "sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==", + "requires": { + "ci-info": "^3.1.1" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "svgo": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", + "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "nanocolors": "^0.1.12", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", + "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", + "requires": { + "jest-worker": "^27.0.6", + "p-limit": "^3.1.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" + }, + "ts-essentials": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-2.0.12.tgz", + "integrity": "sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedoc": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.5.tgz", + "integrity": "sha512-KFrWGU1iKiTGw0RcyjLNYDmhd7uICU14HgBNPmFKY/sT4Pm/fraaLyWyisst9vGTUAKxqibqoDITR7+ZcAkhHg==", + "dev": true, + "requires": { + "glob": "^7.2.0", + "lunr": "^2.3.9", + "marked": "^3.0.4", + "minimatch": "^3.0.4", + "shiki": "^0.9.11" + } + }, + "typedoc-plugin-markdown": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.3.tgz", + "integrity": "sha512-rWiHbEIe0oZetDIsBR24XJVxGOJ91kDcHoj2KhFKxCLoJGX659EKBQkHne9QJ4W2stGhu1fRgFyQaouSBnxukA==", + "dev": true, + "requires": { + "handlebars": "^4.7.7" + } + }, + "typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + }, + "uglify-js": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", + "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "dev": true, + "optional": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, + "unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + } + }, + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "use-composed-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.1.0.tgz", + "integrity": "sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==", + "requires": { + "ts-essentials": "^2.0.3" + } + }, + "use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==" + }, + "use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", + "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", + "requires": { + "use-isomorphic-layout-effect": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + } + } + }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "wait-on": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", + "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "requires": { + "axios": "^0.21.1", + "joi": "^17.3.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^6.6.3" + } + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" + }, + "webpack": { + "version": "5.58.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.0.tgz", + "integrity": "sha512-xc2k5MLbR1iah24Z5xUm1nBh1PZXEdUnrX6YkTSOScq/VWbl5JCLREXJzGYqEAUbIO8tZI+Dzv82lGtnuUnVCQ==", + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^3.2.0" + } + }, + "webpack-bundle-analyzer": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", + "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^6.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "requires": { + "duplexer": "^0.1.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + } + } + }, + "webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "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" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@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" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", + "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" + }, + "webpackbar": { + "version": "5.0.0-3", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", + "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "consola": "^2.15.0", + "figures": "^3.2.0", + "pretty-time": "^1.1.0", + "std-env": "^2.2.1", + "text-table": "^0.2.0", + "wrap-ansi": "^7.0.0" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "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": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "requires": { + "sax": "^1.2.4" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 000000000..987bdf93e --- /dev/null +++ b/docs/package.json @@ -0,0 +1,49 @@ +{ + "name": "docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc" + }, + "dependencies": { + "@docusaurus/core": "2.0.0-beta.6", + "@docusaurus/preset-classic": "2.0.0-beta.6", + "@mdx-js/react": "^1.6.21", + "@svgr/webpack": "^5.5.0", + "clsx": "^1.1.1", + "file-loader": "^6.2.0", + "prism-react-renderer": "^1.2.1", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "url-loader": "^4.1.1" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.0.0-beta.6", + "@tsconfig/docusaurus": "^1.0.4", + "docusaurus-plugin-typedoc": "^0.16.3", + "typedoc": "^0.22.5", + "typedoc-plugin-markdown": "^3.11.3", + "typescript": "^4.3.5" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/docs/sidebars.js b/docs/sidebars.js new file mode 100644 index 000000000..d2cd0f733 --- /dev/null +++ b/docs/sidebars.js @@ -0,0 +1,37 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +module.exports = { + 'Documentation': [ + // { + // type: 'doc', + // label: 'Getting started', + // id: 'api/index' + // }, + { + type: 'autogenerated', + dirName: 'api' + } + ] + // By default, Docusaurus generates a sidebar from the docs folder structure + // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + { + type: 'category', + label: 'Tutorial', + items: ['hello'], + }, + ], + */ +}; diff --git a/docs/src/components/HomepageFeatures.module.css b/docs/src/components/HomepageFeatures.module.css new file mode 100644 index 000000000..54a3df6e7 --- /dev/null +++ b/docs/src/components/HomepageFeatures.module.css @@ -0,0 +1,12 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; + height: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/docs/src/components/HomepageFeatures.tsx b/docs/src/components/HomepageFeatures.tsx new file mode 100644 index 000000000..a8ae32cfa --- /dev/null +++ b/docs/src/components/HomepageFeatures.tsx @@ -0,0 +1,69 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import React from 'react'; +import clsx from 'clsx'; +import styles from './HomepageFeatures.module.css'; + +type FeatureItem = { + title: string; + description: JSX.Element; +}; + +const FeatureList: FeatureItem[] = [ + { + title: 'Simple API', + description: ( + <> + The AdminAppActions library was designed to make the communcation + to the admin simple and easy. + + ), + }, + { + title: 'Extremely small footprint', + description: ( + <> + The library is designed to have a very small bundle size so that it + don't extend you app size much. + + ), + }, + { + title: 'Full type support', + description: ( + <> + The library is completely written in Typescript so that you get the best developer experience + possible. + + ), + }, +]; + +function Feature({title, description}: FeatureItem) { + return ( +
+
+

{title}

+

{description}

+
+
+ ); +} + +export default function HomepageFeatures(): JSX.Element { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css new file mode 100644 index 000000000..c7217ba14 --- /dev/null +++ b/docs/src/css/custom.css @@ -0,0 +1,54 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #189EFF; + --ifm-color-primary-dark: #1596FF; + --ifm-color-primary-darker: #118CFF; + --ifm-color-primary-darkest: #0870FF; + --ifm-color-primary-light: #3BADFF; + --ifm-color-primary-lighter: #5DBBFF; + --ifm-color-primary-lightest: #BAE2FF; + --ifm-code-font-size: 95%; +} + +html[data-theme='dark'] { + --ifm-color-primary: #5DBBFF; + --ifm-color-primary-dark: #5DBBFF; + --ifm-color-primary-darker: #1596FF; + --ifm-color-primary-darkest: #0870FF; + --ifm-color-primary-light: #8CCFFF; + --ifm-color-primary-lighter: #BAE2FF; + --ifm-color-primary-lightest: #E3F3FF; + --ifm-code-font-size: 95%; +} + +.docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.1); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} + +html[data-theme='dark'] .docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.3); +} + +html[data-theme='dark'] .hero__title, html[data-theme='dark'] .hero__subtitle { + color: #fff; +} + +.main-wrapper { + display: flex; + flex-direction: column; +} + +.main-wrapper main { + display: flex; + align-items: center; + flex: 1; +} \ No newline at end of file diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css new file mode 100644 index 000000000..666feb6a1 --- /dev/null +++ b/docs/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 966px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx new file mode 100644 index 000000000..a8a74a0f8 --- /dev/null +++ b/docs/src/pages/index.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import styles from './index.module.css'; +import HomepageFeatures from '../components/HomepageFeatures'; + +function HomepageHeader() { + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Getting started + +
+
+
+ ); +} + +export default function Home(): JSX.Element { + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); +} diff --git a/docs/src/pages/markdown-page.md b/docs/src/pages/markdown-page.md new file mode 100644 index 000000000..9756c5b66 --- /dev/null +++ b/docs/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/docs/static/.nojekyll b/docs/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ed5b264c3257ad22fe0331d7269d35b80d751b71 GIT binary patch literal 15086 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 Ise!=%0@ZH2Hvj+t literal 0 HcmV?d00001 diff --git a/docs/static/img/sw6-logo.svg b/docs/static/img/sw6-logo.svg new file mode 100644 index 000000000..0fdf60d23 --- /dev/null +++ b/docs/static/img/sw6-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 000000000..6f4756980 --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,7 @@ +{ + // This file is not used in compilation. It is here just for a nice editor experience. + "extends": "@tsconfig/docusaurus/tsconfig.json", + "compilerOptions": { + "baseUrl": "." + } +} diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts new file mode 100644 index 000000000..08744033c --- /dev/null +++ b/example/iframe-app/app.ts @@ -0,0 +1,17 @@ +import './style.css'; +import { send } from 'lib'; + +const actionType = document.getElementById('actionType')! as HTMLInputElement +const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement +const sendAction = document.getElementById('sendAction')!; +const result = document.getElementById('result')!; + +sendAction.addEventListener('click', () => { + const actionTypeValue = actionType.value; + const actionValueValue = actionValue.value; + + send(actionTypeValue as any, JSON.parse(actionValueValue)) + .then((dataFromMain) => { + result.innerHTML = dataFromMain; + }) +}) \ No newline at end of file diff --git a/example/iframe-app/index.html b/example/iframe-app/index.html new file mode 100644 index 000000000..0da662b8e --- /dev/null +++ b/example/iframe-app/index.html @@ -0,0 +1,35 @@ + + + + + + + App with Iframe + + +
+

Iframe Window

+ + + + +

+ + +
+ + +
+ + + +
+ + +
+ + + + diff --git a/example/iframe-app/style.css b/example/iframe-app/style.css new file mode 100644 index 000000000..616b3d31b --- /dev/null +++ b/example/iframe-app/style.css @@ -0,0 +1,6 @@ +main { + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #bbb; +} \ No newline at end of file diff --git a/example/main-app/main.ts b/example/main-app/main.ts new file mode 100644 index 000000000..257d20d8d --- /dev/null +++ b/example/main-app/main.ts @@ -0,0 +1,18 @@ +import { on } from 'lib' +import './style.css' + +const listenToActionButton = document.getElementById('listenToAction') +const actionType = document.getElementById('actionType')! as HTMLInputElement +const result = document.getElementById('result')!; +const responseData = document.getElementById('responseData')! as HTMLTextAreaElement; + +listenToActionButton?.addEventListener('click', () => { + const actionTypeValue = actionType.value; + const reponseDataValue = responseData.value; + + on(actionTypeValue as any, (receivedData) => { + result.innerHTML += JSON.stringify(receivedData) + '\n'; + + return reponseDataValue; + }); +}) \ No newline at end of file diff --git a/example/main-app/style.css b/example/main-app/style.css new file mode 100644 index 000000000..3c74e0980 --- /dev/null +++ b/example/main-app/style.css @@ -0,0 +1,17 @@ +body { + background-color: #111; +} + +main { + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #bbb; + width: 40vw; +} + +.wrapper { + display: flex; + gap: 50px; + justify-content: space-evenly; +} \ No newline at end of file diff --git a/example/main-app/vite-env.d.ts b/example/main-app/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/example/main-app/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 000000000..de4aeddc1 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..83f877a3c --- /dev/null +++ b/index.html @@ -0,0 +1,41 @@ + + + + + + + Shopware Admin + + +
+
+

Main Window

+ + +
+ + +
+ + +
+ + +
+ + + +
+
+ + +
+ + +
+ + + + diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 000000000..fc813c88e --- /dev/null +++ b/lib/index.ts @@ -0,0 +1,145 @@ +import * as sendTypes from './send-types'; + +export {sendTypes}; + +/** + * This type contains the data of the type without the responseType + * @internal + */ +export type SendDataType = Omit; + +/** + * This is the structure of the data which will be send with {@link send} + * @internal + */ +export type ShopwareMessageSendData = { + type: SEND_TYPE, + data: SendDataType, + callbackId: string +} + +/** + * This is the structure of the data which will be send back when the admin gives a response + * @internal + */ +export type ShopwareMessageResponseData = { + type: SEND_TYPE, + response: ShopwareSendTypes[SEND_TYPE]['responseType'], + callbackId: string +} + +/** + * Contains all shopware {@link send-types}. + * @internal + */ + export type ShopwareSendTypes = { + getPageTitle: sendTypes.getPageTitle, + createAlert: sendTypes.createAlert, + redirect: sendTypes.redirect, +} + +/** + * With this method you can send actions: + * + * ```javascript + * send('redirect', { + * url: 'https://www.shopware.com', + * newTab: true, + * }) + * ``` + * + * or you can request data: + * ```javascript + * send('getPageTitle', {}).then((pageTitle) => { + * console.log(pageTitle) + * }) + * ``` + * + * @param type Choose a type of action from the {@link send-types} + * @param data The matching data for the type + * @returns A promise with the response data in the given responseType + */ +export function send(type: SEND_TYPE, data: SendDataType): Promise { + // generate a unique callback ID. This here is only for simple demonstration purposes + const callbackId = String(Math.floor(Math.random() * Date.now())); + + // generate the message with the callbackId + const messageData: ShopwareMessageSendData = { + type, + data, + callbackId: callbackId + } + const message = JSON.stringify(messageData); + + return new Promise((resolve) => { + const callbackHandler = function(event: MessageEvent) { + if (typeof event.data !== 'string') { + return; + } + + const data = JSON.parse(event.data); + + // only execute when callbackId matches + if (data.callbackId !== callbackId) { + return; + } + + // remove event so that in only execute once + window.removeEventListener('message', callbackHandler); + + // return the data + resolve(data.response); + } + + window.addEventListener('message', callbackHandler); + window.parent.postMessage(message, '*'); + }) +} + +/** + * + * @param type Choose a type of action from the {@link send-types} + * @param method This method should return the response value + * @returns The return value is a cancel function to stop listening to the events + */ +export function on(type: SEND_TYPE, method: (data: SendDataType) => ShopwareSendTypes[SEND_TYPE]['responseType']): () => void { + const onListener = function(event: MessageEvent) { + if (typeof event.data !== 'string') { + return; + } + + const shopwareMessageData = JSON.parse(event.data); + + // check if messageData is valid + if (!isMessageData(shopwareMessageData)) { + return; + } + + // check if messageData type matches the type argument + if (shopwareMessageData.type !== type) { + return; + } + + const responseMessage: ShopwareMessageResponseData = { + callbackId: shopwareMessageData.callbackId, + type: shopwareMessageData.type, + response: method(shopwareMessageData.data) + } + + event.source?.postMessage(JSON.stringify(responseMessage)); + } + + // start listening directly + window.addEventListener('message', onListener); + + // return a cancel method + return () => window.removeEventListener('message', onListener); +} + +function isMessageData(eventData: object): eventData is ShopwareMessageSendData { + const shopwareMessageData = eventData as ShopwareMessageSendData; + + return shopwareMessageData.type + && shopwareMessageData.data + && shopwareMessageData.callbackId; +} \ No newline at end of file diff --git a/lib/send-types.ts b/lib/send-types.ts new file mode 100644 index 000000000..208e4630d --- /dev/null +++ b/lib/send-types.ts @@ -0,0 +1,50 @@ +/** + * Create a alert notification. + * + * ```js + * send('createAlert', { + * message: 'My alert message' + * }) + * ``` + */ + export type createAlert = { + responseType: void, + /** + * This message will be shown in the alert + */ + message: string +} + +/** + * Redirect to another URL + * + * ```js + * send('redirect', { + * url: 'https://www.shopware.com', + * newTab: true + * }) + * ``` + */ +export type redirect = { + responseType: void, + /** + * The URL for the redirection + */ + url: string, + /** + * If this is activated then the link will be opened in a new tab + */ + newTab: boolean +} + +/** + * Get the actual page title + * ```js + * send('redirect', {}).then(pageTitle => { + * console.log(pageTitle) + * }) + * ``` + */ +export type getPageTitle = { + responseType: string +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..b80e089e6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4003 @@ +{ + "name": "@shopware-ag/admin-app-actions", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@cush/relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cush/relative/-/relative-1.0.0.tgz", + "integrity": "sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==", + "dev": true + }, + "@cypress/request": { + "version": "2.88.6", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.6.tgz", + "integrity": "sha512-z0UxBE/+qaESAHY9p9sM2h8Y4XqtsbDCt0/DPOrqA/RZgKi4PkxdpXyK4wCCnSk1xHqWHZZAE+gV6aDAR6+caQ==", + "dev": true, + "requires": { + "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", + "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": "^8.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@ts-morph/common": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.10.1.tgz", + "integrity": "sha512-rKN/VtZUUlW4M+6vjLFSaFc1Z9sK+1hh0832ucPtPkXqOw/mSWE80Lau4z2zTPNTqtxAjfZbvKpQcEwJy0KIEg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.5", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/node": { + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==", + "dev": true, + "optional": true + }, + "@types/sinonjs__fake-timers": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "apache-crypt": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", + "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==", + "dev": true, + "requires": { + "unix-crypt-td-js": "^1.1.4" + } + }, + "apache-md5": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz", + "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "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" + } + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "code-block-writer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", + "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concurrently": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.3.0.tgz", + "integrity": "sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cypress": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.5.0.tgz", + "integrity": "sha512-MMkXIS+Ro2KETn4gAlG3tIc/7FiljuuCZP0zpd9QsRG6MZSyZW/l1J3D4iQM6WHsVxuX4rFChn5jPFlC2tNSvQ==", + "dev": true, + "requires": { + "@cypress/request": "^2.88.6", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "^6.0.2", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "ramda": "~0.27.1", + "request-progress": "^3.0.0", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "14.17.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.21.tgz", + "integrity": "sha512-zv8ukKci1mrILYiQOwGSV4FpkZhyxQtuFWGya2GujWg+zVAeRQ4qbaMmWp9vb9889CFA8JECH7lkwCL6Ygg8kA==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", + "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", + "dev": true + }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "esbuild": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.3.tgz", + "integrity": "sha512-98xovMLKnyhv3gcReUuAEi5Ig1rK6SIgvsJuBIcfwzqGSEHsV8UJjMlmkhHoHMf9XZybMpE9Zax8AA8f7i2hlQ==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.13.3", + "esbuild-darwin-64": "0.13.3", + "esbuild-darwin-arm64": "0.13.3", + "esbuild-freebsd-64": "0.13.3", + "esbuild-freebsd-arm64": "0.13.3", + "esbuild-linux-32": "0.13.3", + "esbuild-linux-64": "0.13.3", + "esbuild-linux-arm": "0.13.3", + "esbuild-linux-arm64": "0.13.3", + "esbuild-linux-mips64le": "0.13.3", + "esbuild-linux-ppc64le": "0.13.3", + "esbuild-openbsd-64": "0.13.3", + "esbuild-sunos-64": "0.13.3", + "esbuild-windows-32": "0.13.3", + "esbuild-windows-64": "0.13.3", + "esbuild-windows-arm64": "0.13.3" + } + }, + "esbuild-android-arm64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.3.tgz", + "integrity": "sha512-jc9E8vGTHkzb0Vwl74H8liANV9BWsqtzLHaKvcsRgf1M+aVCBSF0gUheduAKfDsbDMT0judeMLhwBP34EUesTA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.3.tgz", + "integrity": "sha512-8bG3Zq+ZNuLlIJebOO2+weI7P2LVf33sOzaUfHj8MuJ+1Ixe4KtQxfYp7qhFnP6xP2ToJaYHxGUfLeiUCEz9hw==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.3.tgz", + "integrity": "sha512-5E81eImYtTgh8pY7Gq4WQHhWkR/LvYadUXmuYeZBiP+3ADZJZcG60UFceZrjqNPaFOWKr/xmh4aNocwagEubcA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.3.tgz", + "integrity": "sha512-ou+f91KkTGexi8HvF/BdtsITL6plbciQfZGys7QX6/QEwyE96PmL5KnU6ZQwoU7E99Ts6Sc9bUDq8HXJubKtBA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.3.tgz", + "integrity": "sha512-F1zV7nySjHswJuvIgjkiG5liZ63MeazDGXGKViTCeegjZ71sAhOChcaGhKcu6vq9+vqZxlfEi1fmXlx6Pc3coQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.3.tgz", + "integrity": "sha512-mHHc2v6uLrHH4zaaq5RB/5IWzgimEJ1HGldzf1qtGI513KZWfH0HRRQ8p1di4notJgBn7tDzWQ1f34ZHy69viQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.3.tgz", + "integrity": "sha512-FJ1De2O89mrOuqtaEXu41qIYJU6R41F+OA6vheNwcAQcX8fu0aiA13FJeLABq29BYJuTVgRj3cyC8q+tz19/dQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.3.tgz", + "integrity": "sha512-9BJNRtLwBh3OP22cln9g3AJdbAQUcjRHqA4BScx9k4RZpGqPokFr548zpeplxWhcwrIjT8qPebwH9CrRVy8Bsw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.3.tgz", + "integrity": "sha512-Cauhr45KSo+wRUojs+1qfycQqQCAXTOvsWvkZ6xmEMAXLAm+f8RQGDQeP8CAf8Yeelnegcn6UNdvzdzLHhWDFg==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.3.tgz", + "integrity": "sha512-YVzJUGCncuuLm2boYyVeuMFsak4ZAhdiBwi0xNDZCC8sy+tS6Boe2mzcrD2uubv5JKAUOrpN186S1DtU4WgBgw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.3.tgz", + "integrity": "sha512-GU6CqqKtJEoyxC2QWHiJtmuOz9wc/jMv8ZloK2WwiGY5yMvAmM3PI103Dj7xcjebNTHBqITTUw/aigY1wx5A3w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.3.tgz", + "integrity": "sha512-HVpkgpn4BQt4BPDAjTOpeMub6mzNWw6Y3gaLQJrpbO24pws6ZwYkY24OI3/Uo3LDCbH6856MM81JxECt92OWjA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.3.tgz", + "integrity": "sha512-XncBVOtnEfUbPV4CaiFBxh38ychnBfwCxuTm9iAqcHzIwkmeNRN5qMzDyfE1jyfJje+Bbt6AvIfz6SdYt8/UEQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.3.tgz", + "integrity": "sha512-ZlgDz7d1nk8wQACi+z8IDzNZVUlN9iprAme+1YSTsfFDlkyI8jeaGWPk9EQFNY7rJzsLVYm6eZ2mhPioc7uT5A==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.3.tgz", + "integrity": "sha512-YX7KvRez3TR+GudlQm9tND/ssj2FsF9vb8ZWzAoZOLxpPzE3y+3SFJNrfDzzQKPzJ0Pnh9KBP4gsaMwJjKHDhw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.3.tgz", + "integrity": "sha512-nP7H0Y2a6OJd3Qi1Q8sehhyP4x4JoXK4S5y6FzH2vgaJgiyEurzFxjUufGdMaw+RxtxiwD/uRndUgwaZ2JD8lg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "eventemitter2": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "dev": true + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-regex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/glob-regex/-/glob-regex-0.3.2.tgz", + "integrity": "sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==", + "dev": true + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "http-auth": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", + "integrity": "sha1-lFz63WZSHq+PfISRPTd9exXyTjE=", + "dev": true, + "requires": { + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.3.0", + "uuid": "^3.0.0" + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "listr2": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", + "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^1.4.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + } + }, + "live-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz", + "integrity": "sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw==", + "dev": true, + "requires": { + "chokidar": "^2.0.4", + "colors": "^1.4.0", + "connect": "^3.6.6", + "cors": "^2.8.5", + "event-stream": "3.3.4", + "faye-websocket": "0.11.x", + "http-auth": "3.1.x", + "morgan": "^1.9.1", + "object-assign": "^4.1.1", + "opn": "^6.0.0", + "proxy-middleware": "^0.15.0", + "send": "^0.17.1", + "serve-index": "^1.9.1" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "dev": true + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dev": true, + "requires": { + "mime-db": "1.50.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, + "nanocolors": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", + "dev": true + }, + "nanoid": { + "version": "3.1.28", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.28.tgz", + "integrity": "sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.8.tgz", + "integrity": "sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA==", + "dev": true, + "requires": { + "nanocolors": "^0.2.2", + "nanoid": "^3.1.25", + "source-map-js": "^0.6.2" + } + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true + }, + "proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "ramda": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", + "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "recrawl-sync": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recrawl-sync/-/recrawl-sync-2.2.1.tgz", + "integrity": "sha512-A2yLDgeXNaduJJMlqyUdIN7fewopnNm/mVeeGytS1d2HLXKpS5EthQ0j8tWeX+as9UXiiwQRwfoslKC+/gjqxg==", + "dev": true, + "requires": { + "@cush/relative": "^1.0.0", + "glob-regex": "^0.3.0", + "slash": "^3.0.0", + "tslib": "^1.9.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", + "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "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-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "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" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-morph": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-11.0.3.tgz", + "integrity": "sha512-ymuPkndv9rzqTLiHWMkVrFXWcN4nBiBGhRP/kTC9F5amAAl7BNLfyrsTzMD1o9A0zishKoF1KQT/0yyFhJnPgA==", + "dev": true, + "requires": { + "@ts-morph/common": "~0.10.1", + "code-block-writer": "^10.1.1" + } + }, + "tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + } + } + }, + "vite": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.2.tgz", + "integrity": "sha512-HSIg9U15LOnbD3CUxX364Pdrm7DUjftuBljowGxvkFHgDZU/SKPqApg9t86MX/Qq1VCO7wS+mGJHlfuTF7c0Sg==", + "dev": true, + "requires": { + "esbuild": "^0.13.2", + "fsevents": "~2.3.2", + "postcss": "^8.3.8", + "resolve": "^1.20.0", + "rollup": "^2.57.0" + } + }, + "vite-plugin-dts": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-0.8.2.tgz", + "integrity": "sha512-tMTd+95804yL58/uYE2IAfC6Hk7tXl6j6fAIUTXhUBf3ZR5l+vNWoEUFnOSxU+fi5yDzm/SIzc3NrqUPLbMSow==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "fs-extra": "^10.0.0", + "ts-morph": "^11.0.3" + } + }, + "vite-tsconfig-paths": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-3.3.14.tgz", + "integrity": "sha512-Z501YCOTTwBk+zDq0furrD+O+X/zawKIo8L3eE0GVSr700AvWAArnlUHOzoRJQw0fJLfd+61rD7jkT20Jh8gtA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "recrawl-sync": "^2.0.3", + "tsconfig-paths": "^3.9.0" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..ab20b5ca1 --- /dev/null +++ b/package.json @@ -0,0 +1,46 @@ +{ + "name": "@shopware-ag/admin-app-actions", + "version": "0.0.1", + "repository": "git://github.com/shopware/admin-app-actions.git", + "description": "A small library for App iframes to communicate with the Shopware Adminstration.", + "keywords": [ + "iframe", + "shopware", + "admin", + "bridge", + "app" + ], + "files": [ + "dist" + ], + "main": "./dist/admin-app-actions.umd.js", + "module": "./dist/admin-app-actions.es.js", + "exports": { + ".": { + "import": "./dist/admin-app-actions.es.js", + "require": "./dist/admin-app-actions.umd.js" + } + }, + "types": "./dist/admin-app-actions.d.ts", + "scripts": { + "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", + "dev:build-watch": "vite build --watch --mode example", + "dev:serve": "live-server --port=8181 dist-example", + "build": "tsc && vite build", + "doc": "cd docs && npm run build", + "doc:dev": "cd docs && npm run start", + "lint": "tsc", + "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", + "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"" + }, + "devDependencies": { + "concurrently": "^6.3.0", + "cypress": "^8.5.0", + "live-server": "^1.2.1", + "typescript": "^4.4.3", + "vite": "^2.6.0", + "vite-plugin-dts": "^0.8.2", + "vite-tsconfig-paths": "^3.3.14" + }, + "dependencies": {} +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..b7119068e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "baseUrl": "./", + "paths": { + "lib/*": ["lib/*"] + } + }, + "include": ["lib", "example", "test"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..488510ab3 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,46 @@ +// vite.config.js +const { resolve } = require('path') +const { defineConfig } = require('vite') +import tsconfigPaths from 'vite-tsconfig-paths' +import dts from 'vite-plugin-dts' + +module.exports = defineConfig(({ command, mode }) => { + // Development config (with HTML files for easier development) + if (mode === 'example') { + return { + plugins: [ + tsconfigPaths() + ], + build: { + outDir: resolve(__dirname, 'dist-example'), + sourcemap: true, + rollupOptions: { + input: { + main: resolve(__dirname, './index.html'), + iframe: resolve(__dirname, './example/iframe-app/index.html'), + } + } + } + } + } + + // Build config + return { + plugins: [ + tsconfigPaths(), + dts({ + include: ['lib'], + insertTypesEntry: true + }) + ], + build: { + outDir: resolve(__dirname, 'dist'), + sourcemap: true, + lib: { + entry: resolve(__dirname, 'lib/index.ts'), + name: 'AdminAppActions', + fileName: (format) => `admin-app-actions.${format}.js` + } + } + } +}) \ No newline at end of file From bc5c7bbf7abfe29d6c99dfc01610688eae0cc568 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 14:17:58 +0200 Subject: [PATCH 002/189] Fix github action cache for docs --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1eea57362..ff8556153 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -23,7 +23,7 @@ jobs: uses: actions/cache@v2 id: node-cache-docs with: - path: node_modules + path: docs/node_modules key: node-modules-cache-${{ runner.os }}-${{ hashFiles('docs/package-lock.json') }} - name: Install main dependencies (if the cached directory was not found) From 239bbc600ef31f419ba2fdf8e1df83d267e3dc08 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 14:24:58 +0200 Subject: [PATCH 003/189] Update docs baseUrl for github pages --- docs/docs/api/index.md | 5 +++++ docs/docs/api/modules.md | 4 ++-- docs/docs/api/namespaces/sendTypes.md | 6 +++--- docs/docusaurus.config.js | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/docs/api/index.md b/docs/docs/api/index.md index 6d7c0161a..2f5a21d2a 100644 --- a/docs/docs/api/index.md +++ b/docs/docs/api/index.md @@ -7,6 +7,11 @@ sidebar_position: 0 custom_edit_url: null --- +# Warning: +### This repository is still under development and should not be used yet. + +-------- + # Admin app actions ### for the Shopware 6 app system diff --git a/docs/docs/api/modules.md b/docs/docs/api/modules.md index d4f157524..db2a18920 100644 --- a/docs/docs/api/modules.md +++ b/docs/docs/api/modules.md @@ -45,7 +45,7 @@ The return value is a cancel function to stop listening to the events #### Defined in -[index.ts:105](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/index.ts#L105) +[index.ts:105](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/index.ts#L105) ___ @@ -90,4 +90,4 @@ A promise with the response data in the given responseType #### Defined in -[index.ts:62](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/index.ts#L62) +[index.ts:62](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/index.ts#L62) diff --git a/docs/docs/api/namespaces/sendTypes.md b/docs/docs/api/namespaces/sendTypes.md index 7a2a4ba8a..ac50af09d 100644 --- a/docs/docs/api/namespaces/sendTypes.md +++ b/docs/docs/api/namespaces/sendTypes.md @@ -29,7 +29,7 @@ send('createAlert', { #### Defined in -[send-types.ts:10](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L10) +[send-types.ts:10](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L10) ___ @@ -52,7 +52,7 @@ send('redirect', {}).then(pageTitle => { #### Defined in -[send-types.ts:48](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L48) +[send-types.ts:48](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L48) ___ @@ -79,4 +79,4 @@ send('redirect', { #### Defined in -[send-types.ts:28](https://github.com/jleifeld/postmessage-api-concept/blob/641fe56/lib/send-types.ts#L28) +[send-types.ts:28](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L28) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 06232d136..4dd2311de 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -9,7 +9,7 @@ const config = { title: 'Admin App Actions', tagline: 'for Shopware 6 apps', url: 'https://your-docusaurus-test-site.com', - baseUrl: '/', + baseUrl: '/admin-app-actions/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', From 1f21310dc73f066cf0b80dd54aed5c44eca589b4 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 14:28:05 +0200 Subject: [PATCH 004/189] Add API docs folder to gitignore --- .gitignore | 3 +- docs/.gitignore | 2 +- docs/docs/.gitkeep | 0 docs/docs/api/_category_.yml | 1 - docs/docs/api/index.md | 117 ------------------------ docs/docs/api/modules.md | 93 ------------------- docs/docs/api/namespaces/_category_.yml | 2 - docs/docs/api/namespaces/sendTypes.md | 82 ----------------- docs/docusaurus.config.js | 2 +- 9 files changed, 4 insertions(+), 298 deletions(-) create mode 100644 docs/docs/.gitkeep delete mode 100644 docs/docs/api/_category_.yml delete mode 100644 docs/docs/api/index.md delete mode 100644 docs/docs/api/modules.md delete mode 100644 docs/docs/api/namespaces/_category_.yml delete mode 100644 docs/docs/api/namespaces/sendTypes.md diff --git a/.gitignore b/.gitignore index 717d81d81..d4790e09d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dist dist-ssr dist-example *.local -coverage \ No newline at end of file +coverage +docs/docs/api \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore index b2d6de306..e6e9ac43d 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -17,4 +17,4 @@ npm-debug.log* yarn-debug.log* -yarn-error.log* +yarn-error.log* \ No newline at end of file diff --git a/docs/docs/.gitkeep b/docs/docs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/api/_category_.yml b/docs/docs/api/_category_.yml deleted file mode 100644 index 24a460261..000000000 --- a/docs/docs/api/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "API" \ No newline at end of file diff --git a/docs/docs/api/index.md b/docs/docs/api/index.md deleted file mode 100644 index 2f5a21d2a..000000000 --- a/docs/docs/api/index.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -id: "index" -title: "@shopware-ag/admin-app-actions" -slug: "/api/" -sidebar_label: "Getting started" -sidebar_position: 0 -custom_edit_url: null ---- - -# Warning: -### This repository is still under development and should not be used yet. - --------- - -# Admin app actions -### for the Shopware 6 app system - -This small library is for using admin actions in your app iframes. - -Your app can then extend the Administration with many different actions, customizing UI elements and more. It can send actions to the administration or receive data from it. - -```js -send('redirect', { - url: 'https://www.shopware.com', - newTab: true -}) -``` - -[![E2E Tests](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml) [![Lint](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml) - -## Installation - -#### Using NPM: -Install it to your `package.json` -``` -npm i --save @shopware/admin-app-actions -``` - -Then import it in your app: -```js -import { send } from '@shopware/admin-app-actions; -``` - -#### Using CDN: -Import the source from the CDN: - -```js -// use the latest version available - - -// use a fix version (example here: 1.2.3) - -``` - -Then you can access it with the global variable `AdminAppActions`. - -```js -const { send } = AdminAppActions; -``` - -## Features - -- Simple API -- Sending actions to the admin -- Receive data from the admin -- Extremely small footprint on app side -- Full Typescript support - -### Simple API -The API is very expressive and easy to learn. You just need to import our library and then you can use the send method for sending actions and receiving data. - -The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. - -```js -import { send } from 'sw-app-actions'; - -send('redirect', { - url: 'https://www.shopware.com', - newTab: true, -}) -``` - -If the action has a response then you can get the information with the returned Promise value: - -```javascript -import { send } from 'sw-app-actions'; - -const pageTitle = await send('getPageTitle', {}); -``` - -## Extremely small footprint on app side -The bundle size of this library is extremely small and will not grow when new actions will be defined. How is this done? The functions only execute the commands. Only types are describing the API and therefore not increase the bundle size. - -## Full Typescript support -Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. - -A full auto-generated API documentation can be found in the documentation: [TODO: Add link here] - -___________ - -## Recipient (only for usage in the Shopware 6 Administration): -The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: - -```ts -import { on } from 'sw-app-actions' - -on('redirect', ({ newTab, url }) => { - // call a method which redirects to the url - redirect({ newTab, url }); -}) - -on('getPageTitle', () => { - // or return the value if the type needs a response - return document.title; -}) - -``` diff --git a/docs/docs/api/modules.md b/docs/docs/api/modules.md deleted file mode 100644 index db2a18920..000000000 --- a/docs/docs/api/modules.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -id: "modules" -title: "@shopware-ag/admin-app-actions" -sidebar_label: "Exports" -sidebar_position: 0.5 -custom_edit_url: null ---- - -## Namespaces - -- [sendTypes](namespaces/sendTypes) - -## Functions - -### on - -▸ **on**<`SEND_TYPE`\>(`type`, `method`): () => `void` - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `SEND_TYPE` | extends keyof `ShopwareSendTypes` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `type` | `SEND_TYPE` | Choose a type of action from the {@link send-types} | -| `method` | (`data`: `SendDataType`<`SEND_TYPE`\>) => `ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``] | This method should return the response value | - -#### Returns - -`fn` - -The return value is a cancel function to stop listening to the events - -▸ (): `void` - -##### Returns - -`void` - -The return value is a cancel function to stop listening to the events - -#### Defined in - -[index.ts:105](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/index.ts#L105) - -___ - -### send - -▸ **send**<`SEND_TYPE`\>(`type`, `data`): `Promise`<`ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``]\> - -With this method you can send actions: - -```javascript - send('redirect', { - url: 'https://www.shopware.com', - newTab: true, - }) -``` - -or you can request data: -```javascript -send('getPageTitle', {}).then((pageTitle) => { - console.log(pageTitle) -}) -``` - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `SEND_TYPE` | extends keyof `ShopwareSendTypes` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `type` | `SEND_TYPE` | Choose a type of action from the {@link send-types} | -| `data` | `SendDataType`<`SEND_TYPE`\> | The matching data for the type | - -#### Returns - -`Promise`<`ShopwareSendTypes`[`SEND_TYPE`][``"responseType"``]\> - -A promise with the response data in the given responseType - -#### Defined in - -[index.ts:62](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/index.ts#L62) diff --git a/docs/docs/api/namespaces/_category_.yml b/docs/docs/api/namespaces/_category_.yml deleted file mode 100644 index 1833bbb58..000000000 --- a/docs/docs/api/namespaces/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: "Namespaces" -position: 1 \ No newline at end of file diff --git a/docs/docs/api/namespaces/sendTypes.md b/docs/docs/api/namespaces/sendTypes.md deleted file mode 100644 index ac50af09d..000000000 --- a/docs/docs/api/namespaces/sendTypes.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -id: "sendTypes" -title: "Namespace: sendTypes" -sidebar_label: "sendTypes" -sidebar_position: 0 -custom_edit_url: null ---- - -## Type aliases - -### createAlert - -Ƭ **createAlert**: `Object` - -Create a alert notification. - -```js -send('createAlert', { - message: 'My alert message' -}) -``` - -#### Type declaration - -| Name | Type | Description | -| :------ | :------ | :------ | -| `message` | `string` | This message will be shown in the alert | -| `responseType` | `void` | - | - -#### Defined in - -[send-types.ts:10](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L10) - -___ - -### getPageTitle - -Ƭ **getPageTitle**: `Object` - -Get the actual page title -```js -send('redirect', {}).then(pageTitle => { - console.log(pageTitle) -}) -``` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `responseType` | `string` | - -#### Defined in - -[send-types.ts:48](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L48) - -___ - -### redirect - -Ƭ **redirect**: `Object` - -Redirect to another URL - -```js -send('redirect', { - url: 'https://www.shopware.com', - newTab: true -}) -``` - -#### Type declaration - -| Name | Type | Description | -| :------ | :------ | :------ | -| `newTab` | `boolean` | If this is activated then the link will be opened in a new tab | -| `responseType` | `void` | - | -| `url` | `string` | The URL for the redirection | - -#### Defined in - -[send-types.ts:28](https://github.com/shopware/admin-app-actions/blob/bc5c7bb/lib/send-types.ts#L28) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 4dd2311de..8a08b1abe 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -8,7 +8,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); const config = { title: 'Admin App Actions', tagline: 'for Shopware 6 apps', - url: 'https://your-docusaurus-test-site.com', + url: 'https://shopware.github.io', baseUrl: '/admin-app-actions/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', From 368fd8d70b299f180ac9750a1053053e66e44783 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 14:44:13 +0200 Subject: [PATCH 005/189] Add automatic NPM release --- .github/workflows/npm-publish.yml | 30 ++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/npm-publish.yml diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 000000000..5358f6b94 --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,30 @@ +name: Publish to NPM + +on: push + +jobs: + publish: + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + - name: Retrieve the cached "node_modules" directory (if present) + uses: actions/cache@v2 + id: node-cache + with: + path: node_modules + key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install dependencies (if the cached directory was not found) + if: steps.node-cache.outputs.cache-hit != 'true' + run: npm ci + - name: lint + run: npm run lint + - name: build + run: npm run build + - uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} + access: "public" \ No newline at end of file diff --git a/README.md b/README.md index 3faae14f1..cfd8f6875 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ send('redirect', { }) ``` -[![E2E Tests](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/cypress.yml) [![Lint](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml/badge.svg)](https://github.com/jleifeld/postmessage-api-concept/actions/workflows/lint.yml) +[![E2E Tests](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml) ## Installation From 97e31fcae0d281b0a3feb81e5299ca280031a32b Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 15:02:44 +0200 Subject: [PATCH 006/189] Update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cfd8f6875..6b37d02c7 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ -------- +[![E2E Tests](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml) [![NPM_SIZE](https://img.shields.io/bundlephobia/minzip/@shopware-ag/admin-app-actions?logo=npm)](https://bundlephobia.com/package/@shopware-ag/admin-app-actions) + # Admin app actions ### for the Shopware 6 app system @@ -17,8 +19,6 @@ send('redirect', { }) ``` -[![E2E Tests](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml) - ## Installation #### Using NPM: From dffc1d59a298f247a7ec7753469b4101c6a664e0 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 8 Oct 2021 15:05:34 +0200 Subject: [PATCH 007/189] Update readme --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6b37d02c7..ef2b424ff 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ # Admin app actions ### for the Shopware 6 app system +[Open documentation](https://shopware.github.io/admin-app-actions/) + This small library is for using admin actions in your app iframes. Your app can then extend the Administration with many different actions, customizing UI elements and more. It can send actions to the administration or receive data from it. @@ -37,10 +39,10 @@ Import the source from the CDN: ```js // use the latest version available - + // use a fix version (example here: 1.2.3) - + ``` Then you can access it with the global variable `AdminAppActions`. @@ -85,7 +87,7 @@ The bundle size of this library is extremely small and will not grow when new ac ## Full Typescript support Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. -A full auto-generated API documentation can be found in the documentation: [TODO: Add link here] +A full auto-generated API documentation can be found in the documentation: https://shopware.github.io/admin-app-actions/ ___________ From 0eaedb89656bcef80a2200a1f79040737d5a4551 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 12 Oct 2021 09:37:04 +0200 Subject: [PATCH 008/189] Update README npm link --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ef2b424ff..be3c82f73 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,12 @@ send('redirect', { #### Using NPM: Install it to your `package.json` ``` -npm i --save @shopware/admin-app-actions +npm i --save @shopware-ag/admin-app-actions ``` Then import it in your app: ```js -import { send } from '@shopware/admin-app-actions; +import { send } from '@shopware-ag/admin-app-actions'; ``` #### Using CDN: @@ -65,7 +65,7 @@ The API is very expressive and easy to learn. You just need to import our librar The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. ```js -import { send } from 'sw-app-actions'; +import { send } from '@shopware-ag/admin-app-actions'; send('redirect', { url: 'https://www.shopware.com', @@ -76,7 +76,7 @@ send('redirect', { If the action has a response then you can get the information with the returned Promise value: ```javascript -import { send } from 'sw-app-actions'; +import { send } from '@shopware-ag/admin-app-actions'; const pageTitle = await send('getPageTitle', {}); ``` @@ -95,7 +95,7 @@ ___________ The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: ```ts -import { on } from 'sw-app-actions' +import { on } from '@shopware-ag/admin-app-actions'; on('redirect', ({ newTab, url }) => { // call a method which redirects to the url From b79e24cfd64921eb0b544351658d006a1e9212dd Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 12 Oct 2021 10:10:39 +0200 Subject: [PATCH 009/189] Fix JSON parsing of unsupported postMessages and fix targetOrigin --- lib/index.ts | 14 ++++++++++++-- package.json | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index fc813c88e..f7c031f18 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -108,7 +108,15 @@ export function on(type: SEND_TYPE, m return; } - const shopwareMessageData = JSON.parse(event.data); + let shopwareMessageData; + + // try to parse the json file + try { + shopwareMessageData = JSON.parse(event.data); + } catch { + // fail silently when message is not a valid json file + return; + } // check if messageData is valid if (!isMessageData(shopwareMessageData)) { @@ -126,7 +134,9 @@ export function on(type: SEND_TYPE, m response: method(shopwareMessageData.data) } - event.source?.postMessage(JSON.stringify(responseMessage)); + event.source?.postMessage(JSON.stringify(responseMessage), { + targetOrigin: '*' + }); } // start listening directly diff --git a/package.json b/package.json index ab20b5ca1..78c97466d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-app-actions", - "version": "0.0.1", + "version": "0.0.2", "repository": "git://github.com/shopware/admin-app-actions.git", "description": "A small library for App iframes to communicate with the Shopware Adminstration.", "keywords": [ From da522b11693b96c054ef20271dd77cc36068af0e Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 12 Oct 2021 11:23:51 +0200 Subject: [PATCH 010/189] Add reload action --- lib/index.ts | 1 + lib/send-types.ts | 8 ++++++++ package.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/index.ts b/lib/index.ts index f7c031f18..a893d8719 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -36,6 +36,7 @@ export type ShopwareMessageResponseData Date: Tue, 12 Oct 2021 11:49:25 +0200 Subject: [PATCH 011/189] Add fallback data when no data is defined --- lib/index.ts | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index a893d8719..bcf6b4dae 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -64,10 +64,13 @@ export function send(type: SEND_TYPE, // generate a unique callback ID. This here is only for simple demonstration purposes const callbackId = String(Math.floor(Math.random() * Date.now())); + // set fallback data when no data is defined + const sendData = data ?? {}; + // generate the message with the callbackId const messageData: ShopwareMessageSendData = { type, - data, + data: sendData, callbackId: callbackId } const message = JSON.stringify(messageData); diff --git a/package.json b/package.json index 445e64431..b97bfbe1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-app-actions", - "version": "0.0.3", + "version": "0.0.4", "repository": "git://github.com/shopware/admin-app-actions.git", "description": "A small library for App iframes to communicate with the Shopware Adminstration.", "keywords": [ From 159deafbb37f4754f64a0f302a7ef09ce5d17d43 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 12 Oct 2021 16:18:02 +0200 Subject: [PATCH 012/189] Add additional checks --- lib/index.ts | 16 ++++++++++++++-- package.json | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index bcf6b4dae..926277011 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -81,12 +81,24 @@ export function send(type: SEND_TYPE, return; } - const data = JSON.parse(event.data); + let data; + // try to parse the json file + try { + data = JSON.parse(event.data); + } catch { + // fail silently when message is not a valid json file + return; + } // only execute when callbackId matches if (data.callbackId !== callbackId) { return; } + + // only execute if response value exists + if (!data.hasOwnProperty('response')) { + return; + } // remove event so that in only execute once window.removeEventListener('message', callbackHandler); @@ -135,7 +147,7 @@ export function on(type: SEND_TYPE, m const responseMessage: ShopwareMessageResponseData = { callbackId: shopwareMessageData.callbackId, type: shopwareMessageData.type, - response: method(shopwareMessageData.data) + response: method(shopwareMessageData.data) ?? null } event.source?.postMessage(JSON.stringify(responseMessage), { diff --git a/package.json b/package.json index b97bfbe1c..42b80f631 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-app-actions", - "version": "0.0.4", + "version": "0.0.5", "repository": "git://github.com/shopware/admin-app-actions.git", "description": "A small library for App iframes to communicate with the Shopware Adminstration.", "keywords": [ From 644609f796ce448c04d0cc8984225240b422ec7d Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 09:32:38 +0100 Subject: [PATCH 013/189] Rename repository to admin-extension-sdk --- README.md | 20 ++++++++++---------- docs/docusaurus.config.js | 6 +++--- package-lock.json | 4 ++-- package.json | 19 ++++++++++--------- vite.config.ts | 2 +- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index be3c82f73..3c371654e 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ -------- -[![E2E Tests](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-app-actions/actions/workflows/lint.yml) [![NPM_SIZE](https://img.shields.io/bundlephobia/minzip/@shopware-ag/admin-app-actions?logo=npm)](https://bundlephobia.com/package/@shopware-ag/admin-app-actions) +[![E2E Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-extension-sdk/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-extension-sdk/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-extension-sdk/actions/workflows/lint.yml) [![NPM_SIZE](https://img.shields.io/bundlephobia/minzip/@shopware-ag/admin-extension-sdk?logo=npm)](https://bundlephobia.com/package/@shopware-ag/admin-extension-sdk) # Admin app actions ### for the Shopware 6 app system -[Open documentation](https://shopware.github.io/admin-app-actions/) +[Open documentation](https://shopware.github.io/admin-extension-sdk/) This small library is for using admin actions in your app iframes. @@ -26,12 +26,12 @@ send('redirect', { #### Using NPM: Install it to your `package.json` ``` -npm i --save @shopware-ag/admin-app-actions +npm i --save @shopware-ag/admin-extension-sdk ``` Then import it in your app: ```js -import { send } from '@shopware-ag/admin-app-actions'; +import { send } from '@shopware-ag/admin-extension-sdk'; ``` #### Using CDN: @@ -39,10 +39,10 @@ Import the source from the CDN: ```js // use the latest version available - + // use a fix version (example here: 1.2.3) - + ``` Then you can access it with the global variable `AdminAppActions`. @@ -65,7 +65,7 @@ The API is very expressive and easy to learn. You just need to import our librar The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. ```js -import { send } from '@shopware-ag/admin-app-actions'; +import { send } from '@shopware-ag/admin-extension-sdk'; send('redirect', { url: 'https://www.shopware.com', @@ -76,7 +76,7 @@ send('redirect', { If the action has a response then you can get the information with the returned Promise value: ```javascript -import { send } from '@shopware-ag/admin-app-actions'; +import { send } from '@shopware-ag/admin-extension-sdk'; const pageTitle = await send('getPageTitle', {}); ``` @@ -87,7 +87,7 @@ The bundle size of this library is extremely small and will not grow when new ac ## Full Typescript support Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. -A full auto-generated API documentation can be found in the documentation: https://shopware.github.io/admin-app-actions/ +A full auto-generated API documentation can be found in the documentation: https://shopware.github.io/admin-extension-sdk/ ___________ @@ -95,7 +95,7 @@ ___________ The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: ```ts -import { on } from '@shopware-ag/admin-app-actions'; +import { on } from '@shopware-ag/admin-extension-sdk'; on('redirect', ({ newTab, url }) => { // call a method which redirects to the url diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 8a08b1abe..81fc7b6e4 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -9,12 +9,12 @@ const config = { title: 'Admin App Actions', tagline: 'for Shopware 6 apps', url: 'https://shopware.github.io', - baseUrl: '/admin-app-actions/', + baseUrl: '/admin-extension-sdk/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', organizationName: 'Shopware AG', // Usually your GitHub org/user name. - projectName: 'admin-app-actions', // Usually your repo name. + projectName: 'admin-extension-sdk', // Usually your repo name. plugins: [ [ @@ -68,7 +68,7 @@ const config = { label: 'Documentation', }, { - href: 'https://github.com/shopware/admin-app-actions', + href: 'https://github.com/shopware/admin-extension-sdk', label: 'GitHub', position: 'right', }, diff --git a/package-lock.json b/package-lock.json index b80e089e6..0712c9acb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "@shopware-ag/admin-app-actions", - "version": "0.0.1", + "name": "@shopware-ag/admin-extension-sdk", + "version": "0.0.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 42b80f631..1629a8939 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,28 @@ { - "name": "@shopware-ag/admin-app-actions", + "name": "@shopware-ag/admin-extension-sdk", "version": "0.0.5", - "repository": "git://github.com/shopware/admin-app-actions.git", - "description": "A small library for App iframes to communicate with the Shopware Adminstration.", + "repository": "git://github.com/shopware/admin-extension-sdk.git", + "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ "iframe", "shopware", "admin", "bridge", - "app" + "app", + "sdk" ], "files": [ "dist" ], - "main": "./dist/admin-app-actions.umd.js", - "module": "./dist/admin-app-actions.es.js", + "main": "./dist/admin-extension-sdk.umd.js", + "module": "./dist/admin-extension-sdk.es.js", "exports": { ".": { - "import": "./dist/admin-app-actions.es.js", - "require": "./dist/admin-app-actions.umd.js" + "import": "./dist/admin-extension-sdk.es.js", + "require": "./dist/admin-extension-sdk.umd.js" } }, - "types": "./dist/admin-app-actions.d.ts", + "types": "./dist/admin-extension-sdk.d.ts", "scripts": { "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", "dev:build-watch": "vite build --watch --mode example", diff --git a/vite.config.ts b/vite.config.ts index 488510ab3..d5534c386 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -39,7 +39,7 @@ module.exports = defineConfig(({ command, mode }) => { lib: { entry: resolve(__dirname, 'lib/index.ts'), name: 'AdminAppActions', - fileName: (format) => `admin-app-actions.${format}.js` + fileName: (format) => `admin-extension-sdk.${format}.js` } } } From b4473e58c7c2d7fb6d19ab370e3db79c380f374e Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 09:41:19 +0100 Subject: [PATCH 014/189] Combine two Github jobs in one workflow --- .github/workflows/{lint.yml => base.yml} | 17 +++++++++++++++-- .github/workflows/cypress.yml | 17 ----------------- 2 files changed, 15 insertions(+), 19 deletions(-) rename .github/workflows/{lint.yml => base.yml} (63%) delete mode 100644 .github/workflows/cypress.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/base.yml similarity index 63% rename from .github/workflows/lint.yml rename to .github/workflows/base.yml index 15fe72862..5a6863619 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/base.yml @@ -1,9 +1,9 @@ -name: Lint +name: Base tests on: [push, pull_request] jobs: - tsc: + lint: runs-on: ubuntu-latest steps: - name: Checkout @@ -21,3 +21,16 @@ jobs: run: npm ci - name: lint run: npm run lint + cypress-run: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + # Install NPM dependencies, cache them correctly + # and run all Cypress tests + - name: Cypress run + uses: cypress-io/github-action@v2 + with: + build: npm run build + start: npm run dev + \ No newline at end of file diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml deleted file mode 100644 index dea6944db..000000000 --- a/.github/workflows/cypress.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: E2E Tests - -on: [push, pull_request] - -jobs: - cypress-run: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - # Install NPM dependencies, cache them correctly - # and run all Cypress tests - - name: Cypress run - uses: cypress-io/github-action@v2 - with: - build: npm run build - start: npm run dev From 220e2ba12c66ee43bd5f006efbe38138e7e270d1 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 10:09:14 +0100 Subject: [PATCH 015/189] Add basic tests for send and receive data --- .github/workflows/base.yml | 18 + jest.config.js | 13 + lib/index.spec.ts | 36 + lib/index.ts | 14 +- package-lock.json | 2535 +++++++++++++++++++++++++++++++++++- package.json | 9 +- 6 files changed, 2611 insertions(+), 14 deletions(-) create mode 100644 jest.config.js create mode 100644 lib/index.spec.ts diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml index 5a6863619..57277ddcc 100644 --- a/.github/workflows/base.yml +++ b/.github/workflows/base.yml @@ -21,6 +21,24 @@ jobs: run: npm ci - name: lint run: npm run lint + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + - name: Retrieve the cached "node_modules" directory (if present) + uses: actions/cache@v2 + id: node-cache + with: + path: node_modules + key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install dependencies (if the cached directory was not found) + if: steps.node-cache.outputs.cache-hit != 'true' + run: npm ci + - name: test + run: npm run test cypress-run: runs-on: ubuntu-latest steps: diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..dfdbe9b43 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,13 @@ +/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'jsdom', + globals: { + 'ts-jest': { + diagnostics: false + } + }, + modulePathIgnorePatterns: [ + '/cypress/' + ] +}; \ No newline at end of file diff --git a/lib/index.spec.ts b/lib/index.spec.ts new file mode 100644 index 000000000..495002af5 --- /dev/null +++ b/lib/index.spec.ts @@ -0,0 +1,36 @@ +import { send, on } from './index'; + +declare global { + interface Window { + send: typeof send + on: typeof on + } +} + +describe('Test the communication between app and admin', () => { + it('should send "reload" command to the admin', (done) => { + const removeListener = on('reload', (result) => { + expect(result).toEqual({}); + + removeListener(); + done(); + }) + + send('reload', {}); + }); + + it('should get value back from admin', (done) => { + const PAGE_TITLE = 'Awesome page title'; + + const removeListener = on('getPageTitle', () => { + return PAGE_TITLE; + }) + + send('getPageTitle', {}).then((pageTitle) => { + expect(pageTitle).toEqual(PAGE_TITLE); + + removeListener(); + done(); + }) + }); +}); \ No newline at end of file diff --git a/lib/index.ts b/lib/index.ts index 926277011..2a02abcd8 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -150,9 +150,17 @@ export function on(type: SEND_TYPE, m response: method(shopwareMessageData.data) ?? null } - event.source?.postMessage(JSON.stringify(responseMessage), { - targetOrigin: '*' - }); + const stringifiedResponseMessage = JSON.stringify(responseMessage); + + if (event.source) { + // if event source exists then send it back to original source + event.source.postMessage(stringifiedResponseMessage, { + targetOrigin: '*' + }); + } else { + // if no event source exists then it should send to same window + window.postMessage(stringifiedResponseMessage, '*') + } } // start listening directly diff --git a/package-lock.json b/package-lock.json index 0712c9acb..ed88706f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,444 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "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" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@cush/relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@cush/relative/-/relative-1.0.0.tgz", @@ -87,6 +525,216 @@ } } }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "dev": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + } + }, + "@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "@jest/globals": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "dev": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/types": "^27.2.5", + "expect": "^27.3.1" + } + }, + "@jest/reporters": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "dev": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "dev": true, + "requires": { + "@jest/test-result": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" + } + }, + "@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -113,6 +761,30 @@ "fastq": "^1.6.0" } }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, "@ts-morph/common": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.10.1.tgz", @@ -125,6 +797,90 @@ "path-browserify": "^1.0.1" } }, + "@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.0.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", + "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "dev": true, + "requires": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -135,8 +891,13 @@ "version": "16.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==", - "dev": true, - "optional": true + "dev": true + }, + "@types/prettier": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", + "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", + "dev": true }, "@types/sinonjs__fake-timers": { "version": "6.0.4", @@ -150,6 +911,27 @@ "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, "@types/yauzl": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", @@ -160,6 +942,12 @@ "@types/node": "*" } }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -170,6 +958,45 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -222,6 +1049,16 @@ "color-convert": "^2.0.1" } }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "apache-crypt": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", @@ -243,6 +1080,15 @@ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -336,6 +1182,92 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "babel-jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "dev": true, + "requires": { + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@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.8.3" + } + }, + "babel-preset-jest": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -474,12 +1406,55 @@ "fill-range": "^7.0.1" } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -503,6 +1478,24 @@ "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -519,6 +1512,12 @@ "supports-color": "^7.1.0" } }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", @@ -688,6 +1687,12 @@ "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -758,12 +1763,24 @@ "wrap-ansi": "^7.0.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, "code-block-writer": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", "dev": true }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -890,6 +1907,15 @@ } } }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -923,6 +1949,29 @@ "which": "^2.0.1" } }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, "cypress": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.5.0.tgz", @@ -1049,6 +2098,17 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "date-fns": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", @@ -1070,12 +2130,36 @@ "ms": "2.1.2" } }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -1135,6 +2219,35 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -1157,6 +2270,18 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "electron-to-chromium": { + "version": "1.3.904", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", + "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "dev": true + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1335,10 +2460,41 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -1368,6 +2524,23 @@ "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", "dev": true }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, "executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", @@ -1377,6 +2550,12 @@ "pify": "^2.2.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1427,6 +2606,28 @@ } } }, + "expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1584,6 +2785,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -1602,6 +2809,15 @@ "websocket-driver": ">=0.5.1" } }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -1668,6 +2884,16 @@ } } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1680,6 +2906,17 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -1739,12 +2976,30 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -1819,6 +3074,12 @@ "ini": "2.0.0" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -1914,6 +3175,21 @@ } } }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "http-auth": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", @@ -1953,6 +3229,17 @@ "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", "dev": true }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -1964,6 +3251,47 @@ "sshpk": "^1.7.0" } }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -2102,6 +3430,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2142,6 +3476,12 @@ "isobject": "^3.0.1" } }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -2196,12 +3536,615 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "dev": true, + "requires": { + "@jest/core": "^27.3.1", + "import-local": "^3.0.2", + "jest-cli": "^27.3.1" + }, + "dependencies": { + "jest-cli": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "dev": true, + "requires": { + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-config": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.3.1", + "@jest/types": "^27.2.5", + "babel-jest": "^27.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1" + } + }, + "jest-diff": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-environment-jsdom": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "dev": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "requires": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + } + }, + "jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true + }, + "jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "dev": true, + "requires": { + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + } + }, + "jest-message-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.5", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true + }, + "jest-resolve": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.3.1" + } + }, + "jest-runner": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "dev": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + } + }, + "jest-runtime": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "dev": true, + "requires": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.2.0" + } + }, + "jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.3.1", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "leven": "^3.1.0", + "pretty-format": "^27.3.1" + }, + "dependencies": { + "camelcase": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "dev": true, + "requires": { + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.3.1", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -2220,6 +4163,15 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -2256,12 +4208,34 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "lazy-ass": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", "dev": true }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "listr2": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", @@ -2298,12 +4272,27 @@ "serve-index": "^1.9.1" } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -2356,6 +4345,39 @@ } } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -2542,12 +4564,36 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2563,6 +4609,12 @@ "path-key": "^3.0.0" } }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2660,12 +4712,44 @@ "is-wsl": "^1.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", "dev": true }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -2675,6 +4759,18 @@ "aggregate-error": "^3.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2699,6 +4795,12 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2738,6 +4840,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -2750,6 +4858,24 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -2767,18 +4893,54 @@ "source-map-js": "^0.6.2" } }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, + "pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "requires": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -2843,6 +5005,12 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -3039,12 +5207,33 @@ "path-parse": "^1.0.6" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -3124,6 +5313,21 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -3288,6 +5492,12 @@ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3433,6 +5643,12 @@ } } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", @@ -3452,6 +5668,16 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "source-map-url": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", @@ -3482,6 +5708,12 @@ "extend-shallow": "^3.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -3499,6 +5731,23 @@ "tweetnacl": "~0.14.0" } }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -3535,6 +5784,16 @@ "duplexer": "~0.1.1" } }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3564,6 +5823,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -3579,6 +5844,49 @@ "has-flag": "^4.0.0" } }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -3600,6 +5908,18 @@ "rimraf": "^3.0.0" } }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -3647,12 +5967,59 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "ts-jest": { + "version": "27.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", + "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "ts-morph": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-11.0.3.tgz", @@ -3713,16 +6080,40 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", "dev": true }, "union-value": { @@ -3737,6 +6128,12 @@ "set-value": "^2.0.1" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unix-crypt-td-js": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", @@ -3858,6 +6255,25 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-to-istanbul": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -3919,6 +6335,39 @@ "tsconfig-paths": "^3.9.0" } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, "websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -3936,6 +6385,32 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3945,6 +6420,12 @@ "isexe": "^2.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -3962,12 +6443,48 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 1629a8939..da7bf7610 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,18 @@ "doc:dev": "cd docs && npm run start", "lint": "tsc", "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", - "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"" + "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", + "test": "jest --collectCoverage", + "test:watch": "jest --watch" }, "devDependencies": { + "@types/jest": "^27.0.3", "concurrently": "^6.3.0", "cypress": "^8.5.0", + "jest": "^27.3.1", "live-server": "^1.2.1", - "typescript": "^4.4.3", + "ts-jest": "^27.0.7", + "typescript": "^4.5.2", "vite": "^2.6.0", "vite-plugin-dts": "^0.8.2", "vite-tsconfig-paths": "^3.3.14" From e4daa79df0915fd2837f28df23e76fe8fec9f72d Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 10:29:24 +0100 Subject: [PATCH 016/189] Add origins to postMessage api --- lib/index.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index 2a02abcd8..c1049a1c5 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -108,7 +108,7 @@ export function send(type: SEND_TYPE, } window.addEventListener('message', callbackHandler); - window.parent.postMessage(message, '*'); + window.parent.postMessage(message, window.parent.origin); }) } @@ -155,11 +155,12 @@ export function on(type: SEND_TYPE, m if (event.source) { // if event source exists then send it back to original source event.source.postMessage(stringifiedResponseMessage, { - targetOrigin: '*' + // @ts-expect-error - event.source.origin is not correctly defined in TS + targetOrigin: event.source.origin ?? '*' }); } else { // if no event source exists then it should send to same window - window.postMessage(stringifiedResponseMessage, '*') + window.postMessage(stringifiedResponseMessage, window.origin) } } From 32c4394aff8ed6adc405c158287acd58521c483e Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 10:47:36 +0100 Subject: [PATCH 017/189] NEXT-18158 - make postmessage properties private --- lib/index.ts | 59 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index c1049a1c5..ba4510998 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -13,9 +13,9 @@ export type SendDataType = Omit = { - type: SEND_TYPE, - data: SendDataType, - callbackId: string + _type: SEND_TYPE, + _data: SendDataType, + _callbackId: string } /** @@ -23,9 +23,9 @@ export type ShopwareMessageSendData = * @internal */ export type ShopwareMessageResponseData = { - type: SEND_TYPE, - response: ShopwareSendTypes[SEND_TYPE]['responseType'], - callbackId: string + _type: SEND_TYPE, + _response: ShopwareSendTypes[SEND_TYPE]['responseType'], + _callbackId: string } /** @@ -69,34 +69,39 @@ export function send(type: SEND_TYPE, // generate the message with the callbackId const messageData: ShopwareMessageSendData = { - type, - data: sendData, - callbackId: callbackId + _type: type, + _data: sendData, + _callbackId: callbackId } const message = JSON.stringify(messageData); return new Promise((resolve) => { - const callbackHandler = function(event: MessageEvent) { + const callbackHandler = function(event: MessageEvent) { if (typeof event.data !== 'string') { return; } - let data; + let shopwareResponseData; // try to parse the json file try { - data = JSON.parse(event.data); + shopwareResponseData = JSON.parse(event.data); } catch { // fail silently when message is not a valid json file return; + } + + // check if messageData is valid + if (!isMessageResponseData(shopwareResponseData)) { + return; } // only execute when callbackId matches - if (data.callbackId !== callbackId) { + if (shopwareResponseData._callbackId !== callbackId) { return; } // only execute if response value exists - if (!data.hasOwnProperty('response')) { + if (!shopwareResponseData.hasOwnProperty('_response')) { return; } @@ -104,7 +109,7 @@ export function send(type: SEND_TYPE, window.removeEventListener('message', callbackHandler); // return the data - resolve(data.response); + resolve(shopwareResponseData._response); } window.addEventListener('message', callbackHandler); @@ -119,7 +124,7 @@ export function send(type: SEND_TYPE, * @returns The return value is a cancel function to stop listening to the events */ export function on(type: SEND_TYPE, method: (data: SendDataType) => ShopwareSendTypes[SEND_TYPE]['responseType']): () => void { - const onListener = function(event: MessageEvent) { + const onListener = function(event: MessageEvent) { if (typeof event.data !== 'string') { return; } @@ -140,14 +145,14 @@ export function on(type: SEND_TYPE, m } // check if messageData type matches the type argument - if (shopwareMessageData.type !== type) { + if (shopwareMessageData._type !== type) { return; } const responseMessage: ShopwareMessageResponseData = { - callbackId: shopwareMessageData.callbackId, - type: shopwareMessageData.type, - response: method(shopwareMessageData.data) ?? null + _callbackId: shopwareMessageData._callbackId, + _type: shopwareMessageData._type, + _response: method(shopwareMessageData._data) ?? null } const stringifiedResponseMessage = JSON.stringify(responseMessage); @@ -174,7 +179,15 @@ export function on(type: SEND_TYPE, m function isMessageData(eventData: object): eventData is ShopwareMessageSendData { const shopwareMessageData = eventData as ShopwareMessageSendData; - return shopwareMessageData.type - && shopwareMessageData.data - && shopwareMessageData.callbackId; + return shopwareMessageData._type + && shopwareMessageData._data + && shopwareMessageData._callbackId; +} + +function isMessageResponseData(eventData: object): eventData is ShopwareMessageResponseData { + const shopwareMessageData = eventData as ShopwareMessageResponseData; + + return shopwareMessageData._type + && shopwareMessageData._response + && shopwareMessageData._callbackId; } \ No newline at end of file From 09e9d27b31a3494e22fb75ec6e33e94dd0f72480 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 10:50:21 +0100 Subject: [PATCH 018/189] Update badges --- .github/workflows/base.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml index 57277ddcc..b3824f5dc 100644 --- a/.github/workflows/base.yml +++ b/.github/workflows/base.yml @@ -1,4 +1,4 @@ -name: Base tests +name: Tests on: [push, pull_request] diff --git a/README.md b/README.md index 3c371654e..4851dfa3a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ -------- -[![E2E Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/cypress.yml/badge.svg)](https://github.com/shopware/admin-extension-sdk/actions/workflows/cypress.yml) [![Lint](https://github.com/shopware/admin-extension-sdk/actions/workflows/lint.yml/badge.svg)](https://github.com/shopware/admin-extension-sdk/actions/workflows/lint.yml) [![NPM_SIZE](https://img.shields.io/bundlephobia/minzip/@shopware-ag/admin-extension-sdk?logo=npm)](https://bundlephobia.com/package/@shopware-ag/admin-extension-sdk) +[![Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml/badge.svg?branch=main)](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml) # Admin app actions ### for the Shopware 6 app system From ed0dcb6ca729bee73e321235481c4ef79cf34ffc Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 22 Nov 2021 14:49:33 +0100 Subject: [PATCH 019/189] Refactor library, add new export structure and integrate factories for sender and handler --- example/iframe-app/app.ts | 2 +- example/main-app/main.ts | 4 +- lib/channel.spec.ts | 80 ++++++++ lib/channel.ts | 191 +++++++++++++++++ lib/index.spec.ts | 36 ---- lib/index.ts | 194 +----------------- lib/sdk/window/index.ts | 3 + lib/{send-types.ts => types/message.types.ts} | 31 ++- 8 files changed, 292 insertions(+), 249 deletions(-) create mode 100644 lib/channel.spec.ts create mode 100644 lib/channel.ts delete mode 100644 lib/index.spec.ts create mode 100644 lib/sdk/window/index.ts rename lib/{send-types.ts => types/message.types.ts} (67%) diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts index 08744033c..10542bbdf 100644 --- a/example/iframe-app/app.ts +++ b/example/iframe-app/app.ts @@ -1,5 +1,5 @@ import './style.css'; -import { send } from 'lib'; +import { send } from 'lib/channel'; const actionType = document.getElementById('actionType')! as HTMLInputElement const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement diff --git a/example/main-app/main.ts b/example/main-app/main.ts index 257d20d8d..d1127405e 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -1,4 +1,4 @@ -import { on } from 'lib' +import { handle } from 'lib/channel'; import './style.css' const listenToActionButton = document.getElementById('listenToAction') @@ -10,7 +10,7 @@ listenToActionButton?.addEventListener('click', () => { const actionTypeValue = actionType.value; const reponseDataValue = responseData.value; - on(actionTypeValue as any, (receivedData) => { + handle(actionTypeValue as any, (receivedData) => { result.innerHTML += JSON.stringify(receivedData) + '\n'; return reponseDataValue; diff --git a/lib/channel.spec.ts b/lib/channel.spec.ts new file mode 100644 index 000000000..d37790227 --- /dev/null +++ b/lib/channel.spec.ts @@ -0,0 +1,80 @@ +import { send, handle, createSender, createHandler } from './channel'; + +declare global { + interface Window { + send: typeof send + on: typeof handle + } +} + +describe('Test the channel bridge from iFrame to admin', () => { + it('should send "reload" command to the admin', (done) => { + const removeListener = handle('reload', (result) => { + expect(result).toEqual({}); + + removeListener(); + done(); + }) + + send('reload', {}); + }); + + it('should send "reload" command to the admin also without options', (done) => { + const removeListener = handle('reload', (result) => { + expect(result).toEqual({}); + + removeListener(); + done(); + }) + + // safety check if non-ts user aren't providing options + // @ts-expect-error + send('reload'); + }); + + it('should get value back from admin', (done) => { + const PAGE_TITLE = 'Awesome page title'; + + const removeListener = handle('getPageTitle', () => { + return PAGE_TITLE; + }) + + send('getPageTitle', {}).then((pageTitle) => { + expect(pageTitle).toEqual(PAGE_TITLE); + + removeListener(); + done(); + }) + }); + + it('should create a sender and handler with required options', (done) => { + const getPageTitle = createSender('getPageTitle'); + const handlePageTitle = createHandler('getPageTitle'); + + const PAGE_TITLE = 'Awesome page title'; + + const removeListener = handlePageTitle(() => { + return PAGE_TITLE; + }) + + getPageTitle({}).then((pageTitle) => { + expect(pageTitle).toEqual(PAGE_TITLE); + + removeListener(); + done(); + }) + }); + + it('should create a sender and handler with optional options', (done) => { + const reload = createSender('reload', {}); + const handleReload = createHandler('reload'); + + const removeListener = handleReload(() => {}) + + reload().then(() => { + removeListener(); + + done(); + }) + }); +}); \ No newline at end of file diff --git a/lib/channel.ts b/lib/channel.ts new file mode 100644 index 000000000..3b72de675 --- /dev/null +++ b/lib/channel.ts @@ -0,0 +1,191 @@ +import { ShopwareMessageTypes } from './types/message.types'; + +/** + * This type contains the data of the type without the responseType + * @internal + */ +export type MessageDataType = Omit; + +/** + * This is the structure of the data which will be send with {@link send} + * @internal + */ +export type ShopwareMessageSendData = { + _type: MESSAGE_TYPE, + _data: MessageDataType, + _callbackId: string +} + +/** + * This is the structure of the data which will be send back when the admin gives a response + * @internal + */ +export type ShopwareMessageResponseData = { + _type: MESSAGE_TYPE, + _response: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], + _callbackId: string +} + +/** + * With this method you can send actions or you can request data: + * + * @param type Choose a type of action from the {@link send-types} + * @param data The matching data for the type + * @returns A promise with the response data in the given responseType + */ +export function send(type: MESSAGE_TYPE, data: MessageDataType): Promise { + // generate a unique callback ID. This here is only for simple demonstration purposes + const callbackId = String(Math.floor(Math.random() * Date.now())); + + // set fallback data when no data is defined + const sendData = data ?? {}; + + // generate the message with the callbackId + const messageData: ShopwareMessageSendData = { + _type: type, + _data: sendData, + _callbackId: callbackId + } + const message = JSON.stringify(messageData); + + return new Promise((resolve) => { + const callbackHandler = function(event: MessageEvent) { + if (typeof event.data !== 'string') { + console.log('event.data', event.data) + return; + } + + let shopwareResponseData; + // try to parse the json file + try { + shopwareResponseData = JSON.parse(event.data); + } catch { + // fail silently when message is not a valid json file + return; + } + + // check if messageData is valid + if (!isMessageResponseData(shopwareResponseData)) { + return; + } + + // only execute when callbackId matches + if (shopwareResponseData._callbackId !== callbackId) { + return; + } + + // only execute if response value exists + if (!shopwareResponseData.hasOwnProperty('_response')) { + return; + } + + // remove event so that in only execute once + window.removeEventListener('message', callbackHandler); + + // return the data + resolve(shopwareResponseData._response); + } + + window.addEventListener('message', callbackHandler); + window.parent.postMessage(message, window.parent.origin); + }) +} + +/** + * + * @param type Choose a type of action from the {@link send-types} + * @param method This method should return the response value + * @returns The return value is a cancel function to stop listening to the events + */ +export function handle(type: MESSAGE_TYPE, method: (data: MessageDataType) => ShopwareMessageTypes[MESSAGE_TYPE]['responseType']): () => void { + const handleListener = function(event: MessageEvent) { + if (typeof event.data !== 'string') { + return; + } + + let shopwareMessageData; + + // try to parse the json file + try { + shopwareMessageData = JSON.parse(event.data); + } catch { + // fail silently when message is not a valid json file + return; + } + + // check if messageData is valid + if (!isMessageData(shopwareMessageData)) { + return; + } + + // check if messageData type matches the type argument + if (shopwareMessageData._type !== type) { + return; + } + + const responseMessage: ShopwareMessageResponseData = { + _callbackId: shopwareMessageData._callbackId, + _type: shopwareMessageData._type, + _response: method(shopwareMessageData._data) ?? null + } + + const stringifiedResponseMessage = JSON.stringify(responseMessage); + + if (event.source) { + // if event source exists then send it back to original source + event.source.postMessage(stringifiedResponseMessage, { + // @ts-expect-error - event.source.origin is not correctly defined in TS + targetOrigin: event.source.origin ?? '*' + }); + } else { + // if no event source exists then it should send to same window + window.postMessage(stringifiedResponseMessage, window.origin) + } + } + + // start listening directly + window.addEventListener('message', handleListener); + + // return a cancel method + return () => window.removeEventListener('message', handleListener); +} + +function isMessageData(eventData: object): eventData is ShopwareMessageSendData { + const shopwareMessageData = eventData as ShopwareMessageSendData; + + return shopwareMessageData._type + && shopwareMessageData._data + && shopwareMessageData._callbackId; +} + +function isMessageResponseData(eventData: object): eventData is ShopwareMessageResponseData { + const shopwareMessageData = eventData as ShopwareMessageResponseData; + + return shopwareMessageData._type + && shopwareMessageData.hasOwnProperty('_response') + && shopwareMessageData._callbackId; +} + +/** + * Function overloading for these two cases: + * + * 1. case: createSender('reload', {}) ==> no option parameter required in usage + * 2. case: createSender('redirect') ==> option parameter required in usage + * + * */ +export function createSender + (messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) + :(messageOptions?: MessageDataType) => Promise +export function createSender + (messageType: MESSAGE_TYPE) + :(messageOptions: MessageDataType) => Promise + +export function createSender +(messageType: MESSAGE_TYPE, baseMessageOptions?: MessageDataType) +{ + return (messageOptions: MessageDataType) => send(messageType, { ...baseMessageOptions, ...messageOptions}); +} + +export function createHandler(messageType: MESSAGE_TYPE) { + return (method: (data: MessageDataType) => ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); +} \ No newline at end of file diff --git a/lib/index.spec.ts b/lib/index.spec.ts deleted file mode 100644 index 495002af5..000000000 --- a/lib/index.spec.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { send, on } from './index'; - -declare global { - interface Window { - send: typeof send - on: typeof on - } -} - -describe('Test the communication between app and admin', () => { - it('should send "reload" command to the admin', (done) => { - const removeListener = on('reload', (result) => { - expect(result).toEqual({}); - - removeListener(); - done(); - }) - - send('reload', {}); - }); - - it('should get value back from admin', (done) => { - const PAGE_TITLE = 'Awesome page title'; - - const removeListener = on('getPageTitle', () => { - return PAGE_TITLE; - }) - - send('getPageTitle', {}).then((pageTitle) => { - expect(pageTitle).toEqual(PAGE_TITLE); - - removeListener(); - done(); - }) - }); -}); \ No newline at end of file diff --git a/lib/index.ts b/lib/index.ts index ba4510998..0c407b82f 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,193 +1,5 @@ -import * as sendTypes from './send-types'; +import * as window from './sdk/window'; -export {sendTypes}; - -/** - * This type contains the data of the type without the responseType - * @internal - */ -export type SendDataType = Omit; - -/** - * This is the structure of the data which will be send with {@link send} - * @internal - */ -export type ShopwareMessageSendData = { - _type: SEND_TYPE, - _data: SendDataType, - _callbackId: string -} - -/** - * This is the structure of the data which will be send back when the admin gives a response - * @internal - */ -export type ShopwareMessageResponseData = { - _type: SEND_TYPE, - _response: ShopwareSendTypes[SEND_TYPE]['responseType'], - _callbackId: string -} - -/** - * Contains all shopware {@link send-types}. - * @internal - */ - export type ShopwareSendTypes = { - getPageTitle: sendTypes.getPageTitle, - createAlert: sendTypes.createAlert, - redirect: sendTypes.redirect, - reload: sendTypes.reload, -} - -/** - * With this method you can send actions: - * - * ```javascript - * send('redirect', { - * url: 'https://www.shopware.com', - * newTab: true, - * }) - * ``` - * - * or you can request data: - * ```javascript - * send('getPageTitle', {}).then((pageTitle) => { - * console.log(pageTitle) - * }) - * ``` - * - * @param type Choose a type of action from the {@link send-types} - * @param data The matching data for the type - * @returns A promise with the response data in the given responseType - */ -export function send(type: SEND_TYPE, data: SendDataType): Promise { - // generate a unique callback ID. This here is only for simple demonstration purposes - const callbackId = String(Math.floor(Math.random() * Date.now())); - - // set fallback data when no data is defined - const sendData = data ?? {}; - - // generate the message with the callbackId - const messageData: ShopwareMessageSendData = { - _type: type, - _data: sendData, - _callbackId: callbackId - } - const message = JSON.stringify(messageData); - - return new Promise((resolve) => { - const callbackHandler = function(event: MessageEvent) { - if (typeof event.data !== 'string') { - return; - } - - let shopwareResponseData; - // try to parse the json file - try { - shopwareResponseData = JSON.parse(event.data); - } catch { - // fail silently when message is not a valid json file - return; - } - - // check if messageData is valid - if (!isMessageResponseData(shopwareResponseData)) { - return; - } - - // only execute when callbackId matches - if (shopwareResponseData._callbackId !== callbackId) { - return; - } - - // only execute if response value exists - if (!shopwareResponseData.hasOwnProperty('_response')) { - return; - } - - // remove event so that in only execute once - window.removeEventListener('message', callbackHandler); - - // return the data - resolve(shopwareResponseData._response); - } - - window.addEventListener('message', callbackHandler); - window.parent.postMessage(message, window.parent.origin); - }) -} - -/** - * - * @param type Choose a type of action from the {@link send-types} - * @param method This method should return the response value - * @returns The return value is a cancel function to stop listening to the events - */ -export function on(type: SEND_TYPE, method: (data: SendDataType) => ShopwareSendTypes[SEND_TYPE]['responseType']): () => void { - const onListener = function(event: MessageEvent) { - if (typeof event.data !== 'string') { - return; - } - - let shopwareMessageData; - - // try to parse the json file - try { - shopwareMessageData = JSON.parse(event.data); - } catch { - // fail silently when message is not a valid json file - return; - } - - // check if messageData is valid - if (!isMessageData(shopwareMessageData)) { - return; - } - - // check if messageData type matches the type argument - if (shopwareMessageData._type !== type) { - return; - } - - const responseMessage: ShopwareMessageResponseData = { - _callbackId: shopwareMessageData._callbackId, - _type: shopwareMessageData._type, - _response: method(shopwareMessageData._data) ?? null - } - - const stringifiedResponseMessage = JSON.stringify(responseMessage); - - if (event.source) { - // if event source exists then send it back to original source - event.source.postMessage(stringifiedResponseMessage, { - // @ts-expect-error - event.source.origin is not correctly defined in TS - targetOrigin: event.source.origin ?? '*' - }); - } else { - // if no event source exists then it should send to same window - window.postMessage(stringifiedResponseMessage, window.origin) - } - } - - // start listening directly - window.addEventListener('message', onListener); - - // return a cancel method - return () => window.removeEventListener('message', onListener); -} - -function isMessageData(eventData: object): eventData is ShopwareMessageSendData { - const shopwareMessageData = eventData as ShopwareMessageSendData; - - return shopwareMessageData._type - && shopwareMessageData._data - && shopwareMessageData._callbackId; -} - -function isMessageResponseData(eventData: object): eventData is ShopwareMessageResponseData { - const shopwareMessageData = eventData as ShopwareMessageResponseData; - - return shopwareMessageData._type - && shopwareMessageData._response - && shopwareMessageData._callbackId; +export { + window, } \ No newline at end of file diff --git a/lib/sdk/window/index.ts b/lib/sdk/window/index.ts new file mode 100644 index 000000000..7a5ccc2fc --- /dev/null +++ b/lib/sdk/window/index.ts @@ -0,0 +1,3 @@ +import { createSender } from 'lib/channel'; + +export const redirect = createSender('redirect'); \ No newline at end of file diff --git a/lib/send-types.ts b/lib/types/message.types.ts similarity index 67% rename from lib/send-types.ts rename to lib/types/message.types.ts index a6a95f104..2edf2a29e 100644 --- a/lib/send-types.ts +++ b/lib/types/message.types.ts @@ -1,11 +1,16 @@ +/** + * Contains all shopware send types. + * @internal + */ +export type ShopwareMessageTypes = { + getPageTitle: getPageTitle, + createAlert: createAlert, + redirect: redirect, + reload: reload, +} + /** * Create a alert notification. - * - * ```js - * send('createAlert', { - * message: 'My alert message' - * }) - * ``` */ export type createAlert = { responseType: void, @@ -17,13 +22,6 @@ /** * Redirect to another URL - * - * ```js - * send('redirect', { - * url: 'https://www.shopware.com', - * newTab: true - * }) - * ``` */ export type redirect = { responseType: void, @@ -34,7 +32,7 @@ export type redirect = { /** * If this is activated then the link will be opened in a new tab */ - newTab: boolean + newTab?: boolean } /** @@ -47,11 +45,6 @@ export type reload = { /** * Get the actual page title - * ```js - * send('redirect', {}).then(pageTitle => { - * console.log(pageTitle) - * }) - * ``` */ export type getPageTitle = { responseType: string From 2c78d3be18ec36773a82eeea54270030912567e6 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 14:00:08 +0100 Subject: [PATCH 020/189] Update docs for supporting all exports --- docs/docusaurus.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 81fc7b6e4..d03099944 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -22,7 +22,8 @@ const config = { // Plugin / TypeDoc options { - entryPoints: ['../lib/index.ts'], + entryPoints: ['../lib'], + entryPointStrategy: 'expand', tsconfig: '../tsconfig.json', watch: process.env.TYPEDOC_WATCH, excludeInternal: true, From 80653b1019926c690fa86c3f89f792cca2aecc77 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 14:22:56 +0100 Subject: [PATCH 021/189] Add API for dispatching notifications --- lib/channel.spec.ts | 7 ------ lib/index.ts | 2 ++ lib/sdk/notification/index.ts | 3 +++ lib/types/message.types.ts | 45 +++++++++++++++++++++++++++++++---- 4 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 lib/sdk/notification/index.ts diff --git a/lib/channel.spec.ts b/lib/channel.spec.ts index d37790227..f3ac87736 100644 --- a/lib/channel.spec.ts +++ b/lib/channel.spec.ts @@ -1,12 +1,5 @@ import { send, handle, createSender, createHandler } from './channel'; -declare global { - interface Window { - send: typeof send - on: typeof handle - } -} - describe('Test the channel bridge from iFrame to admin', () => { it('should send "reload" command to the admin', (done) => { const removeListener = handle('reload', (result) => { diff --git a/lib/index.ts b/lib/index.ts index 0c407b82f..c6a78f713 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,5 +1,7 @@ import * as window from './sdk/window'; +import * as notification from './sdk/notification'; export { window, + notification } \ No newline at end of file diff --git a/lib/sdk/notification/index.ts b/lib/sdk/notification/index.ts new file mode 100644 index 000000000..2e0f9ef73 --- /dev/null +++ b/lib/sdk/notification/index.ts @@ -0,0 +1,3 @@ +import { createSender } from 'lib/channel'; + +export const dispatch = createSender('dispatchNotification'); \ No newline at end of file diff --git a/lib/types/message.types.ts b/lib/types/message.types.ts index 2edf2a29e..5cfd8dd2f 100644 --- a/lib/types/message.types.ts +++ b/lib/types/message.types.ts @@ -4,20 +4,55 @@ */ export type ShopwareMessageTypes = { getPageTitle: getPageTitle, - createAlert: createAlert, + dispatchNotification: dispatchNotification, redirect: redirect, reload: reload, } /** - * Create a alert notification. + * Dispatch a notification. */ - export type createAlert = { + export type dispatchNotification = { responseType: void, /** - * This message will be shown in the alert + * This message will be shown in the notification. + * HTML syntax can be used but it will be sanitized. + * Only some basic tags and attributes can be used. */ - message: string + message: string, + + /** + * The title of the notification + */ + title: string, + + /** + * Create a growl notification + */ + growl?: boolean, + + /** + * The variant of the notification + */ + variant?: 'success' | 'info' | 'warning' | 'error', + + /** + * There are two types of notification styles. Use + * "system" only for technical application notifications. + */ + appearance?: 'system' | 'notification', + + /** + * You can add several action buttons to the notification. + * Each button contains a route (url) which gets opened on + * a click. + */ + actions?: Array<{ + label: string, + route: string, + disabled?: boolean, + newTab?: boolean, + }> } /** From 6c0af82260a4ac08d74f7a5c3c5097ebecd02b30 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 14:24:56 +0100 Subject: [PATCH 022/189] Bump up version to 0.0.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da7bf7610..209fa6b09 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.5", + "version": "0.0.6", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 63454b74e1df8251956e8baa9363c81a267e51c9 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 14:31:32 +0100 Subject: [PATCH 023/189] Move type definitions for messages to their domain --- lib/sdk/notification/index.ts | 48 ++++++++++++++++++++++- lib/sdk/window/index.ts | 17 ++++++++- lib/types/message.types.ts | 72 ++++------------------------------- 3 files changed, 71 insertions(+), 66 deletions(-) diff --git a/lib/sdk/notification/index.ts b/lib/sdk/notification/index.ts index 2e0f9ef73..685783b24 100644 --- a/lib/sdk/notification/index.ts +++ b/lib/sdk/notification/index.ts @@ -1,3 +1,49 @@ import { createSender } from 'lib/channel'; -export const dispatch = createSender('dispatchNotification'); \ No newline at end of file +export const dispatch = createSender('dispatchNotification'); + +/** + * Dispatch a notification. + */ + export type dispatchNotification = { + responseType: void, + /** + * This message will be shown in the notification. + * HTML syntax can be used but it will be sanitized. + * Only some basic tags and attributes can be used. + */ + message: string, + + /** + * The title of the notification + */ + title: string, + + /** + * Create a growl notification + */ + growl?: boolean, + + /** + * The variant of the notification + */ + variant?: 'success' | 'info' | 'warning' | 'error', + + /** + * There are two types of notification styles. Use + * "system" only for technical application notifications. + */ + appearance?: 'system' | 'notification', + + /** + * You can add several action buttons to the notification. + * Each button contains a route (url) which gets opened on + * a click. + */ + actions?: Array<{ + label: string, + route: string, + disabled?: boolean, + newTab?: boolean, + }> +} \ No newline at end of file diff --git a/lib/sdk/window/index.ts b/lib/sdk/window/index.ts index 7a5ccc2fc..ca2da7522 100644 --- a/lib/sdk/window/index.ts +++ b/lib/sdk/window/index.ts @@ -1,3 +1,18 @@ import { createSender } from 'lib/channel'; -export const redirect = createSender('redirect'); \ No newline at end of file +export const redirect = createSender('redirectWindow'); + +/** + * Redirect to another URL + */ + export type redirectWindow = { + responseType: void, + /** + * The URL for the redirection + */ + url: string, + /** + * If this is activated then the link will be opened in a new tab + */ + newTab?: boolean +} \ No newline at end of file diff --git a/lib/types/message.types.ts b/lib/types/message.types.ts index 5cfd8dd2f..4bfced2a4 100644 --- a/lib/types/message.types.ts +++ b/lib/types/message.types.ts @@ -1,3 +1,6 @@ +import { dispatchNotification } from "lib/sdk/notification" +import { redirectWindow } from "lib/sdk/window" + /** * Contains all shopware send types. * @internal @@ -5,80 +8,21 @@ export type ShopwareMessageTypes = { getPageTitle: getPageTitle, dispatchNotification: dispatchNotification, - redirect: redirect, + redirectWindow: redirectWindow, reload: reload, } /** - * Dispatch a notification. - */ - export type dispatchNotification = { - responseType: void, - /** - * This message will be shown in the notification. - * HTML syntax can be used but it will be sanitized. - * Only some basic tags and attributes can be used. - */ - message: string, - - /** - * The title of the notification - */ - title: string, - - /** - * Create a growl notification - */ - growl?: boolean, - - /** - * The variant of the notification - */ - variant?: 'success' | 'info' | 'warning' | 'error', - - /** - * There are two types of notification styles. Use - * "system" only for technical application notifications. - */ - appearance?: 'system' | 'notification', - - /** - * You can add several action buttons to the notification. - * Each button contains a route (url) which gets opened on - * a click. - */ - actions?: Array<{ - label: string, - route: string, - disabled?: boolean, - newTab?: boolean, - }> -} - -/** - * Redirect to another URL - */ -export type redirect = { - responseType: void, - /** - * The URL for the redirection - */ - url: string, - /** - * If this is activated then the link will be opened in a new tab - */ - newTab?: boolean -} - -/** - * Reload the current page. Also useful if the iframe uses a watcher. Then it can trigger a reload - * on the administration. + * @private + * JUST FOR DEMO CASES HOW A TYPE WITHOUT OPTIONS LOOKS LIKE */ export type reload = { responseType: void } /** + * @private + * JUST FOR DEMO CASES HOW A TYPE WITH RESPONSE VALUE LOOKS LIKE * Get the actual page title */ export type getPageTitle = { From 13eeb0935f8567e55a898ca11566a530d6080f34 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 15:51:50 +0100 Subject: [PATCH 024/189] Convert build process from rollup to tsc --- example/iframe-app/app.ts | 2 +- example/main-app/main.ts | 2 +- lib/sdk/notification/index.ts | 2 +- lib/sdk/window/index.ts | 2 +- lib/types/message.types.ts | 5 +++-- package.json | 19 +++++++++++-------- tsconfig.json | 15 ++++++--------- 7 files changed, 24 insertions(+), 23 deletions(-) diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts index 10542bbdf..fdcee97c6 100644 --- a/example/iframe-app/app.ts +++ b/example/iframe-app/app.ts @@ -1,5 +1,5 @@ import './style.css'; -import { send } from 'lib/channel'; +import { send } from '../../lib/channel'; const actionType = document.getElementById('actionType')! as HTMLInputElement const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement diff --git a/example/main-app/main.ts b/example/main-app/main.ts index d1127405e..0611cc178 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -1,5 +1,5 @@ -import { handle } from 'lib/channel'; import './style.css' +import { handle } from '../../lib/channel'; const listenToActionButton = document.getElementById('listenToAction') const actionType = document.getElementById('actionType')! as HTMLInputElement diff --git a/lib/sdk/notification/index.ts b/lib/sdk/notification/index.ts index 685783b24..038c8f878 100644 --- a/lib/sdk/notification/index.ts +++ b/lib/sdk/notification/index.ts @@ -1,4 +1,4 @@ -import { createSender } from 'lib/channel'; +import { createSender } from '../../channel'; export const dispatch = createSender('dispatchNotification'); diff --git a/lib/sdk/window/index.ts b/lib/sdk/window/index.ts index ca2da7522..ea788a466 100644 --- a/lib/sdk/window/index.ts +++ b/lib/sdk/window/index.ts @@ -1,4 +1,4 @@ -import { createSender } from 'lib/channel'; +import { createSender } from '../../channel'; export const redirect = createSender('redirectWindow'); diff --git a/lib/types/message.types.ts b/lib/types/message.types.ts index 4bfced2a4..8d4c1b383 100644 --- a/lib/types/message.types.ts +++ b/lib/types/message.types.ts @@ -1,5 +1,6 @@ -import { dispatchNotification } from "lib/sdk/notification" -import { redirectWindow } from "lib/sdk/window" +import { dispatchNotification } from '../sdk/notification/index'; +import { redirectWindow } from '../sdk/window/index'; + /** * Contains all shopware send types. diff --git a/package.json b/package.json index 209fa6b09..d10010ad4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.6", + "version": "0.0.7", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ @@ -14,23 +14,26 @@ "files": [ "dist" ], - "main": "./dist/admin-extension-sdk.umd.js", - "module": "./dist/admin-extension-sdk.es.js", + "type": "module", + "main": "./dist/umd/index.js", + "module": "./dist/es/index.js", "exports": { ".": { - "import": "./dist/admin-extension-sdk.es.js", - "require": "./dist/admin-extension-sdk.umd.js" + "import": "./dist/es/index.js", + "require": "./dist/umd/index.js" } }, - "types": "./dist/admin-extension-sdk.d.ts", + "types": "./dist/es/index.d.ts", "scripts": { "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", "dev:build-watch": "vite build --watch --mode example", "dev:serve": "live-server --port=8181 dist-example", - "build": "tsc && vite build", + "build": "rm -rf dist && npm run build:umd && npm run build:es", + "build:umd": "tsc --project tsconfig.json --module umd --outDir \"./dist/umd\"", + "build:es": "tsc --project tsconfig.json --outDir \"./dist/es\"", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", - "lint": "tsc", + "lint": "tsc --noEmit", "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", "test": "jest --collectCoverage", diff --git a/tsconfig.json b/tsconfig.json index b7119068e..7472d7bb7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,19 @@ { "compilerOptions": { - "target": "ESNext", + "target": "ES2020", "useDefineForClassFields": true, - "module": "ESNext", + "module": "ES2015", "lib": ["ESNext", "DOM"], "moduleResolution": "Node", "strict": true, "sourceMap": true, - "resolveJsonModule": true, + "resolveJsonModule": false, "esModuleInterop": true, - "noEmit": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "baseUrl": "./", - "paths": { - "lib/*": ["lib/*"] - } + "outDir": "./dist", + "declaration": true }, - "include": ["lib", "example", "test"] + "include": ["lib"] } From d57a061f403603916bb5ac9fb70a919bb1cfba36 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 15:55:29 +0100 Subject: [PATCH 025/189] Fix wrong module definition --- jest.config.js | 3 ++- package.json | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jest.config.js b/jest.config.js index dfdbe9b43..815378439 100644 --- a/jest.config.js +++ b/jest.config.js @@ -8,6 +8,7 @@ module.exports = { } }, modulePathIgnorePatterns: [ - '/cypress/' + '/cypress/', + '/dist/' ] }; \ No newline at end of file diff --git a/package.json b/package.json index d10010ad4..a7550044b 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "files": [ "dist" ], - "type": "module", "main": "./dist/umd/index.js", "module": "./dist/es/index.js", "exports": { From c6b213bd55ca30bd233be2a98e82b440620ec8e2 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 15:55:42 +0100 Subject: [PATCH 026/189] Bump up version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a7550044b..e5d715101 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.7", + "version": "0.0.8", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 227f57c469fb51a1ea987ae2a85ae681583e4ec3 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 23 Nov 2021 16:00:38 +0100 Subject: [PATCH 027/189] Update target to ES2015 --- package.json | 2 +- tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e5d715101..08f3d7f52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.8", + "version": "0.0.9", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/tsconfig.json b/tsconfig.json index 7472d7bb7..12a8084c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ES2015", "useDefineForClassFields": true, "module": "ES2015", "lib": ["ESNext", "DOM"], From 1bd90a0f94b38f21b28ae377d07b9e59c76bb833 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 08:00:07 +0100 Subject: [PATCH 028/189] Change folder structure --- .gitignore | 4 ++- example/iframe-app/app.ts | 2 +- example/main-app/main.ts | 2 +- package.json | 6 ++--- {lib => src}/channel.spec.ts | 0 {lib => src}/channel.ts | 0 {lib => src}/index.ts | 0 {lib => src}/sdk/notification/index.ts | 3 +-- {lib => src}/sdk/window/index.ts | 0 {lib => src}/types/message.types.ts | 0 tsconfig.json | 4 +-- vite.config.ts | 36 +++++--------------------- 12 files changed, 17 insertions(+), 40 deletions(-) rename {lib => src}/channel.spec.ts (100%) rename {lib => src}/channel.ts (100%) rename {lib => src}/index.ts (100%) rename {lib => src}/sdk/notification/index.ts (94%) rename {lib => src}/sdk/window/index.ts (100%) rename {lib => src}/types/message.types.ts (100%) diff --git a/.gitignore b/.gitignore index d4790e09d..90fd46b14 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ dist-ssr dist-example *.local coverage -docs/docs/api \ No newline at end of file +docs/docs/api +lib +lib-example \ No newline at end of file diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts index fdcee97c6..b392c9e78 100644 --- a/example/iframe-app/app.ts +++ b/example/iframe-app/app.ts @@ -1,5 +1,5 @@ import './style.css'; -import { send } from '../../lib/channel'; +import { send } from '../../src/channel'; const actionType = document.getElementById('actionType')! as HTMLInputElement const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement diff --git a/example/main-app/main.ts b/example/main-app/main.ts index 0611cc178..b5ef8bbb3 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -1,5 +1,5 @@ import './style.css' -import { handle } from '../../lib/channel'; +import { handle } from '../../src/channel'; const listenToActionButton = document.getElementById('listenToAction') const actionType = document.getElementById('actionType')! as HTMLInputElement diff --git a/package.json b/package.json index 08f3d7f52..605376b0f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "sdk" ], "files": [ - "dist" + "lib" ], "main": "./dist/umd/index.js", "module": "./dist/es/index.js", @@ -27,9 +27,7 @@ "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", "dev:build-watch": "vite build --watch --mode example", "dev:serve": "live-server --port=8181 dist-example", - "build": "rm -rf dist && npm run build:umd && npm run build:es", - "build:umd": "tsc --project tsconfig.json --module umd --outDir \"./dist/umd\"", - "build:es": "tsc --project tsconfig.json --outDir \"./dist/es\"", + "build": "rm -rf lib && tsc", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", "lint": "tsc --noEmit", diff --git a/lib/channel.spec.ts b/src/channel.spec.ts similarity index 100% rename from lib/channel.spec.ts rename to src/channel.spec.ts diff --git a/lib/channel.ts b/src/channel.ts similarity index 100% rename from lib/channel.ts rename to src/channel.ts diff --git a/lib/index.ts b/src/index.ts similarity index 100% rename from lib/index.ts rename to src/index.ts diff --git a/lib/sdk/notification/index.ts b/src/sdk/notification/index.ts similarity index 94% rename from lib/sdk/notification/index.ts rename to src/sdk/notification/index.ts index 038c8f878..cad82a76a 100644 --- a/lib/sdk/notification/index.ts +++ b/src/sdk/notification/index.ts @@ -20,7 +20,7 @@ export const dispatch = createSender('dispatchNotification'); title: string, /** - * Create a growl notification + * Create a growl notification. Default is true. */ growl?: boolean, @@ -44,6 +44,5 @@ export const dispatch = createSender('dispatchNotification'); label: string, route: string, disabled?: boolean, - newTab?: boolean, }> } \ No newline at end of file diff --git a/lib/sdk/window/index.ts b/src/sdk/window/index.ts similarity index 100% rename from lib/sdk/window/index.ts rename to src/sdk/window/index.ts diff --git a/lib/types/message.types.ts b/src/types/message.types.ts similarity index 100% rename from lib/types/message.types.ts rename to src/types/message.types.ts diff --git a/tsconfig.json b/tsconfig.json index 12a8084c3..3393a7e93 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,8 +12,8 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "outDir": "./dist", + "outDir": "./lib", "declaration": true }, - "include": ["lib"] + "include": ["src"] } diff --git a/vite.config.ts b/vite.config.ts index d5534c386..c14432084 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,40 +6,18 @@ import dts from 'vite-plugin-dts' module.exports = defineConfig(({ command, mode }) => { // Development config (with HTML files for easier development) - if (mode === 'example') { - return { - plugins: [ - tsconfigPaths() - ], - build: { - outDir: resolve(__dirname, 'dist-example'), - sourcemap: true, - rollupOptions: { - input: { - main: resolve(__dirname, './index.html'), - iframe: resolve(__dirname, './example/iframe-app/index.html'), - } - } - } - } - } - - // Build config return { plugins: [ - tsconfigPaths(), - dts({ - include: ['lib'], - insertTypesEntry: true - }) + tsconfigPaths() ], build: { - outDir: resolve(__dirname, 'dist'), + outDir: resolve(__dirname, 'lib-example'), sourcemap: true, - lib: { - entry: resolve(__dirname, 'lib/index.ts'), - name: 'AdminAppActions', - fileName: (format) => `admin-extension-sdk.${format}.js` + rollupOptions: { + input: { + main: resolve(__dirname, './index.html'), + iframe: resolve(__dirname, './example/iframe-app/index.html'), + } } } } From 63a91c636215112b8c08c3b5c9dbf38658ae8786 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 08:29:55 +0100 Subject: [PATCH 029/189] optimize folder structure --- .gitignore | 5 +++-- jest.config.js | 5 ++++- package.json | 21 +++++++++++-------- src/channel.ts | 2 +- src/index.ts | 4 ++-- .../message.types.ts => messages.types.ts} | 4 ++-- src/{sdk => }/notification/index.ts | 2 +- src/{sdk => }/window/index.ts | 2 +- vite.config.ts | 2 +- 9 files changed, 27 insertions(+), 20 deletions(-) rename src/{types/message.types.ts => messages.types.ts} (81%) rename src/{sdk => }/notification/index.ts (95%) rename src/{sdk => }/window/index.ts (87%) diff --git a/.gitignore b/.gitignore index 90fd46b14..ac57afb8a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,6 @@ dist-example *.local coverage docs/docs/api -lib -lib-example \ No newline at end of file +es +umd +example-dist \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index 815378439..eefd548bf 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,6 +9,9 @@ module.exports = { }, modulePathIgnorePatterns: [ '/cypress/', - '/dist/' + ], + testMatch: [ + '/src/**/*.spec.js', + '/src/**/*.spec.ts', ] }; \ No newline at end of file diff --git a/package.json b/package.json index 605376b0f..2d725f99e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.9", + "version": "0.0.10", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ @@ -12,22 +12,25 @@ "sdk" ], "files": [ - "lib" + "umd", + "es" ], - "main": "./dist/umd/index.js", - "module": "./dist/es/index.js", + "main": "./umd/index.js", + "module": "./es/index.js", "exports": { ".": { - "import": "./dist/es/index.js", - "require": "./dist/umd/index.js" + "import": "./es/index.js", + "require": "./umd/index.js" } }, - "types": "./dist/es/index.d.ts", + "types": "./es/index.d.ts", "scripts": { "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", "dev:build-watch": "vite build --watch --mode example", - "dev:serve": "live-server --port=8181 dist-example", - "build": "rm -rf lib && tsc", + "dev:serve": "live-server --port=8181 example-dist", + "build": "rm -rf es && rm -rf umd && npm run build:umd && npm run build:es", + "build:umd": "tsc --project tsconfig.json --module umd --outDir \"./umd\"", + "build:es": "tsc --project tsconfig.json --outDir \"./es\"", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", "lint": "tsc --noEmit", diff --git a/src/channel.ts b/src/channel.ts index 3b72de675..696fb0f46 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -1,4 +1,4 @@ -import { ShopwareMessageTypes } from './types/message.types'; +import { ShopwareMessageTypes } from './messages.types'; /** * This type contains the data of the type without the responseType diff --git a/src/index.ts b/src/index.ts index c6a78f713..5140f0fdc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -import * as window from './sdk/window'; -import * as notification from './sdk/notification'; +import * as window from './window'; +import * as notification from './notification'; export { window, diff --git a/src/types/message.types.ts b/src/messages.types.ts similarity index 81% rename from src/types/message.types.ts rename to src/messages.types.ts index 8d4c1b383..4e23d147c 100644 --- a/src/types/message.types.ts +++ b/src/messages.types.ts @@ -1,5 +1,5 @@ -import { dispatchNotification } from '../sdk/notification/index'; -import { redirectWindow } from '../sdk/window/index'; +import { dispatchNotification } from './notification/index'; +import { redirectWindow } from './window/index'; /** diff --git a/src/sdk/notification/index.ts b/src/notification/index.ts similarity index 95% rename from src/sdk/notification/index.ts rename to src/notification/index.ts index cad82a76a..57a91fe20 100644 --- a/src/sdk/notification/index.ts +++ b/src/notification/index.ts @@ -1,4 +1,4 @@ -import { createSender } from '../../channel'; +import { createSender } from '../channel'; export const dispatch = createSender('dispatchNotification'); diff --git a/src/sdk/window/index.ts b/src/window/index.ts similarity index 87% rename from src/sdk/window/index.ts rename to src/window/index.ts index ea788a466..2c792b735 100644 --- a/src/sdk/window/index.ts +++ b/src/window/index.ts @@ -1,4 +1,4 @@ -import { createSender } from '../../channel'; +import { createSender } from '../channel'; export const redirect = createSender('redirectWindow'); diff --git a/vite.config.ts b/vite.config.ts index c14432084..5ae473d44 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -11,7 +11,7 @@ module.exports = defineConfig(({ command, mode }) => { tsconfigPaths() ], build: { - outDir: resolve(__dirname, 'lib-example'), + outDir: resolve(__dirname, 'example-dist'), sourcemap: true, rollupOptions: { input: { From 0b33fc00c7250d005bf8b71d100505a840c02a6e Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 08:51:52 +0100 Subject: [PATCH 030/189] Update docs paths --- README.md | 1 + docs/docusaurus.config.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4851dfa3a..104900eb4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ -------- [![Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml/badge.svg?branch=main)](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml) +[![NPM Package](https://img.shields.io/npm/v/@shopware-ag/admin-extension-sdk)](https://www.npmjs.com/package/@shopware-ag/admin-extension-sdk) # Admin app actions ### for the Shopware 6 app system diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index d03099944..1854ce1df 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -22,7 +22,7 @@ const config = { // Plugin / TypeDoc options { - entryPoints: ['../lib'], + entryPoints: ['../src'], entryPointStrategy: 'expand', tsconfig: '../tsconfig.json', watch: process.env.TYPEDOC_WATCH, From e0d5a73ca064187089da460ce7511645c6ec5d10 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 09:35:41 +0100 Subject: [PATCH 031/189] Add ESLint --- .eslintignore | 10 + .eslintrc.js | 17 ++ package-lock.json | 577 +++++++++++++++++++++++++++++++++++++- package.json | 7 +- src/channel.ts | 36 +-- src/messages.types.ts | 2 +- src/notification/index.ts | 6 +- src/window/index.ts | 6 +- 8 files changed, 635 insertions(+), 26 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..120923dee --- /dev/null +++ b/.eslintignore @@ -0,0 +1,10 @@ +node_modules +dist +es +umd +example-dist +docs +example +coverage +cypress +*.spec.ts \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..c8a052de1 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json'], + }, + plugins: ['@typescript-eslint'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + ], + rules: { + 'no-prototype-builtins': 'off' + } +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ed88706f0..ed7452689 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.5", + "version": "0.0.10", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -525,6 +525,78 @@ } } }, + "@eslint/eslintrc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.0.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -881,6 +953,12 @@ "pretty-format": "^27.0.0" } }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -942,6 +1020,111 @@ "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", + "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.4.0", + "@typescript-eslint/scope-manager": "5.4.0", + "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" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", + "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", + "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", + "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0" + } + }, + "@typescript-eslint/types": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", + "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", + "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", + "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.4.0", + "eslint-visitor-keys": "^3.0.0" + } + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -982,6 +1165,12 @@ } } }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", @@ -1107,6 +1296,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -2231,6 +2426,24 @@ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -2479,12 +2692,239 @@ "source-map": "~0.6.1" } }, + "eslint": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", + "ajv": "^6.10.0", + "chalk": "^4.0.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", + "espree": "^9.1.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.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", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "dev": true + }, + "espree": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "dev": true, + "requires": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -2836,6 +3276,15 @@ "escape-string-regexp": "^1.0.5" } }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -2894,6 +3343,22 @@ "path-exists": "^4.0.0" } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2976,6 +3441,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3080,6 +3551,20 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -3276,6 +3761,30 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, "import-local": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", @@ -4157,6 +4666,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -4293,6 +4808,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -4765,6 +5286,15 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -4819,6 +5349,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -4931,6 +5467,12 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -5164,6 +5706,12 @@ "safe-regex": "^1.1.0" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -5835,6 +6383,12 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5881,6 +6435,12 @@ "minimatch": "^3.0.4" } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", @@ -6065,6 +6625,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -6255,6 +6824,12 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "v8-to-istanbul": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", diff --git a/package.json b/package.json index 2d725f99e..ef7ec3e1d 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,9 @@ "build:es": "tsc --project tsconfig.json --outDir \"./es\"", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", - "lint": "tsc --noEmit", + "lint": "npm run lint:types && npm run lint:eslint", + "lint:types": "tsc --noEmit", + "lint:eslint": "eslint ./src --ext .ts", "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", "test": "jest --collectCoverage", @@ -41,8 +43,11 @@ }, "devDependencies": { "@types/jest": "^27.0.3", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", "concurrently": "^6.3.0", "cypress": "^8.5.0", + "eslint": "^8.3.0", "jest": "^27.3.1", "live-server": "^1.2.1", "ts-jest": "^27.0.7", diff --git a/src/channel.ts b/src/channel.ts index 696fb0f46..a29c2567d 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -22,7 +22,7 @@ export type ShopwareMessageSendData = { _type: MESSAGE_TYPE, - _response: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], + _response: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] | null, _callbackId: string } @@ -33,7 +33,7 @@ export type ShopwareMessageResponseData(type: MESSAGE_TYPE, data: MessageDataType): Promise { +export function send(type: MESSAGE_TYPE, data: MessageDataType): Promise { // generate a unique callback ID. This here is only for simple demonstration purposes const callbackId = String(Math.floor(Math.random() * Date.now())); @@ -58,14 +58,14 @@ export function send(type: MESS let shopwareResponseData; // try to parse the json file try { - shopwareResponseData = JSON.parse(event.data); + shopwareResponseData = JSON.parse(event.data) as unknown; } catch { // fail silently when message is not a valid json file return; } // check if messageData is valid - if (!isMessageResponseData(shopwareResponseData)) { + if (!isMessageResponseData(shopwareResponseData)) { return; } @@ -107,14 +107,14 @@ export function handle(type: ME // try to parse the json file try { - shopwareMessageData = JSON.parse(event.data); + shopwareMessageData = JSON.parse(event.data) as unknown; } catch { // fail silently when message is not a valid json file return; } // check if messageData is valid - if (!isMessageData(shopwareMessageData)) { + if (!isMessageData(shopwareMessageData)) { return; } @@ -123,7 +123,7 @@ export function handle(type: ME return; } - const responseMessage: ShopwareMessageResponseData = { + const responseMessage: ShopwareMessageResponseData = { _callbackId: shopwareMessageData._callbackId, _type: shopwareMessageData._type, _response: method(shopwareMessageData._data) ?? null @@ -135,6 +135,7 @@ export function handle(type: ME // if event source exists then send it back to original source event.source.postMessage(stringifiedResponseMessage, { // @ts-expect-error - event.source.origin is not correctly defined in TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment targetOrigin: event.source.origin ?? '*' }); } else { @@ -150,20 +151,21 @@ export function handle(type: ME return () => window.removeEventListener('message', handleListener); } -function isMessageData(eventData: object): eventData is ShopwareMessageSendData { - const shopwareMessageData = eventData as ShopwareMessageSendData; +function isMessageData(eventData: unknown): eventData is ShopwareMessageSendData { + const shopwareMessageData = eventData as ShopwareMessageSendData; - return shopwareMessageData._type - && shopwareMessageData._data - && shopwareMessageData._callbackId; + return !!shopwareMessageData._type + && !!shopwareMessageData._data + && !!shopwareMessageData._callbackId; } -function isMessageResponseData(eventData: object): eventData is ShopwareMessageResponseData { - const shopwareMessageData = eventData as ShopwareMessageResponseData; +// ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] +function isMessageResponseData(eventData: unknown): eventData is ShopwareMessageResponseData { + const shopwareMessageData = eventData as ShopwareMessageResponseData; - return shopwareMessageData._type - && shopwareMessageData.hasOwnProperty('_response') - && shopwareMessageData._callbackId; + return !!shopwareMessageData._type + && !!shopwareMessageData.hasOwnProperty('_response') + && !!shopwareMessageData._callbackId; } /** diff --git a/src/messages.types.ts b/src/messages.types.ts index 4e23d147c..1341cfe79 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -3,7 +3,7 @@ import { redirectWindow } from './window/index'; /** - * Contains all shopware send types. + * Contains all shopware send types. * @internal */ export type ShopwareMessageTypes = { diff --git a/src/notification/index.ts b/src/notification/index.ts index 57a91fe20..282e916e0 100644 --- a/src/notification/index.ts +++ b/src/notification/index.ts @@ -3,9 +3,9 @@ import { createSender } from '../channel'; export const dispatch = createSender('dispatchNotification'); /** - * Dispatch a notification. - */ - export type dispatchNotification = { + * Dispatch a notification. + */ +export type dispatchNotification = { responseType: void, /** * This message will be shown in the notification. diff --git a/src/window/index.ts b/src/window/index.ts index 2c792b735..e37f59915 100644 --- a/src/window/index.ts +++ b/src/window/index.ts @@ -3,9 +3,9 @@ import { createSender } from '../channel'; export const redirect = createSender('redirectWindow'); /** - * Redirect to another URL - */ - export type redirectWindow = { + * Redirect to another URL + */ +export type redirectWindow = { responseType: void, /** * The URL for the redirection From 9265c63d67a7a931cd6a7aa68a3adff85408a8b2 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 15:51:16 +0100 Subject: [PATCH 032/189] Add functionality to add methods to the options in messages --- cypress/integration/actions.spec.js | 32 +++++++- example/iframe-app/app.ts | 21 ++++- example/iframe-app/index.html | 9 +++ example/main-app/main.ts | 23 +++++- index.html | 8 ++ src/_internals/function-serializer.ts | 69 ++++++++++++++++ src/_internals/utils.ts | 20 +++++ src/channel.spec.ts | 60 ++++++++++++++ src/channel.ts | 108 ++++++++++++++++++-------- src/messages.types.ts | 26 +++++++ src/notification/index.ts | 3 +- 11 files changed, 344 insertions(+), 35 deletions(-) create mode 100644 src/_internals/function-serializer.ts create mode 100644 src/_internals/utils.ts diff --git a/cypress/integration/actions.spec.js b/cypress/integration/actions.spec.js index 941b26973..fa7580179 100644 --- a/cypress/integration/actions.spec.js +++ b/cypress/integration/actions.spec.js @@ -52,7 +52,7 @@ describe('Test the actions', () => { }); }); - // Test actions which get data back + // Test actions which get data back ;[ { type: 'getPageTitle', @@ -85,4 +85,34 @@ describe('Test the actions', () => { cy.getIframe().find('#result').contains(JSON.stringify(action.responseData)) }); }) + + it(`calling method from main window to iframe`, () => { + // multiply values + cy.get('#firstNumber').type(7); + cy.get('#secondNumber').type(7); + cy.get('#callMethodInIframe').click(); + + // check if result is correct + cy.get('#methodResult').contains(49); + }); + + it(`calling method from main window to iframe`, () => { + // subtract values + cy.getIframe() + .find('#firstNumber') + .type(43) + + cy.getIframe() + .find('#secondNumber') + .type(23) + + cy.getIframe() + .find('#callMethodInMainWindow') + .click() + + // check if result is correct + cy.getIframe() + .find('#methodResult') + .contains(20); + }); }) diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts index b392c9e78..578e40d78 100644 --- a/example/iframe-app/app.ts +++ b/example/iframe-app/app.ts @@ -1,11 +1,17 @@ +import { _subtract } from './../../src/messages.types'; import './style.css'; -import { send } from '../../src/channel'; +import { handle, send } from '../../src/channel'; const actionType = document.getElementById('actionType')! as HTMLInputElement const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement const sendAction = document.getElementById('sendAction')!; const result = document.getElementById('result')!; +const callMethodInMainWindow = document.getElementById('callMethodInMainWindow'); +const firstNumber = document.getElementById('firstNumber')! as HTMLInputElement +const secondNumber = document.getElementById('secondNumber')! as HTMLInputElement +const methodResult = document.getElementById('methodResult')!; + sendAction.addEventListener('click', () => { const actionTypeValue = actionType.value; const actionValueValue = actionValue.value; @@ -14,4 +20,17 @@ sendAction.addEventListener('click', () => { .then((dataFromMain) => { result.innerHTML = dataFromMain; }) +}) + +handle('_multiply', ({ firstNumber, secondNumber }) => { + return firstNumber * secondNumber; +}) + +callMethodInMainWindow.addEventListener('click', () => { + send( + '_subtract', + { firstNumber: Number(firstNumber.value), secondNumber: Number(secondNumber.value)}, + ).then((result) => { + methodResult.innerHTML = result.toString(); + }) }) \ No newline at end of file diff --git a/example/iframe-app/index.html b/example/iframe-app/index.html index 0da662b8e..0c07b56d0 100644 --- a/example/iframe-app/index.html +++ b/example/iframe-app/index.html @@ -28,6 +28,15 @@

Iframe Window


+ +
+
+ + + + +
+ diff --git a/example/main-app/main.ts b/example/main-app/main.ts index b5ef8bbb3..90d65b528 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -1,11 +1,18 @@ import './style.css' -import { handle } from '../../src/channel'; +import { handle, send } from '../../src/channel'; const listenToActionButton = document.getElementById('listenToAction') const actionType = document.getElementById('actionType')! as HTMLInputElement const result = document.getElementById('result')!; const responseData = document.getElementById('responseData')! as HTMLTextAreaElement; +const callMethodInIframe = document.getElementById('callMethodInIframe'); +const firstNumber = document.getElementById('firstNumber')! as HTMLInputElement +const secondNumber = document.getElementById('secondNumber')! as HTMLInputElement +const methodResult = document.getElementById('methodResult')!; + +const iFrame = document.querySelector('iframe') as HTMLIFrameElement; + listenToActionButton?.addEventListener('click', () => { const actionTypeValue = actionType.value; const reponseDataValue = responseData.value; @@ -15,4 +22,18 @@ listenToActionButton?.addEventListener('click', () => { return reponseDataValue; }); +}) + +handle('_subtract', ({ firstNumber, secondNumber }) => { + return firstNumber - secondNumber; +}) + +callMethodInIframe.addEventListener('click', () => { + send( + '_multiply', + { firstNumber: Number(firstNumber.value), secondNumber: Number(secondNumber.value)}, + iFrame.contentWindow + ).then((result) => { + methodResult.innerHTML = result.toString(); + }) }) \ No newline at end of file diff --git a/index.html b/index.html index 83f877a3c..93a99a094 100644 --- a/index.html +++ b/index.html @@ -31,6 +31,14 @@

Main Window


+ +

+ + + + +
+ diff --git a/src/_internals/function-serializer.ts b/src/_internals/function-serializer.ts new file mode 100644 index 000000000..b0de1d347 --- /dev/null +++ b/src/_internals/function-serializer.ts @@ -0,0 +1,69 @@ +import { ShopwareMessageTypes } from '../messages.types'; +import { send, ShopwareMessageSendData, handle } from '../channel'; +import { traverseObject, isObject, generateUniqueId } from './utils'; + +/* eslint-disable */ +export function serializeMessageData(messageData: ShopwareMessageSendData): void { + serializeMethodsWithPlaceholder(messageData); +} + +export function deserializeMessageData(messageData: ShopwareMessageSendData): void { + deserializeMethodsWithPlaceholder(messageData); +} + +// only avaliable on sender side +const methodRegistry: { + [key: string]: (...args: any[]) => any +} = {}; + +let isMethodHandlerStarted = false; + +function startMethodHandler() { + if (isMethodHandlerStarted) return; + isMethodHandlerStarted = true; + + handle('__function__', async ({ args, id }) => { + return await Promise.resolve(methodRegistry[id](...args)); + }) +} + +function serializeMethodsWithPlaceholder(messageData: ShopwareMessageSendData): void { + traverseObject(messageData, (parentEntry, key, value) => { + if (typeof value === 'function') { + const id = generateUniqueId(); + // add the method reference to the methodRegistry + methodRegistry[id] = value; + + // replace function with a object containing the type and id + parentEntry[key] = { + __type__: '__function__', + id: id + } + + // start a general function listener which calls the method when the handler calls the method + startMethodHandler(); + } + }); +} + +// the receiver don't have access to the methodRegistry +function deserializeMethodsWithPlaceholder(messageData: ShopwareMessageSendData): void { + traverseObject(messageData, (parentEntry, key, value) => { + // when object is containing a method wrapper + if (isObject(value) + && value['__type__'] + && value['__type__'] === '__function__' + && typeof value['id'] === 'string' + ) { + const id = value['id']; + + // convert wrapper to a callable method + parentEntry[key] = (...args: any[]) => { + return send('__function__', { + args: args, + id: id, + }) + }; + } + }); +} \ No newline at end of file diff --git a/src/_internals/utils.ts b/src/_internals/utils.ts new file mode 100644 index 000000000..d65e1a904 --- /dev/null +++ b/src/_internals/utils.ts @@ -0,0 +1,20 @@ +export function generateUniqueId(): string { + return String(Math.floor(Math.random() * Date.now())); +} + +/* eslint-disable */ +export function traverseObject(this: any, traversableObject: any, processor: (parentEntry: any, key: string, value: any) => void) { + for (let index in traversableObject) { + const currentEntry = traversableObject[index]; + + processor.apply(this, [traversableObject, index, currentEntry]); + + if (isObject(currentEntry)) { + traverseObject(currentEntry, processor); + } + } +} + +export function isObject(value: unknown): value is any { + return value !== null && typeof value === 'object'; +} \ No newline at end of file diff --git a/src/channel.spec.ts b/src/channel.spec.ts index f3ac87736..1815377e2 100644 --- a/src/channel.spec.ts +++ b/src/channel.spec.ts @@ -70,4 +70,64 @@ describe('Test the channel bridge from iFrame to admin', () => { done(); }) }); + + it('should convert functions in options and call them on the handler side', (done) => { + const buttonMethodMock = jest.fn(() => {}); + const dispatchNotification = createSender('dispatchNotification'); + const handleNotification = createHandler('dispatchNotification'); + + const removeListener = handleNotification(async ({ actions }) => { + if (!actions || actions?.length <= 0) { + fail('The notification handler does not get any actions from the sender'); + return; + } + + const firstAction = actions[0]; + + if(!firstAction.method) { + fail('"method" in the firstAction is undefined'); + } + + expect(typeof firstAction.method).toBe('function'); + + expect(buttonMethodMock).toHaveBeenCalledTimes(0); + await firstAction.method(); + expect(buttonMethodMock).toHaveBeenCalledTimes(1); + }) + + dispatchNotification({ + title: 'Notification with action', + message: 'The action should contain a callable method', + actions: [ + { + label: 'Button with method', + method: () => buttonMethodMock() + } + ] + }).then(() => { + removeListener(); + + done(); + }) + }); + + it('should convert functions in options and call them on the handler side with arguments and return value', (done) => { + const methodMock = jest.fn((firstNumber, secondNumber) => { + return firstNumber * secondNumber; + }); + const sendMultiply = createSender('_multiply'); + const handleMultiply = createHandler('_multiply'); + + const removeListener = handleMultiply(({ firstNumber, secondNumber }) => { + return Promise.resolve(methodMock(firstNumber, secondNumber)) + }) + + sendMultiply({ firstNumber: 7, secondNumber: 8 }) + .then((result) => { + expect(result).toEqual(56); + + removeListener(); + done(); + }) + }); }); \ No newline at end of file diff --git a/src/channel.ts b/src/channel.ts index a29c2567d..d5568f7d2 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -1,4 +1,13 @@ +/* eslint-disable @typescript-eslint/no-misused-promises */ import { ShopwareMessageTypes } from './messages.types'; +import { serializeMessageData, deserializeMessageData } from './_internals/function-serializer'; +import { generateUniqueId } from './_internals/utils'; + +/** + * ---------------- + * GENERAL TYPES + * ---------------- + */ /** * This type contains the data of the type without the responseType @@ -26,6 +35,12 @@ export type ShopwareMessageResponseData(type: MESSAGE_TYPE, data: MessageDataType): Promise { +export function send( + type: MESSAGE_TYPE, + data: MessageDataType, + targetWindow?: Window +): Promise { // generate a unique callback ID. This here is only for simple demonstration purposes - const callbackId = String(Math.floor(Math.random() * Date.now())); + const callbackId = generateUniqueId(); // set fallback data when no data is defined const sendData = data ?? {}; @@ -46,7 +65,12 @@ export function send(type: MESS _data: sendData, _callbackId: callbackId } - const message = JSON.stringify(messageData); + + // replace methods etc. so that they are working in JSON format + serializeMessageData(messageData) + + // convert message data to string for message sending + const message = JSON.stringify(messageData); return new Promise((resolve) => { const callbackHandler = function(event: MessageEvent) { @@ -87,7 +111,9 @@ export function send(type: MESS } window.addEventListener('message', callbackHandler); - window.parent.postMessage(message, window.parent.origin); + targetWindow + ? targetWindow.postMessage(message, window.parent.origin) + : window.parent.postMessage(message, window.parent.origin); }) } @@ -97,8 +123,14 @@ export function send(type: MESS * @param method This method should return the response value * @returns The return value is a cancel function to stop listening to the events */ -export function handle(type: MESSAGE_TYPE, method: (data: MessageDataType) => ShopwareMessageTypes[MESSAGE_TYPE]['responseType']): () => void { - const handleListener = function(event: MessageEvent) { +export function handle + ( + type: MESSAGE_TYPE, + method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] + ) + : () => void + { + const handleListener = async function(event: MessageEvent) { if (typeof event.data !== 'string') { return; } @@ -123,10 +155,15 @@ export function handle(type: ME return; } + // deserialize methods etc. so that they are callable in JS + deserializeMessageData(shopwareMessageData) + + const responseValue = await Promise.resolve(method(shopwareMessageData._data)); + const responseMessage: ShopwareMessageResponseData = { _callbackId: shopwareMessageData._callbackId, _type: shopwareMessageData._type, - _response: method(shopwareMessageData._data) ?? null + _response: responseValue ?? null } const stringifiedResponseMessage = JSON.stringify(responseMessage); @@ -151,23 +188,6 @@ export function handle(type: ME return () => window.removeEventListener('message', handleListener); } -function isMessageData(eventData: unknown): eventData is ShopwareMessageSendData { - const shopwareMessageData = eventData as ShopwareMessageSendData; - - return !!shopwareMessageData._type - && !!shopwareMessageData._data - && !!shopwareMessageData._callbackId; -} - -// ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] -function isMessageResponseData(eventData: unknown): eventData is ShopwareMessageResponseData { - const shopwareMessageData = eventData as ShopwareMessageResponseData; - - return !!shopwareMessageData._type - && !!shopwareMessageData.hasOwnProperty('_response') - && !!shopwareMessageData._callbackId; -} - /** * Function overloading for these two cases: * @@ -175,19 +195,45 @@ function isMessageResponseData( * 2. case: createSender('redirect') ==> option parameter required in usage * * */ + export function createSender + (messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) + :(messageOptions?: MessageDataType) => Promise export function createSender - (messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) - :(messageOptions?: MessageDataType) => Promise -export function createSender - (messageType: MESSAGE_TYPE) - :(messageOptions: MessageDataType) => Promise + (messageType: MESSAGE_TYPE) + :(messageOptions: MessageDataType) => Promise export function createSender (messageType: MESSAGE_TYPE, baseMessageOptions?: MessageDataType) { - return (messageOptions: MessageDataType) => send(messageType, { ...baseMessageOptions, ...messageOptions}); + return (messageOptions: MessageDataType) => send(messageType, { ...baseMessageOptions, ...messageOptions}); } export function createHandler(messageType: MESSAGE_TYPE) { - return (method: (data: MessageDataType) => ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); + return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); +} + +/** + * ---------------- + * INTERNAL HELPER FUNCTIONS + * ---------------- + */ + +/** + * check if the data is valid message data + */ +function isMessageData(eventData: unknown): eventData is ShopwareMessageSendData { + const shopwareMessageData = eventData as ShopwareMessageSendData; + + return !!shopwareMessageData._type + && !!shopwareMessageData._data + && !!shopwareMessageData._callbackId; +} + +// ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] +function isMessageResponseData(eventData: unknown): eventData is ShopwareMessageResponseData { + const shopwareMessageData = eventData as ShopwareMessageResponseData; + + return !!shopwareMessageData._type + && !!shopwareMessageData.hasOwnProperty('_response') + && !!shopwareMessageData._callbackId; } \ No newline at end of file diff --git a/src/messages.types.ts b/src/messages.types.ts index 1341cfe79..6701b90d3 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -11,6 +11,9 @@ export type ShopwareMessageTypes = { dispatchNotification: dispatchNotification, redirectWindow: redirectWindow, reload: reload, + __function__: __function__, + _multiply: _multiply, + _subtract: _subtract, } /** @@ -28,4 +31,27 @@ export type reload = { */ export type getPageTitle = { responseType: string +} + +/** + * @private + * JUST FOR TEST CASES + */ +export type _multiply = { + responseType: number, + firstNumber: number, + secondNumber: number, +} + +export type _subtract = { + responseType: number, + firstNumber: number, + secondNumber: number, +} + +export type __function__ = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + responseType: any, + args: unknown[], + id: string, } \ No newline at end of file diff --git a/src/notification/index.ts b/src/notification/index.ts index 282e916e0..3fb91590f 100644 --- a/src/notification/index.ts +++ b/src/notification/index.ts @@ -42,7 +42,8 @@ export type dispatchNotification = { */ actions?: Array<{ label: string, - route: string, + method?: () => void, + route?: string, disabled?: boolean, }> } \ No newline at end of file From 73816dfb071bd4e80ca37e07060dd6cf5d370850 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 15:51:39 +0100 Subject: [PATCH 033/189] Bump up version to 0.0.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef7ec3e1d..7dadf46e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.10", + "version": "0.0.11", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 84007fc6270e7adfaf28a4bc27af5f271c91be22 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 24 Nov 2021 16:13:35 +0100 Subject: [PATCH 034/189] Make uniqueID more unique --- src/_internals/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_internals/utils.ts b/src/_internals/utils.ts index d65e1a904..bfdb8d104 100644 --- a/src/_internals/utils.ts +++ b/src/_internals/utils.ts @@ -1,5 +1,5 @@ export function generateUniqueId(): string { - return String(Math.floor(Math.random() * Date.now())); + return String(Date.now().toString(36) + Math.random().toString(36).substr(2)); } /* eslint-disable */ From 8816b6a1bac73c707a67aa1e226be28acc16043a Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 09:48:03 +0100 Subject: [PATCH 035/189] Add comma-dangle rule and add context to API --- .eslintrc.js | 14 +++++++++- src/channel.ts | 10 ++++---- src/context/index.ts | 54 +++++++++++++++++++++++++++++++++++++++ src/index.ts | 4 ++- src/messages.types.ts | 10 ++++++-- src/notification/index.ts | 2 +- src/window/index.ts | 2 +- 7 files changed, 85 insertions(+), 11 deletions(-) create mode 100644 src/context/index.ts diff --git a/.eslintrc.js b/.eslintrc.js index c8a052de1..b40fcf876 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,6 +12,18 @@ module.exports = { 'plugin:@typescript-eslint/recommended-requiring-type-checking', ], rules: { - 'no-prototype-builtins': 'off' + 'no-prototype-builtins': 'off', + 'comma-dangle': 'off', + '@typescript-eslint/comma-dangle': ['error', 'always-multiline'], + '@typescript-eslint/member-delimiter-style': ['error', { + multiline: { + delimiter: 'comma', + requireLast: true, + }, + singleline: { + delimiter: 'comma', + requireLast: false, + } + }], } }; \ No newline at end of file diff --git a/src/channel.ts b/src/channel.ts index d5568f7d2..a3459cbcd 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -22,7 +22,7 @@ export type MessageDataType = Omit = { _type: MESSAGE_TYPE, _data: MessageDataType, - _callbackId: string + _callbackId: string, } /** @@ -32,7 +32,7 @@ export type ShopwareMessageSendData = { _type: MESSAGE_TYPE, _response: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] | null, - _callbackId: string + _callbackId: string, } /** @@ -63,7 +63,7 @@ export function send( const messageData: ShopwareMessageSendData = { _type: type, _data: sendData, - _callbackId: callbackId + _callbackId: callbackId, } // replace methods etc. so that they are working in JSON format @@ -163,7 +163,7 @@ export function handle const responseMessage: ShopwareMessageResponseData = { _callbackId: shopwareMessageData._callbackId, _type: shopwareMessageData._type, - _response: responseValue ?? null + _response: responseValue ?? null, } const stringifiedResponseMessage = JSON.stringify(responseMessage); @@ -173,7 +173,7 @@ export function handle event.source.postMessage(stringifiedResponseMessage, { // @ts-expect-error - event.source.origin is not correctly defined in TS // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - targetOrigin: event.source.origin ?? '*' + targetOrigin: event.source.origin ?? '*', }); } else { // if no event source exists then it should send to same window diff --git a/src/context/index.ts b/src/context/index.ts new file mode 100644 index 000000000..c750c045d --- /dev/null +++ b/src/context/index.ts @@ -0,0 +1,54 @@ +import { createSender } from '../channel'; + +export const getLanguage = createSender('languageContext', {}); +export const getEnvironment = createSender('environmentContext', {}); +export const getLocale = createSender('localeContext', {}); +export const getCurrency = createSender('currencyContext', {}); +export const getHost = createSender('hostContext', {}); + +/** + * Get the current content language + */ + export type languageContext = { + responseType: { + systemLanguageId: string, + languageId: string, + name: string, + }, +} + +/** + * Get the current environment (development or production) + */ +export type environmentContext = { + responseType: 'development' | 'production', +} + +/** + * Get the current UI locale + */ +export type localeContext = { + responseType: { + locale: string, + fallbackLocale: string, + }, +} + +/** + * Get the system currency + */ +export type currencyContext = { + responseType: { + systemCurrencyISOCode: string, + systemCurrencyId: string, + }, +} + +/** + * Get the information about the host + */ +export type hostContext = { + responseType: { + hostUrl: string, + }, +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 5140f0fdc..8713307b1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,9 @@ import * as window from './window'; import * as notification from './notification'; +import * as context from './context' export { window, - notification + notification, + context, } \ No newline at end of file diff --git a/src/messages.types.ts b/src/messages.types.ts index 6701b90d3..ad63a6b6e 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -1,5 +1,6 @@ import { dispatchNotification } from './notification/index'; import { redirectWindow } from './window/index'; +import { languageContext, environmentContext, localeContext, currencyContext, hostContext } from './context/index'; /** @@ -11,6 +12,11 @@ export type ShopwareMessageTypes = { dispatchNotification: dispatchNotification, redirectWindow: redirectWindow, reload: reload, + languageContext: languageContext, + environmentContext: environmentContext, + localeContext: localeContext, + currencyContext: currencyContext, + hostContext: hostContext, __function__: __function__, _multiply: _multiply, _subtract: _subtract, @@ -21,7 +27,7 @@ export type ShopwareMessageTypes = { * JUST FOR DEMO CASES HOW A TYPE WITHOUT OPTIONS LOOKS LIKE */ export type reload = { - responseType: void + responseType: void, } /** @@ -30,7 +36,7 @@ export type reload = { * Get the actual page title */ export type getPageTitle = { - responseType: string + responseType: string, } /** diff --git a/src/notification/index.ts b/src/notification/index.ts index 3fb91590f..d8138e82b 100644 --- a/src/notification/index.ts +++ b/src/notification/index.ts @@ -45,5 +45,5 @@ export type dispatchNotification = { method?: () => void, route?: string, disabled?: boolean, - }> + }>, } \ No newline at end of file diff --git a/src/window/index.ts b/src/window/index.ts index e37f59915..32ac93cf3 100644 --- a/src/window/index.ts +++ b/src/window/index.ts @@ -14,5 +14,5 @@ export type redirectWindow = { /** * If this is activated then the link will be opened in a new tab */ - newTab?: boolean + newTab?: boolean, } \ No newline at end of file From 4d476f999477d11a3c9bf51ff6f40ada81cb2afc Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 09:49:26 +0100 Subject: [PATCH 036/189] Release version 0.0.12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7dadf46e7..87a0df447 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.11", + "version": "0.0.12", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From b97d91aa3803b71f798a2bea36e0d63f81b79636 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 10:30:47 +0100 Subject: [PATCH 037/189] Refactor message types names to match their scope --- package.json | 2 +- src/channel.spec.ts | 16 ++++++++-------- src/context/index.ts | 20 ++++++++++---------- src/messages.types.ts | 30 +++++++++++------------------- src/notification/index.ts | 4 ++-- src/window/index.ts | 11 +++++++++-- 6 files changed, 41 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index 87a0df447..80e64128b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.12", + "version": "0.0.13", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/channel.spec.ts b/src/channel.spec.ts index 1815377e2..d9e1fa676 100644 --- a/src/channel.spec.ts +++ b/src/channel.spec.ts @@ -2,18 +2,18 @@ import { send, handle, createSender, createHandler } from './channel'; describe('Test the channel bridge from iFrame to admin', () => { it('should send "reload" command to the admin', (done) => { - const removeListener = handle('reload', (result) => { + const removeListener = handle('windowReload', (result) => { expect(result).toEqual({}); removeListener(); done(); }) - send('reload', {}); + send('windowReload', {}); }); it('should send "reload" command to the admin also without options', (done) => { - const removeListener = handle('reload', (result) => { + const removeListener = handle('windowReload', (result) => { expect(result).toEqual({}); removeListener(); @@ -22,7 +22,7 @@ describe('Test the channel bridge from iFrame to admin', () => { // safety check if non-ts user aren't providing options // @ts-expect-error - send('reload'); + send('windowReload'); }); it('should get value back from admin', (done) => { @@ -59,8 +59,8 @@ describe('Test the channel bridge from iFrame to admin', () => { }); it('should create a sender and handler with optional options', (done) => { - const reload = createSender('reload', {}); - const handleReload = createHandler('reload'); + const reload = createSender('windowReload', {}); + const handleReload = createHandler('windowReload'); const removeListener = handleReload(() => {}) @@ -73,8 +73,8 @@ describe('Test the channel bridge from iFrame to admin', () => { it('should convert functions in options and call them on the handler side', (done) => { const buttonMethodMock = jest.fn(() => {}); - const dispatchNotification = createSender('dispatchNotification'); - const handleNotification = createHandler('dispatchNotification'); + const dispatchNotification = createSender('notificationDispatch'); + const handleNotification = createHandler('notificationDispatch'); const removeListener = handleNotification(async ({ actions }) => { if (!actions || actions?.length <= 0) { diff --git a/src/context/index.ts b/src/context/index.ts index c750c045d..ea313c1ca 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,15 +1,15 @@ import { createSender } from '../channel'; -export const getLanguage = createSender('languageContext', {}); -export const getEnvironment = createSender('environmentContext', {}); -export const getLocale = createSender('localeContext', {}); -export const getCurrency = createSender('currencyContext', {}); -export const getHost = createSender('hostContext', {}); +export const getLanguage = createSender('contextLanguage', {}); +export const getEnvironment = createSender('contextEnvironment', {}); +export const getLocale = createSender('contextLocale', {}); +export const getCurrency = createSender('contextCurrency', {}); +export const getHost = createSender('contextHost', {}); /** * Get the current content language */ - export type languageContext = { + export type contextLanguage = { responseType: { systemLanguageId: string, languageId: string, @@ -20,14 +20,14 @@ export const getHost = createSender('hostContext', {}); /** * Get the current environment (development or production) */ -export type environmentContext = { +export type contextEnvironment = { responseType: 'development' | 'production', } /** * Get the current UI locale */ -export type localeContext = { +export type contextLocale = { responseType: { locale: string, fallbackLocale: string, @@ -37,7 +37,7 @@ export type localeContext = { /** * Get the system currency */ -export type currencyContext = { +export type contextCurrency = { responseType: { systemCurrencyISOCode: string, systemCurrencyId: string, @@ -47,7 +47,7 @@ export type currencyContext = { /** * Get the information about the host */ -export type hostContext = { +export type contextHost = { responseType: { hostUrl: string, }, diff --git a/src/messages.types.ts b/src/messages.types.ts index ad63a6b6e..7752ba869 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -1,6 +1,6 @@ -import { dispatchNotification } from './notification/index'; -import { redirectWindow } from './window/index'; -import { languageContext, environmentContext, localeContext, currencyContext, hostContext } from './context/index'; +import { notificationDispatch } from './notification/index'; +import { windowRedirect, windowReload } from './window/index'; +import { contextLanguage, contextEnvironment, contextLocale, contextCurrency, contextHost } from './context/index'; /** @@ -8,28 +8,20 @@ import { languageContext, environmentContext, localeContext, currencyContext, ho * @internal */ export type ShopwareMessageTypes = { + notificationDispatch: notificationDispatch, + windowRedirect: windowRedirect, + windowReload: windowReload, + contextLanguage: contextLanguage, + contextEnvironment: contextEnvironment, + contextLocale: contextLocale, + contextCurrency: contextCurrency, + contextHost: contextHost, getPageTitle: getPageTitle, - dispatchNotification: dispatchNotification, - redirectWindow: redirectWindow, - reload: reload, - languageContext: languageContext, - environmentContext: environmentContext, - localeContext: localeContext, - currencyContext: currencyContext, - hostContext: hostContext, __function__: __function__, _multiply: _multiply, _subtract: _subtract, } -/** - * @private - * JUST FOR DEMO CASES HOW A TYPE WITHOUT OPTIONS LOOKS LIKE - */ -export type reload = { - responseType: void, -} - /** * @private * JUST FOR DEMO CASES HOW A TYPE WITH RESPONSE VALUE LOOKS LIKE diff --git a/src/notification/index.ts b/src/notification/index.ts index d8138e82b..119315194 100644 --- a/src/notification/index.ts +++ b/src/notification/index.ts @@ -1,11 +1,11 @@ import { createSender } from '../channel'; -export const dispatch = createSender('dispatchNotification'); +export const dispatch = createSender('notificationDispatch'); /** * Dispatch a notification. */ -export type dispatchNotification = { +export type notificationDispatch = { responseType: void, /** * This message will be shown in the notification. diff --git a/src/window/index.ts b/src/window/index.ts index 32ac93cf3..e214d365c 100644 --- a/src/window/index.ts +++ b/src/window/index.ts @@ -1,11 +1,11 @@ import { createSender } from '../channel'; -export const redirect = createSender('redirectWindow'); +export const redirect = createSender('windowRedirect'); /** * Redirect to another URL */ -export type redirectWindow = { +export type windowRedirect = { responseType: void, /** * The URL for the redirection @@ -15,4 +15,11 @@ export type redirectWindow = { * If this is activated then the link will be opened in a new tab */ newTab?: boolean, +} + +/** + * Reload the current window + */ +export type windowReload = { + responseType: void, } \ No newline at end of file From a071431ec38573af13aa1258120a484092cfcc6b Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 11:09:13 +0100 Subject: [PATCH 038/189] Update context --- package.json | 2 +- src/channel.ts | 1 - src/context/index.ts | 13 +------------ src/messages.types.ts | 3 +-- 4 files changed, 3 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 80e64128b..5b98101c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.13", + "version": "0.0.14", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/channel.ts b/src/channel.ts index a3459cbcd..be5febe51 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -75,7 +75,6 @@ export function send( return new Promise((resolve) => { const callbackHandler = function(event: MessageEvent) { if (typeof event.data !== 'string') { - console.log('event.data', event.data) return; } diff --git a/src/context/index.ts b/src/context/index.ts index ea313c1ca..55091ad5d 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -4,7 +4,6 @@ export const getLanguage = createSender('contextLanguage', {}); export const getEnvironment = createSender('contextEnvironment', {}); export const getLocale = createSender('contextLocale', {}); export const getCurrency = createSender('contextCurrency', {}); -export const getHost = createSender('contextHost', {}); /** * Get the current content language @@ -13,7 +12,6 @@ export const getHost = createSender('contextHost', {}); responseType: { systemLanguageId: string, languageId: string, - name: string, }, } @@ -21,7 +19,7 @@ export const getHost = createSender('contextHost', {}); * Get the current environment (development or production) */ export type contextEnvironment = { - responseType: 'development' | 'production', + responseType: 'development' | 'production' | 'testing', } /** @@ -42,13 +40,4 @@ export type contextCurrency = { systemCurrencyISOCode: string, systemCurrencyId: string, }, -} - -/** - * Get the information about the host - */ -export type contextHost = { - responseType: { - hostUrl: string, - }, } \ No newline at end of file diff --git a/src/messages.types.ts b/src/messages.types.ts index 7752ba869..92c0ecb93 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -1,6 +1,6 @@ import { notificationDispatch } from './notification/index'; import { windowRedirect, windowReload } from './window/index'; -import { contextLanguage, contextEnvironment, contextLocale, contextCurrency, contextHost } from './context/index'; +import { contextLanguage, contextEnvironment, contextLocale, contextCurrency } from './context/index'; /** @@ -15,7 +15,6 @@ export type ShopwareMessageTypes = { contextEnvironment: contextEnvironment, contextLocale: contextLocale, contextCurrency: contextCurrency, - contextHost: contextHost, getPageTitle: getPageTitle, __function__: __function__, _multiply: _multiply, From 1071d4a5fae1cf0a22fb1899c640322c326b318c Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 11:25:04 +0100 Subject: [PATCH 039/189] Add reload to window API --- package.json | 2 +- src/window/index.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b98101c0..5135fc1c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.14", + "version": "0.0.15", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/window/index.ts b/src/window/index.ts index e214d365c..2cdea10c3 100644 --- a/src/window/index.ts +++ b/src/window/index.ts @@ -1,6 +1,7 @@ import { createSender } from '../channel'; export const redirect = createSender('windowRedirect'); +export const reload = createSender('windowReload'); /** * Redirect to another URL From ab99e16307b55ea0ca33aeacb7e4af93c63a852d Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 14:54:33 +0100 Subject: [PATCH 040/189] Add functionality for subscriptions --- cypress.json | 3 +- example/main-app/main.ts | 2 +- jest.config.js | 3 +- src/channel.spec.ts | 84 ++++++++++++++++++++++++++----------- src/channel.ts | 89 ++++++++++++++++++++++++++++++++++++---- src/messages.types.ts | 5 +++ src/window/index.ts | 2 +- 7 files changed, 152 insertions(+), 36 deletions(-) diff --git a/cypress.json b/cypress.json index da1963402..60f90a2be 100644 --- a/cypress.json +++ b/cypress.json @@ -1,4 +1,5 @@ { "chromeWebSecurity": false, - "video": false + "video": false, + "modifyObstructiveCode": false } diff --git a/example/main-app/main.ts b/example/main-app/main.ts index 90d65b528..4b2aa640c 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -21,7 +21,7 @@ listenToActionButton?.addEventListener('click', () => { result.innerHTML += JSON.stringify(receivedData) + '\n'; return reponseDataValue; - }); + }) }) handle('_subtract', ({ firstNumber, secondNumber }) => { diff --git a/jest.config.js b/jest.config.js index eefd548bf..d618c357d 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,7 +4,8 @@ module.exports = { testEnvironment: 'jsdom', globals: { 'ts-jest': { - diagnostics: false + diagnostics: false, + isolatedModules: true } }, modulePathIgnorePatterns: [ diff --git a/src/channel.spec.ts b/src/channel.spec.ts index d9e1fa676..1728e366c 100644 --- a/src/channel.spec.ts +++ b/src/channel.spec.ts @@ -1,4 +1,4 @@ -import { send, handle, createSender, createHandler } from './channel'; +import { send, handle, createSender, createHandler, subscribe, publish } from './channel'; describe('Test the channel bridge from iFrame to admin', () => { it('should send "reload" command to the admin', (done) => { @@ -25,22 +25,20 @@ describe('Test the channel bridge from iFrame to admin', () => { send('windowReload'); }); - it('should get value back from admin', (done) => { + it('should get value back from admin', async () => { const PAGE_TITLE = 'Awesome page title'; const removeListener = handle('getPageTitle', () => { return PAGE_TITLE; }) - send('getPageTitle', {}).then((pageTitle) => { - expect(pageTitle).toEqual(PAGE_TITLE); + const pageTitle = await send('getPageTitle', {}) + expect(pageTitle).toEqual(PAGE_TITLE); - removeListener(); - done(); - }) + removeListener(); }); - it('should create a sender and handler with required options', (done) => { + it('should create a sender and handler with required options', async () => { const getPageTitle = createSender('getPageTitle'); const handlePageTitle = createHandler('getPageTitle'); @@ -50,25 +48,21 @@ describe('Test the channel bridge from iFrame to admin', () => { return PAGE_TITLE; }) - getPageTitle({}).then((pageTitle) => { - expect(pageTitle).toEqual(PAGE_TITLE); + const pageTitle = await getPageTitle({}) + expect(pageTitle).toEqual(PAGE_TITLE); - removeListener(); - done(); - }) + removeListener(); }); - it('should create a sender and handler with optional options', (done) => { + it('should create a sender and handler with optional options', async () => { const reload = createSender('windowReload', {}); const handleReload = createHandler('windowReload'); const removeListener = handleReload(() => {}) - reload().then(() => { - removeListener(); + await reload(); - done(); - }) + removeListener(); }); it('should convert functions in options and call them on the handler side', (done) => { @@ -111,7 +105,7 @@ describe('Test the channel bridge from iFrame to admin', () => { }) }); - it('should convert functions in options and call them on the handler side with arguments and return value', (done) => { + it('should convert functions in options and call them on the handler side with arguments and return value', async () => { const methodMock = jest.fn((firstNumber, secondNumber) => { return firstNumber * secondNumber; }); @@ -122,12 +116,52 @@ describe('Test the channel bridge from iFrame to admin', () => { return Promise.resolve(methodMock(firstNumber, secondNumber)) }) - sendMultiply({ firstNumber: 7, secondNumber: 8 }) - .then((result) => { - expect(result).toEqual(56); + const result = await sendMultiply({ firstNumber: 7, secondNumber: 8 }) + expect(result).toEqual(56); + + removeListener(); + }); + + it('should get data from published messages when subscribed', async () => { + const localeMethodMock = jest.fn(); + const fallbackLocaleMethodMock = jest.fn(); + + const removeSubscription = subscribe('contextLocale', ({ locale, fallbackLocale }) => { + localeMethodMock(locale); + fallbackLocaleMethodMock(fallbackLocale); + }) + + expect(localeMethodMock).toHaveBeenCalledTimes(0); + expect(fallbackLocaleMethodMock).toHaveBeenCalledTimes(0); + + await publish('contextLocale', { + locale: 'en-GB', + fallbackLocale: 'en-GB', + }) + + expect(localeMethodMock).toHaveBeenCalledTimes(1); + expect(localeMethodMock).toHaveBeenLastCalledWith('en-GB'); + expect(fallbackLocaleMethodMock).toHaveBeenCalledTimes(1); + expect(fallbackLocaleMethodMock).toHaveBeenLastCalledWith('en-GB'); + + await publish('contextLocale', { + locale: 'de-DE', + fallbackLocale: 'en-GB', + }) + + expect(localeMethodMock).toHaveBeenCalledTimes(2); + expect(localeMethodMock).toHaveBeenLastCalledWith('de-DE'); + expect(fallbackLocaleMethodMock).toHaveBeenCalledTimes(2); + expect(fallbackLocaleMethodMock).toHaveBeenLastCalledWith('en-GB'); + + removeSubscription(); + + await publish('contextLocale', { + locale: 'nl-NL', + fallbackLocale: 'en-GB', + }).catch(() => {}) - removeListener(); - done(); - }) + expect(localeMethodMock).toHaveBeenCalledTimes(2); + expect(fallbackLocaleMethodMock).toHaveBeenCalledTimes(2); }); }); \ No newline at end of file diff --git a/src/channel.ts b/src/channel.ts index be5febe51..4bdde1825 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -35,6 +35,13 @@ export type ShopwareMessageResponseData = new Set(); + /** * ---------------- * MAIN FUNCTIONS FOR EXPORT @@ -72,7 +79,11 @@ export function send( // convert message data to string for message sending const message = JSON.stringify(messageData); - return new Promise((resolve) => { + // set value if send was resolved + let isResolved = false; + const timeoutMs = 3000; + + return new Promise((resolve, reject) => { const callbackHandler = function(event: MessageEvent) { if (typeof event.data !== 'string') { return; @@ -105,14 +116,37 @@ export function send( // remove event so that in only execute once window.removeEventListener('message', callbackHandler); - // return the data - resolve(shopwareResponseData._response); + // only return the data if the request is not timed out + if (!isResolved) { + isResolved = true; + + // return the data + resolve(shopwareResponseData._response); + } } window.addEventListener('message', callbackHandler); - targetWindow + + // @ts-expect-error - Cypress tests run inside iframe. Therefore same level communication is not possible + if (window.parent.__Cypress__) { + targetWindow + ? targetWindow.postMessage(message, window.parent.origin) + : window.postMessage(message, window.parent.origin); + } else { + targetWindow ? targetWindow.postMessage(message, window.parent.origin) : window.parent.postMessage(message, window.parent.origin); + } + + // send timeout when noone sends data back or handler freezes + setTimeout(() => { + // only runs when is not resolved + if (isResolved) { + return; + } + + reject('Send timeout expired. It could be possible that no handler for the postMessage request exists or that the handler freezed.'); + }, timeoutMs); }) } @@ -125,7 +159,7 @@ export function send( export function handle ( type: MESSAGE_TYPE, - method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] + method: (data: MessageDataType, additionalInformation: { _event_: MessageEvent}) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType'] ) : () => void { @@ -155,9 +189,12 @@ export function handle } // deserialize methods etc. so that they are callable in JS - deserializeMessageData(shopwareMessageData) + deserializeMessageData(shopwareMessageData) - const responseValue = await Promise.resolve(method(shopwareMessageData._data)); + const responseValue = await Promise.resolve(method( + shopwareMessageData._data, + { _event_: event } + )); const responseMessage: ShopwareMessageResponseData = { _callbackId: shopwareMessageData._callbackId, @@ -187,6 +224,24 @@ export function handle return () => window.removeEventListener('message', handleListener); } +export function publish( + type: MESSAGE_TYPE, + data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], +) { + const sendPromises = [...sourceRegistry].map((source) => { + return send(type, data, source); + }) + + return Promise.all(sendPromises); +} + +export function subscribe( + type: MESSAGE_TYPE, + method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise +) { + return handle(type, method); +} + /** * Function overloading for these two cases: * @@ -211,6 +266,26 @@ export function createHandler(m return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); } +/** + * ---------------- + * IIFE for default handler + * ---------------- + */ + +(async (): Promise => { + // handle registrations at current window + handle('__registerWindow__', (_, additionalOptions) => { + if (additionalOptions._event_.source) { + sourceRegistry.add(additionalOptions._event_.source as Window); + } else { + sourceRegistry.add(window); + } + }) + + // register at parent window + await send('__registerWindow__', {}); +})().catch((e) => console.error(e)); + /** * ---------------- * INTERNAL HELPER FUNCTIONS diff --git a/src/messages.types.ts b/src/messages.types.ts index 92c0ecb93..9655d7906 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -17,6 +17,7 @@ export type ShopwareMessageTypes = { contextCurrency: contextCurrency, getPageTitle: getPageTitle, __function__: __function__, + __registerWindow__: __registerWindow__, _multiply: _multiply, _subtract: _subtract, } @@ -51,4 +52,8 @@ export type __function__ = { responseType: any, args: unknown[], id: string, +} + +export type __registerWindow__ = { + responseType: void, } \ No newline at end of file diff --git a/src/window/index.ts b/src/window/index.ts index 2cdea10c3..1974f317a 100644 --- a/src/window/index.ts +++ b/src/window/index.ts @@ -1,7 +1,7 @@ import { createSender } from '../channel'; export const redirect = createSender('windowRedirect'); -export const reload = createSender('windowReload'); +export const reload = createSender('windowReload', {}); /** * Redirect to another URL From 994dd62996c78d92a4573c468c8c91f7066b3788 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 15:39:03 +0100 Subject: [PATCH 041/189] Write test for pub/sub in cypress --- cypress/integration/actions.spec.js | 39 +++++++++++++++++++++++++++++ example/iframe-app/app.ts | 11 +++++++- example/iframe-app/index.html | 1 + example/main-app/main.ts | 10 +++++++- index.html | 3 ++- src/channel.ts | 4 ++- 6 files changed, 64 insertions(+), 4 deletions(-) diff --git a/cypress/integration/actions.spec.js b/cypress/integration/actions.spec.js index fa7580179..1ea0ce379 100644 --- a/cypress/integration/actions.spec.js +++ b/cypress/integration/actions.spec.js @@ -115,4 +115,43 @@ describe('Test the actions', () => { .find('#methodResult') .contains(20); }); + + it.only(`should subscribe to published events from main window`, () => { + // start listener + cy.getIframe() + .find('#actionType') + .type('contextLocale') + + cy.getIframe() + .find('#subscribeAction') + .click() + + // publish data + cy.get('#actionType') + .type('contextLocale'); + + cy.get('#responseData') + .type(`{ "locale": "en-GB" }`, { parseSpecialCharSequences: false }) + + cy.get('#publishAction') + .click(); + + // check if published data was written + cy.getIframe() + .find('#result') + .contains('{ "locale": "en-GB" }'); + + // publish more data + cy.get('#responseData') + .clear() + .type(`{ "locale": "de-DE" }`, { parseSpecialCharSequences: false }) + + cy.get('#publishAction') + .click(); + + // check if published data was written + cy.getIframe() + .find('#result') + .contains('{ "locale": "de-DE" }'); + }); }) diff --git a/example/iframe-app/app.ts b/example/iframe-app/app.ts index 578e40d78..193965a4e 100644 --- a/example/iframe-app/app.ts +++ b/example/iframe-app/app.ts @@ -1,10 +1,11 @@ import { _subtract } from './../../src/messages.types'; import './style.css'; -import { handle, send } from '../../src/channel'; +import { handle, send, subscribe } from '../../src/channel'; const actionType = document.getElementById('actionType')! as HTMLInputElement const actionValue = document.getElementById('actionValue')! as HTMLTextAreaElement const sendAction = document.getElementById('sendAction')!; +const subscribeAction = document.getElementById('subscribeAction')!; const result = document.getElementById('result')!; const callMethodInMainWindow = document.getElementById('callMethodInMainWindow'); @@ -22,6 +23,14 @@ sendAction.addEventListener('click', () => { }) }) +subscribeAction.addEventListener('click', () => { + const actionTypeValue = actionType.value; + + subscribe(actionTypeValue as any, (data) => { + result.innerHTML = data; + }) +}) + handle('_multiply', ({ firstNumber, secondNumber }) => { return firstNumber * secondNumber; }) diff --git a/example/iframe-app/index.html b/example/iframe-app/index.html index 0c07b56d0..baa87c430 100644 --- a/example/iframe-app/index.html +++ b/example/iframe-app/index.html @@ -24,6 +24,7 @@

Iframe Window


+
diff --git a/example/main-app/main.ts b/example/main-app/main.ts index 4b2aa640c..c6a9976f0 100644 --- a/example/main-app/main.ts +++ b/example/main-app/main.ts @@ -1,7 +1,8 @@ import './style.css' -import { handle, send } from '../../src/channel'; +import { handle, publish, send } from '../../src/channel'; const listenToActionButton = document.getElementById('listenToAction') +const publishAction = document.getElementById('publishAction') const actionType = document.getElementById('actionType')! as HTMLInputElement const result = document.getElementById('result')!; const responseData = document.getElementById('responseData')! as HTMLTextAreaElement; @@ -24,6 +25,13 @@ listenToActionButton?.addEventListener('click', () => { }) }) +publishAction?.addEventListener('click', () => { + const actionTypeValue = actionType.value; + const reponseDataValue = responseData.value; + + publish(actionTypeValue as any, reponseDataValue) +}) + handle('_subtract', ({ firstNumber, secondNumber }) => { return firstNumber - secondNumber; }) diff --git a/index.html b/index.html index 93a99a094..4e875859e 100644 --- a/index.html +++ b/index.html @@ -25,7 +25,8 @@

Main Window


- + +

diff --git a/src/channel.ts b/src/channel.ts index 4bdde1825..587cf3a9e 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -229,7 +229,9 @@ export function publish( data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], ) { const sendPromises = [...sourceRegistry].map((source) => { - return send(type, data, source); + // Disable error handling because not every window need to react to the data + // eslint-disable-next-line @typescript-eslint/no-empty-function + return send(type, data, source).catch(() => {}); }) return Promise.all(sendPromises); From 94dfb3ebe81cbb1c83adc91ae34907ff20c578c6 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 15:42:26 +0100 Subject: [PATCH 042/189] Add subscriber for context --- src/channel.ts | 4 ++++ src/context/index.ts | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/channel.ts b/src/channel.ts index 587cf3a9e..fc9c65d4c 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -268,6 +268,10 @@ export function createHandler(m return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); } +export function createSubscriber(messageType: MESSAGE_TYPE) { + return (method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise) => subscribe(messageType, method); +} + /** * ---------------- * IIFE for default handler diff --git a/src/context/index.ts b/src/context/index.ts index 55091ad5d..1e79b265e 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,8 +1,10 @@ -import { createSender } from '../channel'; +import { createSender, createSubscriber } from '../channel'; export const getLanguage = createSender('contextLanguage', {}); +export const subscribeLanguage = createSubscriber('contextLanguage'); export const getEnvironment = createSender('contextEnvironment', {}); export const getLocale = createSender('contextLocale', {}); +export const subscribeLocale = createSubscriber('contextLocale'); export const getCurrency = createSender('contextCurrency', {}); /** From 2ef72d64ed019cdf8d2979a33b0e23aa46846b89 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 15:49:48 +0100 Subject: [PATCH 043/189] Change cypress browser to chrome headless for tests --- cypress/integration/actions.spec.js | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cypress/integration/actions.spec.js b/cypress/integration/actions.spec.js index 1ea0ce379..6de2e8c42 100644 --- a/cypress/integration/actions.spec.js +++ b/cypress/integration/actions.spec.js @@ -116,7 +116,7 @@ describe('Test the actions', () => { .contains(20); }); - it.only(`should subscribe to published events from main window`, () => { + it(`should subscribe to published events from main window`, () => { // start listener cy.getIframe() .find('#actionType') diff --git a/package.json b/package.json index 5135fc1c0..1426ab039 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,8 @@ "lint": "npm run lint:types && npm run lint:eslint", "lint:types": "tsc --noEmit", "lint:eslint": "eslint ./src --ext .ts", - "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", - "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", + "e2e:open": "concurrently --handle-input --kill-others --success first \"cypress open --browser chrome\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", + "e2e:run": "concurrently --handle-input --kill-others --success first \"cypress run --browser chrome\" \"npm run dev:build-watch\" \"npm run dev:serve -- --no-browser\"", "test": "jest --collectCoverage", "test:watch": "jest --watch" }, From e93129f6235fb3ece640bcea6dcc3c54c535925b Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 25 Nov 2021 15:59:36 +0100 Subject: [PATCH 044/189] Change cypress browser in pipeline to chrome --- .github/workflows/{base.yml => tests.yml} | 1 + 1 file changed, 1 insertion(+) rename .github/workflows/{base.yml => tests.yml} (98%) diff --git a/.github/workflows/base.yml b/.github/workflows/tests.yml similarity index 98% rename from .github/workflows/base.yml rename to .github/workflows/tests.yml index b3824f5dc..92d0ed40b 100644 --- a/.github/workflows/base.yml +++ b/.github/workflows/tests.yml @@ -51,4 +51,5 @@ jobs: with: build: npm run build start: npm run dev + browser: chrome \ No newline at end of file From 83afc6ae80e528888db00ba06ddb0493d928ec01 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 26 Nov 2021 08:24:22 +0100 Subject: [PATCH 045/189] Release version 0.0.16 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed7452689..373bdc66a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.10", + "version": "0.0.15", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1426ab039..24eb0981d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.15", + "version": "0.0.16", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 9015448b20be4b0dbe6a9bc52bf720f3c5ec1003 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 26 Nov 2021 14:40:58 +0100 Subject: [PATCH 046/189] Update README with new content --- README.md | 104 ++++++++++++++++++++---------------------------------- 1 file changed, 38 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 104900eb4..aa10be84b 100644 --- a/README.md +++ b/README.md @@ -3,40 +3,32 @@ -------- -[![Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml/badge.svg?branch=main)](https://github.com/shopware/admin-extension-sdk/actions/workflows/base.yml) +# Admin Extension SDK +[![Tests](https://github.com/shopware/admin-extension-sdk/actions/workflows/tests.yml/badge.svg)](https://github.com/shopware/admin-extension-sdk/actions/workflows/tests.yml) [![NPM Package](https://img.shields.io/npm/v/@shopware-ag/admin-extension-sdk)](https://www.npmjs.com/package/@shopware-ag/admin-extension-sdk) -# Admin app actions -### for the Shopware 6 app system +The `admin-extension-sdk` is a JavaScript library for all [Shopware 6](https://github.com/shopware/platform) App and Plugin developer which want an easy way to extend and customize the administration. -[Open documentation](https://shopware.github.io/admin-extension-sdk/) - -This small library is for using admin actions in your app iframes. - -Your app can then extend the Administration with many different actions, customizing UI elements and more. It can send actions to the administration or receive data from it. - -```js -send('redirect', { - url: 'https://www.shopware.com', - newTab: true -}) -``` +[See Documentation](https://shopware.github.io/admin-extension-sdk/) ## Installation - #### Using NPM: Install it to your `package.json` ``` npm i --save @shopware-ag/admin-extension-sdk ``` -Then import it in your app: +and import it in your app: ```js -import { send } from '@shopware-ag/admin-extension-sdk'; +// import everything +import * as sw from '@shopware-ag/admin-extension-sdk'; + +// or import only needed functionality +import { notification } from '@shopware-ag/admin-extension-sdk'; ``` #### Using CDN: -Import the source from the CDN: +Import the source from the CDN ```js // use the latest version available @@ -46,66 +38,46 @@ Import the source from the CDN: ``` -Then you can access it with the global variable `AdminAppActions`. +and then you can access it with the global variable `sw`. ```js -const { send } = AdminAppActions; +sw.notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' +}) ``` ## Features +- **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. +- **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. +- **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. +- **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. +- **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. +- **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. +- **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. -- Simple API -- Sending actions to the admin -- Receive data from the admin -- Extremely small footprint on app side -- Full Typescript support - -### Simple API -The API is very expressive and easy to learn. You just need to import our library and then you can use the send method for sending actions and receiving data. - -The iframe are using only the function `send` for sending the actions. The first parameter is the action-type and the second parameter contains the options for the action. +## Examples +Throw a notification: ```js -import { send } from '@shopware-ag/admin-extension-sdk'; - -send('redirect', { - url: 'https://www.shopware.com', - newTab: true, +sw.notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' }) ``` -If the action has a response then you can get the information with the returned Promise value: - -```javascript -import { send } from '@shopware-ag/admin-extension-sdk'; - -const pageTitle = await send('getPageTitle', {}); +Get the system currency: +```js +const currency = await sw.context.getCurrency(); ``` -## Extremely small footprint on app side -The bundle size of this library is extremely small and will not grow when new actions will be defined. How is this done? The functions only execute the commands. Only types are describing the API and therefore not increase the bundle size. - -## Full Typescript support -Typescript provides a good developer experience for everyone using this tool. Every action and options can be autocompleted by the IDE. If you are also writing your application in Typescript you get direct feedback if you are doing a mistake in using the API. - -A full auto-generated API documentation can be found in the documentation: https://shopware.github.io/admin-extension-sdk/ - -___________ - -## Recipient (only for usage in the Shopware 6 Administration): -The Shopware 6 administration listens to all messages. If a message matches an action then the given functionality will be called. Here is an example code how it can look like: - -```ts -import { on } from '@shopware-ag/admin-extension-sdk'; - -on('redirect', ({ newTab, url }) => { - // call a method which redirects to the url - redirect({ newTab, url }); -}) +Subscribe for UI locale changes: +```js +let currentLocale = 'en-GB'; -on('getPageTitle', () => { - // or return the value if the type needs a response - return document.title; +sw.context.subscribeLocale(({ locale }) => { + currentLocale = locale; }) +``` -``` \ No newline at end of file +See more examples in the [Documentation](https://shopware.github.io/admin-extension-sdk/). \ No newline at end of file From d8ca6d72416382f1c53ca23a89508876e7e06ea6 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 26 Nov 2021 15:27:02 +0100 Subject: [PATCH 047/189] Add CDN option --- .gitignore | 3 ++- README.md | 4 ++-- package.json | 6 ++++-- vite.config.ts | 35 +++++++++++++++++++++++++++-------- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index ac57afb8a..2f6ec8c52 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ coverage docs/docs/api es umd -example-dist \ No newline at end of file +example-dist +cdn \ No newline at end of file diff --git a/README.md b/README.md index aa10be84b..1161483c0 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,10 @@ Import the source from the CDN ```js // use the latest version available - + // use a fix version (example here: 1.2.3) - + ``` and then you can access it with the global variable `sw`. diff --git a/package.json b/package.json index 24eb0981d..6ba631efe 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ ], "files": [ "umd", - "es" + "es", + "cdn" ], "main": "./umd/index.js", "module": "./es/index.js", @@ -28,9 +29,10 @@ "dev": "concurrently \"npm run dev:build-watch\" \"npm run dev:serve\"", "dev:build-watch": "vite build --watch --mode example", "dev:serve": "live-server --port=8181 example-dist", - "build": "rm -rf es && rm -rf umd && npm run build:umd && npm run build:es", + "build": "rm -rf es && rm -rf umd && rm -rf cdn && npm run build:umd && npm run build:es && npm run build:cdn", "build:umd": "tsc --project tsconfig.json --module umd --outDir \"./umd\"", "build:es": "tsc --project tsconfig.json --outDir \"./es\"", + "build:cdn": "vite build --mode cdn", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", "lint": "npm run lint:types && npm run lint:eslint", diff --git a/vite.config.ts b/vite.config.ts index 5ae473d44..31df6783e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,19 +5,38 @@ import tsconfigPaths from 'vite-tsconfig-paths' import dts from 'vite-plugin-dts' module.exports = defineConfig(({ command, mode }) => { - // Development config (with HTML files for easier development) + if (mode === 'example') { + // Development config (with HTML files for easier development) + return { + plugins: [ + tsconfigPaths() + ], + build: { + outDir: resolve(__dirname, 'example-dist'), + sourcemap: true, + rollupOptions: { + input: { + main: resolve(__dirname, './index.html'), + iframe: resolve(__dirname, './example/iframe-app/index.html'), + } + } + } + } + } + + // Build config for CDN return { plugins: [ tsconfigPaths() ], build: { - outDir: resolve(__dirname, 'example-dist'), - sourcemap: true, - rollupOptions: { - input: { - main: resolve(__dirname, './index.html'), - iframe: resolve(__dirname, './example/iframe-app/index.html'), - } + outDir: resolve(__dirname, 'cdn'), + sourcemap: false, + lib: { + entry: resolve(__dirname, 'src/index.ts'), + name: 'sw', + fileName: () => 'index.js', + formats: ['umd'] } } } From 8633b35903f509dcd6721286cc8b5cfa4bdcff28 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Fri, 26 Nov 2021 15:31:18 +0100 Subject: [PATCH 048/189] Bump up version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6ba631efe..bf17fc990 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.16", + "version": "0.0.17", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From a5c907cbce5b3c13710508356c3868555ec157d9 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 29 Nov 2021 10:54:38 +0100 Subject: [PATCH 049/189] Convert documentation from App Actions to Extension SDK --- .../docs/guide/getting-started/_category_.yml | 1 + .../guide/getting-started/installation.md | 44 + docs/docs/guide/index.md | 12 + docs/docusaurus.config.js | 24 +- docs/package-lock.json | 4710 ++++++----------- docs/package.json | 12 +- docs/sidebars.js | 13 +- docs/src/components/HomepageFeatures.tsx | 18 +- docs/src/pages/index.tsx | 4 +- src/channel.ts | 18 +- src/index.ts | 3 + 11 files changed, 1694 insertions(+), 3165 deletions(-) create mode 100644 docs/docs/guide/getting-started/_category_.yml create mode 100644 docs/docs/guide/getting-started/installation.md create mode 100644 docs/docs/guide/index.md diff --git a/docs/docs/guide/getting-started/_category_.yml b/docs/docs/guide/getting-started/_category_.yml new file mode 100644 index 000000000..85ba35786 --- /dev/null +++ b/docs/docs/guide/getting-started/_category_.yml @@ -0,0 +1 @@ +label: "Getting started" \ No newline at end of file diff --git a/docs/docs/guide/getting-started/installation.md b/docs/docs/guide/getting-started/installation.md new file mode 100644 index 000000000..50755ebd2 --- /dev/null +++ b/docs/docs/guide/getting-started/installation.md @@ -0,0 +1,44 @@ +--- +title: "Installation" +--- + +# Installation + +The preferred way to use the library is using it as a NPM package. This guarantees the smallest bundle size for your apps and plugins because only necessary function are bundled. + +The CDN method is easy to use and fast to implement. It is good for quick prototyping or if you don't want to work with building tools. + +## Using NPM: +Install it to your `package.json` +``` +npm i --save @shopware-ag/admin-extension-sdk +``` + +and import it in your app: +```js +// import everything +import * as sw from '@shopware-ag/admin-extension-sdk'; + +// or import only needed functionality +import { notification } from '@shopware-ag/admin-extension-sdk'; +``` + +## Using CDN: +Import the source from the CDN + +```js +// use the latest version available + + +// use a fix version (example here: 1.2.3) + +``` + +and then you can access it with the global variable `sw`. + +```js +sw.notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' +}) +``` \ No newline at end of file diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md new file mode 100644 index 000000000..4425a050f --- /dev/null +++ b/docs/docs/guide/index.md @@ -0,0 +1,12 @@ +--- +id: "index" +title: "Introduction" +slug: "/guide/" +sidebar_label: "Introduction" +sidebar_position: 0.5 +custom_edit_url: null +--- + +# Introduction + +The Admin Extension SDK is a NPM library for Shopware 6 apps and plugins. It contains helper functions to communicate to the Admin, execute actions, subscribing data or extending and creating the user interface. \ No newline at end of file diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 1854ce1df..bd62e7f3c 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -6,8 +6,8 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'Admin App Actions', - tagline: 'for Shopware 6 apps', + title: 'Admin Extension SDK', + tagline: 'for Shopware 6 apps and plugins', url: 'https://shopware.github.io', baseUrl: '/admin-extension-sdk/', onBrokenLinks: 'throw', @@ -26,13 +26,9 @@ const config = { entryPointStrategy: 'expand', tsconfig: '../tsconfig.json', watch: process.env.TYPEDOC_WATCH, - excludeInternal: true, - hideBreadcrumbs: true, - hideInPageTOC: true, - sidebar: { - fullNames: true, - readmeLabel: 'Getting started' - } + publicPath: 'api/', + readme: 'none', + sort: ['instance-first'] }, ] ], @@ -56,17 +52,23 @@ const config = { /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { - title: 'Admin App Actions', + title: 'Admin Extension SDK', logo: { alt: 'Shopware 6 Logo', src: 'img/sw6-logo.svg', }, items: [ + { + to: 'docs/guide', + activeBasePath: 'docs/guide', + position: 'left', + label: 'Guide', + }, { to: 'docs/api', activeBasePath: 'docs/api', position: 'left', - label: 'Documentation', + label: 'API', }, { href: 'https://github.com/shopware/admin-extension-sdk', diff --git a/docs/package-lock.json b/docs/package-lock.json index 34ad187d5..c4317c7fd 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -26,118 +26,118 @@ "integrity": "sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw==" }, "@algolia/cache-browser-local-storage": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.10.5.tgz", - "integrity": "sha512-cfX2rEKOtuuljcGI5DMDHClwZHdDqd2nT2Ohsc8aHtBiz6bUxKVyIqxr2gaC6tU8AgPtrTVBzcxCA+UavXpKww==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.11.0.tgz", + "integrity": "sha512-4sr9vHIG1fVA9dONagdzhsI/6M5mjs/qOe2xUP0yBmwsTsuwiZq3+Xu6D3dsxsuFetcJgC6ydQoCW8b7fDJHYQ==", "requires": { - "@algolia/cache-common": "4.10.5" + "@algolia/cache-common": "4.11.0" } }, "@algolia/cache-common": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.10.5.tgz", - "integrity": "sha512-1mClwdmTHll+OnHkG+yeRoFM17kSxDs4qXkjf6rNZhoZGXDvfYLy3YcZ1FX4Kyz0DJv8aroq5RYGBDsWkHj6Tw==" + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz", + "integrity": "sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==" }, "@algolia/cache-in-memory": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.10.5.tgz", - "integrity": "sha512-+ciQnfIGi5wjMk02XhEY8fmy2pzy+oY1nIIfu8LBOglaSipCRAtjk6WhHc7/KIbXPiYzIwuDbM2K1+YOwSGjwA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz", + "integrity": "sha512-aBz+stMSTBOBaBEQ43zJXz2DnwS7fL6dR0e2myehAgtfAWlWwLDHruc/98VOy1ZAcBk1blE2LCU02bT5HekGxQ==", "requires": { - "@algolia/cache-common": "4.10.5" + "@algolia/cache-common": "4.11.0" } }, "@algolia/client-account": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.10.5.tgz", - "integrity": "sha512-I9UkSS2glXm7RBZYZIALjBMmXSQbw/fI/djPcBHxiwXIheNIlqIFl2SNPkvihpPF979BSkzjqdJNRPhE1vku3Q==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz", + "integrity": "sha512-jwmFBoUSzoMwMqgD3PmzFJV/d19p1RJXB6C1ADz4ju4mU7rkaQLtqyZroQpheLoU5s5Tilmn/T8/0U2XLoJCRQ==", "requires": { - "@algolia/client-common": "4.10.5", - "@algolia/client-search": "4.10.5", - "@algolia/transporter": "4.10.5" + "@algolia/client-common": "4.11.0", + "@algolia/client-search": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "@algolia/client-analytics": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.10.5.tgz", - "integrity": "sha512-h2owwJSkovPxzc+xIsjY1pMl0gj+jdVwP9rcnGjlaTY2fqHbSLrR9yvGyyr6305LvTppxsQnfAbRdE/5Z3eFxw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz", + "integrity": "sha512-v5U9585aeEdYml7JqggHAj3E5CQ+jPwGVztPVhakBk8H/cmLyPS2g8wvmIbaEZCHmWn4TqFj3EBHVYxAl36fSA==", "requires": { - "@algolia/client-common": "4.10.5", - "@algolia/client-search": "4.10.5", - "@algolia/requester-common": "4.10.5", - "@algolia/transporter": "4.10.5" + "@algolia/client-common": "4.11.0", + "@algolia/client-search": "4.11.0", + "@algolia/requester-common": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "@algolia/client-common": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.10.5.tgz", - "integrity": "sha512-21FAvIai5qm8DVmZHm2Gp4LssQ/a0nWwMchAx+1hIRj1TX7OcdW6oZDPyZ8asQdvTtK7rStQrRnD8a95SCUnzA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz", + "integrity": "sha512-Qy+F+TZq12kc7tgfC+FM3RvYH/Ati7sUiUv/LkvlxFwNwNPwWGoZO81AzVSareXT/ksDDrabD4mHbdTbBPTRmQ==", "requires": { - "@algolia/requester-common": "4.10.5", - "@algolia/transporter": "4.10.5" + "@algolia/requester-common": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "@algolia/client-personalization": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.10.5.tgz", - "integrity": "sha512-nH+IyFKBi8tCyzGOanJTbXC5t4dspSovX3+ABfmwKWUYllYzmiQNFUadpb3qo+MLA3jFx5IwBesjneN6dD5o3w==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz", + "integrity": "sha512-mI+X5IKiijHAzf9fy8VSl/GTT67dzFDnJ0QAM8D9cMPevnfX4U72HRln3Mjd0xEaYUOGve8TK/fMg7d3Z5yG6g==", "requires": { - "@algolia/client-common": "4.10.5", - "@algolia/requester-common": "4.10.5", - "@algolia/transporter": "4.10.5" + "@algolia/client-common": "4.11.0", + "@algolia/requester-common": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "@algolia/client-search": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.10.5.tgz", - "integrity": "sha512-1eQFMz9uodrc5OM+9HeT+hHcfR1E1AsgFWXwyJ9Q3xejA2c1c4eObGgOgC9ZoshuHHdptaTN1m3rexqAxXRDBg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz", + "integrity": "sha512-iovPLc5YgiXBdw2qMhU65sINgo9umWbHFzInxoNErWnYoTQWfXsW6P54/NlKx5uscoLVjSf+5RUWwFu5BX+lpw==", "requires": { - "@algolia/client-common": "4.10.5", - "@algolia/requester-common": "4.10.5", - "@algolia/transporter": "4.10.5" + "@algolia/client-common": "4.11.0", + "@algolia/requester-common": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "@algolia/logger-common": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.10.5.tgz", - "integrity": "sha512-gRJo9zt1UYP4k3woEmZm4iuEBIQd/FrArIsjzsL/b+ihNoOqIxZKTSuGFU4UUZOEhvmxDReiA4gzvQXG+TMTmA==" + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz", + "integrity": "sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg==" }, "@algolia/logger-console": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.10.5.tgz", - "integrity": "sha512-4WfIbn4253EDU12u9UiYvz+QTvAXDv39mKNg9xSoMCjKE5szcQxfcSczw2byc6pYhahOJ9PmxPBfs1doqsdTKQ==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz", + "integrity": "sha512-wXztMk0a3VbNmYP8Kpc+F7ekuvaqZmozM2eTLok0XIshpAeZ/NJDHDffXK2Pw+NF0wmHqurptLYwKoikjBYvhQ==", "requires": { - "@algolia/logger-common": "4.10.5" + "@algolia/logger-common": "4.11.0" } }, "@algolia/requester-browser-xhr": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.10.5.tgz", - "integrity": "sha512-53/MURQEqtK+bGdfq4ITSPwTh5hnADU99qzvpAINGQveUFNSFGERipJxHjTJjIrjFz3vxj5kKwjtxDnU6ygO9g==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz", + "integrity": "sha512-Fp3SfDihAAFR8bllg8P5ouWi3+qpEVN5e7hrtVIYldKBOuI/qFv80Zv/3/AMKNJQRYglS4zWyPuqrXm58nz6KA==", "requires": { - "@algolia/requester-common": "4.10.5" + "@algolia/requester-common": "4.11.0" } }, "@algolia/requester-common": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.10.5.tgz", - "integrity": "sha512-UkVa1Oyuj6NPiAEt5ZvrbVopEv1m/mKqjs40KLB+dvfZnNcj+9Fry4Oxnt15HMy/HLORXsx4UwcthAvBuOXE9Q==" + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz", + "integrity": "sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA==" }, "@algolia/requester-node-http": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.10.5.tgz", - "integrity": "sha512-aNEKVKXL4fiiC+bS7yJwAHdxln81ieBwY3tsMCtM4zF9f5KwCzY2OtN4WKEZa5AAADVcghSAUdyjs4AcGUlO5w==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz", + "integrity": "sha512-qJIk9SHRFkKDi6dMT9hba8X1J1z92T5AZIgl+tsApjTGIRQXJLTIm+0q4yOefokfu4CoxYwRZ9QAq+ouGwfeOg==", "requires": { - "@algolia/requester-common": "4.10.5" + "@algolia/requester-common": "4.11.0" } }, "@algolia/transporter": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.10.5.tgz", - "integrity": "sha512-F8DLkmIlvCoMwSCZA3FKHtmdjH3o5clbt0pi2ktFStVNpC6ZDmY307HcK619bKP5xW6h8sVJhcvrLB775D2cyA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz", + "integrity": "sha512-k4dyxiaEfYpw4UqybK9q7lrFzehygo6KV3OCYJMMdX0IMWV0m4DXdU27c1zYRYtthaFYaBzGF4Kjcl8p8vxCKw==", "requires": { - "@algolia/cache-common": "4.10.5", - "@algolia/logger-common": "4.10.5", - "@algolia/requester-common": "4.10.5" + "@algolia/cache-common": "4.11.0", + "@algolia/logger-common": "4.11.0", + "@algolia/requester-common": "4.11.0" } }, "@babel/code-frame": { @@ -726,9 +726,9 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -1031,18 +1031,77 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", - "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz", + "integrity": "sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==", "requires": { - "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", "semver": "^6.3.0" }, "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "requires": { + "@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-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1092,13 +1151,175 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.8.tgz", - "integrity": "sha512-ZXIkJpbaf6/EsmjeTbiJN/yMxWPFWvlr7sEG1P95Xb4S4IBcrf2n7s/fItIhsAmOf8oSh3VJPDppO6ExfAfKRQ==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", + "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" + "@babel/plugin-syntax-typescript": "^7.16.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==" + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/plugin-transform-unicode-escapes": { @@ -1231,13 +1452,13 @@ } }, "@babel/preset-typescript": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz", - "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz", + "integrity": "sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg==", "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.15.0" + "@babel/plugin-transform-typescript": "^7.16.0" } }, "@babel/runtime": { @@ -1249,11 +1470,11 @@ } }, "@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz", + "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==", "requires": { - "core-js-pure": "^3.16.0", + "core-js-pure": "^3.19.0", "regenerator-runtime": "^0.13.4" } }, @@ -1293,159 +1514,163 @@ } }, "@docsearch/css": { - "version": "3.0.0-alpha.40", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.40.tgz", - "integrity": "sha512-PrOTPgJMl+Iji1zOH0+J0PEDMriJ1teGxbgll7o4h8JrvJW6sJGqQw7/bLW7enWiFaxbJMK76w1yyPNLFHV7Qg==" + "version": "3.0.0-alpha.41", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.41.tgz", + "integrity": "sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ==" }, "@docsearch/react": { - "version": "3.0.0-alpha.40", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.40.tgz", - "integrity": "sha512-aKxnu7sgpP1R7jtgOV/pZdJEHXx6Ts+jnS9U/ejSUS2BMUpwQI5SA3oLs1BA5TA9kIViJ5E+rrjh0VsbcsJ6sQ==", + "version": "3.0.0-alpha.41", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.41.tgz", + "integrity": "sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg==", "requires": { "@algolia/autocomplete-core": "1.2.2", "@algolia/autocomplete-preset-algolia": "1.2.2", - "@docsearch/css": "3.0.0-alpha.40", + "@docsearch/css": "3.0.0-alpha.41", "algoliasearch": "^4.0.0" } }, "@docusaurus/core": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.6.tgz", - "integrity": "sha512-XMeI+lJKeJBGYBNOfO/Tc+5FMf21E5p1xZjfe75cgYcfZdERZ+W7aemXquwReno8xxHb4Rnfmi9dxkbOLDjqDA==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.9.tgz", + "integrity": "sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA==", "requires": { "@babel/core": "^7.12.16", "@babel/generator": "^7.12.15", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.12.15", - "@babel/preset-env": "^7.12.16", + "@babel/plugin-transform-runtime": "^7.15.0", + "@babel/preset-env": "^7.15.6", "@babel/preset-react": "^7.12.13", "@babel/preset-typescript": "^7.12.16", - "@babel/runtime": "^7.12.5", - "@babel/runtime-corejs3": "^7.12.13", + "@babel/runtime": "^7.15.4", + "@babel/runtime-corejs3": "^7.15.4", "@babel/traverse": "^7.12.13", - "@docusaurus/cssnano-preset": "2.0.0-beta.6", - "@docusaurus/react-loadable": "5.5.0", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-common": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", + "@docusaurus/cssnano-preset": "2.0.0-beta.9", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-common": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", "@slorber/static-site-generator-webpack-plugin": "^4.0.0", "@svgr/webpack": "^5.5.0", - "autoprefixer": "^10.2.5", + "autoprefixer": "^10.3.5", "babel-loader": "^8.2.2", "babel-plugin-dynamic-import-node": "2.3.0", "boxen": "^5.0.1", - "chalk": "^4.1.1", - "chokidar": "^3.5.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", "clean-css": "^5.1.5", "commander": "^5.1.0", - "copy-webpack-plugin": "^9.0.0", - "core-js": "^3.9.1", + "copy-webpack-plugin": "^9.0.1", + "core-js": "^3.18.0", "css-loader": "^5.1.1", - "css-minimizer-webpack-plugin": "^3.0.1", - "cssnano": "^5.0.4", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.8", "del": "^6.0.0", "detect-port": "^1.3.0", "escape-html": "^1.0.3", - "eta": "^1.12.1", - "express": "^4.17.1", + "eta": "^1.12.3", "file-loader": "^6.2.0", "fs-extra": "^10.0.0", - "github-slugger": "^1.3.0", + "github-slugger": "^1.4.0", "globby": "^11.0.2", - "html-minifier-terser": "^5.1.1", + "html-minifier-terser": "^6.0.2", "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.3.2", + "html-webpack-plugin": "^5.4.0", "import-fresh": "^3.3.0", "is-root": "^2.1.0", "leven": "^3.1.0", "lodash": "^4.17.20", "mini-css-extract-plugin": "^1.6.0", - "module-alias": "^2.2.2", "nprogress": "^0.2.0", - "postcss": "^8.2.15", - "postcss-loader": "^5.3.0", + "postcss": "^8.3.7", + "postcss-loader": "^6.1.1", "prompts": "^2.4.1", - "react-dev-utils": "^11.0.1", + "react-dev-utils": "12.0.0-next.47", "react-error-overlay": "^6.0.9", "react-helmet": "^6.1.0", - "react-loadable": "^5.5.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.2.0", "react-router-config": "^5.1.1", "react-router-dom": "^5.2.0", "remark-admonitions": "^1.2.1", "resolve-pathname": "^3.0.0", - "rtl-detect": "^1.0.3", + "rtl-detect": "^1.0.4", "semver": "^7.3.4", "serve-handler": "^6.1.3", "shelljs": "^0.8.4", "std-env": "^2.2.1", "strip-ansi": "^6.0.0", - "terser-webpack-plugin": "^5.1.3", - "tslib": "^2.2.0", + "terser-webpack-plugin": "^5.2.4", + "tslib": "^2.3.1", "update-notifier": "^5.1.0", "url-loader": "^4.1.1", - "wait-on": "^5.3.0", - "webpack": "^5.40.0", + "wait-on": "^6.0.0", + "webpack": "^5.61.0", "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^3.11.2", + "webpack-dev-server": "^4.4.0", "webpack-merge": "^5.8.0", "webpackbar": "^5.0.0-3" } }, "@docusaurus/cssnano-preset": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.6.tgz", - "integrity": "sha512-RCizp2NAbADopkX5nUz1xrAbU6hGZzziQk9RdSDGJLzMgVCN6RDotq9odS8VgzNa9x2Lx3WN527UxeEbzc2GVQ==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz", + "integrity": "sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw==", "requires": { - "cssnano-preset-advanced": "^5.1.1", - "postcss": "^8.2.15", - "postcss-sort-media-queries": "^3.10.11" + "cssnano-preset-advanced": "^5.1.4", + "postcss": "^8.3.7", + "postcss-sort-media-queries": "^4.1.0" } }, "@docusaurus/mdx-loader": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.6.tgz", - "integrity": "sha512-yO6N+OESR77WZ/pXz7muOJGLletYYksx7s7wrwrr0x+A8tzdSwiHZ9op0NyjjpW5AnItU/WQQfcjv37qv4K6HA==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.9.tgz", + "integrity": "sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q==", "requires": { "@babel/parser": "^7.12.16", "@babel/traverse": "^7.12.13", - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", "@mdx-js/mdx": "^1.6.21", "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.1", + "chalk": "^4.1.2", "escape-html": "^1.0.3", "file-loader": "^6.2.0", "fs-extra": "^10.0.0", - "github-slugger": "^1.3.0", + "github-slugger": "^1.4.0", "gray-matter": "^4.0.3", "mdast-util-to-string": "^2.0.0", "remark-emoji": "^2.1.0", "stringify-object": "^3.3.0", "unist-util-visit": "^2.0.2", "url-loader": "^4.1.1", - "webpack": "^5.40.0" + "webpack": "^5.61.0" } }, "@docusaurus/module-type-aliases": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.6.tgz", - "integrity": "sha512-TrJ0u4F3mZ7uQNga22why3SsoNwlHp6vltDLlWI80jZmZpnk9BJglpcR8MPOTSEjyUgMxJ6B3q0PA/rWzupWZA==", - "dev": true + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.9.tgz", + "integrity": "sha512-H8keGRVrGSymmzI1r/9lHx62JVm/9eedja2eJr/eQPkXZlJjht0AEsWt/bwTVJ8qbPthG0G0FPuApJdt+8aK8Q==", + "dev": true, + "requires": { + "@types/react": "*", + "@types/react-helmet": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*" + } }, "@docusaurus/plugin-content-blog": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.6.tgz", - "integrity": "sha512-ohfMt7+rPiFQImc4Clpvc9m/1yWUQAjpG3e/coJywlJYbDXvi1pmH0VKkDUMBSe/35Wtz9457DYgNFG81lhV7Q==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/mdx-loader": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", - "chalk": "^4.1.1", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz", + "integrity": "sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/mdx-loader": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", + "chalk": "^4.1.2", "escape-string-regexp": "^4.0.0", "feed": "^4.2.2", "fs-extra": "^10.0.0", @@ -1453,10 +1678,11 @@ "js-yaml": "^4.0.0", "loader-utils": "^2.0.0", "lodash": "^4.17.20", - "reading-time": "^1.3.0", + "reading-time": "^1.5.0", "remark-admonitions": "^1.2.1", - "tslib": "^2.2.0", - "webpack": "^5.40.0" + "tslib": "^2.3.1", + "utility-types": "^3.10.0", + "webpack": "^5.61.0" }, "dependencies": { "argparse": { @@ -1480,16 +1706,16 @@ } }, "@docusaurus/plugin-content-docs": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.6.tgz", - "integrity": "sha512-cM5WWogWmX+qKPKv332eDWGRVVT5OjskbmFKe2QimwoaON3Cv6XY8Fo2xdYopqGIU0r0z8dVtRmoGS0ji7zB7w==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/mdx-loader": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", - "chalk": "^4.1.1", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz", + "integrity": "sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/mdx-loader": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", + "chalk": "^4.1.2", "combine-promises": "^1.1.0", "escape-string-regexp": "^4.0.0", "execa": "^5.0.0", @@ -1497,13 +1723,13 @@ "globby": "^11.0.2", "import-fresh": "^3.2.2", "js-yaml": "^4.0.0", - "loader-utils": "^1.2.3", + "loader-utils": "^2.0.0", "lodash": "^4.17.20", "remark-admonitions": "^1.2.1", "shelljs": "^0.8.4", - "tslib": "^2.2.0", + "tslib": "^2.3.1", "utility-types": "^3.10.0", - "webpack": "^5.40.0" + "webpack": "^5.61.0" }, "dependencies": { "argparse": { @@ -1516,32 +1742,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1549,226 +1749,193 @@ "requires": { "argparse": "^2.0.1" } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } } } }, "@docusaurus/plugin-content-pages": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.6.tgz", - "integrity": "sha512-N6wARzOA8gTFeBXZSKbAN5s1Ej6R/pVg+J946E8GCYefXTFikTNRQ8+OPhax4MRzgzoOvhTQbLbRCSoAzSmjig==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/mdx-loader": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.9.tgz", + "integrity": "sha512-27nFHhPpZEWra6izyWgY+EkBspr3OAUUHojRXzMUKplYLZ5gIciM224PXbwLyECjpn51eaf8/2Ay+/H9BdTCBw==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/mdx-loader": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", "globby": "^11.0.2", "lodash": "^4.17.20", "remark-admonitions": "^1.2.1", - "tslib": "^2.1.0", - "webpack": "^5.40.0" + "tslib": "^2.3.1", + "webpack": "^5.61.0" } }, "@docusaurus/plugin-debug": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.6.tgz", - "integrity": "sha512-TJXDBR2Gr/mhBrcj+/4+rTShSm/Qg56Jfezbm/2fFvuPgVlUwy6oj08s2/kYSTmkfG7G+c4iX1GBHjtyo1KxZA==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "fs-extra": "^9.1.0", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.9.tgz", + "integrity": "sha512-uVnLfNE7YBMCWVcfoy6NgAxbqfG3bXfrLozM2RMafPmsCitaw+wrTdnba/irM364wPFFursF9lDrNLwSrYiRbw==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "fs-extra": "^10.0.0", "react-json-view": "^1.21.3", - "tslib": "^2.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } + "tslib": "^2.3.1" } }, "@docusaurus/plugin-google-analytics": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.6.tgz", - "integrity": "sha512-AHbMNPN3gkWXYFnmHL9MBcRODByAgzHZoH/5v3xwbSV2FOZo6kx4Hp94I6oFM0o5mp+i6X7slDncgGTWSGxCMg==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.9.tgz", + "integrity": "sha512-fYnunrefFko2jF/M973FONZjn9QHzNnt7+uMokR4frK/BX/zEyW2Yw6vh7dC0oo+ml5625Pv5OfwwlOJ9DRmHw==", "requires": { - "@docusaurus/core": "2.0.0-beta.6" + "@docusaurus/core": "2.0.0-beta.9" } }, "@docusaurus/plugin-google-gtag": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.6.tgz", - "integrity": "sha512-uJyQ30sXbVRS3TGtVJFA0s1ozrluuREu6NK2Z3TLtKpeT2NTe5iaqXN0Xp749hr3bjbgpEe6gMixVh//jg503w==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.9.tgz", + "integrity": "sha512-AlVhbjN0OEiM8r8BncdiP82B9I7Dw3fN4cj2pPLtcOmvcRPQM2BfdzxbXPBUHgyT50Rd6hxS+R2Fl/s2RpUAHA==", "requires": { - "@docusaurus/core": "2.0.0-beta.6" + "@docusaurus/core": "2.0.0-beta.9" } }, "@docusaurus/plugin-sitemap": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.6.tgz", - "integrity": "sha512-jpTaODqyCgg+20RtMw8gSvCKQOvH18FpKhIu6FG+z4zgHP33qaJouVM7/1ZKPrfNt4z7xDOyBNUzzdmpssHA8A==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-common": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.9.tgz", + "integrity": "sha512-p6Qc1vo/yb1v767/u0E72inkGKayx77HDKsDOGrNj2IH0db0cMsskBLeKYcDfVz5+dtmFrR+lubINp7TyofkvA==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-common": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", "fs-extra": "^10.0.0", "sitemap": "^7.0.0", - "tslib": "^2.2.0" + "tslib": "^2.3.1" } }, "@docusaurus/preset-classic": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.6.tgz", - "integrity": "sha512-riqQRcNssNH7oto8nAjYIO79/ZucidexHTDlgD+trP56ploHLJp4kIlxb44IGOmx3es8/z4egWtM+acY/39N2Q==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/plugin-content-blog": "2.0.0-beta.6", - "@docusaurus/plugin-content-docs": "2.0.0-beta.6", - "@docusaurus/plugin-content-pages": "2.0.0-beta.6", - "@docusaurus/plugin-debug": "2.0.0-beta.6", - "@docusaurus/plugin-google-analytics": "2.0.0-beta.6", - "@docusaurus/plugin-google-gtag": "2.0.0-beta.6", - "@docusaurus/plugin-sitemap": "2.0.0-beta.6", - "@docusaurus/theme-classic": "2.0.0-beta.6", - "@docusaurus/theme-search-algolia": "2.0.0-beta.6" + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.9.tgz", + "integrity": "sha512-wm4x+jOKYaBL+7ckJwskyiITayNm3127e42kz4CtvmjjccpZu68JCfjehqkpnoPDTByBYnaeOKyga4azeAQLSA==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/plugin-content-blog": "2.0.0-beta.9", + "@docusaurus/plugin-content-docs": "2.0.0-beta.9", + "@docusaurus/plugin-content-pages": "2.0.0-beta.9", + "@docusaurus/plugin-debug": "2.0.0-beta.9", + "@docusaurus/plugin-google-analytics": "2.0.0-beta.9", + "@docusaurus/plugin-google-gtag": "2.0.0-beta.9", + "@docusaurus/plugin-sitemap": "2.0.0-beta.9", + "@docusaurus/theme-classic": "2.0.0-beta.9", + "@docusaurus/theme-search-algolia": "2.0.0-beta.9" } }, "@docusaurus/react-loadable": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.0.tgz", - "integrity": "sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", "requires": { + "@types/react": "*", "prop-types": "^15.6.2" } }, "@docusaurus/theme-classic": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.6.tgz", - "integrity": "sha512-fMb6gAKUdaojInZabimIJE+yPWs8dQfmZII7v/LHmgxafh/FylmrBkKhyJfa2ix4QRibo9E01LGX44/aKzemxw==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/plugin-content-blog": "2.0.0-beta.6", - "@docusaurus/plugin-content-docs": "2.0.0-beta.6", - "@docusaurus/plugin-content-pages": "2.0.0-beta.6", - "@docusaurus/theme-common": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-common": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.9.tgz", + "integrity": "sha512-vTijCGrkFkaqzpOu7w1AaXOBFOo6wirkNEN0+TMkx3oTu95Yj7h98rt/9Z60f6L9HVjOFQ18h3fU6cWloNG+Bg==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/plugin-content-blog": "2.0.0-beta.9", + "@docusaurus/plugin-content-docs": "2.0.0-beta.9", + "@docusaurus/plugin-content-pages": "2.0.0-beta.9", + "@docusaurus/theme-common": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-common": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", "@mdx-js/mdx": "^1.6.21", "@mdx-js/react": "^1.6.21", - "chalk": "^4.1.1", + "chalk": "^4.1.2", "clsx": "^1.1.1", "copy-text-to-clipboard": "^3.0.1", "fs-extra": "^10.0.0", "globby": "^11.0.2", - "infima": "0.2.0-alpha.33", + "infima": "0.2.0-alpha.34", "lodash": "^4.17.20", - "parse-numeric-range": "^1.2.0", - "postcss": "^8.2.15", + "parse-numeric-range": "^1.3.0", + "postcss": "^8.3.7", "prism-react-renderer": "^1.2.1", "prismjs": "^1.23.0", "prop-types": "^15.7.2", "react-router-dom": "^5.2.0", - "rtlcss": "^3.1.2" + "rtlcss": "^3.3.0" } }, "@docusaurus/theme-common": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.6.tgz", - "integrity": "sha512-53nFWMjpFdyHEvBfQQQoDm9rNKgGangy7vSp1B/F3+uRyYAItE7O4l8MdOALXFALlddiiPYvCtI1qGx2dnzndA==", - "requires": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/plugin-content-blog": "2.0.0-beta.6", - "@docusaurus/plugin-content-docs": "2.0.0-beta.6", - "@docusaurus/plugin-content-pages": "2.0.0-beta.6", - "@docusaurus/types": "2.0.0-beta.6", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.9.tgz", + "integrity": "sha512-ZsFP+wH1CY6SBqkBGAdj9kHZHkV/7Y77Jw0rnEVbVU4zX2Jh6apWRCOJVaPrroDES8/9D6WWKQgQifeoJ2EeIA==", + "requires": { + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/plugin-content-blog": "2.0.0-beta.9", + "@docusaurus/plugin-content-docs": "2.0.0-beta.9", + "@docusaurus/plugin-content-pages": "2.0.0-beta.9", + "@docusaurus/types": "2.0.0-beta.9", "clsx": "^1.1.1", "fs-extra": "^10.0.0", - "tslib": "^2.1.0" + "tslib": "^2.3.1", + "utility-types": "^3.10.0" } }, "@docusaurus/theme-search-algolia": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.6.tgz", - "integrity": "sha512-GaaYdf6EEKL3jwmt9LRyiMtNvobOhw4vGuYJKbJcgba/M75kOJSbZPRrhALBAe6o4gOYbV44afzFC/jUUp7dsA==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.9.tgz", + "integrity": "sha512-pbpA18kqr5H7A7snmHf4dzMYV+3nsTDYMhV9f2Tms7yP9cxW7ZMHJwaEKXh1myE58Nbkv84AF734TR1UgYrziw==", "requires": { "@docsearch/react": "^3.0.0-alpha.39", - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/theme-common": "2.0.0-beta.6", - "@docusaurus/utils": "2.0.0-beta.6", - "@docusaurus/utils-validation": "2.0.0-beta.6", - "algoliasearch": "^4.8.4", - "algoliasearch-helper": "^3.3.4", + "@docusaurus/core": "2.0.0-beta.9", + "@docusaurus/theme-common": "2.0.0-beta.9", + "@docusaurus/utils": "2.0.0-beta.9", + "@docusaurus/utils-validation": "2.0.0-beta.9", + "algoliasearch": "^4.10.5", + "algoliasearch-helper": "^3.5.5", "clsx": "^1.1.1", - "eta": "^1.12.1", + "eta": "^1.12.3", "lodash": "^4.17.20" } }, "@docusaurus/types": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.6.tgz", - "integrity": "sha512-TrwxyI93XTZEhOmdEI8FPKDbGV61zE9PzXCdE1alwz1NOV+YXwcv+9sRTZEVLqBpr+TIja+IeeS6mxnyen/Ptg==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.9.tgz", + "integrity": "sha512-7qK7PCwRImHzv9RMi5HJ7RoHKQ8r7oqZK79UucmzBXl5nyfZridBC7JQ+LG7GBqYVaIjfOHUflOOLIVn+gK2/g==", "requires": { "commander": "^5.1.0", - "joi": "^17.4.0", + "joi": "^17.4.2", "querystring": "0.2.0", - "webpack": "^5.40.0", + "utility-types": "^3.10.0", + "webpack": "^5.61.0", "webpack-merge": "^5.8.0" } }, "@docusaurus/utils": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.6.tgz", - "integrity": "sha512-S72/o7VDaTvrXJy+NpfuctghGGoMW30m94PMkrL3I6V+o5eE2Uzax7dbM++moclmHvi0/Khv+TXmRIQs6ZvwgQ==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.9.tgz", + "integrity": "sha512-f5TUY72Qux0wv1tjxsvjFDjfRnsWtQjsjR5Q/gJ5V021H9lycC9YCk0cEReg3bI3+IVL2iGvQqNnH3R1G7NcRw==", "requires": { - "@docusaurus/types": "2.0.0-beta.6", + "@docusaurus/types": "2.0.0-beta.9", + "@mdx-js/runtime": "^1.6.22", "@types/github-slugger": "^1.3.0", - "chalk": "^4.1.1", + "chalk": "^4.1.2", "escape-string-regexp": "^4.0.0", "fs-extra": "^10.0.0", "globby": "^11.0.4", "gray-matter": "^4.0.3", "lodash": "^4.17.20", "micromatch": "^4.0.4", + "remark-mdx-remove-exports": "^1.6.22", + "remark-mdx-remove-imports": "^1.6.22", "resolve-pathname": "^3.0.0", - "tslib": "^2.2.0" + "tslib": "^2.3.1" }, "dependencies": { "escape-string-regexp": { @@ -1779,23 +1946,23 @@ } }, "@docusaurus/utils-common": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.6.tgz", - "integrity": "sha512-MKm6bJxvsYWRl072jLR60z+71tTWSxoERh2eTmCYlegFnu3Tby3HOC8I3jDcC6VpVuoDGsBGNoQbOgy2LqQbXQ==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.9.tgz", + "integrity": "sha512-ftVRifnVXW9eQjwOSuTzhEb9P55KSVfqEbQHgUlMm8KYXHC4NNdn4V+9sHmdJ8rDWNU+PA/+FMjGxWLVejMkxg==", "requires": { - "@docusaurus/types": "2.0.0-beta.6", - "tslib": "^2.2.0" + "@docusaurus/types": "2.0.0-beta.9", + "tslib": "^2.3.1" } }, "@docusaurus/utils-validation": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.6.tgz", - "integrity": "sha512-v0nk9bpawUd2JFDFyiHDmZuMG+/O1UvxtxvcRbvrxrul+rlzD7Q9CGxMgW3Grp2OCKQ4yFXRidBIccwqON5AVw==", + "version": "2.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.9.tgz", + "integrity": "sha512-8XZ2wdg+HPSVqgFzhfvntPLwX0+sCypvODatXR8A3YUraZYqQU0NK7SLqD1epLpmHjT/bztSq5DydoGoFRJdIA==", "requires": { - "@docusaurus/utils": "2.0.0-beta.6", - "chalk": "^4.1.1", - "joi": "^17.4.0", - "tslib": "^2.1.0" + "@docusaurus/utils": "2.0.0-beta.9", + "chalk": "^4.1.2", + "joi": "^17.4.2", + "tslib": "^2.3.1" } }, "@hapi/hoek": { @@ -1868,28 +2035,10 @@ "@babel/helper-plugin-utils": "^7.10.4" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } } } }, @@ -1898,6 +2047,16 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" }, + "@mdx-js/runtime": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.22.tgz", + "integrity": "sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ==", + "requires": { + "@mdx-js/mdx": "1.6.22", + "@mdx-js/react": "1.6.22", + "buble-jsx-only": "^0.19.8" + } + }, "@mdx-js/util": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", @@ -2215,10 +2374,34 @@ "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", "dev": true }, + "@types/cssnano": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/cssnano/-/cssnano-4.0.1.tgz", + "integrity": "sha512-hGOroxRTBkYl5gSBRJOffhV4+io+Y2bFX1VP7LgKEVHJt/LPPJaWUIuDAz74Vlp7l7hCDZfaDi7iPxwNwuVA4Q==", + "requires": { + "postcss": "5 - 7" + }, + "dependencies": { + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, "@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.0.tgz", + "integrity": "sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==", "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -2243,15 +2426,6 @@ "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==" }, - "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/hast": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", @@ -2260,10 +2434,24 @@ "@types/unist": "*" } }, + "@types/history": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.9.tgz", + "integrity": "sha512-MUc6zSmU3tEVnkQ78q0peeEjKWPUADMlC/t++2bI8WnAG2tvYRPIgHG8lWkXwqc8MsUF6Z2MOf+Mh5sazOmhiQ==", + "dev": true + }, "@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "requires": { + "@types/node": "*" + } }, "@types/json-schema": { "version": "7.0.9", @@ -2278,15 +2466,10 @@ "@types/unist": "*" } }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, "@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==" + "version": "16.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz", + "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==" }, "@types/parse-json": { "version": "4.0.0", @@ -2298,11 +2481,72 @@ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, "@types/q": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" }, + "@types/react": { + "version": "17.0.37", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.37.tgz", + "integrity": "sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-helmet": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.4.tgz", + "integrity": "sha512-jyx50RNZXVaTGHY3MsoRPNpeiVk8b0XTPgD/O6KHF6COTDnG/+lRjPYvTK5nfWtR3xDOux0w6bHLAsaHo2ZLTA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.17", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.17.tgz", + "integrity": "sha512-RNSXOyb3VyRs/EOGmjBhhGKTbnN6fHWvy5FNLzWfOWOGjgVUKqJZXfpKzLmgoU8h6Hj8mpALj/mbXQASOb92wQ==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-config": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.3.tgz", + "integrity": "sha512-38vpjXic0+E2sIBEKUe+RrCmbc8RqcQhNV8OmU3KUcwgy/yzTeo67MhllP+0zjZWNr7Lhw+RnUkL0hzkf63nUQ==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/react-router-dom": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.2.tgz", + "integrity": "sha512-ELEYRUie2czuJzaZ5+ziIp9Hhw+juEw8b7C11YNA4QdLCVbQ3qLi2l4aq8XnlqM7V31LZX8dxUuFUCrzHm6sqQ==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + }, "@types/sax": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.3.tgz", @@ -2311,6 +2555,11 @@ "@types/node": "*" } }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, "@types/unist": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", @@ -2467,15 +2716,25 @@ } }, "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", @@ -2506,10 +2765,31 @@ "uri-js": "^4.2.2" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } }, "ajv-keywords": { "version": "3.5.2", @@ -2517,30 +2797,30 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "algoliasearch": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.10.5.tgz", - "integrity": "sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ==", - "requires": { - "@algolia/cache-browser-local-storage": "4.10.5", - "@algolia/cache-common": "4.10.5", - "@algolia/cache-in-memory": "4.10.5", - "@algolia/client-account": "4.10.5", - "@algolia/client-analytics": "4.10.5", - "@algolia/client-common": "4.10.5", - "@algolia/client-personalization": "4.10.5", - "@algolia/client-search": "4.10.5", - "@algolia/logger-common": "4.10.5", - "@algolia/logger-console": "4.10.5", - "@algolia/requester-browser-xhr": "4.10.5", - "@algolia/requester-common": "4.10.5", - "@algolia/requester-node-http": "4.10.5", - "@algolia/transporter": "4.10.5" + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz", + "integrity": "sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==", + "requires": { + "@algolia/cache-browser-local-storage": "4.11.0", + "@algolia/cache-common": "4.11.0", + "@algolia/cache-in-memory": "4.11.0", + "@algolia/client-account": "4.11.0", + "@algolia/client-analytics": "4.11.0", + "@algolia/client-common": "4.11.0", + "@algolia/client-personalization": "4.11.0", + "@algolia/client-search": "4.11.0", + "@algolia/logger-common": "4.11.0", + "@algolia/logger-console": "4.11.0", + "@algolia/requester-browser-xhr": "4.11.0", + "@algolia/requester-common": "4.11.0", + "@algolia/requester-node-http": "4.11.0", + "@algolia/transporter": "4.11.0" } }, "algoliasearch-helper": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.5.5.tgz", - "integrity": "sha512-JDH14gMpSj8UzEaKwVkrqKOeAOyK0dDWsFlKvWhk0Xl5yw9FyafYf1xZPb4uSXaPBAFQtUouFlR1Zt68BCY0/w==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz", + "integrity": "sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg==", "requires": { "events": "^1.1.1" }, @@ -2565,30 +2845,10 @@ "string-width": "^4.1.0" } }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" }, "ansi-regex": { "version": "5.0.1", @@ -2625,51 +2885,21 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -2678,37 +2908,56 @@ "lodash": "^4.17.14" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, "autoprefixer": { - "version": "10.3.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", - "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", + "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", "requires": { - "browserslist": "^4.17.3", - "caniuse-lite": "^1.0.30001264", + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001272", "fraction.js": "^4.1.1", "normalize-range": "^0.1.2", - "picocolors": "^0.2.1", + "picocolors": "^1.0.0", "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001283", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz", + "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==" + }, + "electron-to-chromium": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.4.tgz", + "integrity": "sha512-teHtgwcmVcL46jlFvAaqjyiTLWuMrUQO1JqV303JKB4ysXG6m8fXSFhbjal9st0r9mNskI22AraJZorb1VcLVg==" + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } } }, "axios": { @@ -2720,9 +2969,9 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "requires": { "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", @@ -2843,56 +3092,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "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" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "base16": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", @@ -2913,15 +3112,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2944,6 +3134,11 @@ "type-is": "~1.6.17" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2970,13 +3165,6 @@ "dns-txt": "^2.0.2", "multicast-dns": "^6.0.1", "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - } } }, "boolbase": { @@ -3028,6 +3216,37 @@ "picocolors": "^0.2.1" } }, + "buble-jsx-only": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz", + "integrity": "sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA==", + "requires": { + "acorn": "^6.1.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.0.1", + "chalk": "^2.4.2", + "magic-string": "^0.25.3", + "minimist": "^1.2.0", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3039,25 +3258,9 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "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" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "cacheable-request": { "version": "6.1.0", @@ -3305,35 +3508,14 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" }, "clean-css": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", - "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", "requires": { "source-map": "~0.6.0" }, @@ -3355,61 +3537,6 @@ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3460,15 +3587,6 @@ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3483,9 +3601,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colord": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", - "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==" + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "combine-promises": { "version": "1.1.0", @@ -3507,11 +3630,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -3534,11 +3652,6 @@ "vary": "~1.1.2" }, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3583,12 +3696,9 @@ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" }, "content-type": { "version": "1.0.4", @@ -3613,27 +3723,21 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, "copy-text-to-clipboard": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==" }, "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", "globby": "^11.0.3", "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", + "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0" }, "dependencies": { @@ -3648,9 +3752,9 @@ } }, "core-js": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.2.tgz", - "integrity": "sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ==" + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==" }, "core-js-compat": { "version": "3.18.2", @@ -3669,9 +3773,9 @@ } }, "core-js-pure": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.2.tgz", - "integrity": "sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA==" + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==" }, "core-util-is": { "version": "1.0.3", @@ -3713,11 +3817,6 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" }, - "css-color-names": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", - "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==" - }, "css-declaration-sorter": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", @@ -3744,19 +3843,54 @@ } }, "css-minimizer-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-KlB8l5uoNcf9F7i5kXnkxoqJGd2BXH4f0+Lj2vSWSmuvMLYO1kNsJ1KHSzeDW8e45/whgSOPcKVT/3JopkT8dg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-5q4myvkmm29jRlI73Fl8Mc008i6o6hCEKnV6/fOrzRVDWD6EFGwDRX+SM2qCVeZ7XiztRDKHpTGDUeUMAOOagg==", "requires": { + "@types/cssnano": "^4.0.1", "cssnano": "^5.0.6", "jest-worker": "^27.0.2", - "p-limit": "^3.0.2", "postcss": "^8.3.5", - "schema-utils": "^3.1.0", + "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1" }, "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3798,9 +3932,9 @@ } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" }, "cssesc": { "version": "3.0.0", @@ -3808,23 +3942,23 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.12.tgz", + "integrity": "sha512-U38V4x2iJ3ijPdeWqUrEr4eKBB5PbEKsNP5T8xcik2Au3LeMtiMHX0i2Hu9k51FcKofNZumbrcdC6+a521IUHg==", "requires": { - "cssnano-preset-default": "^5.1.4", + "cssnano-preset-default": "^5.1.8", "is-resolvable": "^1.1.0", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-advanced": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.4.tgz", - "integrity": "sha512-pFtIM15OzryDk09RcK+bBBtwSl80+g/POTAf/sVPqPmnOAleK6vBkY5wTmPjqGyV5/UTPjEzWMtbOQ3Z0kCBXA==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.8.tgz", + "integrity": "sha512-QUR5/s3ZKX4hdrefOdTMdyzZ5RbBIt+GxcDh7bmu2yG21PqszQBtA02QG9ilsI1E7OCjkM4KlzaGtQ75GdGa3g==", "requires": { - "autoprefixer": "^10.2.0", - "cssnano-preset-default": "^5.1.4", + "autoprefixer": "^10.3.7", + "cssnano-preset-default": "^5.1.8", "postcss-discard-unused": "^5.0.1", "postcss-merge-idents": "^5.0.1", "postcss-reduce-idents": "^5.0.1", @@ -3832,24 +3966,24 @@ } }, "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.8.tgz", + "integrity": "sha512-zWMlP0+AMPBVE852SqTrP0DnhTcTA2C1wAF92TKZ3Va+aUVqLIhkqKlnJIXXdqXD7RN+S1ujuWmNpvrJBiM/vg==", "requires": { "css-declaration-sorter": "^6.0.3", "cssnano-utils": "^2.0.1", "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", + "postcss-colormin": "^5.2.1", + "postcss-convert-values": "^5.0.2", "postcss-discard-comments": "^5.0.1", "postcss-discard-duplicates": "^5.0.1", "postcss-discard-empty": "^5.0.1", "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", - "postcss-merge-rules": "^5.0.2", + "postcss-merge-longhand": "^5.0.4", + "postcss-merge-rules": "^5.0.3", "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", - "postcss-minify-params": "^5.0.1", + "postcss-minify-gradients": "^5.0.3", + "postcss-minify-params": "^5.0.2", "postcss-minify-selectors": "^5.1.0", "postcss-normalize-charset": "^5.0.1", "postcss-normalize-display-values": "^5.0.1", @@ -3858,13 +3992,13 @@ "postcss-normalize-string": "^5.0.1", "postcss-normalize-timing-functions": "^5.0.1", "postcss-normalize-unicode": "^5.0.1", - "postcss-normalize-url": "^5.0.2", + "postcss-normalize-url": "^5.0.3", "postcss-normalize-whitespace": "^5.0.1", "postcss-ordered-values": "^5.0.2", - "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-initial": "^5.0.2", "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", - "postcss-unique-selectors": "^5.0.1" + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.2" } }, "cssnano-utils": { @@ -3880,6 +4014,11 @@ "css-tree": "^1.1.2" } }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -3888,16 +4027,6 @@ "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -3930,12 +4059,11 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^5.0.0" } }, "defer-to-connect": { @@ -3943,6 +4071,11 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -3951,43 +4084,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -4081,9 +4177,9 @@ } }, "docusaurus-plugin-typedoc": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.16.3.tgz", - "integrity": "sha512-feVKPyAcH98KuZ3wtrVkEnutEUo3zbKvVB/9crbo4W9CjZ0QczSdBtKWuasHWuPxWbThZ6gbBZp/5oeFnSVWbg==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.16.4.tgz", + "integrity": "sha512-fDlmjzlCimIbxBqi7N5FFd77RiidD/zpjfeVFA/8btjL3L6RFebBpNjZ0wih6pakKbqWqE86yja+ApPeM24Kjg==", "dev": true }, "dom-converter": { @@ -4206,14 +4302,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4307,9 +4395,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -4351,107 +4439,26 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "requires": { - "original": "^1.0.0" - } - }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "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" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "requires": { - "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" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" } } }, @@ -4492,6 +4499,19 @@ "vary": "~1.1.2" }, "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4504,6 +4524,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" } } }, @@ -4520,57 +4550,6 @@ "is-extendable": "^0.1.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "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" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4633,9 +4612,9 @@ } }, "fbjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", - "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.1.tgz", + "integrity": "sha512-8+vkGyT4lNDRKHQNPp0yh/6E7FfkLg89XqQbOYnvntRh+8RiSD43yrh9E5ejp1muCizTL4nDVG+y8W4e+LROHg==", "requires": { "cross-fetch": "^3.0.4", "fbjs-css-vars": "^1.0.0", @@ -4643,7 +4622,7 @@ "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "ua-parser-js": "^0.7.30" } }, "fbjs-css-vars": { @@ -4659,14 +4638,6 @@ "xml-js": "^1.6.11" } }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -4676,16 +4647,10 @@ "schema-utils": "^3.0.0" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, "filesize": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==" }, "fill-range": { "version": "7.0.1", @@ -4753,162 +4718,67 @@ } }, "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" }, "fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.2.tgz", + "integrity": "sha512-EqtzzRdx2mldr0KEydSN9jaNrf419gMpwkloumG6K/S7jtJc9Fl7wMJ+y+o7DLLGMMU/kouYr06agTD/YkxzIQ==", "requires": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "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" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "requires": { - "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" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } } } }, @@ -4918,17 +4788,9 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" }, "fresh": { "version": "0.5.2", @@ -4945,6 +4807,11 @@ "universalify": "^2.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4966,11 +4833,6 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -5003,11 +4865,6 @@ "get-intrinsic": "^1.1.1" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, "github-slugger": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", @@ -5200,53 +5057,6 @@ "has-symbols": "^1.0.2" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -5267,15 +5077,16 @@ } }, "hast-util-from-parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", - "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", "requires": { - "ccount": "^1.0.3", - "hastscript": "^5.0.0", + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", "property-information": "^5.0.0", - "web-namespaces": "^1.1.2", - "xtend": "^4.0.1" + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" } }, "hast-util-parse-selector": { @@ -5298,38 +5109,6 @@ "web-namespaces": "^1.0.0", "xtend": "^4.0.0", "zwitch": "^1.0.0" - }, - "dependencies": { - "hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "requires": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - } - }, - "hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "requires": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - } } }, "hast-util-to-parse5": { @@ -5345,10 +5124,11 @@ } }, "hastscript": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", - "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", "requires": { + "@types/hast": "^2.0.0", "comma-separated-tokens": "^1.0.0", "hast-util-parse-selector": "^2.0.0", "property-information": "^5.0.0", @@ -5392,6 +5172,11 @@ "wbuf": "^1.1.0" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -5417,58 +5202,28 @@ } }, "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" }, "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.10.0" }, "dependencies": { - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { - "source-map": "~0.6.0" - } - }, "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" } } }, @@ -5483,14 +5238,14 @@ "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" }, "html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "requires": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", "lodash": "^4.17.21", - "pretty-error": "^3.0.4", + "pretty-error": "^4.0.0", "tapable": "^2.0.0" } }, @@ -5587,9 +5342,9 @@ } }, "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==" }, "http-proxy": { "version": "1.18.1", @@ -5602,129 +5357,21 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", + "requires": { + "@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" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "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" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { + "is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "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" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" } } }, @@ -5747,14 +5394,14 @@ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" }, "immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.7.tgz", + "integrity": "sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA==" }, "import-fresh": { "version": "3.3.0", @@ -5770,63 +5417,6 @@ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - } - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5838,9 +5428,9 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "infima": { - "version": "0.2.0-alpha.33", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.33.tgz", - "integrity": "sha512-iLZI8/vGTbbhbeFhlWv1zwvrqfNDLAayuEdqZqNqCyGuh0IW469dRIRm0FLZ98YyLikt2njzuKfy6xUrBWRXcg==" + "version": "0.2.0-alpha.34", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.34.tgz", + "integrity": "sha512-Na6A2Tl56i1p9dzu7VOAT1Kmu3f5buz63Wvd+D9ZZWL6siQ47L7wkEZUICVKFgc5gERFZVZ/PoPB57Kl++h37Q==" }, "inflight": { "version": "1.0.6", @@ -5866,15 +5456,6 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -5895,39 +5476,16 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-alphabetical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", @@ -5982,9 +5540,9 @@ } }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" }, "is-callable": { "version": "1.2.4", @@ -6014,24 +5572,6 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -6045,23 +5585,6 @@ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -6137,24 +5660,6 @@ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - }, - "dependencies": { - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } - } - } - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -6203,9 +5708,9 @@ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-string": { "version": "1.0.7", @@ -6241,11 +5746,6 @@ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, "is-word-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", @@ -6265,9 +5765,9 @@ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -6280,9 +5780,9 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -6355,11 +5855,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" - }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -6391,11 +5886,6 @@ "json-buffer": "3.0.0" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -6407,9 +5897,9 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" }, "latest-version": { "version": "5.1.0", @@ -6425,9 +5915,9 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==" }, "lines-and-columns": { "version": "1.1.6", @@ -6547,11 +6037,6 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6587,6 +6072,14 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6602,28 +6095,15 @@ } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, "markdown-escapes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, "marked": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.7.tgz", - "integrity": "sha512-ctKqbnLuNbsHbI26cfMyOlKgXGfl1orOv1AvWWDX7AkgfMOwCWvmuYc+mVLeWhQ9W6hdWVBynOs96VkcscKo0Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.8.tgz", + "integrity": "sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw==", "dev": true }, "mdast-squeeze-paragraphs": { @@ -6677,37 +6157,12 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "memfs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.0.tgz", + "integrity": "sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA==", "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "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" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "fs-monkey": "1.0.3" } }, "merge-descriptors": { @@ -6730,11 +6185,6 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6745,9 +6195,9 @@ } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" }, "mime-db": { "version": "1.50.0", @@ -6825,25 +6275,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -6852,11 +6283,6 @@ "minimist": "^1.2.5" } }, - "module-alias": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", - "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6876,58 +6302,10 @@ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true - }, - "nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" - }, "nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "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" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" }, "negotiator": { "version": "0.6.2", @@ -6939,11 +6317,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -6992,18 +6365,11 @@ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - } + "path-key": "^3.0.0" } }, "nprogress": { @@ -7024,34 +6390,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", @@ -7071,14 +6409,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -7100,14 +6430,6 @@ "es-abstract": "^1.19.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, "object.values": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", @@ -7152,32 +6474,6 @@ "mimic-fn": "^2.1.0" } }, - "onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, "open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -7192,45 +6488,17 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "^1.4.3" - } - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -7239,16 +6507,6 @@ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - } } }, "p-map": { @@ -7260,11 +6518,12 @@ } }, "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "requires": { - "retry": "^0.12.0" + "@types/retry": "^0.12.0", + "retry": "^0.13.1" } }, "p-try": { @@ -7337,9 +6596,9 @@ "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "parseurl": { "version": "1.3.3", @@ -7355,16 +6614,6 @@ "tslib": "^2.0.3" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -7391,9 +6640,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } }, "path-type": { "version": "4.0.0", @@ -7415,19 +6667,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -7461,14 +6700,6 @@ "path-exists": "^3.0.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -7504,19 +6735,21 @@ } } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", + "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } } }, "postcss-calc": { @@ -7529,20 +6762,20 @@ } }, "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", + "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "colord": "^2.0.1", + "colord": "^2.9.1", "postcss-value-parser": "^4.1.0" } }, "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", "requires": { "postcss-value-parser": "^4.1.0" } @@ -7576,13 +6809,13 @@ } }, "postcss-loader": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-5.3.0.tgz", - "integrity": "sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "requires": { "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.4" + "klona": "^2.0.5", + "semver": "^7.3.5" } }, "postcss-merge-idents": { @@ -7595,25 +6828,23 @@ } }, "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz", + "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==", "requires": { - "css-color-names": "^1.0.1", "postcss-value-parser": "^4.1.0", "stylehacks": "^5.0.1" } }, "postcss-merge-rules": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", - "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz", + "integrity": "sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==", "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", "cssnano-utils": "^2.0.1", - "postcss-selector-parser": "^6.0.5", - "vendors": "^1.0.3" + "postcss-selector-parser": "^6.0.5" } }, "postcss-minify-font-values": { @@ -7625,25 +6856,24 @@ } }, "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", "requires": { - "colord": "^2.6", + "colord": "^2.9.1", "cssnano-utils": "^2.0.1", "postcss-value-parser": "^4.1.0" } }, "postcss-minify-params": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", - "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz", + "integrity": "sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==", "requires": { "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.0", + "browserslist": "^4.16.6", "cssnano-utils": "^2.0.1", - "postcss-value-parser": "^4.1.0", - "uniqs": "^2.0.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-selectors": { @@ -7744,9 +6974,9 @@ } }, "postcss-normalize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", - "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz", + "integrity": "sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg==", "requires": { "is-absolute-url": "^3.0.3", "normalize-url": "^6.0.1", @@ -7779,11 +7009,11 @@ } }, "postcss-reduce-initial": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", - "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz", + "integrity": "sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==", "requires": { - "browserslist": "^4.16.0", + "browserslist": "^4.16.6", "caniuse-api": "^3.0.0" } }, @@ -7806,30 +7036,29 @@ } }, "postcss-sort-media-queries": { - "version": "3.12.13", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-3.12.13.tgz", - "integrity": "sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz", + "integrity": "sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ==", "requires": { "sort-css-media-queries": "2.0.4" } }, "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", "requires": { "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "svgo": "^2.7.0" } }, "postcss-unique-selectors": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", - "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz", + "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==", "requires": { "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5", - "uniqs": "^2.0.0" + "postcss-selector-parser": "^6.0.5" } }, "postcss-value-parser": { @@ -7848,12 +7077,12 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "pretty-error": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", - "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "requires": { "lodash": "^4.17.20", - "renderkid": "^2.0.6" + "renderkid": "^3.0.0" } }, "pretty-time": { @@ -7918,13 +7147,15 @@ "requires": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -7967,11 +7198,6 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7986,9 +7212,9 @@ } }, "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, "raw-body": { "version": "2.4.0", @@ -7999,6 +7225,13 @@ "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } } }, "rc": { @@ -8033,55 +7266,36 @@ } }, "react-dev-utils": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", - "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", - "requires": { - "@babel/code-frame": "7.10.4", - "address": "1.1.2", - "browserslist": "4.14.2", - "chalk": "2.4.2", - "cross-spawn": "7.0.3", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.1.0", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "4.1.6", - "global-modules": "2.0.0", - "globby": "11.0.1", - "gzip-size": "5.1.1", - "immer": "8.0.1", - "is-root": "2.1.0", - "loader-utils": "2.0.0", + "version": "12.0.0-next.47", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0-next.47.tgz", + "integrity": "sha512-PsE71vP15TZMmp/RZKOJC4fYD5Pvt0+wCoyG3QHclto0d4FyIJI78xGRICOOThZFROqgXYlZP6ddmeybm+jO4w==", + "requires": { + "@babel/code-frame": "^7.10.4", + "address": "^1.1.2", + "browserslist": "^4.16.5", + "chalk": "^2.4.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^2.0.0", + "filesize": "^6.1.0", + "find-up": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^6.0.5", + "global-modules": "^2.0.0", + "globby": "^11.0.1", + "gzip-size": "^5.1.1", + "immer": "^9.0.6", + "is-root": "^2.1.0", + "loader-utils": "^2.0.0", "open": "^7.0.2", - "pkg-up": "3.1.0", - "prompts": "2.4.0", - "react-error-overlay": "^6.0.9", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" + "pkg-up": "^3.1.0", + "prompts": "^2.4.0", + "react-error-overlay": "7.0.0-next.54+1465357b", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.2", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", - "requires": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -8121,40 +7335,15 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } + "react-error-overlay": { + "version": "7.0.0-next.54", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-7.0.0-next.54.tgz", + "integrity": "sha512-b96CiTnZahXPDNH9MKplvt5+jD+BkxDw7q5R3jnkUXze/ux1pLv32BBZmlj0OfCUeMqyz4sAmF+0ccJGVMlpXw==" } } }, @@ -8211,11 +7400,12 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-loadable": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", - "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "version": "npm:@docusaurus/react-loadable@5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", "requires": { - "prop-types": "^15.5.0" + "@types/react": "*", + "prop-types": "^15.6.2" } }, "react-loadable-ssr-addon-v5-slorber": { @@ -8241,21 +7431,6 @@ "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - } } }, "react-router-config": { @@ -8360,34 +7535,6 @@ "@babel/runtime": "^7.8.4" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "regexp.prototype.flags": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", @@ -8454,6 +7601,36 @@ "hast-util-from-parse5": "^5.0.0", "parse5": "^5.0.0", "xtend": "^4.0.0" + }, + "dependencies": { + "hast-util-from-parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", + "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", + "requires": { + "ccount": "^1.0.3", + "hastscript": "^5.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + } + }, + "hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "requires": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + } } }, "relateurl": { @@ -8469,6 +7646,20 @@ "rehype-parse": "^6.0.2", "unified": "^8.4.2", "unist-util-visit": "^2.0.1" + }, + "dependencies": { + "unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } } }, "remark-emoji": { @@ -8547,27 +7738,45 @@ "@babel/helper-plugin-utils": "^7.10.4" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + } + } + }, + "remark-mdx-remove-exports": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz", + "integrity": "sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA==", + "requires": { + "unist-util-remove": "2.0.0" + }, + "dependencies": { + "unist-util-remove": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", + "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "unist-util-is": "^4.0.0" + } + } + } + }, + "remark-mdx-remove-imports": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz", + "integrity": "sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A==", + "requires": { + "unist-util-remove": "2.0.0" + }, + "dependencies": { + "unist-util-remove": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", + "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", + "requires": { + "unist-util-is": "^4.0.0" } } } @@ -8603,28 +7812,18 @@ "mdast-squeeze-paragraphs": "^4.0.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "requires": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "strip-ansi": "^6.0.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -8635,42 +7834,24 @@ "domutils": "^2.5.2", "entities": "^2.0.0" } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } } } }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" - }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-like": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=" }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -8685,21 +7866,6 @@ "path-parse": "^1.0.6" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -8710,11 +7876,6 @@ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -8723,15 +7884,10 @@ "lowercase-keys": "^1.0.0" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" }, "reusify": { "version": "1.0.4", @@ -8752,14 +7908,13 @@ "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" }, "rtlcss": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.3.0.tgz", - "integrity": "sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", "requires": { - "chalk": "^4.1.0", "find-up": "^5.0.0", - "mkdirp": "^1.0.4", - "postcss": "^8.2.4", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -8780,10 +7935,13 @@ "p-locate": "^5.0.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } }, "p-locate": { "version": "5.0.0", @@ -8793,6 +7951,11 @@ "p-limit": "^3.0.2" } }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8809,17 +7972,17 @@ } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", "requires": { - "tslib": "^1.9.0" + "tslib": "~2.1.0" }, "dependencies": { "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" } } }, @@ -8828,14 +7991,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8945,10 +8100,20 @@ } } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" } } }, @@ -8975,16 +8140,6 @@ "range-parser": "1.2.0" }, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", @@ -9002,11 +8157,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" } } }, @@ -9071,22 +8221,6 @@ "send": "0.17.1" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -9119,9 +8253,9 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" }, "shelljs": { "version": "0.8.4", @@ -9134,13 +8268,13 @@ } }, "shiki": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.11.tgz", - "integrity": "sha512-tjruNTLFhU0hruCPoJP0y+B9LKOmcqUhTpxn7pcJB3fa+04gFChuEmxmrUfOJ7ZO6Jd+HwMnDHgY3lv3Tqonuw==", + "version": "0.9.13", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.13.tgz", + "integrity": "sha512-WATIHzLg91SpTj6mLq5i/0NJ94/Rg1t3n9ylC8vgiJ2f5LVandqBi2vS/410SnEd6sNgPdrHLmdcCHML27pTMg==", "dev": true, "requires": { "jsonc-parser": "^3.0.0", - "onigasm": "^2.2.5", + "vscode-oniguruma": "^1.6.1", "vscode-textmate": "5.2.0" } }, @@ -9155,25 +8289,18 @@ } }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, "sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", "requires": { "@polka/url": "^1.0.0-next.20", "mime": "^2.3.1", "totalist": "^1.0.0" - }, - "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" - } } }, "sisteransi": { @@ -9204,108 +8331,6 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "sockjs": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", @@ -9316,29 +8341,6 @@ "websocket-driver": "^0.7.4" } }, - "sockjs-client": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", - "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "sort-css-media-queries": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", @@ -9355,26 +8357,14 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "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" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" }, "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9387,10 +8377,10 @@ } } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "space-separated-tokens": { "version": "1.1.5", @@ -9422,33 +8412,6 @@ "wbuf": "^1.7.3" } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -9464,25 +8427,6 @@ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -9569,11 +8513,6 @@ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -9615,16 +8554,16 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", - "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "requires": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^4.1.3", "css-tree": "^1.1.3", "csso": "^4.2.0", - "nanocolors": "^0.1.12", + "picocolors": "^1.0.0", "stable": "^0.1.8" }, "dependencies": { @@ -9632,6 +8571,11 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" } } }, @@ -9641,9 +8585,9 @@ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -9663,12 +8607,11 @@ } }, "terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", "requires": { "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", @@ -9698,9 +8641,9 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", + "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" }, "tiny-warning": { "version": "1.0.3", @@ -9712,59 +8655,11 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9831,22 +8726,22 @@ } }, "typedoc": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.5.tgz", - "integrity": "sha512-KFrWGU1iKiTGw0RcyjLNYDmhd7uICU14HgBNPmFKY/sT4Pm/fraaLyWyisst9vGTUAKxqibqoDITR7+ZcAkhHg==", + "version": "0.22.10", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.10.tgz", + "integrity": "sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA==", "dev": true, "requires": { "glob": "^7.2.0", "lunr": "^2.3.9", - "marked": "^3.0.4", + "marked": "^3.0.8", "minimatch": "^3.0.4", - "shiki": "^0.9.11" + "shiki": "^0.9.12" } }, "typedoc-plugin-markdown": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.3.tgz", - "integrity": "sha512-rWiHbEIe0oZetDIsBR24XJVxGOJ91kDcHoj2KhFKxCLoJGX659EKBQkHne9QJ4W2stGhu1fRgFyQaouSBnxukA==", + "version": "3.11.7", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.7.tgz", + "integrity": "sha512-Wm3HP5gcBOGOOTeDA8GLgw+BY+GAI31RP9Lyog21BvTaSeWUcdXls5TG1MK+XDatS2/0dup9gFO+emoyoQJm9Q==", "dev": true, "requires": { "handlebars": "^4.7.7" @@ -9859,14 +8754,14 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz", + "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==", "dev": true, "optional": true }, @@ -9915,33 +8810,18 @@ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" }, "unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", "requires": { "bail": "^1.0.0", "extend": "^3.0.0", + "is-buffer": "^2.0.0", "is-plain-obj": "^2.0.0", "trough": "^1.0.0", "vfile": "^4.0.0" } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -10028,47 +8908,6 @@ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -10098,11 +8937,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -10129,15 +8963,6 @@ "schema-utils": "^3.0.0" } }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -10146,11 +8971,6 @@ "prepend-http": "^2.0.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, "use-composed-ref": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.1.0.tgz", @@ -10218,11 +9038,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - }, "vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", @@ -10232,13 +9047,6 @@ "is-buffer": "^2.0.0", "unist-util-stringify-position": "^2.0.0", "vfile-message": "^2.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - } } }, "vfile-location": { @@ -10255,6 +9063,12 @@ "unist-util-stringify-position": "^2.0.0" } }, + "vscode-oniguruma": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz", + "integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==", + "dev": true + }, "vscode-textmate": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", @@ -10262,21 +9076,21 @@ "dev": true }, "wait-on": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", - "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", + "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", "requires": { "axios": "^0.21.1", - "joi": "^17.3.0", + "joi": "^17.4.0", "lodash": "^4.17.21", "minimist": "^1.2.5", - "rxjs": "^6.6.3" + "rxjs": "^7.1.0" } }, "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz", + "integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==", "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -10296,9 +9110,9 @@ "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" }, "webpack": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.0.tgz", - "integrity": "sha512-xc2k5MLbR1iah24Z5xUm1nBh1PZXEdUnrX6YkTSOScq/VWbl5JCLREXJzGYqEAUbIO8tZI+Dzv82lGtnuUnVCQ==", + "version": "5.64.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.4.tgz", + "integrity": "sha512-LWhqfKjCLoYJLKJY8wk2C3h77i8VyHowG3qYNZiIqD6D0ZS40439S/KVuc/PY48jp2yQmy0mhMknq8cys4jFMw==", "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -10322,19 +9136,19 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" + "watchpack": "^2.3.0", + "webpack-sources": "^3.2.2" } }, "webpack-bundle-analyzer": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz", - "integrity": "sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", "requires": { "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "chalk": "^4.1.0", - "commander": "^6.2.0", + "commander": "^7.2.0", "gzip-size": "^6.0.0", "lodash": "^4.17.20", "opener": "^1.5.2", @@ -10343,9 +9157,9 @@ }, "dependencies": { "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "gzip-size": { "version": "6.0.0", @@ -10358,399 +9172,156 @@ } }, "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz", + "integrity": "sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w==", "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "schema-utils": "^4.0.0" }, "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } } } }, "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", + "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", "requires": { - "ansi-html": "0.0.7", + "ansi-html-community": "^0.0.8", "bonjour": "^3.5.0", - "chokidar": "^2.1.8", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", + "default-gateway": "^6.0.3", + "del": "^6.0.0", "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", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^1.10.11", "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", + "strip-ansi": "^7.0.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-dev-middleware": "^5.2.1", + "ws": "^8.1.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "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" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "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" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "requires": { - "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" + "fast-deep-equal": "^3.1.3" } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "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" - } + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "requires": { - "glob": "^7.1.3" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "requires": { - "safe-buffer": "~5.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "requires": { - "has-flag": "^3.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "ansi-regex": "^6.0.1" } }, "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "requires": { - "async-limiter": "~1.0.0" - } + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz", + "integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==" } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, "webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -10761,23 +9332,26 @@ } }, "webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==" }, "webpackbar": { - "version": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", "requires": { - "ansi-escapes": "^4.3.1", "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", + "consola": "^2.15.3", "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" + "std-env": "^3.0.1" + }, + "dependencies": { + "std-env": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", + "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" + } } }, "websocket-driver": { @@ -10815,11 +9389,6 @@ "is-symbol": "^1.0.3" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -10839,14 +9408,6 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -10897,9 +9458,9 @@ } }, "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" }, "xdg-basedir": { "version": "4.0.0", @@ -10919,11 +9480,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -10934,112 +9490,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "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" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - } - } - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/docs/package.json b/docs/package.json index 987bdf93e..987151232 100644 --- a/docs/package.json +++ b/docs/package.json @@ -15,8 +15,8 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.0.0-beta.6", - "@docusaurus/preset-classic": "2.0.0-beta.6", + "@docusaurus/core": "^2.0.0-beta.9", + "@docusaurus/preset-classic": "^2.0.0-beta.9", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", @@ -27,11 +27,11 @@ "url-loader": "^4.1.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.0.0-beta.6", + "@docusaurus/module-type-aliases": "^2.0.0-beta.9", "@tsconfig/docusaurus": "^1.0.4", - "docusaurus-plugin-typedoc": "^0.16.3", - "typedoc": "^0.22.5", - "typedoc-plugin-markdown": "^3.11.3", + "docusaurus-plugin-typedoc": "^0.16.4", + "typedoc": "^0.22.10", + "typedoc-plugin-markdown": "^3.11.7", "typescript": "^4.3.5" }, "browserslist": { diff --git a/docs/sidebars.js b/docs/sidebars.js index d2cd0f733..ca3a152af 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -10,7 +10,18 @@ */ module.exports = { - 'Documentation': [ + 'Guide': [ + // { + // type: 'doc', + // label: 'Getting started', + // id: 'api/index' + // }, + { + type: 'autogenerated', + dirName: 'guide' + } + ], + 'API': [ // { // type: 'doc', // label: 'Getting started', diff --git a/docs/src/components/HomepageFeatures.tsx b/docs/src/components/HomepageFeatures.tsx index a8ae32cfa..f045b7cc9 100644 --- a/docs/src/components/HomepageFeatures.tsx +++ b/docs/src/components/HomepageFeatures.tsx @@ -15,29 +15,29 @@ type FeatureItem = { const FeatureList: FeatureItem[] = [ { - title: 'Simple API', + title: 'Easy to use', description: ( <> - The AdminAppActions library was designed to make the communcation - to the admin simple and easy. + You don't need to have knowledge about + the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. ), }, { - title: 'Extremely small footprint', + title: 'Many capabilities', description: ( <> - The library is designed to have a very small bundle size so that it - don't extend you app size much. + Throwing notifications, extending the current UI and much more. + The SDK provides a ton of extension for your ideas and solutions. ), }, { - title: 'Full type support', + title: 'Lightweight', description: ( <> - The library is completely written in Typescript so that you get the best developer experience - possible. + The whole library is completely tree-shakable, dependency-free and every functionality + can be imported granularly so that your bundle stays small and fast. ), }, diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx index a8a74a0f8..511f2e0a2 100644 --- a/docs/src/pages/index.tsx +++ b/docs/src/pages/index.tsx @@ -16,7 +16,7 @@ function HomepageHeader() {
+ to="/docs/guide"> Getting started
@@ -30,7 +30,7 @@ export default function Home(): JSX.Element { return ( + description="Admin Extension SDK for Shopware 6 apps and plugins">
diff --git a/src/channel.ts b/src/channel.ts index fc9c65d4c..174cb3c2d 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -245,12 +245,10 @@ export function subscribe( } /** - * Function overloading for these two cases: - * - * 1. case: createSender('reload', {}) ==> no option parameter required in usage - * 2. case: createSender('redirect') ==> option parameter required in usage - * - * */ + * Factory method which creates a sender so that the type don't need to be + * defined and can be hidden. Also this allows to use a send method without + * a required second argument if the default options are defined. + */ export function createSender (messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) :(messageOptions?: MessageDataType) => Promise @@ -264,10 +262,18 @@ export function createSender return (messageOptions: MessageDataType) => send(messageType, { ...baseMessageOptions, ...messageOptions}); } +/** + * Factory method which creates a handler so that the type don't need to be + * defined and can be hidden. + */ export function createHandler(messageType: MESSAGE_TYPE) { return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); } +/** + * Factory method which creates a handler so that the type don't need to be + * defined and can be hidden. + */ export function createSubscriber(messageType: MESSAGE_TYPE) { return (method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise) => subscribe(messageType, method); } diff --git a/src/index.ts b/src/index.ts index 8713307b1..dae5b2049 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,9 @@ import * as window from './window'; import * as notification from './notification'; import * as context from './context' +/** + * The main export which will be available by direct imports. + */ export { window, notification, From 7344a3023dd60904474431e9347d4addf02a8411 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 29 Nov 2021 11:17:49 +0100 Subject: [PATCH 050/189] Add emojis to feature list --- README.md | 14 +++++++------- docs/docs/guide/index.md | 12 +++++++++++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1161483c0..04f2753b8 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,13 @@ sw.notification.dispatch({ ``` ## Features -- **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. -- **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. -- **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. -- **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. -- **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. -- **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. -- **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. +- 🏗  **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. +- 🎢  **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. +- 🧰  **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. +- 🪨  **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. +- 🧭  **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. +- 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. +- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. ## Examples diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 4425a050f..5fd787a61 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -9,4 +9,14 @@ custom_edit_url: null # Introduction -The Admin Extension SDK is a NPM library for Shopware 6 apps and plugins. It contains helper functions to communicate to the Admin, execute actions, subscribing data or extending and creating the user interface. \ No newline at end of file +The Admin Extension SDK is a NPM library for Shopware 6 apps and plugins which want any easy way to extend or customize the administration. + +It contains helper functions to communicate to the Admin, execute actions, subscribing data or extending the user interface. + +- 🏗  **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. +- 🎢  **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. +- 🧰  **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. +- 🪨  **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. +- 🧭  **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. +- 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. +- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. \ No newline at end of file From 32fee06df8e5445fbefe217a3908656d17c6de77 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 29 Nov 2021 11:52:06 +0100 Subject: [PATCH 051/189] Add quick start guide --- docs/docs/guide/index.md | 69 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 5fd787a61..0cbeead0b 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -19,4 +19,71 @@ It contains helper functions to communicate to the Admin, execute actions, subsc - 🪨  **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. - 🧭  **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. - 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. -- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. \ No newline at end of file +- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. + +## Quick start + +Understand the Shopware Extension SDK in **5 minutes** by playing. + +The requirements for this quick start are: +- [development Shopware 6 instance](https://developer.shopware.com/docs/guides/installation) or a [Shopware 6 cloud instance](https://www.shopware.com/en/products/shopware-cloud/) +- [clean Shopware 6 Plugin or App](https://developer.shopware.com/docs/guides/plugins/overview) which is activated + +### App +1. Create a HTML file with following content: +```html + + + + + + + + + + + +``` + +2. Add the link to the webpage to the [manifest.xml](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide#manifest-file) of your App. For local files you can use [ngrok](https://ngrok.com/) to create a public URL for your HTML file. + +3. Visit the Administration. After you logged in you should see the notification from your app. + +Congratulation 🎉 You just create your first interaction with the Admin via the Admin Extension SDK. + +### Plugin +**Notice:** Plugins are only working on self-hosted instances. You can't use the Shopware 6 cloud instance for plugins. + +1. Create a new `index.html` file to your new plugin in the following path: `custom/plugins/yourPlugin/src/Resources/app/administration/index.html`. The HTML file should contain the following content: +```html + + + + + + + + + + + +``` + +2. Start the Shopware 6 Administration Watcher with the following command: +``` +./psh.phar administration:watch +``` + +After compiling all files a new browser window should be opened. There you should see the Administration. After logging in you should see the notification from your plugin. + +Congratulation 🎉 You just create your first interaction with the Admin via the Admin Extension SDK. \ No newline at end of file From 3f5af83e0245406a468c3bbe43f042f44e1eef1b Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 29 Nov 2021 14:05:56 +0100 Subject: [PATCH 052/189] Add dummy search --- .../what-is-admin-extension-sdk.md | 6 +++++ docs/docs/guide/index.md | 4 +++- .../{getting-started => }/installation.md | 1 + docs/docusaurus.config.js | 23 +++++++++++++++++++ docs/package.json | 1 + 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 docs/docs/guide/getting-started/what-is-admin-extension-sdk.md rename docs/docs/guide/{getting-started => }/installation.md (98%) diff --git a/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md b/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md new file mode 100644 index 000000000..33dfed6f2 --- /dev/null +++ b/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md @@ -0,0 +1,6 @@ +--- +title: "What is Admin Extension SDK?" +sidebar_position: 1 +--- + +# Introduction diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 0cbeead0b..a40abdd41 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -21,9 +21,11 @@ It contains helper functions to communicate to the Admin, execute actions, subsc - 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. - 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. +Go to [Installation](./installation.md) to get started. Or check out the quick start: + ## Quick start -Understand the Shopware Extension SDK in **5 minutes** by playing. +Understand the Shopware Extension SDK by throwing a notification. The requirements for this quick start are: - [development Shopware 6 instance](https://developer.shopware.com/docs/guides/installation) or a [Shopware 6 cloud instance](https://www.shopware.com/en/products/shopware-cloud/) diff --git a/docs/docs/guide/getting-started/installation.md b/docs/docs/guide/installation.md similarity index 98% rename from docs/docs/guide/getting-started/installation.md rename to docs/docs/guide/installation.md index 50755ebd2..11a0ec493 100644 --- a/docs/docs/guide/getting-started/installation.md +++ b/docs/docs/guide/installation.md @@ -1,5 +1,6 @@ --- title: "Installation" +sidebar_position: 1 --- # Installation diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index bd62e7f3c..9cdb0b668 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -84,6 +84,29 @@ const config = { theme: lightCodeTheme, darkTheme: darkCodeTheme, }, + algolia: { + // If Algolia did not provide you any appId, use 'BH4D9OD16A' + appId: 'YOUR_APP_ID', + + // Public API key: it is safe to commit it + apiKey: 'YOUR_SEARCH_API_KEY', + + indexName: 'YOUR_INDEX_NAME', + + // Optional: see doc section below + contextualSearch: true, + + // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. + externalUrlRegex: 'external\\.com|domain\\.com', + + // Optional: see doc section below + appId: 'YOUR_APP_ID', + + // Optional: Algolia search parameters + searchParameters: {}, + + //... other Algolia params + }, }), }; diff --git a/docs/package.json b/docs/package.json index 987151232..d683847d4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -17,6 +17,7 @@ "dependencies": { "@docusaurus/core": "^2.0.0-beta.9", "@docusaurus/preset-classic": "^2.0.0-beta.9", + "@docusaurus/theme-search-algolia": "^2.0.0-beta.9", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", "clsx": "^1.1.1", From 2a37cf73e7f5c79cbf9ed146febdfbefd6d94471 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 30 Nov 2021 15:55:22 +0100 Subject: [PATCH 053/189] Add reference documentation --- docs/docs/guide/api-reference/_category_.yml | 1 + docs/docs/guide/api-reference/context.md | 167 ++++++++++++++++++ .../api-reference/notification-example.jpg | Bin 0 -> 14770 bytes docs/docs/guide/api-reference/notification.md | 50 ++++++ .../docs/guide/getting-started/_category_.yml | 1 - .../what-is-admin-extension-sdk.md | 6 - docs/docs/guide/index.md | 2 +- docs/docusaurus.config.js | 2 +- 8 files changed, 220 insertions(+), 9 deletions(-) create mode 100644 docs/docs/guide/api-reference/_category_.yml create mode 100644 docs/docs/guide/api-reference/context.md create mode 100644 docs/docs/guide/api-reference/notification-example.jpg create mode 100644 docs/docs/guide/api-reference/notification.md delete mode 100644 docs/docs/guide/getting-started/_category_.yml delete mode 100644 docs/docs/guide/getting-started/what-is-admin-extension-sdk.md diff --git a/docs/docs/guide/api-reference/_category_.yml b/docs/docs/guide/api-reference/_category_.yml new file mode 100644 index 000000000..4c23fbdd2 --- /dev/null +++ b/docs/docs/guide/api-reference/_category_.yml @@ -0,0 +1 @@ +label: "API Reference" \ No newline at end of file diff --git a/docs/docs/guide/api-reference/context.md b/docs/docs/guide/api-reference/context.md new file mode 100644 index 000000000..66338e3a0 --- /dev/null +++ b/docs/docs/guide/api-reference/context.md @@ -0,0 +1,167 @@ +# Context + +## Language + +### Get current language + +#### Usage: +```ts +const language = await sw.context.getLanguage(); +``` + +#### Parameters +No parameters needed. + +#### Return value: +```ts +Promise<{ + languageId: string, + systemLanguageId: string +}> +``` + +#### Example value: +```ts +{ + languageId: '2fbb5fe2e29a4d70aa5854ce7ce3e20b', + systemLanguageId: '2fbb5fe2e29a4d70aa5854ce7ce3e20b' +} +``` + +### Subscribe on language changes + +#### Usage: +```ts +sw.context.subscribeLanguage(({ languageId, systemLanguageId }) => { + // do something with the callback data +}); +``` + +#### Parameters +| Name | Description | +| :------ | :------ | +| `callbackMethod` | Called every-time the language changes | + +#### Callback value: +```ts +{ + languageId: string, + systemLanguageId: string +} +``` + +#### Example callback value: +```ts +{ + languageId: '2fbb5fe2e29a4d70aa5854ce7ce3e20b', + systemLanguageId: '2fbb5fe2e29a4d70aa5854ce7ce3e20b' +} +``` + +## Environment + +### Get current environment + +#### Usage: +```ts +const environment = await sw.context.getEnvironment(); +``` + +#### Parameters +No parameters needed. + +#### Return value: +```ts +Promise<'development' | 'production' | 'testing'> +``` + +#### Example value: +```ts +'development' +``` + +## Locale + +### Get current locale + +#### Usage: +```ts +const locale = await sw.context.getLocale(); +``` + +#### Parameters +No parameters needed. + +#### Return value: +```ts +Promise<{ + locale: string, + fallbackLocale: string +}> +``` + +#### Example value: +```ts +{ + locale: 'de-DE', + fallbackLocale: 'en-GB' +} +``` + +### Subscribe on locale changes + +#### Usage: +```ts +sw.context.subscribeLocale(({ locale, fallbackLocale }) => { + // do something with the callback data +}); +``` + +#### Parameters +| Name | Description | +| :------ | :------ | +| `callbackMethod` | Called every-time the locale changes | + +#### Callback value: +```ts +{ + locale: string, + fallbackLocale: string +} +``` + +#### Example callback value: +```ts +{ + locale: 'de-DE', + fallbackLocale: 'en-GB' +} +``` + +## Currency + +### Get current currency + +#### Usage: +```ts +const currency = await sw.context.getCurrency(); +``` + +#### Parameters +No parameters needed. + +#### Return value: +```ts +Promise<{ + systemCurrencyId: string, + systemCurrencyISOCode: string +}> +``` + +#### Example value: +```ts +{ + systemCurrencyId: 'EUR', + systemCurrencyISOCode: 'b7d2554b0ce847cd82f3ac9bd1c0dfca' +} +``` \ No newline at end of file diff --git a/docs/docs/guide/api-reference/notification-example.jpg b/docs/docs/guide/api-reference/notification-example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d666767b04189203f844d50d6043c585a186d90c GIT binary patch literal 14770 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 literal 0 HcmV?d00001 diff --git a/docs/docs/guide/api-reference/notification.md b/docs/docs/guide/api-reference/notification.md new file mode 100644 index 000000000..7b4f7a3c8 --- /dev/null +++ b/docs/docs/guide/api-reference/notification.md @@ -0,0 +1,50 @@ +# Notification + +### Dispatch a notification + +![notification example](./notification-example.jpg) + +#### Usage: +```ts +function alertYes() { + alert('Yes'); +} + +sw.notification.dispatch({ + title: 'Your title', + message: 'Your message', + variant: 'success', + appearance: 'notification', + growl: true, + actions: [ + { + label: 'Yes', + method: alertYes + }, + { + label: 'No', + method: () => { + alert('No') + } + }, + { + label: 'Cancel', + route: 'https://www.shopware.com', + disabled: false, + } + ] +}) +``` + +#### Parameters: +| Name | Required | Default | Description | +| :------ | :------ | :------ | :------ | +| `title` | true | | The title of the notification | +| `message` | true | | The message of the notification | +| `variant` | false | `info` | Change the variant of the notification. Available variants are `success`, `info`, `warning` and `error`.| +| `appearance` | false | `notification` | Change the look of the notification. Use `system` for technical application notifications. Otherwise use `notification`.| +| `growl` | false | `true` | Should the notification directly be visible? | +| `actions` | false | `[]` | Add buttons to the notification. Each button with a `label` can trigger a `method` or open a `route` (internal route or external link). Buttons can also be disabled with the attribute `disabled`. | + +#### Return value: +Returns a Promise without data. diff --git a/docs/docs/guide/getting-started/_category_.yml b/docs/docs/guide/getting-started/_category_.yml deleted file mode 100644 index 85ba35786..000000000 --- a/docs/docs/guide/getting-started/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Getting started" \ No newline at end of file diff --git a/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md b/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md deleted file mode 100644 index 33dfed6f2..000000000 --- a/docs/docs/guide/getting-started/what-is-admin-extension-sdk.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "What is Admin Extension SDK?" -sidebar_position: 1 ---- - -# Introduction diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index a40abdd41..83099f0a2 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -21,7 +21,7 @@ It contains helper functions to communicate to the Admin, execute actions, subsc - 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. - 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. -Go to [Installation](./installation.md) to get started. Or check out the quick start: +Go to [Installation](./getting-started/installation) to get started. Or check out the quick start: ## Quick start diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 9cdb0b668..18c6d7dc5 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -100,7 +100,7 @@ const config = { externalUrlRegex: 'external\\.com|domain\\.com', // Optional: see doc section below - appId: 'YOUR_APP_ID', + // appId: 'YOUR_APP_ID', // Optional: Algolia search parameters searchParameters: {}, From 3531d2bf4d14d6dc6e4236b20a6249ff5db64bda Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 30 Nov 2021 15:55:43 +0100 Subject: [PATCH 054/189] Bump up version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf17fc990..2d1885866 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.17", + "version": "0.0.18", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 1d8ef6b9eadbcc28d4d10365306306b3e1320bb7 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 30 Nov 2021 16:04:41 +0100 Subject: [PATCH 055/189] Fix markdown link --- docs/docs/guide/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 83099f0a2..48bfd6d9a 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -21,7 +21,7 @@ It contains helper functions to communicate to the Admin, execute actions, subsc - 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. - 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. -Go to [Installation](./getting-started/installation) to get started. Or check out the quick start: +Go to [Installation](./installation) to get started. Or check out the quick start: ## Quick start From df3e97eb707499445f61c60961d1783f797c92f0 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 1 Dec 2021 08:01:24 +0100 Subject: [PATCH 056/189] Add documentation for Window API --- .../{ => assets}/notification-example.jpg | Bin docs/docs/guide/api-reference/notification.md | 2 +- docs/docs/guide/api-reference/window.md | 35 ++++++++++++++++++ docs/docs/guide/installation.md | 8 +++- 4 files changed, 42 insertions(+), 3 deletions(-) rename docs/docs/guide/api-reference/{ => assets}/notification-example.jpg (100%) create mode 100644 docs/docs/guide/api-reference/window.md diff --git a/docs/docs/guide/api-reference/notification-example.jpg b/docs/docs/guide/api-reference/assets/notification-example.jpg similarity index 100% rename from docs/docs/guide/api-reference/notification-example.jpg rename to docs/docs/guide/api-reference/assets/notification-example.jpg diff --git a/docs/docs/guide/api-reference/notification.md b/docs/docs/guide/api-reference/notification.md index 7b4f7a3c8..2fb912790 100644 --- a/docs/docs/guide/api-reference/notification.md +++ b/docs/docs/guide/api-reference/notification.md @@ -2,7 +2,7 @@ ### Dispatch a notification -![notification example](./notification-example.jpg) +![notification example](./assets/notification-example.jpg) #### Usage: ```ts diff --git a/docs/docs/guide/api-reference/window.md b/docs/docs/guide/api-reference/window.md new file mode 100644 index 000000000..ec1b8194c --- /dev/null +++ b/docs/docs/guide/api-reference/window.md @@ -0,0 +1,35 @@ +# Window + +### Redirect to another URL + +#### Usage: +```ts +sw.window.redirect({ + url: 'https://www.shopware.com, + newTab: true +}) +``` + +#### Parameters: +| Name | Required | Default | Description | +| :------ | :------ | :------ | :------ | +| `url` | true | | The title of the notification | +| `newTab` | false | false | The message of the notification | + +#### Return value: +Returns a Promise without data. + +### Reload page + +Useful for development. You can trigger a page reload on file changes. + +#### Usage: +```ts +sw.window.reload() +``` + +#### Parameters: +No parameters required. + +#### Return value: +Returns a Promise without data. diff --git a/docs/docs/guide/installation.md b/docs/docs/guide/installation.md index 11a0ec493..485ce77d0 100644 --- a/docs/docs/guide/installation.md +++ b/docs/docs/guide/installation.md @@ -17,11 +17,15 @@ npm i --save @shopware-ag/admin-extension-sdk and import it in your app: ```js -// import everything +// import everything as one big object import * as sw from '@shopware-ag/admin-extension-sdk'; -// or import only needed functionality +// or import only needed functionality scope import { notification } from '@shopware-ag/admin-extension-sdk'; + +// or the direct method (here with an alias) +import { dispatch as dispatchNotification } from '@shopware-ag/admin-extension-sdk/es/notification' + ``` ## Using CDN: From 7563c78add66d4fbf1c16c3049ba5d84130319e3 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 1 Dec 2021 08:07:05 +0100 Subject: [PATCH 057/189] Update search configuration --- docs/docusaurus.config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 18c6d7dc5..b84a604f9 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -86,18 +86,18 @@ const config = { }, algolia: { // If Algolia did not provide you any appId, use 'BH4D9OD16A' - appId: 'YOUR_APP_ID', + appId: 'BH4D9OD16A', // Public API key: it is safe to commit it apiKey: 'YOUR_SEARCH_API_KEY', - indexName: 'YOUR_INDEX_NAME', + indexName: 'Shopware_Admin_Extension_SDK', // Optional: see doc section below contextualSearch: true, // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. - externalUrlRegex: 'external\\.com|domain\\.com', + // externalUrlRegex: 'external\\.com|domain\\.com', // Optional: see doc section below // appId: 'YOUR_APP_ID', From faa64fc428e7e1a12464b5cff32ad2aad6200247 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 2 Dec 2021 09:51:15 +0100 Subject: [PATCH 058/189] Add usage to documentation --- docs/docs/guide/api-reference/_category_.yml | 3 +- .../docs/guide/getting-started/_category_.yml | 2 + .../guide/getting-started/installation.md | 77 +++++++++++++++++++ docs/docs/guide/getting-started/usage.md | 58 ++++++++++++++ docs/docs/guide/index.md | 2 +- docs/docs/guide/installation.md | 49 ------------ docs/docs/guide/internals/_category_.yml | 2 + .../guide/internals/admin-communication.md | 1 + package.json | 1 + 9 files changed, 144 insertions(+), 51 deletions(-) create mode 100644 docs/docs/guide/getting-started/_category_.yml create mode 100644 docs/docs/guide/getting-started/installation.md create mode 100644 docs/docs/guide/getting-started/usage.md delete mode 100644 docs/docs/guide/installation.md create mode 100644 docs/docs/guide/internals/_category_.yml create mode 100644 docs/docs/guide/internals/admin-communication.md diff --git a/docs/docs/guide/api-reference/_category_.yml b/docs/docs/guide/api-reference/_category_.yml index 4c23fbdd2..1a58cd9ba 100644 --- a/docs/docs/guide/api-reference/_category_.yml +++ b/docs/docs/guide/api-reference/_category_.yml @@ -1 +1,2 @@ -label: "API Reference" \ No newline at end of file +label: "API Reference" +position: 50 \ No newline at end of file diff --git a/docs/docs/guide/getting-started/_category_.yml b/docs/docs/guide/getting-started/_category_.yml new file mode 100644 index 000000000..c45b63abc --- /dev/null +++ b/docs/docs/guide/getting-started/_category_.yml @@ -0,0 +1,2 @@ +label: "Getting started" +position: 10 \ No newline at end of file diff --git a/docs/docs/guide/getting-started/installation.md b/docs/docs/guide/getting-started/installation.md new file mode 100644 index 000000000..addf948fe --- /dev/null +++ b/docs/docs/guide/getting-started/installation.md @@ -0,0 +1,77 @@ +--- +title: "Installation" +sidebar_position: 1 +--- + +# Installation + +## Prerequisites: + +You need to have an working [app](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide) or [plugin](https://developer.shopware.com/docs/guides/plugins/plugins/plugin-base-guide) installed on your Shopware 6 instance. + +## Prepare your app or plugin + +### App: + +You need to create a HTML page with an JS file for your app. This page can be located anywhere. But it needs to be accessible from an URL. +For development purposes you can create a [local server](https://github.com/tapio/live-server) which will be [exposed publicly](https://ngrok.com/). + +Then you need to add the `` field to the `` section of the [manifest](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide#manifest-file) file. This field should contain the public URL of your app. + +In your new HTML file you need inject a JS file. This file can use the Admin Extension SDK via CDN or if you want to use a build tools then you +can use the NPM package. + +### Plugin: +**Notice:** Plugins are only working on self-hosted instances. You can't use the Shopware 6 cloud instance for plugins. + +Open the path `custom/plugins/yourPlugin/src/Resources/app/administration`. This is the base path for all new admin files. + +Create a new base `index.html` file. This file will be automatically injected to the administration when the plugin is activated. Then you need to create a JavaScript file in the subfolder `src/main.js`. This file will be automatically injected into the created HTML file on the fly. + +For plugins the best way is to install the SDK via NPM. Before you can do this you need to initialize a new NPM project in your plugin folder with +`npm init --yes`. + +## Installing the SDK: + +The preferred way to use the library is using it as a NPM package. This guarantees the smallest bundle size for your apps and plugins because only necessary function are bundled. + +The CDN method is easy to use and fast to implement. It is good for quick prototyping or if you don't want to work with building tools. + +### Using NPM (require bundling): +Install it to your `package.json` +``` +npm i --save @shopware-ag/admin-extension-sdk +``` + +and import it in your app or plugin: +```js +// import everything as one big object +import * as sw from '@shopware-ag/admin-extension-sdk'; + +// or import only needed functionality scope +import { notification } from '@shopware-ag/admin-extension-sdk'; + +// or the direct method (here with an alias) +import { dispatch as dispatchNotification } from '@shopware-ag/admin-extension-sdk/es/notification' + +``` + +### Using CDN: +Import the source from the CDN + +```js +// use the latest version available + + +// use a fix version (example here: 1.2.3) + +``` + +and then you can access it with the global variable `sw`. + +```js +sw.notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' +}) +``` \ No newline at end of file diff --git a/docs/docs/guide/getting-started/usage.md b/docs/docs/guide/getting-started/usage.md new file mode 100644 index 000000000..b0705a0c0 --- /dev/null +++ b/docs/docs/guide/getting-started/usage.md @@ -0,0 +1,58 @@ +--- +sidebar_position: 2 +--- + +# Usage + +After [installing](./installation) the Admin Extension SDK you can use it directly in your Apps and Plugins. + +## Adding functionality to new apps or plugins +You can use the SDK features directly in your JS file. Just import the specific feature (NPM way) or use the method in the +`sw` object (CDN way). You can find all features in the API Reference documentation. + +### NPM example: +```js +// import notification toolkit from the SDK +import { notification } from '@shopware-ag/admin-extension-sdk'; + +// dispatch a new notification +notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' +}) +``` + +### CDN example: +```js +// access the "notification" toolkit in the global "sw" object and dispatch a new notification +sw.notification.dispatch({ + title: 'My first notification', + message: 'This was really easy to do' +}) +``` + + +## Adding functionality to existing plugins +Shopware 6 has a rich plugin extension system for the admin based on Twig and component overriding and extending. This +is very powerful but also has a steep learning curve. You can migrate gradually to the new Admin Extension SDK if you want. +Both approaches can work together so that you can start converting only some parts of your plugins in the beginning. +As more features come to the SDK the more parts you can convert. This will simplify your plugin in the long term usage. + +### Example: + +```js +// Use existing extension capabilties +Shopware.Component.override('sw-dashboard-index', { + methods: { + async createdComponent() { + // Can also use Admin Extension SDK features + await sw.notification.dispatch({ + title: 'Hello from the plugin', + message: 'I am combining the existing approach with the new SDK approach', + }) + + this.$super('createdComponent'); + } + } +}); +``` \ No newline at end of file diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 48bfd6d9a..83099f0a2 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -21,7 +21,7 @@ It contains helper functions to communicate to the Admin, execute actions, subsc - 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. - 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. -Go to [Installation](./installation) to get started. Or check out the quick start: +Go to [Installation](./getting-started/installation) to get started. Or check out the quick start: ## Quick start diff --git a/docs/docs/guide/installation.md b/docs/docs/guide/installation.md deleted file mode 100644 index 485ce77d0..000000000 --- a/docs/docs/guide/installation.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Installation" -sidebar_position: 1 ---- - -# Installation - -The preferred way to use the library is using it as a NPM package. This guarantees the smallest bundle size for your apps and plugins because only necessary function are bundled. - -The CDN method is easy to use and fast to implement. It is good for quick prototyping or if you don't want to work with building tools. - -## Using NPM: -Install it to your `package.json` -``` -npm i --save @shopware-ag/admin-extension-sdk -``` - -and import it in your app: -```js -// import everything as one big object -import * as sw from '@shopware-ag/admin-extension-sdk'; - -// or import only needed functionality scope -import { notification } from '@shopware-ag/admin-extension-sdk'; - -// or the direct method (here with an alias) -import { dispatch as dispatchNotification } from '@shopware-ag/admin-extension-sdk/es/notification' - -``` - -## Using CDN: -Import the source from the CDN - -```js -// use the latest version available - - -// use a fix version (example here: 1.2.3) - -``` - -and then you can access it with the global variable `sw`. - -```js -sw.notification.dispatch({ - title: 'My first notification', - message: 'This was really easy to do' -}) -``` \ No newline at end of file diff --git a/docs/docs/guide/internals/_category_.yml b/docs/docs/guide/internals/_category_.yml new file mode 100644 index 000000000..f06efe38d --- /dev/null +++ b/docs/docs/guide/internals/_category_.yml @@ -0,0 +1,2 @@ +label: "Internals" +position: 100 \ No newline at end of file diff --git a/docs/docs/guide/internals/admin-communication.md b/docs/docs/guide/internals/admin-communication.md new file mode 100644 index 000000000..33a3387c8 --- /dev/null +++ b/docs/docs/guide/internals/admin-communication.md @@ -0,0 +1 @@ +# Admin communication \ No newline at end of file diff --git a/package.json b/package.json index 2d1885866..9235ba7cb 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "build:cdn": "vite build --mode cdn", "doc": "cd docs && npm run build", "doc:dev": "cd docs && npm run start", + "doc:install-dependencies": "cd ./docs && npm ci", "lint": "npm run lint:types && npm run lint:eslint", "lint:types": "tsc --noEmit", "lint:eslint": "eslint ./src --ext .ts", From b089b71cb331b3aefabe3c6ebf86a12d7830fa21 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Thu, 2 Dec 2021 14:58:33 +0100 Subject: [PATCH 059/189] Add documentation about the internal logic --- .../guide/internals/admin-communication.md | 1 - .../assets/post-message-communication.png | Bin 0 -> 11413 bytes docs/docs/guide/internals/how-it-works.md | 120 ++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) delete mode 100644 docs/docs/guide/internals/admin-communication.md create mode 100644 docs/docs/guide/internals/assets/post-message-communication.png create mode 100644 docs/docs/guide/internals/how-it-works.md diff --git a/docs/docs/guide/internals/admin-communication.md b/docs/docs/guide/internals/admin-communication.md deleted file mode 100644 index 33a3387c8..000000000 --- a/docs/docs/guide/internals/admin-communication.md +++ /dev/null @@ -1 +0,0 @@ -# Admin communication \ No newline at end of file diff --git a/docs/docs/guide/internals/assets/post-message-communication.png b/docs/docs/guide/internals/assets/post-message-communication.png new file mode 100644 index 0000000000000000000000000000000000000000..dffdea519beba523d10009067286318092542d2c GIT binary patch literal 11413 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 XPOI;I+3Wegp^!@QYUn~)vw(jCVyz8) literal 0 HcmV?d00001 diff --git a/docs/docs/guide/internals/how-it-works.md b/docs/docs/guide/internals/how-it-works.md new file mode 100644 index 000000000..0b53e64ba --- /dev/null +++ b/docs/docs/guide/internals/how-it-works.md @@ -0,0 +1,120 @@ +# How it works + +The Admin Extension SDK provides wrapper methods for a better development experience. It abstracts and hides the more +complex logic behind a simple API. This makes it easier for app and plugin developer to create their solutions and focus +more on business details instead of technical details. + +## Admin communication + +Technically the apps and plugins are communicating to the administration via the [postMessage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). It is a secure communication channel between different windows. In most cases it will be used to communicate +from a iFrame to the main window and the other way around. + +The Extension SDK works in the same way but it uses a hybrid approach. Every method is callable within a iFrame and also +from the same window. This allows apps (in iFrames) and plugins (in the same window) to use the same API. + +![postMessage communication](./assets/post-message-communication.png) + +Normally the postMessage API is very limited and not very friendly to use. You can send string values from one window to +another. This isn't very handy to use for smooth development. To provide a smoother experience we wrote some helper methods to +make working with the postMessage API a breeze. + +The helper methods can be found in the `channel` file. It has different methods for easier communication. The most important ones are `send` and `handle`. They are responsible for sending and handling the data. + +Do give you an better understanding how it works we go trough an example. + +### Example workflow + +Let's imagine that a app or plugin calls the `context.getLanguage` method from the Extension SDK: + +```js +// from app/plugin +const language = await sw.context.getLanguage(); +``` + +What happens in the background? The method is a wrapper for the `send` method in the `channel`. When you use it it will call `send` with a predefined type: + +```js +// from app/plugin +send('contextLanguage', {}); +``` + +Each message has an unique type. They are hidden for plugin and app developers and are only responsible for the underlying handling. With the unique type we know in the admin what type of request it is and what response it expects. + +The `send` method is doing now some magic in the background. It creates a data object with following properties: + +```js +{ + _type: 'contextLanguage', + _data: {}, + _callbackId: 'aRand0mGeneratedUniqueId' +} +``` + +The `_type` property is for the recognition of the request type. The `_data` property is custom data which will be added by the app or plugin. E.g. the title, message and more for a notification. And the `_callbackId` is needed so that the administration can send the data back with the ID and the sender can recognize it and use the data. + +This object will be sent as a stringified JSON object to the administration window via the postMessage API. + + + +Now let's have a look at what needs to happen on the administration side. + +```js +// at administration +handle('contextLanguage', () => { + return { + languageId: Shopware.Context.api.languageId, + systemLanguageId: Shopware.Context.api.systemLanguageId, + }; +}); +``` + +It uses the `handle` method which is also a helper method of the `channel`. You see that the type matches the sender type. And in the second argument it provides a method which returns the data. + +This method reacts to every `contextLanguage` request and send the data values back to the source of the request. It also creates a object with meta information which are needed for the original `send` window: +```js +{ + _type: 'contextLanguage', + _response: { languageId: '1a2b3c...', systemLanguageId: '9f8g7h...', }, + _callbackId: 'aRand0mGeneratedUniqueId' +} +``` + +The source who will send the request is adding a new event listener before it sends the message. This event listener listen to all incoming messages and if any of these messages is matching the type and the callback ID of the sent message then it will handle the data. + +In our case it will get back an stringified object with the language information. These will parsed and returned to the first method call: + +```js +// from app/plugin +const language = await sw.context.getLanguage(); + +// language = { languageId: '1a2b3c...', systemLanguageId: '9f8g7h...', } +``` + +And this was it! The app or plugin has got the data from the administration. It looks like a simple call. But it does a lot in the background. + +## Sending methods +In normal cases you can't add methods to JSON objects which will get stringified. In our case we think it would makes the life of many developers easier if they can also use their methods in the calls. + +To handle these edge-case we are converting the methods to information objects like this: +```js +{ + __type__: '__function__', + id: 'theUniqueFunctionId' // will be generated uniquely +} +``` + +The method will be saved in a `methodRegistry` where the unique ID can be used as an identifier. + +The receiver of the object convert this object back to a method which would trigger the original method. This can't be done directly because we do not have direct access to the method. To solve this problem we send a special postMessage call to the original source. This call contains all arguments of the called method and the unique ID of the method: + +```js +send('__function__', { + args: args, + id: id, +}) +``` + +The sender gets the message and execute the method with the matching ID with the given arguments. The return value will be then sent back to the converted method in the receiver. + +This complex logic is also abstracted. To use it: just add methods to +the data. It will be converted and handled automatically. \ No newline at end of file From 440b2d18eda9ba5becd0b05843636d9860c27088 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 6 Dec 2021 15:39:18 +0100 Subject: [PATCH 060/189] Add API for card extensions --- src/channel.ts | 20 +++++++++++++++----- src/index.ts | 8 ++++++++ src/messages.types.ts | 2 ++ src/ui/card/index.ts | 6 ++++++ src/ui/component/index.ts | 29 +++++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 src/ui/card/index.ts create mode 100644 src/ui/component/index.ts diff --git a/src/channel.ts b/src/channel.ts index 174cb3c2d..fcf5225ce 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -249,13 +249,23 @@ export function subscribe( * defined and can be hidden. Also this allows to use a send method without * a required second argument if the default options are defined. */ - export function createSender - (messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) - :(messageOptions?: MessageDataType) => Promise + +// SENDER WITH OPTIONAL ARGUMENTS (WHEN ALL BASE ARGUMENTS ARE DEFINED) +export function createSender +(messageType: MESSAGE_TYPE, baseMessageOptions: MessageDataType) +:(messageOptions?: MessageDataType) => Promise + +// SENDER WITH PARTIAL ARGUMENTS (ARGUMENTS DEFINED IN BASE OPTIONS ARE OMITTED) +export function createSender>> +(messageType: MESSAGE_TYPE, baseMessageOptions: BASE_OPTIONS) +:(messageOptions: Omit, keyof BASE_OPTIONS>) => Promise + +// SENDER WITH FULL ARGUMENTS (WHEN NO BASE ARGUMENTS ARE DEFINED) export function createSender - (messageType: MESSAGE_TYPE) - :(messageOptions: MessageDataType) => Promise +(messageType: MESSAGE_TYPE) +:(messageOptions: MessageDataType) => Promise +// MAIN FUNCTION WHICH INCLUDES ALL POSSIBILITES export function createSender (messageType: MESSAGE_TYPE, baseMessageOptions?: MessageDataType) { diff --git a/src/index.ts b/src/index.ts index dae5b2049..5408b748a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,13 @@ import * as window from './window'; import * as notification from './notification'; import * as context from './context' +import * as component from './ui/component' +import * as card from './ui/card' + +const ui = { + component, + card, +} /** * The main export which will be available by direct imports. @@ -9,4 +16,5 @@ export { window, notification, context, + ui, } \ No newline at end of file diff --git a/src/messages.types.ts b/src/messages.types.ts index 9655d7906..e7f83a64d 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -1,6 +1,7 @@ import { notificationDispatch } from './notification/index'; import { windowRedirect, windowReload } from './window/index'; import { contextLanguage, contextEnvironment, contextLocale, contextCurrency } from './context/index'; +import { uiComponentRender } from './ui/component/index'; /** @@ -16,6 +17,7 @@ export type ShopwareMessageTypes = { contextLocale: contextLocale, contextCurrency: contextCurrency, getPageTitle: getPageTitle, + uiComponentRender: uiComponentRender, __function__: __function__, __registerWindow__: __registerWindow__, _multiply: _multiply, diff --git a/src/ui/card/index.ts b/src/ui/card/index.ts new file mode 100644 index 000000000..6184ed8d6 --- /dev/null +++ b/src/ui/card/index.ts @@ -0,0 +1,6 @@ +import { createSender } from '../../channel'; + +export const uiCard = (positionId: string) => ({ + addComponentBefore: createSender('uiComponentRender', { positionId: positionId + '__before' }), + addComponentAfter: createSender('uiComponentRender', { positionId: positionId + '__after' }), +}); \ No newline at end of file diff --git a/src/ui/component/index.ts b/src/ui/component/index.ts new file mode 100644 index 000000000..958f164d8 --- /dev/null +++ b/src/ui/component/index.ts @@ -0,0 +1,29 @@ +import { createSender } from '../../channel'; + +export const render = createSender('uiComponentRender'); + +/** + * Get the current content language + */ + export type uiComponentRender = + { + responseType: void, + component: string, + positionId: string, + locationId: string, + props: unknown, + } & + ( + cardComponentRender + /** + * Here you can add multiple component types. Add with "|" so that only one will get used. + */ +) + +interface cardComponentRender { + component: 'card', + props: { + title?: string, + subtitle?: string, + }, +} \ No newline at end of file From c6795c07d55d4cae9a43e189fab08c8605f37a2a Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 7 Dec 2021 08:07:07 +0100 Subject: [PATCH 061/189] Change proprety nesting in ui component renderer --- package.json | 2 +- src/ui/component/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9235ba7cb..1ddaeefe4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.18", + "version": "0.0.19", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/ui/component/index.ts b/src/ui/component/index.ts index 958f164d8..fa1f889dc 100644 --- a/src/ui/component/index.ts +++ b/src/ui/component/index.ts @@ -10,7 +10,6 @@ export const render = createSender('uiComponentRender'); responseType: void, component: string, positionId: string, - locationId: string, props: unknown, } & ( @@ -25,5 +24,6 @@ interface cardComponentRender { props: { title?: string, subtitle?: string, + locationId: string, }, } \ No newline at end of file From ab6e9bd6b453566eaa1ca6c32f01527840d9a9da Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 7 Dec 2021 08:45:44 +0100 Subject: [PATCH 062/189] Fix component property --- package.json | 2 +- src/index.ts | 2 +- src/ui/card/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1ddaeefe4..8633b86a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.19", + "version": "0.0.20", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/index.ts b/src/index.ts index 5408b748a..62c5f0fd1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,7 @@ import * as window from './window'; import * as notification from './notification'; import * as context from './context' import * as component from './ui/component' -import * as card from './ui/card' +import card from './ui/card' const ui = { component, diff --git a/src/ui/card/index.ts b/src/ui/card/index.ts index 6184ed8d6..f227c04d1 100644 --- a/src/ui/card/index.ts +++ b/src/ui/card/index.ts @@ -1,6 +1,6 @@ import { createSender } from '../../channel'; -export const uiCard = (positionId: string) => ({ +export default (positionId: string) => ({ addComponentBefore: createSender('uiComponentRender', { positionId: positionId + '__before' }), addComponentAfter: createSender('uiComponentRender', { positionId: positionId + '__after' }), }); \ No newline at end of file From 07d8c73ceffbd4f8a0dff3684bc8e71c811c1260 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 8 Dec 2021 08:58:57 +0100 Subject: [PATCH 063/189] Optimize documentation grammar and introduce componentSections --- .gitignore | 1 + README.md | 14 ++--- docs/docs/guide/api-reference/notification.md | 18 +++--- docs/docs/guide/api-reference/window.md | 4 +- .../guide/getting-started/installation.md | 16 ++--- docs/docs/guide/getting-started/usage.md | 14 ++--- docs/docs/guide/index.md | 42 ++++++------- docs/docs/guide/internals/how-it-works.md | 60 +++++++++---------- src/index.ts | 6 +- src/messages.types.ts | 4 +- src/ui/card/index.ts | 6 -- .../{component => componentSection}/index.ts | 6 +- 12 files changed, 92 insertions(+), 99 deletions(-) delete mode 100644 src/ui/card/index.ts rename src/ui/{component => componentSection}/index.ts (72%) diff --git a/.gitignore b/.gitignore index 2f6ec8c52..cafc7f64a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist dist-ssr dist-example *.local +.idea coverage docs/docs/api es diff --git a/README.md b/README.md index 04f2753b8..41389507d 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,13 @@ sw.notification.dispatch({ ``` ## Features -- 🏗  **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. -- 🎢  **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. -- 🧰  **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. -- 🪨  **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. -- 🧭  **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. -- 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. -- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. +- 🏗 **Works with Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. API usage is identical. +- 🎢 **Shallow learning curve:** you don't need to have extensive knowledge about the internals of the Shopware 6 Administration. Our SDK hides the complicated stuff behind a beautiful API. +- 🧰 **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will gradually be extended, providing more possibilities and flexibility for your ideas and solutions. +- 🪨 **A stable API with great backwards compatibility:** don't fear Shopware updates anymore. Breaking changes in this SDK are an exception. If you use the SDK, your apps and plugins will stay stable for a longer time, without any need for code maintenance. +- 🧭 **Type safety:** the whole SDK is written in TypeScript which provides great autocompletion support and more safety for your apps and plugins. +- 💙 **Developer experience:** have a great development experience right from the start. And it will become better and better in the future. +- 🪶 **Lightweight:** the whole library is completely tree-shakable and dependency-free. Every functionality can be imported granularly to keep your bundle as small and fast as possible. ## Examples diff --git a/docs/docs/guide/api-reference/notification.md b/docs/docs/guide/api-reference/notification.md index 2fb912790..1bd4fbb59 100644 --- a/docs/docs/guide/api-reference/notification.md +++ b/docs/docs/guide/api-reference/notification.md @@ -37,14 +37,14 @@ sw.notification.dispatch({ ``` #### Parameters: -| Name | Required | Default | Description | -| :------ | :------ | :------ | :------ | -| `title` | true | | The title of the notification | -| `message` | true | | The message of the notification | -| `variant` | false | `info` | Change the variant of the notification. Available variants are `success`, `info`, `warning` and `error`.| -| `appearance` | false | `notification` | Change the look of the notification. Use `system` for technical application notifications. Otherwise use `notification`.| -| `growl` | false | `true` | Should the notification directly be visible? | -| `actions` | false | `[]` | Add buttons to the notification. Each button with a `label` can trigger a `method` or open a `route` (internal route or external link). Buttons can also be disabled with the attribute `disabled`. | +| Name | Required | Default | Description | +|:-------------|:---------|:---------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `title` | true | | Defines a notification's **title**. | +| `message` | true | | Defines a notification's main expression or message to the user. | +| `variant` | false | `info` | Defines the notification type. Available `variant` types are `success`, `info`, `warning` and `error`. | +| `appearance` | false | `notification` | Changes the style of a notification. Use `system` for technical notifications thrown by the application. Otherwise keep the default value `notification`. | +| `growl` | false | `true` | Displays a notification that is overlaying any module. Use `false` to display the notification in the notification center (bell symbol) only. | +| `actions` | false | `[]` | Adds clickable buttons to the notification. Each button with a `label` can trigger a `method` or open a `route` (internal route or external link). Buttons can also be disabled using the attribute `disabled`. | #### Return value: -Returns a Promise without data. +Returns a promise without data. diff --git a/docs/docs/guide/api-reference/window.md b/docs/docs/guide/api-reference/window.md index ec1b8194c..8ee4a4e0c 100644 --- a/docs/docs/guide/api-reference/window.md +++ b/docs/docs/guide/api-reference/window.md @@ -17,7 +17,7 @@ sw.window.redirect({ | `newTab` | false | false | The message of the notification | #### Return value: -Returns a Promise without data. +Returns a promise without data. ### Reload page @@ -32,4 +32,4 @@ sw.window.reload() No parameters required. #### Return value: -Returns a Promise without data. +Returns a promise without data. diff --git a/docs/docs/guide/getting-started/installation.md b/docs/docs/guide/getting-started/installation.md index addf948fe..e239f863a 100644 --- a/docs/docs/guide/getting-started/installation.md +++ b/docs/docs/guide/getting-started/installation.md @@ -13,7 +13,7 @@ You need to have an working [app](https://developer.shopware.com/docs/guides/plu ### App: -You need to create a HTML page with an JS file for your app. This page can be located anywhere. But it needs to be accessible from an URL. +You need to create a HTML page with an JS file for your app. This page can be located anywhere, but it needs to be accessible from an URL. For development purposes you can create a [local server](https://github.com/tapio/live-server) which will be [exposed publicly](https://ngrok.com/). Then you need to add the `` field to the `` section of the [manifest](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide#manifest-file) file. This field should contain the public URL of your app. @@ -22,20 +22,20 @@ In your new HTML file you need inject a JS file. This file can use the Admin Ext can use the NPM package. ### Plugin: -**Notice:** Plugins are only working on self-hosted instances. You can't use the Shopware 6 cloud instance for plugins. +**Notice:** Plugins will work on self-hosted instances only. You won't be able to use a Shopware 6 cloud instance with plugins. Open the path `custom/plugins/yourPlugin/src/Resources/app/administration`. This is the base path for all new admin files. -Create a new base `index.html` file. This file will be automatically injected to the administration when the plugin is activated. Then you need to create a JavaScript file in the subfolder `src/main.js`. This file will be automatically injected into the created HTML file on the fly. +Create a new base `index.html` file. This file will be automatically injected to the administration when the plugin is activated. Then you need to create a JavaScript file in the subfolder `src/main.js`. This file will be automatically injected into the created HTML file. -For plugins the best way is to install the SDK via NPM. Before you can do this you need to initialize a new NPM project in your plugin folder with +For plugins the best way is to install the SDK via NPM. But first you need to initialize a new NPM project in your plugin folder with `npm init --yes`. ## Installing the SDK: -The preferred way to use the library is using it as a NPM package. This guarantees the smallest bundle size for your apps and plugins because only necessary function are bundled. +The preferred way of using the library is with a NPM package. This guarantees the smallest bundle size for your apps and plugins, since this way only necessary functions are bundled together. -The CDN method is easy to use and fast to implement. It is good for quick prototyping or if you don't want to work with building tools. +The CDN method is easy to use and fast to implement. It is best used for quick prototyping or if you don't want to work with building tools. ### Using NPM (require bundling): Install it to your `package.json` @@ -43,7 +43,7 @@ Install it to your `package.json` npm i --save @shopware-ag/admin-extension-sdk ``` -and import it in your app or plugin: +and import it into your app or plugin: ```js // import everything as one big object import * as sw from '@shopware-ag/admin-extension-sdk'; @@ -67,7 +67,7 @@ Import the source from the CDN ``` -and then you can access it with the global variable `sw`. +and access it with the global variable `sw`. ```js sw.notification.dispatch({ diff --git a/docs/docs/guide/getting-started/usage.md b/docs/docs/guide/getting-started/usage.md index b0705a0c0..3f545d8be 100644 --- a/docs/docs/guide/getting-started/usage.md +++ b/docs/docs/guide/getting-started/usage.md @@ -4,11 +4,11 @@ sidebar_position: 2 # Usage -After [installing](./installation) the Admin Extension SDK you can use it directly in your Apps and Plugins. +After [installing](./installation) the Admin Extension SDK successfully you can use it in your apps and plugins. ## Adding functionality to new apps or plugins -You can use the SDK features directly in your JS file. Just import the specific feature (NPM way) or use the method in the -`sw` object (CDN way). You can find all features in the API Reference documentation. +You can use the SDK features directly in your JS file. Just import the specific feature (NPM method) or use the method in the +`sw` object (CDN method). You can find all features in the API reference documentation. ### NPM example: ```js @@ -33,10 +33,10 @@ sw.notification.dispatch({ ## Adding functionality to existing plugins -Shopware 6 has a rich plugin extension system for the admin based on Twig and component overriding and extending. This -is very powerful but also has a steep learning curve. You can migrate gradually to the new Admin Extension SDK if you want. -Both approaches can work together so that you can start converting only some parts of your plugins in the beginning. -As more features come to the SDK the more parts you can convert. This will simplify your plugin in the long term usage. +Shopware 6 has a rich plugin extension system for the Admin based on Twig and the concepts of component overriding and component extending. These +concepts are very powerful, but may also come with a steep learning curve. That's why you can migrate gradually to the new Admin Extension SDK, if you want. +Both approaches can work together. This way you can start by converting only parts of your plugins at first and then gradually converting more and more of your plugins as new features are added to the SDK. +This approach is also going to help with simplifying your plugins and preparing them for long term usage. ### Example: diff --git a/docs/docs/guide/index.md b/docs/docs/guide/index.md index 83099f0a2..e0f6ae5bd 100644 --- a/docs/docs/guide/index.md +++ b/docs/docs/guide/index.md @@ -9,30 +9,30 @@ custom_edit_url: null # Introduction -The Admin Extension SDK is a NPM library for Shopware 6 apps and plugins which want any easy way to extend or customize the administration. +The Admin Extension SDK is an NPM library for Shopware 6 apps and plugins that need an easy way of extending or customizing the Administration. -It contains helper functions to communicate to the Admin, execute actions, subscribing data or extending the user interface. +It contains helper functions to communicate with the Administration, execute actions, subscribe to data or extend the user interface. -- 🏗  **Works for Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. The API usage is identical. -- 🎢  **Low learning curve:** you don't need to have knowledge about the internal of the Shopware 6 admin. The SDK hides the complicated stuff behind beautiful API. -- 🧰  **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will grow more and more. This gives you more possibilities and flexibility for your ideas and solutions. -- 🪨  **Stable API with great backward compatibility:** don't fear Shopware updates. Breaking changes in this SDK are the exception. If you use it then your Apps and Plugins will stay stable for a long time. Without code maintenance. -- 🧭  **Type safety:** the whole SDK is written in TypeScript. This provides you great autocompletion support and more safety for your Apps and Plugins. -- 💙  **Developer experience:** get a great development experience from the beginning. And it will be improved more and more in the future. -- 🪶  **Lightweight:** the whole library is completely tree-shakable, dependency-free and every functionality can be imported granularly so that your bundle stays small and fast. +- 🏗 **Works with Shopware 6 Apps and Plugins:** you can use the SDK for your plugins or apps. API usage is identical. +- 🎢 **Shallow learning curve:** you don't need to have extensive knowledge about the internals of the Shopware 6 Administration. Our SDK hides the complicated stuff behind a beautiful API. +- 🧰 **Many extension capabilities:** from throwing notifications, accessing context information or extending the current UI. The feature set of the SDK will gradually be extended, providing more possibilities and flexibility for your ideas and solutions. +- 🪨 **A stable API with great backwards compatibility:** don't fear Shopware updates anymore. Breaking changes in this SDK are an exception. If you use the SDK, your apps and plugins will stay stable for a longer time, without any need for code maintenance. +- 🧭 **Type safety:** the whole SDK is written in TypeScript which provides great autocompletion support and more safety for your apps and plugins. +- 💙 **Developer experience:** have a great development experience right from the start. And it will become better and better in the future. +- 🪶 **Lightweight:** the whole library is completely tree-shakable and dependency-free. Every functionality can be imported granularly to keep your bundle as small and fast as possible. -Go to [Installation](./getting-started/installation) to get started. Or check out the quick start: +Go to [Installation](./getting-started/installation) to get started. Or check out the quick start guide: ## Quick start -Understand the Shopware Extension SDK by throwing a notification. +Understand the Shopware Extension SDK by learning how to throw a notification. -The requirements for this quick start are: +Requirements for this quick start guide are: - [development Shopware 6 instance](https://developer.shopware.com/docs/guides/installation) or a [Shopware 6 cloud instance](https://www.shopware.com/en/products/shopware-cloud/) - [clean Shopware 6 Plugin or App](https://developer.shopware.com/docs/guides/plugins/overview) which is activated ### App -1. Create a HTML file with following content: +1. Create an HTML file with following content: ```html @@ -52,16 +52,16 @@ The requirements for this quick start are: ``` -2. Add the link to the webpage to the [manifest.xml](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide#manifest-file) of your App. For local files you can use [ngrok](https://ngrok.com/) to create a public URL for your HTML file. +2. Add the link to the webpage and to the [manifest.xml](https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide#manifest-file) of your app. For local files you can use [ngrok](https://ngrok.com/) to create a public URL for your HTML file. -3. Visit the Administration. After you logged in you should see the notification from your app. +3. Visit the Administration. After you have logged in you should see the notification from your app. -Congratulation 🎉 You just create your first interaction with the Admin via the Admin Extension SDK. +Congratulation 🎉 You just created your first interaction with the Administration via the Admin Extension SDK. ### Plugin -**Notice:** Plugins are only working on self-hosted instances. You can't use the Shopware 6 cloud instance for plugins. +**Notice:** Plugins will only be working on self-hosted instances. You can't use a Shopware 6 cloud instance for plugins. -1. Create a new `index.html` file to your new plugin in the following path: `custom/plugins/yourPlugin/src/Resources/app/administration/index.html`. The HTML file should contain the following content: +1. Create a new `index.html` file to your new plugin in the following path: `custom/plugins/yourPlugin/src/Resources/app/administration/index.html`. The HTML file should have the following content: ```html @@ -81,11 +81,11 @@ Congratulation 🎉 You just create your first interaction with the Admin via th ``` -2. Start the Shopware 6 Administration Watcher with the following command: +2. Start the Shopware 6 Administration watcher using the following command: ``` ./psh.phar administration:watch ``` -After compiling all files a new browser window should be opened. There you should see the Administration. After logging in you should see the notification from your plugin. +After all files have been compiled, a new browser window should open, in which you should see the Administration. After logging in, you should see the notification from your plugin. -Congratulation 🎉 You just create your first interaction with the Admin via the Admin Extension SDK. \ No newline at end of file +Congratulations 🎉 You just created your first interaction with the Administration via the Admin Extension SDK. \ No newline at end of file diff --git a/docs/docs/guide/internals/how-it-works.md b/docs/docs/guide/internals/how-it-works.md index 0b53e64ba..1258a7e82 100644 --- a/docs/docs/guide/internals/how-it-works.md +++ b/docs/docs/guide/internals/how-it-works.md @@ -1,46 +1,46 @@ # How it works The Admin Extension SDK provides wrapper methods for a better development experience. It abstracts and hides the more -complex logic behind a simple API. This makes it easier for app and plugin developer to create their solutions and focus -more on business details instead of technical details. +complex logic behind a simple API. This makes it easier for app and plugin developers to create their solutions and focus +on their business instead of caring about the technical details. ## Admin communication -Technically the apps and plugins are communicating to the administration via the [postMessage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). It is a secure communication channel between different windows. In most cases it will be used to communicate -from a iFrame to the main window and the other way around. +Technically speaking, apps and plugins are communicating with the Administration via the [postMessage API](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). It is a secure communication channel between different windows. In most cases it will be used to communicate +from an iFrame to the main window or the other way around. -The Extension SDK works in the same way but it uses a hybrid approach. Every method is callable within a iFrame and also -from the same window. This allows apps (in iFrames) and plugins (in the same window) to use the same API. +The Extension SDK works in the same way, but it uses a hybrid approach. Every method is callable within an iFrame and also +from the same window. This allows apps (within iFrames) and plugins (in the same window) to use the same API. ![postMessage communication](./assets/post-message-communication.png) -Normally the postMessage API is very limited and not very friendly to use. You can send string values from one window to -another. This isn't very handy to use for smooth development. To provide a smoother experience we wrote some helper methods to +Normally the postMessage API is very limited and not easy to use. You merely can send string values from one window to +another. This isn't very handy during the development process. To provide a smoother experience, we wrote some helper methods that make working with the postMessage API a breeze. -The helper methods can be found in the `channel` file. It has different methods for easier communication. The most important ones are `send` and `handle`. They are responsible for sending and handling the data. +The helper methods can be found in the `channel` file. It holds different methods for easier communication. The most important ones are `send` and `handle`. They are responsible for sending and handling data. -Do give you an better understanding how it works we go trough an example. +Here is an example to give you a better understanding of how that works. ### Example workflow -Let's imagine that a app or plugin calls the `context.getLanguage` method from the Extension SDK: +Let's imagine that an app or plugin calls the `context.getLanguage` method from the Extension SDK: ```js // from app/plugin const language = await sw.context.getLanguage(); ``` -What happens in the background? The method is a wrapper for the `send` method in the `channel`. When you use it it will call `send` with a predefined type: +But what is happening in the background? The method is a wrapper for the `send` method in the `channel`. When you use it, it will call `send` with a predefined type: ```js // from app/plugin send('contextLanguage', {}); ``` -Each message has an unique type. They are hidden for plugin and app developers and are only responsible for the underlying handling. With the unique type we know in the admin what type of request it is and what response it expects. +Each message has a unique type. The types are hidden from plugin and app developers and are only responsible for the underlying handling. Knowing the unique type we can tell what type of request there is in the Administration and what response it expects. -The `send` method is doing now some magic in the background. It creates a data object with following properties: +The `send` method is producing magic in the background now. It creates a data object with following properties: ```js { @@ -50,16 +50,16 @@ The `send` method is doing now some magic in the background. It creates a data o } ``` -The `_type` property is for the recognition of the request type. The `_data` property is custom data which will be added by the app or plugin. E.g. the title, message and more for a notification. And the `_callbackId` is needed so that the administration can send the data back with the ID and the sender can recognize it and use the data. +The `_type` property is there to recognize the request type. The `_data` property is custom data that will be added by the app or plugin. E.g. the title, message or any more information available for a notification. The `_callbackId` is needed for the Administration to send back the data including an ID, so that the sender is able to recognize it and use the included data. -This object will be sent as a stringified JSON object to the administration window via the postMessage API. +This object will be sent as a stringified JSON object to the Administration window via the postMessage API. - + -Now let's have a look at what needs to happen on the administration side. +Now let's have a look at what needs to happen on the side of the Administration. ```js -// at administration +// at Administration handle('contextLanguage', () => { return { languageId: Shopware.Context.api.languageId, @@ -68,9 +68,9 @@ handle('contextLanguage', () => { }); ``` -It uses the `handle` method which is also a helper method of the `channel`. You see that the type matches the sender type. And in the second argument it provides a method which returns the data. +It uses the `handle` method, which is also a helper method of the `channel`. You see now, that the type matches the sender type. And in the second argument it provides a method that returns the data. -This method reacts to every `contextLanguage` request and send the data values back to the source of the request. It also creates a object with meta information which are needed for the original `send` window: +This method reacts to every `contextLanguage` request and sends the data values back to the source of the request. It also creates an object that includes meta information which in turn are needed for the original `send` window: ```js { _type: 'contextLanguage', @@ -79,9 +79,9 @@ This method reacts to every `contextLanguage` request and send the data values b } ``` -The source who will send the request is adding a new event listener before it sends the message. This event listener listen to all incoming messages and if any of these messages is matching the type and the callback ID of the sent message then it will handle the data. +The source that will send the request is adding a new event listener before sending the message. This event listener listens to all incoming messages and if any of these messages matches the type and the callback ID of the message sent, it will handle the data. -In our case it will get back an stringified object with the language information. These will parsed and returned to the first method call: +In our case it will in return get a stringified object that includes the language information. These will be parsed and returned to the first method call: ```js // from app/plugin @@ -90,12 +90,12 @@ const language = await sw.context.getLanguage(); // language = { languageId: '1a2b3c...', systemLanguageId: '9f8g7h...', } ``` -And this was it! The app or plugin has got the data from the administration. It looks like a simple call. But it does a lot in the background. +And this is basically it! The app or plugin has now got the data from the Administration. It all just looks like a simple call, but there is a lot going on in the background. ## Sending methods -In normal cases you can't add methods to JSON objects which will get stringified. In our case we think it would makes the life of many developers easier if they can also use their methods in the calls. +In normal cases you can't add methods to JSON objects which will get stringified. But in our case we are convinced it would make the many developers' lives much easier if they can also use their own methods in the calls. -To handle these edge-case we are converting the methods to information objects like this: +To handle these edge-cases we are converting the methods to information objects like this: ```js { __type__: '__function__', @@ -105,7 +105,7 @@ To handle these edge-case we are converting the methods to information objects l The method will be saved in a `methodRegistry` where the unique ID can be used as an identifier. -The receiver of the object convert this object back to a method which would trigger the original method. This can't be done directly because we do not have direct access to the method. To solve this problem we send a special postMessage call to the original source. This call contains all arguments of the called method and the unique ID of the method: +The receiver of the object converts this object back to a method that triggers the original method. This can't be done directly, because we do not have direct access to the method. To solve this problem, we send a special postMessage call to the original source. This call contains all arguments of the method called and its unique ID: ```js send('__function__', { @@ -114,7 +114,7 @@ send('__function__', { }) ``` -The sender gets the message and execute the method with the matching ID with the given arguments. The return value will be then sent back to the converted method in the receiver. +The sender gets the message back and executes the method with the matching ID and the given arguments. The return value will then be sent back to the converted method in the receiver. -This complex logic is also abstracted. To use it: just add methods to -the data. It will be converted and handled automatically. \ No newline at end of file +This complex logic is also abstracted. To use it, just add methods to +the data. They will then be converted and handled automatically. \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 62c5f0fd1..49e4fc667 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,10 @@ import * as window from './window'; import * as notification from './notification'; import * as context from './context' -import * as component from './ui/component' -import card from './ui/card' +import * as componentSection from './ui/componentSection' const ui = { - component, - card, + componentSection, } /** diff --git a/src/messages.types.ts b/src/messages.types.ts index e7f83a64d..c08ed22f3 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -1,7 +1,7 @@ import { notificationDispatch } from './notification/index'; import { windowRedirect, windowReload } from './window/index'; import { contextLanguage, contextEnvironment, contextLocale, contextCurrency } from './context/index'; -import { uiComponentRender } from './ui/component/index'; +import { uiComponentSectionRenderer } from './ui/componentSection/index'; /** @@ -17,7 +17,7 @@ export type ShopwareMessageTypes = { contextLocale: contextLocale, contextCurrency: contextCurrency, getPageTitle: getPageTitle, - uiComponentRender: uiComponentRender, + uiComponentSectionRenderer: uiComponentSectionRenderer, __function__: __function__, __registerWindow__: __registerWindow__, _multiply: _multiply, diff --git a/src/ui/card/index.ts b/src/ui/card/index.ts deleted file mode 100644 index f227c04d1..000000000 --- a/src/ui/card/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { createSender } from '../../channel'; - -export default (positionId: string) => ({ - addComponentBefore: createSender('uiComponentRender', { positionId: positionId + '__before' }), - addComponentAfter: createSender('uiComponentRender', { positionId: positionId + '__after' }), -}); \ No newline at end of file diff --git a/src/ui/component/index.ts b/src/ui/componentSection/index.ts similarity index 72% rename from src/ui/component/index.ts rename to src/ui/componentSection/index.ts index fa1f889dc..e320188c1 100644 --- a/src/ui/component/index.ts +++ b/src/ui/componentSection/index.ts @@ -1,11 +1,11 @@ import { createSender } from '../../channel'; -export const render = createSender('uiComponentRender'); +export const add = createSender('uiComponentSectionRenderer'); /** - * Get the current content language + * Contains all possible components for the sections */ - export type uiComponentRender = + export type uiComponentSectionRenderer = { responseType: void, component: string, From fd783de094cf8c697c51108aeffb775ca0295f42 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 8 Dec 2021 15:50:35 +0100 Subject: [PATCH 064/189] Bump up version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8633b86a2..da5b7de96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.20", + "version": "0.0.21", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ From 70bbe9b0f22a1882e6e294afddd1d6e5186aca91 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Mon, 20 Dec 2021 10:38:47 +0100 Subject: [PATCH 065/189] Add location utility --- package.json | 2 +- src/index.ts | 2 ++ src/location/index.ts | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/location/index.ts diff --git a/package.json b/package.json index da5b7de96..fe7075932 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.21", + "version": "0.0.22", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/index.ts b/src/index.ts index 49e4fc667..90c92773b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import * as window from './window'; import * as notification from './notification'; import * as context from './context' import * as componentSection from './ui/componentSection' +import * as location from './location' const ui = { componentSection, @@ -15,4 +16,5 @@ export { notification, context, ui, + location, } \ No newline at end of file diff --git a/src/location/index.ts b/src/location/index.ts new file mode 100644 index 000000000..2ef105fdd --- /dev/null +++ b/src/location/index.ts @@ -0,0 +1,8 @@ +// TODO: add documentation +export const is = (location: string): boolean => { + const params = new URLSearchParams(window.location.search); + + return params.get('location-id') === location; +} + +export const MAIN_HIDDEN = 'sw-main-hidden'; \ No newline at end of file From d43d2b822e0d39316ce2be86ff0ec9905527b1c4 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 08:22:13 +0100 Subject: [PATCH 066/189] Add optional src to component section --- package.json | 2 +- src/ui/componentSection/index.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fe7075932..983f81dd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.22", + "version": "0.0.23", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/ui/componentSection/index.ts b/src/ui/componentSection/index.ts index e320188c1..87e4f33b6 100644 --- a/src/ui/componentSection/index.ts +++ b/src/ui/componentSection/index.ts @@ -11,6 +11,7 @@ export const add = createSender('uiComponentSectionRenderer'); component: string, positionId: string, props: unknown, + src?: string, } & ( cardComponentRender From 8c50eb7d1f1503acc42bec045eda92203a4958f4 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 10:40:50 +0100 Subject: [PATCH 067/189] Add location height utility --- .eslintrc.js | 1 + package.json | 2 +- src/channel.ts | 27 +++++++++++++++++++-------- src/location/index.ts | 26 +++++++++++++++++++++++++- src/messages.types.ts | 2 ++ 5 files changed, 48 insertions(+), 10 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index b40fcf876..f6df58a98 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,6 +15,7 @@ module.exports = { 'no-prototype-builtins': 'off', 'comma-dangle': 'off', '@typescript-eslint/comma-dangle': ['error', 'always-multiline'], + '@typescript-eslint/explicit-function-return-type': ['error'], '@typescript-eslint/member-delimiter-style': ['error', { multiline: { delimiter: 'comma', diff --git a/package.json b/package.json index 983f81dd4..82a4a8fc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.23", + "version": "0.0.24", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/channel.ts b/src/channel.ts index fcf5225ce..d6e67482b 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -84,7 +84,7 @@ export function send( const timeoutMs = 3000; return new Promise((resolve, reject) => { - const callbackHandler = function(event: MessageEvent) { + const callbackHandler = function(event: MessageEvent):void { if (typeof event.data !== 'string') { return; } @@ -163,7 +163,7 @@ export function handle ) : () => void { - const handleListener = async function(event: MessageEvent) { + const handleListener = async function(event: MessageEvent): Promise { if (typeof event.data !== 'string') { return; } @@ -221,13 +221,15 @@ export function handle window.addEventListener('message', handleListener); // return a cancel method - return () => window.removeEventListener('message', handleListener); + return ():void => window.removeEventListener('message', handleListener); } export function publish( type: MESSAGE_TYPE, data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], -) { +) +:Promise<(void | Awaited | null)[]> +{ const sendPromises = [...sourceRegistry].map((source) => { // Disable error handling because not every window need to react to the data // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -240,7 +242,7 @@ export function publish( export function subscribe( type: MESSAGE_TYPE, method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise -) { +): () => void { return handle(type, method); } @@ -269,7 +271,10 @@ export function createSender export function createSender (messageType: MESSAGE_TYPE, baseMessageOptions?: MessageDataType) { - return (messageOptions: MessageDataType) => send(messageType, { ...baseMessageOptions, ...messageOptions}); + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + return (messageOptions: MessageDataType) => { + return send(messageType, { ...baseMessageOptions, ...messageOptions}); + } } /** @@ -277,7 +282,10 @@ export function createSender * defined and can be hidden. */ export function createHandler(messageType: MESSAGE_TYPE) { - return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => handle(messageType, method); + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + return (method: (data: MessageDataType) => Promise | ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => { + return handle(messageType, method); + } } /** @@ -285,7 +293,10 @@ export function createHandler(m * defined and can be hidden. */ export function createSubscriber(messageType: MESSAGE_TYPE) { - return (method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise) => subscribe(messageType, method); + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + return (method: (data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType']) => void | Promise) => { + return subscribe(messageType, method); + } } /** diff --git a/src/location/index.ts b/src/location/index.ts index 2ef105fdd..8e29adc68 100644 --- a/src/location/index.ts +++ b/src/location/index.ts @@ -1,3 +1,5 @@ +import { send } from '../channel'; + // TODO: add documentation export const is = (location: string): boolean => { const params = new URLSearchParams(window.location.search); @@ -5,4 +7,26 @@ export const is = (location: string): boolean => { return params.get('location-id') === location; } -export const MAIN_HIDDEN = 'sw-main-hidden'; \ No newline at end of file +export const updateHeight = (height?: number): Promise => { + if (height) { + return send('locationUpdateHeight', { height }); + } + + // if no height is defined then send the current document height + const currentHeight = document.documentElement.scrollHeight; + return send('locationUpdateHeight', { height: currentHeight }); +}; + +// TODO: add startAutoResizer to update the height automatically +// TODO: add stopAutoResizer to stop the auto-update of the height + +export const MAIN_HIDDEN = 'sw-main-hidden'; + +export type locationUpdateHeight = { + responseType: void, + + /** + * The height of the iFrame + */ + height: number, +} \ No newline at end of file diff --git a/src/messages.types.ts b/src/messages.types.ts index c08ed22f3..5b503ce36 100644 --- a/src/messages.types.ts +++ b/src/messages.types.ts @@ -2,6 +2,7 @@ import { notificationDispatch } from './notification/index'; import { windowRedirect, windowReload } from './window/index'; import { contextLanguage, contextEnvironment, contextLocale, contextCurrency } from './context/index'; import { uiComponentSectionRenderer } from './ui/componentSection/index'; +import { locationUpdateHeight } from './location/index'; /** @@ -18,6 +19,7 @@ export type ShopwareMessageTypes = { contextCurrency: contextCurrency, getPageTitle: getPageTitle, uiComponentSectionRenderer: uiComponentSectionRenderer, + locationUpdateHeight: locationUpdateHeight, __function__: __function__, __registerWindow__: __registerWindow__, _multiply: _multiply, From 2afab4a4c64c923f827a6ae9e791690d75f45ef6 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 10:56:19 +0100 Subject: [PATCH 068/189] Add locationId property to locationUpdateHeight event --- package.json | 2 +- src/location/index.ts | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 82a4a8fc3..79122d872 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.24", + "version": "0.0.25", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/location/index.ts b/src/location/index.ts index 8e29adc68..fba1af97f 100644 --- a/src/location/index.ts +++ b/src/location/index.ts @@ -1,20 +1,31 @@ import { send } from '../channel'; -// TODO: add documentation -export const is = (location: string): boolean => { +function getLocationId():string|null { const params = new URLSearchParams(window.location.search); - return params.get('location-id') === location; + return params.get('location-id'); +} + +// TODO: add documentation +export const is = (location: string): boolean => { + return getLocationId() === location; } export const updateHeight = (height?: number): Promise => { if (height) { - return send('locationUpdateHeight', { height }); + return send('locationUpdateHeight', { + height, + locationId: getLocationId(), + }); } // if no height is defined then send the current document height const currentHeight = document.documentElement.scrollHeight; - return send('locationUpdateHeight', { height: currentHeight }); + + return send('locationUpdateHeight', { + height: currentHeight, + locationId: getLocationId(), + }); }; // TODO: add startAutoResizer to update the height automatically @@ -29,4 +40,9 @@ export type locationUpdateHeight = { * The height of the iFrame */ height: number, + + /** + * The locationID of the current element + */ + locationId: string | null, } \ No newline at end of file From d492c510624000391ae0b0562022773604d01b64 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 11:22:40 +0100 Subject: [PATCH 069/189] Add autoResizing for locations --- package.json | 2 +- src/location/index.ts | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 79122d872..dd22807ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.25", + "version": "0.0.26", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/location/index.ts b/src/location/index.ts index fba1af97f..00e20c0ab 100644 --- a/src/location/index.ts +++ b/src/location/index.ts @@ -6,7 +6,7 @@ function getLocationId():string|null { return params.get('location-id'); } -// TODO: add documentation +// TODO: add documentation (+ "body {overflow: hidden}" notice for views) export const is = (location: string): boolean => { return getLocationId() === location; } @@ -20,7 +20,7 @@ export const updateHeight = (height?: number): Promise => { } // if no height is defined then send the current document height - const currentHeight = document.documentElement.scrollHeight; + const currentHeight = document.documentElement.offsetHeight; return send('locationUpdateHeight', { height: currentHeight, @@ -28,8 +28,24 @@ export const updateHeight = (height?: number): Promise => { }); }; -// TODO: add startAutoResizer to update the height automatically -// TODO: add stopAutoResizer to stop the auto-update of the height +let resizeObserver: ResizeObserver | null = null; + +export const startAutoResizer = ():void => { + // create an Observer instance + resizeObserver = new ResizeObserver(() => { + void updateHeight(); + }) + + // start observing a DOM node + resizeObserver.observe(document.body) +} + +export const stopAutoResizer = ():void => { + if (resizeObserver) { + resizeObserver.unobserve(document.body); + resizeObserver.disconnect(); + } +} export const MAIN_HIDDEN = 'sw-main-hidden'; From 675a1ec5e3b1a4af998a106692b49b984713d878 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 13:13:11 +0100 Subject: [PATCH 070/189] Add automatic src to uiComponentSectionRenderer --- src/_internals/utils.ts | 6 ++++++ src/channel.ts | 2 +- src/location/index.ts | 5 +---- src/ui/componentSection/index.ts | 5 ++++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/_internals/utils.ts b/src/_internals/utils.ts index bfdb8d104..6127b7ccf 100644 --- a/src/_internals/utils.ts +++ b/src/_internals/utils.ts @@ -17,4 +17,10 @@ export function traverseObject(this: any, traversableObject: any, processor: (pa export function isObject(value: unknown): value is any { return value !== null && typeof value === 'object'; +} + +export function getLocationId():string|null { + const params = new URLSearchParams(window.location.search); + + return params.get('location-id'); } \ No newline at end of file diff --git a/src/channel.ts b/src/channel.ts index d6e67482b..fcf085dfd 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -228,7 +228,7 @@ export function publish( type: MESSAGE_TYPE, data: ShopwareMessageTypes[MESSAGE_TYPE]['responseType'], ) -:Promise<(void | Awaited | null)[]> +:Promise<(void | Promise | null)[]> { const sendPromises = [...sourceRegistry].map((source) => { // Disable error handling because not every window need to react to the data diff --git a/src/location/index.ts b/src/location/index.ts index 00e20c0ab..53d2c8b94 100644 --- a/src/location/index.ts +++ b/src/location/index.ts @@ -1,10 +1,7 @@ import { send } from '../channel'; +import { getLocationId } from '../_internals/utils'; -function getLocationId():string|null { - const params = new URLSearchParams(window.location.search); - return params.get('location-id'); -} // TODO: add documentation (+ "body {overflow: hidden}" notice for views) export const is = (location: string): boolean => { diff --git a/src/ui/componentSection/index.ts b/src/ui/componentSection/index.ts index 87e4f33b6..5f9e09c46 100644 --- a/src/ui/componentSection/index.ts +++ b/src/ui/componentSection/index.ts @@ -1,6 +1,9 @@ import { createSender } from '../../channel'; +import { getLocationId } from '../../_internals/utils'; -export const add = createSender('uiComponentSectionRenderer'); +export const add = createSender('uiComponentSectionRenderer', { + src: getLocationId() ?? undefined, +}); /** * Contains all possible components for the sections From e17e35e3a815fe7d4207f613d75d23d88fed04d0 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 21 Dec 2021 13:20:55 +0100 Subject: [PATCH 071/189] Add automatic src to uiComponentSections --- package.json | 2 +- src/_internals/utils.ts | 7 +++++++ src/ui/componentSection/index.ts | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dd22807ec..29809afaf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.26", + "version": "0.0.27", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/_internals/utils.ts b/src/_internals/utils.ts index 6127b7ccf..89f408eb7 100644 --- a/src/_internals/utils.ts +++ b/src/_internals/utils.ts @@ -23,4 +23,11 @@ export function getLocationId():string|null { const params = new URLSearchParams(window.location.search); return params.get('location-id'); +} + +export function getWindowSrc():string { + const location = window.location as Location; + const urlObject = new URL(location.pathname, location.origin); + + return urlObject.toString(); } \ No newline at end of file diff --git a/src/ui/componentSection/index.ts b/src/ui/componentSection/index.ts index 5f9e09c46..530b26534 100644 --- a/src/ui/componentSection/index.ts +++ b/src/ui/componentSection/index.ts @@ -1,8 +1,8 @@ import { createSender } from '../../channel'; -import { getLocationId } from '../../_internals/utils'; +import { getWindowSrc } from '../../_internals/utils'; export const add = createSender('uiComponentSectionRenderer', { - src: getLocationId() ?? undefined, + src: getWindowSrc() ?? undefined, }); /** From b5827dc9a982847e1c7adbaf24c2cae19476e8e8 Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Wed, 22 Dec 2021 10:15:42 +0100 Subject: [PATCH 072/189] Add check for iFrame --- package.json | 2 +- src/location/index.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 29809afaf..c07b496b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@shopware-ag/admin-extension-sdk", - "version": "0.0.27", + "version": "0.0.28", "repository": "git://github.com/shopware/admin-extension-sdk.git", "description": "The SDK for App iframes to communicate with the Shopware Adminstration", "keywords": [ diff --git a/src/location/index.ts b/src/location/index.ts index 53d2c8b94..fe3152d9f 100644 --- a/src/location/index.ts +++ b/src/location/index.ts @@ -8,6 +8,10 @@ export const is = (location: string): boolean => { return getLocationId() === location; } +export const isIframe = (): boolean => { + return window !== window.parent; +} + export const updateHeight = (height?: number): Promise => { if (height) { return send('locationUpdateHeight', { From 907a20b726e9ef71f9f701a7e73c6325fb5491da Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 28 Dec 2021 08:41:44 +0100 Subject: [PATCH 073/189] Add documentation for the vue devtools --- .../_category_.yml | 0 .../installation.md | 0 .../usage.md | 0 .../_category_.yml | 0 .../assets/notification-example.jpg | Bin .../context.md | 0 .../notification.md | 0 .../window.md | 0 docs/docs/guide/3_tooling/_category_.yml | 2 ++ ...tools-plugin-extension-point-selection.png | Bin 0 -> 135491 bytes .../assets/devtools-plugin-settings-list.png | Bin 0 -> 68369 bytes .../assets/devtools-plugin-settings.png | Bin 0 -> 95458 bytes ...devtools-plugin-tab-shopware-extension.png | Bin 0 -> 199099 bytes docs/docs/guide/3_tooling/vue-devtools.md | 34 ++++++++++++++++++ .../{internals => 4_internals}/_category_.yml | 0 .../assets/post-message-communication.png | Bin .../how-it-works.md | 0 docs/docs/guide/index.md | 2 +- 18 files changed, 37 insertions(+), 1 deletion(-) rename docs/docs/guide/{getting-started => 1_getting-started}/_category_.yml (100%) rename docs/docs/guide/{getting-started => 1_getting-started}/installation.md (100%) rename docs/docs/guide/{getting-started => 1_getting-started}/usage.md (100%) rename docs/docs/guide/{api-reference => 2_api-reference}/_category_.yml (100%) rename docs/docs/guide/{api-reference => 2_api-reference}/assets/notification-example.jpg (100%) rename docs/docs/guide/{api-reference => 2_api-reference}/context.md (100%) rename docs/docs/guide/{api-reference => 2_api-reference}/notification.md (100%) rename docs/docs/guide/{api-reference => 2_api-reference}/window.md (100%) create mode 100644 docs/docs/guide/3_tooling/_category_.yml create mode 100644 docs/docs/guide/3_tooling/assets/devtools-plugin-extension-point-selection.png create mode 100644 docs/docs/guide/3_tooling/assets/devtools-plugin-settings-list.png create mode 100644 docs/docs/guide/3_tooling/assets/devtools-plugin-settings.png create mode 100644 docs/docs/guide/3_tooling/assets/devtools-plugin-tab-shopware-extension.png create mode 100644 docs/docs/guide/3_tooling/vue-devtools.md rename docs/docs/guide/{internals => 4_internals}/_category_.yml (100%) rename docs/docs/guide/{internals => 4_internals}/assets/post-message-communication.png (100%) rename docs/docs/guide/{internals => 4_internals}/how-it-works.md (100%) diff --git a/docs/docs/guide/getting-started/_category_.yml b/docs/docs/guide/1_getting-started/_category_.yml similarity index 100% rename from docs/docs/guide/getting-started/_category_.yml rename to docs/docs/guide/1_getting-started/_category_.yml diff --git a/docs/docs/guide/getting-started/installation.md b/docs/docs/guide/1_getting-started/installation.md similarity index 100% rename from docs/docs/guide/getting-started/installation.md rename to docs/docs/guide/1_getting-started/installation.md diff --git a/docs/docs/guide/getting-started/usage.md b/docs/docs/guide/1_getting-started/usage.md similarity index 100% rename from docs/docs/guide/getting-started/usage.md rename to docs/docs/guide/1_getting-started/usage.md diff --git a/docs/docs/guide/api-reference/_category_.yml b/docs/docs/guide/2_api-reference/_category_.yml similarity index 100% rename from docs/docs/guide/api-reference/_category_.yml rename to docs/docs/guide/2_api-reference/_category_.yml diff --git a/docs/docs/guide/api-reference/assets/notification-example.jpg b/docs/docs/guide/2_api-reference/assets/notification-example.jpg similarity index 100% rename from docs/docs/guide/api-reference/assets/notification-example.jpg rename to docs/docs/guide/2_api-reference/assets/notification-example.jpg diff --git a/docs/docs/guide/api-reference/context.md b/docs/docs/guide/2_api-reference/context.md similarity index 100% rename from docs/docs/guide/api-reference/context.md rename to docs/docs/guide/2_api-reference/context.md diff --git a/docs/docs/guide/api-reference/notification.md b/docs/docs/guide/2_api-reference/notification.md similarity index 100% rename from docs/docs/guide/api-reference/notification.md rename to docs/docs/guide/2_api-reference/notification.md diff --git a/docs/docs/guide/api-reference/window.md b/docs/docs/guide/2_api-reference/window.md similarity index 100% rename from docs/docs/guide/api-reference/window.md rename to docs/docs/guide/2_api-reference/window.md diff --git a/docs/docs/guide/3_tooling/_category_.yml b/docs/docs/guide/3_tooling/_category_.yml new file mode 100644 index 000000000..546266fb5 --- /dev/null +++ b/docs/docs/guide/3_tooling/_category_.yml @@ -0,0 +1,2 @@ +label: "Tooling" +position: 75 \ No newline at end of file diff --git a/docs/docs/guide/3_tooling/assets/devtools-plugin-extension-point-selection.png b/docs/docs/guide/3_tooling/assets/devtools-plugin-extension-point-selection.png new file mode 100644 index 0000000000000000000000000000000000000000..29e588f452c447e99748bae13083730a9e8b5de5 GIT binary patch literal 135491 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 literal 0 HcmV?d00001 diff --git a/docs/docs/guide/3_tooling/assets/devtools-plugin-settings-list.png b/docs/docs/guide/3_tooling/assets/devtools-plugin-settings-list.png new file mode 100644 index 0000000000000000000000000000000000000000..d2abf8c9ce4618df0c623d668bd73d4246ee0b98 GIT binary patch literal 68369 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∓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%0A*y?AFDFQAgmCT*=x>yBhwdX`Z+OuG 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 literal 0 HcmV?d00001 diff --git a/docs/docs/guide/3_tooling/assets/devtools-plugin-tab-shopware-extension.png b/docs/docs/guide/3_tooling/assets/devtools-plugin-tab-shopware-extension.png new file mode 100644 index 0000000000000000000000000000000000000000..abedb68e3fb38e1373a4a37d7500f0d6ff4c00b9 GIT binary patch literal 199099 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