diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 901fcbe..8fba319 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,3 +37,13 @@ jobs: - run: yarn typecheck - run: yarn lint:all - run: yarn test + - name: Download playwright + run: yarn workspace playground run playwright install + - name: Run e2e tests + run: yarn test:e2e + - name: Run e2e tests with percy + uses: percy/exec-action@v0.3.1 + with: + custom-command: 'yarn test:e2e:ci' + env: + PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} diff --git a/.gitignore b/.gitignore index 11d0e4c..c6df9e5 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ !.yarn/plugins !.yarn/releases !.yarn/sdks -!.yarn/versions \ No newline at end of file +!.yarn/versions + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8abe2ba..a9e6f23 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,11 +41,12 @@ The quickest way to start tweaking things is to run the `playground` package. ```sh $ cd ./packages/playground $ yarn serve +# or, shortcut: +$ cd root +$ yarn playground ``` -The playground is a bunch of ready-made projects that you can run to experiment with Theatre.js. - -It uses a single ESBuild config to build all of the related packages in one go, so you don't have to run a bunch of build commands separately. +The playground is a bunch of ready-made projects that you can run to experiment with Theatre.js. It also contains the project's end-to-end tests. Read more at [`./packages/playground/README.md`](./packages/playground/README.md). @@ -65,7 +66,7 @@ $ cd examples/dom-cra $ yarn start ``` -### Running tests +### Running unit/integration tests We use a single [jest](https://jestjs.io/) setup for the repo. The tests files have the `.test.ts` or `.test.tsx` extension. @@ -78,6 +79,10 @@ $ yarn test $ yarn test --watch ``` +### Running end-to-end tests + +End-to-end tests are hosted in the playground package. More details [there](./packages/playground/README.md). + ### Type checking The packages in this repo have full typescript coverage, so you should be able to get diagnostics and intellisense if your editor supports typescript. diff --git a/package.json b/package.json index 445d836..c863140 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ ], "scripts": { "playground": "yarn workspace playground run serve", + "test:e2e": "yarn workspace playground run test", + "test:e2e:ci": "yarn workspace playground run test:ci", "typecheck": "yarn run build:ts", "build": "zx scripts/build.mjs", "build:ts": "tsc --build ./devEnv/typecheck-all-projects/tsconfig.all.json", diff --git a/packages/playground/.gitignore b/packages/playground/.gitignore index 3e22129..018675f 100644 --- a/packages/playground/.gitignore +++ b/packages/playground/.gitignore @@ -1 +1,3 @@ -/dist \ No newline at end of file +/dist +/test-results/ +/playwright-report/ \ No newline at end of file diff --git a/packages/playground/README.md b/packages/playground/README.md index 4e36bba..e9606aa 100644 --- a/packages/playground/README.md +++ b/packages/playground/README.md @@ -1,12 +1,58 @@ # The playground -The playground is the quickest way to hack on the internals of Theatre. It uses a simple ESBuild config that builds all the related packages in one go, so you _don't_ have to run a bunch of build commands separately to start developing. +The playground is the quickest way to hack on the internals of Theatre. It also hosts our end-to-end tests. It uses a simple vite config that builds all the related packages in one go, so you _don't_ have to run a bunch of build commands separately to start developing. -## How to use +## Directory structure + +``` +src/ + shared/ <---- playgrounds shared with teammates. + [playground-name]/ <---- each playground has a name... + index.tsx <---- and an entry file. + + personal/ <---- personal playgrounds (gitignored). + [playground-name]/ <---- personal playgrounds also have names, + index.tsx <---- and an entry file. + + tests/ <---- playgrounds for e2e testing. + [playground-name]/ <---- the name of the test playground, + index.tsx <---- and its entry file. + [test-file-name].e2e.ts <---- The playwright test script that tests this particular playground. + [test2].e2e.ts <---- We can have more than one test file per playground. +``` + +## How to use the playground Simply run `yarn run serve` in this folder to start the dev server. -The first time you run `serve`, an `src/index.ts` file will be created. This file is the entry point, and it won't be comitted to the repo, so you're free to change it. +There are some shared playgrounds in `src/shared` which are committed to the repo. You can make your own playgrounds in `src/personal` which will be `.gitignore`d. Each -There are some shared playgrounds in `src/shared` which are committed to the repo. You can make your own playgrounds in `src/personal` which will be `.gitignore`d. +## How to write and run end-to-end tests +The end-to-end tests are in the `src/tests` folder. Look at [directory structure](#directory-structure) to see how test files are organized. + +The end-to-end tests are made using [playwright](https://playwright.dev). You should refer to playwright's documentation + +```bash +$ cd playground +$ yarn test # runs the end-to-end tests +$ yarn test --project=firefox # only run the tests in firefox +$ yarn test --project=firefox --headed # run the test in headed mode in firefox +$ yarn test --debug # run in debug mode using the inspector: https://playwright.dev/docs/inspector +``` + +### Using playwright codegen + +To use [playwright's codegen tool](https://playwright.dev/docs/codegen), first serve the playground and then run the codegen on the a url that points to the playground you wish to test: + +```bash +$ cd playground +$ yarn serve # first serve the playground +$ yarn playwright codegen http://localhost:8080/tests/[playground-name] # run the codegen for [playground-name] +``` + +## Visual regression testing + +We're currently using [percy](https://percy.io) for visual regression testing. These tests run only the the [CI](../../.github/workflows/main.yml) using [Github actions](https://github.com/theatre-js/theatre/actions). Look at the example at [`src/tests/setting-static-props/test.e2e.ts`](src/tests/setting-static-props/test.e2e.ts) for an example of recording and diffing a screenshot. + +Please note that we haven't figured out the best practices for visual regression testing yet, so if the setup isn't optimal, please let us know. \ No newline at end of file diff --git a/packages/playground/devEnv/playwright-report/index.html b/packages/playground/devEnv/playwright-report/index.html new file mode 100644 index 0000000..185f643 --- /dev/null +++ b/packages/playground/devEnv/playwright-report/index.html @@ -0,0 +1,3 @@ +Playwright Test Report
\ No newline at end of file diff --git a/packages/playground/devEnv/playwright.config.ts b/packages/playground/devEnv/playwright.config.ts new file mode 100644 index 0000000..f0a1743 --- /dev/null +++ b/packages/playground/devEnv/playwright.config.ts @@ -0,0 +1,77 @@ +import type {PlaywrightTestConfig} from '@playwright/test' +import {devices} from '@playwright/test' + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +const config: PlaywrightTestConfig = { + testDir: '../src', + testMatch: /.*\.e2e\.ts/, + /* Maximum time one test can run for. */ + timeout: 100000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 10000, + }, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 0 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: process.env.CI ? 'github' : 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + // actionTimeout: 200, + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + }, + }, + + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'], + }, + }, + ], + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + outputDir: '../test-results/', + + /* + This will serve the playground before running the tests, unless the playground is already running. + + Note that if the playground is not running but some other server is serving at port 8080, this will fail. + TODO 👆 + */ + webServer: { + command: 'yarn run serve', + port: 8080, + reuseExistingServer: !process.env.CI, + }, +} + +export default config diff --git a/packages/playground/devEnv/vite.config.ts b/packages/playground/devEnv/vite.config.ts index 0ce6750..fcf3ede 100644 --- a/packages/playground/devEnv/vite.config.ts +++ b/packages/playground/devEnv/vite.config.ts @@ -3,7 +3,6 @@ import react from '@vitejs/plugin-react' import path from 'path' import {getAliasesFromTsConfigForRollup} from '../../../devEnv/getAliasesFromTsConfig' import {definedGlobals} from '../../../theatre/devEnv/buildUtils' -import {existsSync, writeFileSync} from 'fs' /* We're using vite instead of the older pure-esbuild setup. The tradeoff is @@ -18,36 +17,10 @@ const playgroundDir = path.join(__dirname, '..') const port = 8080 -/** - * Creates playground/src/index.ts, since that file isn't committed to the repo. - */ -function createPlaygroundIndex() { - const playgroundIndexContent = ` - /** - * This file is created automatically and won't be comitted to the repo. - * You can change the import statement and import your own playground code. - * - * Your own playground code should reside in './personal', which is a folder - * that won't be committed to the repo. - * - * The shared playgrounds which other contributors can use are in the './shared' folder, - * which are comitted to the repo. - * - * Happy playing! - * */ - import './shared/r3f-rocket' - ` - - const playgroundEntry = path.join(playgroundDir, 'src/index.ts') - if (!existsSync(playgroundEntry)) { - writeFileSync(playgroundEntry, playgroundIndexContent, {encoding: 'utf-8'}) - } -} -createPlaygroundIndex() - // https://vitejs.dev/config/ export default defineConfig({ root: path.join(playgroundDir, './src'), + assetsInclude: ['**/*.gltf', '**/*.glb'], server: { port, @@ -61,5 +34,5 @@ export default defineConfig({ */ alias: [...getAliasesFromTsConfigForRollup()], }, - define: definedGlobals, + define: {...definedGlobals, 'window.__IS_VISUAL_REGRESSION_TESTING': 'true'}, }) diff --git a/packages/playground/package.json b/packages/playground/package.json index c41c771..b74ea35 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -10,9 +10,14 @@ "scripts": { "serve": "vite --config ./devEnv/vite.config.ts", "typecheck": "yarn run build", + "test": "playwright test --config=devEnv/playwright.config.ts", + "test:ci": "percy exec -- playwright test --reporter=dot --config=devEnv/playwright.config.ts --project=chromium", "build": "tsc --build ./tsconfig.json" }, "devDependencies": { + "@percy/cli": "^1.0.0-beta.76", + "@percy/playwright": "^1.0.1", + "@playwright/test": "^1.19.1", "@react-three/drei": "^7.2.2", "@react-three/fiber": "^7.0.6", "@theatre/core": "workspace:*", diff --git a/packages/playground/src/.gitignore b/packages/playground/src/.gitignore index 5e71368..1a6df4b 100644 --- a/packages/playground/src/.gitignore +++ b/packages/playground/src/.gitignore @@ -1,2 +1 @@ -personal -index.ts \ No newline at end of file +personal \ No newline at end of file diff --git a/packages/playground/src/index.html b/packages/playground/src/index.html index b51f922..7ceafd1 100644 --- a/packages/playground/src/index.html +++ b/packages/playground/src/index.html @@ -8,6 +8,13 @@ padding: 0; height: 100%; background: black; + color: white; + font-family: sans-serif; + font-size: 12px; + } + + a { + color: inherit; } @@ -15,6 +22,6 @@
- + diff --git a/packages/playground/src/index.tsx b/packages/playground/src/index.tsx new file mode 100644 index 0000000..4655163 --- /dev/null +++ b/packages/playground/src/index.tsx @@ -0,0 +1,92 @@ +/** + * TODO explain this file + * */ +/// + +import type {$FixMe} from '@theatre/shared/utils/types' +import {mapKeys} from 'lodash-es' +import React from 'react' +import ReactDOM from 'react-dom' + +const groups = { + shared: mapKeys(import.meta.glob('./shared/*/index.tsx'), (_, path) => + pathToModuleName(path), + ), + personal: mapKeys(import.meta.glob('./personal/*/index.tsx'), (_, path) => + pathToModuleName(path), + ), + tests: mapKeys(import.meta.glob('./tests/*/index.tsx'), (_, path) => + pathToModuleName(path), + ), +} + +function pathToModuleName(path: string): string { + const matches = path.match( + /^\.\/(shared|personal|tests)\/([a-zA-Z0-9\-\s]+)\/index\.tsx$/, + ) + + if (!matches) { + throw new Error( + `module ${path} has invalid characters in its path. Valid names should match the regexp above this line.`, + ) + } + + return matches[2] +} + +const Home = () => ( + +) + +const Group = (props: {groupName: string; modules: Record}) => { + const {groupName, modules} = props + return ( + + ) +} + +const currentPathname = document.location.pathname + +if (currentPathname === '/') { + renderHome() +} else { + const parts = currentPathname.match( + /^\/(shared|personal|tests)\/([a-zA-Z0-9\-]+)$/, + ) + if (parts) { + const [, groupName, moduleName] = parts + const group = groups[groupName as 'shared' | 'personal'] + if (!group) { + throw new Error(`Unknown group ${groupName}`) + } + const module = group[moduleName] + if (!module) { + throw new Error(`Unknown module ${moduleName}`) + } + module() + } else { + throw new Error(`Unknown path ${currentPathname}`) + } +} + +function renderHome() { + ReactDOM.render(React.createElement(Home), document.getElementById('root')) +} diff --git a/packages/playground/src/tests/setting-static-props/index.tsx b/packages/playground/src/tests/setting-static-props/index.tsx new file mode 100644 index 0000000..6f64642 --- /dev/null +++ b/packages/playground/src/tests/setting-static-props/index.tsx @@ -0,0 +1,13 @@ +import studio from '@theatre/studio' +import {getProject} from '@theatre/core' + +studio.initialize({usePersistentStorage: false}) + +const project = getProject('sample project') +const sheet = project.sheet('sample sheet') +const obj = sheet.object('sample object', { + position: { + x: 0, + y: 0, + }, +}) diff --git a/packages/playground/src/tests/setting-static-props/test.e2e.ts b/packages/playground/src/tests/setting-static-props/test.e2e.ts new file mode 100644 index 0000000..475fee3 --- /dev/null +++ b/packages/playground/src/tests/setting-static-props/test.e2e.ts @@ -0,0 +1,47 @@ +import {test, expect} from '@playwright/test' +import percySnapshot from '@percy/playwright' + +const isMac = process.platform === 'darwin' + +test.describe('setting-static-props', () => { + test.beforeEach(async ({page}) => { + // Go to the starting url before each test. + await page.goto('http://localhost:8080/tests/setting-static-props') + }) + + test('Undo/redo', async ({page}) => { + await page.locator('[data-testid="OutlinePanel-TriggerButton"]').click() + + await page.locator('span:has-text("sample object")').first().click() + + const detailPanel = page.locator('[data-testid="DetailPanel-Object"]') + + const firstInput = detailPanel.locator('input[type="text"]').first() + // Click input[type="text"] >> nth=0 + await firstInput.click() + // Fill input[type="text"] >> nth=0 + await firstInput.fill('1') + // Press Enter + await firstInput.press('Enter') + const secondInput = detailPanel.locator('input[type="text"]').nth(1) + // Click input[type="text"] >> nth=1 + await secondInput.click() + // Fill input[type="text"] >> nth=1 + await secondInput.fill('2') + // Press Enter + await secondInput.press('Enter') + + const metaKey = isMac ? 'Meta' : 'Control' + + // Press z with modifiers + await page.locator('body').press(`${metaKey}+z`) + await expect(firstInput).toHaveAttribute('value', '1') + await expect(secondInput).toHaveAttribute('value', '0') + await page.locator('body').press(`${metaKey}+Shift+z`) + await expect(firstInput).toHaveAttribute('value', '1') + await expect(secondInput).toHaveAttribute('value', '2') + + // Our first visual regression test + await percySnapshot(page, test.info().titlePath.join('/') + '/After redo') + }) +}) diff --git a/theatre/devEnv/buildUtils.ts b/theatre/devEnv/buildUtils.ts index 999bc16..66a0e3e 100644 --- a/theatre/devEnv/buildUtils.ts +++ b/theatre/devEnv/buildUtils.ts @@ -17,7 +17,7 @@ export function createBundles(watch: boolean) { loader: {'.png': 'file', '.svg': 'dataurl'}, bundle: true, sourcemap: true, - define: definedGlobals, + define: {...definedGlobals, __IS_VISUAL_REGRESSION_TESTING: 'false'}, watch, external: [ '@theatre/dataverse', diff --git a/theatre/globals.d.ts b/theatre/globals.d.ts index 1bbd4fd..c5dcc60 100644 --- a/theatre/globals.d.ts +++ b/theatre/globals.d.ts @@ -1,5 +1,6 @@ interface Window { __REDUX_DEVTOOLS_EXTENSION__?: $IntentionalAny + __IS_VISUAL_REGRESSION_TESTING?: boolean } interface NodeModule { diff --git a/theatre/studio/src/UI.ts b/theatre/studio/src/UI.ts index 07c31ee..c80277e 100644 --- a/theatre/studio/src/UI.ts +++ b/theatre/studio/src/UI.ts @@ -25,12 +25,15 @@ export default class UI { pointer-events: none; z-index: 100; ` - this.containerShadow = this.containerEl.attachShadow({ - mode: 'open', - // To see why I had to cast this value to HTMLElement, take a look at its - // references of this prop. There are a few functions that actually work - // with a ShadowRoot but are typed to accept HTMLElement - }) as $IntentionalAny as ShadowRoot & HTMLElement + this.containerShadow = + window.__IS_VISUAL_REGRESSION_TESTING === true + ? (document.getElementById('root') as $IntentionalAny) + : (this.containerEl.attachShadow({ + mode: 'open', + // To see why I had to cast this value to HTMLElement, take a look at its + // references of this prop. There are a few functions that actually work + // with a ShadowRoot but are typed to accept HTMLElement + }) as $IntentionalAny as ShadowRoot & HTMLElement) } render() { diff --git a/theatre/studio/src/UIRoot/UIRoot.tsx b/theatre/studio/src/UIRoot/UIRoot.tsx index 3c74630..3df8624 100644 --- a/theatre/studio/src/UIRoot/UIRoot.tsx +++ b/theatre/studio/src/UIRoot/UIRoot.tsx @@ -85,7 +85,11 @@ export default function UIRoot() { return !initialised ? null : ( <> diff --git a/theatre/studio/src/panels/DetailPanel/DetailPanel.tsx b/theatre/studio/src/panels/DetailPanel/DetailPanel.tsx index 6ab1f77..50b9cc2 100644 --- a/theatre/studio/src/panels/DetailPanel/DetailPanel.tsx +++ b/theatre/studio/src/panels/DetailPanel/DetailPanel.tsx @@ -109,7 +109,7 @@ const DetailPanel: React.FC<{}> = (props) => { if (obj) { return ( - +
${obj.address.objectKey}`} diff --git a/theatre/studio/src/panels/OutlinePanel/OutlinePanel.tsx b/theatre/studio/src/panels/OutlinePanel/OutlinePanel.tsx index caab83c..5f4afac 100644 --- a/theatre/studio/src/panels/OutlinePanel/OutlinePanel.tsx +++ b/theatre/studio/src/panels/OutlinePanel/OutlinePanel.tsx @@ -166,7 +166,10 @@ const OutlinePanel: React.FC<{}> = (props) => { <Container> <TriggerContainer> {triggerTooltip} - <TriggerButton ref={triggerButtonRef as $IntentionalAny}> + <TriggerButton + ref={triggerButtonRef as $IntentionalAny} + data-testid="OutlinePanel-TriggerButton" + > <VscListTree /> </TriggerButton> {conflicts.length > 0 ? ( @@ -177,7 +180,7 @@ const OutlinePanel: React.FC<{}> = (props) => { {/* <Title>Outline */} - + diff --git a/yarn.lock b/yarn.lock index 85dd5f8..64801e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -59,6 +59,15 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:7.16.7, @babel/code-frame@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/code-frame@npm:7.16.7" + dependencies: + "@babel/highlight": ^7.16.7 + checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13": version: 7.12.13 resolution: "@babel/code-frame@npm:7.12.13" @@ -77,15 +86,6 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/code-frame@npm:7.16.7" - dependencies: - "@babel/highlight": ^7.16.7 - checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.12.1, @babel/compat-data@npm:^7.14.7, @babel/compat-data@npm:^7.15.0": version: 7.15.0 resolution: "@babel/compat-data@npm:7.15.0" @@ -138,6 +138,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:7.16.12": + version: 7.16.12 + resolution: "@babel/core@npm:7.16.12" + dependencies: + "@babel/code-frame": ^7.16.7 + "@babel/generator": ^7.16.8 + "@babel/helper-compilation-targets": ^7.16.7 + "@babel/helper-module-transforms": ^7.16.7 + "@babel/helpers": ^7.16.7 + "@babel/parser": ^7.16.12 + "@babel/template": ^7.16.7 + "@babel/traverse": ^7.16.10 + "@babel/types": ^7.16.8 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.1.2 + semver: ^6.3.0 + source-map: ^0.5.0 + checksum: 29b56f3cb7c329fc038a2efaccf64ac3025835676b3d90f57f2265b6acd477a970114d09021b38d019ac8f20b2bb1596a9e79ce1f820d6b8cf0e4a802891817c + languageName: node + linkType: hard + "@babel/core@npm:^7.1.0, @babel/core@npm:^7.4.4, @babel/core@npm:^7.7.5": version: 7.13.14 resolution: "@babel/core@npm:7.13.14" @@ -297,7 +320,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.17.3": +"@babel/generator@npm:^7.16.8, @babel/generator@npm:^7.17.3": version: 7.17.3 resolution: "@babel/generator@npm:7.17.3" dependencies: @@ -442,6 +465,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.16.10, @babel/helper-create-class-features-plugin@npm:^7.16.7": + version: 7.17.6 + resolution: "@babel/helper-create-class-features-plugin@npm:7.17.6" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.7 + "@babel/helper-environment-visitor": ^7.16.7 + "@babel/helper-function-name": ^7.16.7 + "@babel/helper-member-expression-to-functions": ^7.16.7 + "@babel/helper-optimise-call-expression": ^7.16.7 + "@babel/helper-replace-supers": ^7.16.7 + "@babel/helper-split-export-declaration": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d85a5b3f9a18a661372d77462e6ea2a6a03f1083f8b3055ed165284214af9ea6ad677f6bcc4b5ce215da27f95fa93064580d4b6723b578c480ecf17dd31a4307 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.12.13": version: 7.12.17 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.17" @@ -646,6 +686,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.16.7" + dependencies: + "@babel/types": ^7.16.7 + checksum: e275378022278a7e7974a3f65566690f1804ac88c5f4e848725cf936f61cd1e2557e88cfb6cb4fea92ae5a95ad89d78dbccc9a53715d4363f84c9fd109272c18 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": version: 7.13.12 resolution: "@babel/helper-module-imports@npm:7.13.12" @@ -771,6 +820,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.16.7" + dependencies: + "@babel/types": ^7.16.7 + checksum: 925feb877d5a30a71db56e2be498b3abbd513831311c0188850896c4c1ada865eea795dce5251a1539b0f883ef82493f057f84286dd01abccc4736acfafe15ea + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.13.0 resolution: "@babel/helper-plugin-utils@npm:7.13.0" @@ -838,6 +896,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/helper-replace-supers@npm:7.16.7" + dependencies: + "@babel/helper-environment-visitor": ^7.16.7 + "@babel/helper-member-expression-to-functions": ^7.16.7 + "@babel/helper-optimise-call-expression": ^7.16.7 + "@babel/traverse": ^7.16.7 + "@babel/types": ^7.16.7 + checksum: e5c0b6eb3dad8410a6255f93b580dde9b3c1564646c6ef751de59d5b2a65b5caa80cc9e568155f04bbae895ad0f54305c2e833dbd971a4f641f970c90b3d892b + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.12.13, @babel/helper-simple-access@npm:^7.13.12": version: 7.13.12 resolution: "@babel/helper-simple-access@npm:7.13.12" @@ -883,6 +954,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: b9ed2896eb253e6a85f472b0d4098ed80403758ad1a4e34b02b11e8276e3083297526758b1a3e6886e292987266f10622d7dbced3508cc22b296a74903b41cfb + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-split-export-declaration@npm:7.12.13" @@ -1016,7 +1096,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.17.2": +"@babel/helpers@npm:^7.16.7, @babel/helpers@npm:^7.17.2": version: 7.17.2 resolution: "@babel/helpers@npm:7.17.2" dependencies: @@ -1096,7 +1176,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.3": +"@babel/parser@npm:^7.16.12, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.3": version: 7.17.3 resolution: "@babel/parser@npm:7.17.3" bin: @@ -1169,6 +1249,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-properties@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-class-properties@npm:7.16.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3977e841e17b45b47be749b9a5b67b9e8b25ff0840f9fdad3f00cbcb35db4f5ff15f074939fe19b01207a29688c432cc2c682351959350834d62920b7881f803 + languageName: node + linkType: hard + "@babel/plugin-proposal-class-properties@npm:^7.12.1, @babel/plugin-proposal-class-properties@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-class-properties@npm:7.14.5" @@ -1219,6 +1311,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-dynamic-import@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5992012484fb8bda1451369350e475091954ed414dd9ef8654a3c4daa2db0205d4f29c94f5d3dedfbc5a434996375c8304586904337d6af938ac0f27a0033e23 + languageName: node + linkType: hard + "@babel/plugin-proposal-dynamic-import@npm:^7.12.1, @babel/plugin-proposal-dynamic-import@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-dynamic-import@npm:7.14.5" @@ -1243,6 +1347,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-export-namespace-from@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5016079a5305c1c130fea587b42cdce501574739cfefa5b63469dbc1f32d436df0ff42fabf04089fe8b6a00f4ea7563869e944744b457e186c677995983cb166 + languageName: node + linkType: hard + "@babel/plugin-proposal-export-namespace-from@npm:^7.12.1, @babel/plugin-proposal-export-namespace-from@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.14.5" @@ -1291,6 +1407,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-logical-assignment-operators@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4cf18e10f900d40eaa471c4adce4805e67bd845f997a4b9d5653eced4e653187b9950843b2bf7eab6c0c3e753aba222b1d38888e3e14e013f87295c5b014f19 + languageName: node + linkType: hard + "@babel/plugin-proposal-logical-assignment-operators@npm:^7.12.1, @babel/plugin-proposal-logical-assignment-operators@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.14.5" @@ -1327,6 +1455,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bfafc2701697b5c763dbbb65dd97b56979bfb0922e35be27733699a837aeff22316313ddfdd0fb45129efa3f86617219b77110d05338bc4dca4385d8ce83dd19 + languageName: node + linkType: hard + "@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.1, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.14.5" @@ -1363,6 +1503,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-numeric-separator@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8e2fb0b32845908c67f80bc637a0968e28a66727d7ffb22b9c801dc355d88e865dc24aec586b00c922c23833ae5d26301b443b53609ea73d8344733cd48a1eca + languageName: node + linkType: hard + "@babel/plugin-proposal-numeric-separator@npm:^7.12.1, @babel/plugin-proposal-numeric-separator@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-numeric-separator@npm:7.14.5" @@ -1454,6 +1606,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-chaining@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e4a6c1ac7e6817b92a673ea52ab0b7dc1fb39d29fb0820cd414e10ae2cd132bd186b4238dcca881a29fc38fe9d38ed24fc111ba22ca20086481682d343f4f130 + languageName: node + linkType: hard + "@babel/plugin-proposal-optional-chaining@npm:^7.12.1, @babel/plugin-proposal-optional-chaining@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.14.5" @@ -1480,6 +1645,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-methods@npm:7.16.11": + version: 7.16.11 + resolution: "@babel/plugin-proposal-private-methods@npm:7.16.11" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.10 + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b333e5aa91c265bb394a57b5f4ae1a34fc8ee73a8d75506b12df258d8b5342107cbd9261f95e606bd3264a5b023db77f1f95be30c2e526683916c57f793f7943 + languageName: node + linkType: hard + "@babel/plugin-proposal-private-methods@npm:^7.12.1, @babel/plugin-proposal-private-methods@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-private-methods@npm:7.14.5" @@ -1504,6 +1681,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-property-in-object@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.7 + "@babel/helper-create-class-features-plugin": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 666d668f51d8c01aaf0dd87b27a83fc0392884d2c8e9d8e17b3b7011c0d348865dee94b44dc2d7070726e58e3b579728dc2588aaa8140d563f7390743ee90f0a + languageName: node + linkType: hard + "@babel/plugin-proposal-private-property-in-object@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.14.5" @@ -1542,7 +1733,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-async-generators@npm:^7.8.0, @babel/plugin-syntax-async-generators@npm:^7.8.4": +"@babel/plugin-syntax-async-generators@npm:7.8.4, @babel/plugin-syntax-async-generators@npm:^7.8.0, @babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" dependencies: @@ -1652,7 +1843,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-json-strings@npm:^7.8.0, @babel/plugin-syntax-json-strings@npm:^7.8.3": +"@babel/plugin-syntax-json-strings@npm:7.8.3, @babel/plugin-syntax-json-strings@npm:^7.8.0, @babel/plugin-syntax-json-strings@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" dependencies: @@ -1729,7 +1920,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": +"@babel/plugin-syntax-object-rest-spread@npm:7.8.3, @babel/plugin-syntax-object-rest-spread@npm:^7.8.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" dependencies: @@ -1740,7 +1931,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.0, @babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@npm:7.8.3, @babel/plugin-syntax-optional-catch-binding@npm:^7.8.0, @babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" dependencies: @@ -1806,6 +1997,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 661e636060609ede9a402e22603b01784c21fabb0a637e65f561c8159351fe0130bbc11fdefe31902107885e3332fc34d95eb652ac61d3f61f2d61f5da20609e + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.12.13 resolution: "@babel/plugin-syntax-typescript@npm:7.12.13" @@ -2197,6 +2399,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:7.16.8": + version: 7.16.8 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.8" + dependencies: + "@babel/helper-module-transforms": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-simple-access": ^7.16.7 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c0ac00f5457e12cac7825b14725b6fc787bef78945181469ff79f07ef0fd7df021cb00fe1d3a9f35fc9bc92ae59e6e3fc9075a70b627dfe10e00d0907892aace + languageName: node + linkType: hard + "@babel/plugin-transform-modules-commonjs@npm:^7.12.1, @babel/plugin-transform-modules-commonjs@npm:^7.15.0": version: 7.15.0 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.15.0" @@ -2504,6 +2720,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/plugin-transform-react-jsx@npm:7.16.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.7 + "@babel/helper-module-imports": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-jsx": ^7.16.7 + "@babel/types": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0e82346d7c99b4467946d535a8c626a988e5670f65a15dee8520ce9cf4f0147c99decc1cbb4bd352083eaafd259ee3e4299854cac6304a83666d488edf4e58f6 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx@npm:^7.0.0": version: 7.13.12 resolution: "@babel/plugin-transform-react-jsx@npm:7.13.12" @@ -2756,6 +2987,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.16.7": + version: 7.16.8 + resolution: "@babel/plugin-transform-typescript@npm:7.16.8" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.7 + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/plugin-syntax-typescript": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a76d0afcbd550208cf2e7cdedb4f2d3ca3fa287640a4858a5ee0a28270b784d7d20d5a51b5997dc84514e066a5ebef9e0a0f74ed9fffae09e73984786dd08036 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.12.1, @babel/plugin-transform-unicode-escapes@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.14.5" @@ -3100,6 +3344,19 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/preset-typescript@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-validator-option": ^7.16.7 + "@babel/plugin-transform-typescript": ^7.16.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 44e2f3fa302befe0dc50a01b79e5aa8c27a9c7047c46df665beae97201173030646ddf7c83d7d3ed3724fc38151745b11693e7b4502c81c4cd67781ff5677da5 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.15.0": version: 7.15.0 resolution: "@babel/preset-typescript@npm:7.15.0" @@ -3266,7 +3523,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.17.0, @babel/traverse@npm:^7.17.3": +"@babel/traverse@npm:^7.16.10, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.17.0, @babel/traverse@npm:^7.17.3": version: 7.17.3 resolution: "@babel/traverse@npm:7.17.3" dependencies: @@ -3325,7 +3582,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.16.7, @babel/types@npm:^7.17.0": +"@babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.17.0": version: 7.17.0 resolution: "@babel/types@npm:7.17.0" dependencies: @@ -3963,6 +4220,19 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^27.2.5, @jest/types@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/types@npm:27.5.1" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^16.0.0 + chalk: ^4.0.0 + checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.0.3": version: 3.0.5 resolution: "@jridgewell/resolve-uri@npm:3.0.5" @@ -4180,6 +4450,228 @@ __metadata: languageName: node linkType: hard +"@percy/cli-build@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-build@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-command": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + checksum: 265848ae21855ee54a911c1d6d604c7ec5af896733094c83fd29e6e3c92ee24b8e742c971e8910e337d7e26970f8123d8e0d367f71b156fd08b1167ca36f606b + languageName: node + linkType: hard + +"@percy/cli-command@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-command@npm:1.0.0-beta.76" + dependencies: + "@percy/config": 1.0.0-beta.76 + "@percy/core": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + bin: + percy-cli-readme: bin/readme + checksum: a6506178db1dd83e5d9ec0f5cb0efbc750061361c968393a71c1d558bfb8b6510ce7b17c8580d6c1b223bf8009c847391769db1f4c45c91bacde3f06b9c51cd7 + languageName: node + linkType: hard + +"@percy/cli-config@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-config@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-command": 1.0.0-beta.76 + "@percy/config": 1.0.0-beta.76 + checksum: 2a4106432129d5377d349dae1e73f94e0cd597c1f864e0c711d12d269a3b6ea10c2f13634ef2175e872fed3a3cca6447cbe4229fd6c866073c37ce9ff25e2853 + languageName: node + linkType: hard + +"@percy/cli-exec@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-exec@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-command": 1.0.0-beta.76 + "@percy/core": 1.0.0-beta.76 + cross-spawn: ^7.0.3 + which: ^2.0.2 + checksum: 766f10bdafc7b30626959b0cd810cb2162e60788bd21a1c18d9a9f3aa933fe6baa705da4d7f2afec535b6b29d0b587c16a1d2a90255a48b055483ee4d8bd2a74 + languageName: node + linkType: hard + +"@percy/cli-snapshot@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-snapshot@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-command": 1.0.0-beta.76 + "@percy/config": 1.0.0-beta.76 + "@percy/core": 1.0.0-beta.76 + globby: ^11.0.4 + path-to-regexp: ^6.2.0 + picomatch: ^2.3.0 + serve-handler: ^6.1.3 + yaml: ^1.10.0 + checksum: 94c74035488a7c7f6a91a6aad9db05a99def23256ef90e38b6a76b41ae304c3b2ff5a1bad631e4dfcd87e34fc11dd0802990877f97954a9d29b5e5d322b1d40b + languageName: node + linkType: hard + +"@percy/cli-upload@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli-upload@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-command": 1.0.0-beta.76 + "@percy/client": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + globby: ^11.0.4 + image-size: ^1.0.0 + checksum: 2e8141f6e5cabd487d7abc5c3333a7635dc6e353a8df04979aaad0f384479d4e7089b184cd6d4fc4e90319232af607afaa81fdcb16aa2a930d76d7fb20d2f290 + languageName: node + linkType: hard + +"@percy/cli@npm:^1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/cli@npm:1.0.0-beta.76" + dependencies: + "@percy/cli-build": 1.0.0-beta.76 + "@percy/cli-command": 1.0.0-beta.76 + "@percy/cli-config": 1.0.0-beta.76 + "@percy/cli-exec": 1.0.0-beta.76 + "@percy/cli-snapshot": 1.0.0-beta.76 + "@percy/cli-upload": 1.0.0-beta.76 + "@percy/client": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + bin: + percy: bin/run + checksum: 419721a0811d905c78c6e9799d1a5bf1f5d47481e6ca9e5a281097822f16e1018c165728a276f622779e4eb439f2fa193676dc72cf2148b5c6fd62182a41d5db + languageName: node + linkType: hard + +"@percy/client@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/client@npm:1.0.0-beta.76" + dependencies: + "@percy/env": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + checksum: c09f3e134d5ee3825322f43536c268c3d96178a3bf72eacc2fe7dca1d90935ffc454fe5691a50dc65e947c1ac29df6f45014ef63f3b53b605edee8c72677c276 + languageName: node + linkType: hard + +"@percy/config@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/config@npm:1.0.0-beta.76" + dependencies: + "@percy/logger": 1.0.0-beta.76 + ajv: ^8.6.2 + cosmiconfig: ^7.0.0 + yaml: ^1.10.0 + checksum: 98b1c8544c70e22fa0b248935c89f1320351692795163fca43dc2b5c569347a7f1d7c9dbb329481807e2462fc692272a83c0305d2acf2a693107f2f352745d9b + languageName: node + linkType: hard + +"@percy/core@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/core@npm:1.0.0-beta.76" + dependencies: + "@percy/client": 1.0.0-beta.76 + "@percy/config": 1.0.0-beta.76 + "@percy/dom": 1.0.0-beta.76 + "@percy/logger": 1.0.0-beta.76 + content-disposition: ^0.5.4 + cross-spawn: ^7.0.3 + extract-zip: ^2.0.1 + mime-types: ^2.1.34 + path-to-regexp: ^6.2.0 + rimraf: ^3.0.2 + ws: ^8.0.0 + checksum: 2794e3f3361b72215b9fc664f0bc11824153a5ac8905cd8687606ab1f8f730264783367ea56147a4b3575fdb31d6e5ef1121385cde7f168cb1a20e05c66f7772 + languageName: node + linkType: hard + +"@percy/dom@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/dom@npm:1.0.0-beta.76" + checksum: 8fc86300fa1715d81a58e923fd06e7d9f410c2ddf1a066f7088b076fe8ede1a2af287bd4b7e5a3a57fb9f0608ef2c53f986bb0aa9c247806c2ebc7861db9e5ad + languageName: node + linkType: hard + +"@percy/env@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/env@npm:1.0.0-beta.76" + checksum: b93628f66db244d7dc37571e22b66101a66c14fdc50d826e4f52fa8d0e5d14e6926836dce511d19966f4ddaa0654660f7caa0afff5b3c8aa75aa064af2fe660d + languageName: node + linkType: hard + +"@percy/logger@npm:1.0.0-beta.76": + version: 1.0.0-beta.76 + resolution: "@percy/logger@npm:1.0.0-beta.76" + checksum: 9d5744fd8c9a7c29036063c1f44f00b05e3be662719a2ebc6bd8d2e7f07f8d84d27ab35a3db7676a84d55699358273daab52393c3eefb5ee921f6490ebfeb1ae + languageName: node + linkType: hard + +"@percy/playwright@npm:^1.0.1": + version: 1.0.1 + resolution: "@percy/playwright@npm:1.0.1" + dependencies: + "@percy/sdk-utils": ^1.0.0-beta.69 + peerDependencies: + playwright: ">=1" + checksum: e1a459b70d9b40b4b47b9cfedf6ebd22d6950ded639294ca326e7ba0c75a311d9a0f2d1ff933ace600609ef936cfee920249230c39a5e89b4a57e149c6ada4ca + languageName: node + linkType: hard + +"@percy/sdk-utils@npm:^1.0.0-beta.69": + version: 1.0.0-beta.76 + resolution: "@percy/sdk-utils@npm:1.0.0-beta.76" + dependencies: + "@percy/logger": 1.0.0-beta.76 + checksum: f32ead2b545214f0c44a79b46c4fee0a15d068a8a49f70797f71dd484fecdbf6a5a804ae8bb1c0d9ca4a8aeebc6ca183332b6492682b18b8ae80f81bd4f777b6 + languageName: node + linkType: hard + +"@playwright/test@npm:^1.19.1": + version: 1.19.1 + resolution: "@playwright/test@npm:1.19.1" + dependencies: + "@babel/code-frame": 7.16.7 + "@babel/core": 7.16.12 + "@babel/plugin-proposal-class-properties": 7.16.7 + "@babel/plugin-proposal-dynamic-import": 7.16.7 + "@babel/plugin-proposal-export-namespace-from": 7.16.7 + "@babel/plugin-proposal-logical-assignment-operators": 7.16.7 + "@babel/plugin-proposal-nullish-coalescing-operator": 7.16.7 + "@babel/plugin-proposal-numeric-separator": 7.16.7 + "@babel/plugin-proposal-optional-chaining": 7.16.7 + "@babel/plugin-proposal-private-methods": 7.16.11 + "@babel/plugin-proposal-private-property-in-object": 7.16.7 + "@babel/plugin-syntax-async-generators": 7.8.4 + "@babel/plugin-syntax-json-strings": 7.8.3 + "@babel/plugin-syntax-object-rest-spread": 7.8.3 + "@babel/plugin-syntax-optional-catch-binding": 7.8.3 + "@babel/plugin-transform-modules-commonjs": 7.16.8 + "@babel/plugin-transform-react-jsx": 7.16.7 + "@babel/preset-typescript": 7.16.7 + babel-plugin-module-resolver: 4.1.0 + colors: 1.4.0 + commander: 8.3.0 + debug: 4.3.3 + expect: 27.2.5 + jest-matcher-utils: 27.2.5 + jpeg-js: 0.4.3 + json5: 2.2.0 + mime: 3.0.0 + minimatch: 3.0.4 + ms: 2.1.3 + open: 8.4.0 + pirates: 4.0.4 + pixelmatch: 5.2.1 + playwright-core: 1.19.1 + pngjs: 6.0.0 + rimraf: 3.0.2 + source-map-support: 0.4.18 + stack-utils: 2.0.5 + yazl: 2.5.1 + bin: + playwright: cli.js + checksum: cdb7be41470a1493899dba2d2dd2a46ce0b2ed16383a9b7c7d82ad352d118a23956285e08614ba783a93cf981de8b6287c44f73ac8d2deb7aa3a2ca500250e70 + languageName: node + linkType: hard + "@pmmmwh/react-refresh-webpack-plugin@npm:0.4.3": version: 0.4.3 resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.4.3" @@ -5349,6 +5841,15 @@ __metadata: languageName: node linkType: hard +"@types/yauzl@npm:^2.9.1": + version: 2.9.2 + resolution: "@types/yauzl@npm:2.9.2" + dependencies: + "@types/node": "*" + checksum: dfb49abe82605615712fc694eaa4f7068fe30aa03f38c085e2c2e74408beaad30471d36da9654a811482ece2ea4405575fd99b19c0aa327ed2a9736b554bbf43 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^4.30.0": version: 4.30.0 resolution: "@typescript-eslint/eslint-plugin@npm:4.30.0" @@ -5940,7 +6441,7 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:6": +"agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -6012,6 +6513,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.6.2": + version: 8.10.0 + resolution: "ajv@npm:8.10.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 3594728ef1e31219ef97bfacb203d0d72db8ad5c35d6d0578e38ee453e4537c2bf927dad144bb84b0c893f661d71b58337d4643e8ee2f2a6e1d63b041c92fe82 + languageName: node + linkType: hard + "alphanum-sort@npm:^1.0.0": version: 1.0.2 resolution: "alphanum-sort@npm:1.0.2" @@ -6079,6 +6592,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + "ansi-styles@npm:^2.2.1": version: 2.2.1 resolution: "ansi-styles@npm:2.2.1" @@ -6696,6 +7216,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-module-resolver@npm:4.1.0": + version: 4.1.0 + resolution: "babel-plugin-module-resolver@npm:4.1.0" + dependencies: + find-babel-config: ^1.2.0 + glob: ^7.1.6 + pkg-up: ^3.1.0 + reselect: ^4.0.0 + resolve: ^1.13.1 + checksum: 3907fba21ca3c66a081e01fbd16bb09c84781749db16aa57805becc376bb5ee8dc373d4b209613e1453d30ea6c836d13073e9e7b6d239ff1806dd1763a9ab18f + languageName: node + linkType: hard + "babel-plugin-named-asset-import@npm:^0.3.7": version: 0.3.7 resolution: "babel-plugin-named-asset-import@npm:0.3.7" @@ -7380,6 +7913,13 @@ __metadata: languageName: node linkType: hard +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c + languageName: node + linkType: hard + "buffer-equal@npm:0.0.1": version: 0.0.1 resolution: "buffer-equal@npm:0.0.1" @@ -8074,6 +8614,13 @@ __metadata: languageName: node linkType: hard +"colors@npm:1.4.0": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec + languageName: node + linkType: hard + "colors@npm:~1.2.1": version: 1.2.5 resolution: "colors@npm:1.2.5" @@ -8097,6 +8644,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + languageName: node + linkType: hard + "commander@npm:^2.11.0, commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.7.1": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -8233,6 +8787,13 @@ __metadata: languageName: node linkType: hard +"content-disposition@npm:0.5.2": + version: 0.5.2 + resolution: "content-disposition@npm:0.5.2" + checksum: 298d7da63255a38f7858ee19c7b6aae32b167e911293174b4c1349955e97e78e1d0b0d06c10e229405987275b417cf36ff65cbd4821a98bc9df4e41e9372cde7 + languageName: node + linkType: hard + "content-disposition@npm:0.5.3": version: 0.5.3 resolution: "content-disposition@npm:0.5.3" @@ -8242,6 +8803,15 @@ __metadata: languageName: node linkType: hard +"content-disposition@npm:^0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + "content-type@npm:~1.0.4": version: 1.0.4 resolution: "content-type@npm:1.0.4" @@ -9018,6 +9588,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:4.3.3": + version: 4.3.3 + resolution: "debug@npm:4.3.3" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 + languageName: node + linkType: hard + "debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -9102,6 +9684,13 @@ __metadata: languageName: node linkType: hard +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + "define-properties@npm:^1.1.2, define-properties@npm:^1.1.3": version: 1.1.3 resolution: "define-properties@npm:1.1.3" @@ -9251,6 +9840,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -9551,9 +10147,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.71": - version: 1.4.71 - resolution: "electron-to-chromium@npm:1.4.71" - checksum: ecb2546eed6b0e95003d787c259de730f32e2f5c0fa2acb27069c0cd21378cbc2a6c7516f4ec677a5960db4e180644f87ed91a729825a238454e31e4e74617db + version: 1.4.72 + resolution: "electron-to-chromium@npm:1.4.72" + checksum: c5eba9f7a06189028652714942e47fad3006a9d8997444708301d1f24dfb3e5ce4ef5b038ed55a29aab8402d2b5a7022db50e02b72c24c98d5924b0f496fc16a languageName: node linkType: hard @@ -10751,6 +11347,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:27.2.5": + version: 27.2.5 + resolution: "expect@npm:27.2.5" + dependencies: + "@jest/types": ^27.2.5 + ansi-styles: ^5.0.0 + jest-get-type: ^27.0.6 + jest-matcher-utils: ^27.2.5 + jest-message-util: ^27.2.5 + jest-regex-util: ^27.0.6 + checksum: c9be6ec30d19f69c6b838c379e102c156b3ce231e0e3bfc7928eb7a239e5d2a8ed3a43ded4856ad6b3f2f83944561455ad3cf4dfc5322e7d962f2eddc67941c7 + languageName: node + linkType: hard + "expect@npm:^26.6.0, expect@npm:^26.6.2": version: 26.6.2 resolution: "expect@npm:26.6.2" @@ -10868,6 +11478,23 @@ __metadata: languageName: node linkType: hard +"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1": + version: 2.0.1 + resolution: "extract-zip@npm:2.0.1" + dependencies: + "@types/yauzl": ^2.9.1 + debug: ^4.1.1 + get-stream: ^5.1.0 + yauzl: ^2.10.0 + dependenciesMeta: + "@types/yauzl": + optional: true + bin: + extract-zip: cli.js + checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 + languageName: node + linkType: hard + "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" @@ -10929,6 +11556,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.2.11 + resolution: "fast-glob@npm:3.2.11" + dependencies: + "@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 + checksum: f473105324a7780a20c06de842e15ddbb41d3cb7e71d1e4fe6e8373204f22245d54f5ab9e2061e6a1c613047345954d29b022e0e76f5c28b1df9858179a0e6d7 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -10950,6 +11590,15 @@ __metadata: languageName: node linkType: hard +"fast-url-parser@npm:1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: ^1.3.2 + checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c + languageName: node + linkType: hard + "fastest-stable-stringify@npm:^2.0.2": version: 2.0.2 resolution: "fastest-stable-stringify@npm:2.0.2" @@ -10991,6 +11640,15 @@ __metadata: languageName: node linkType: hard +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" + dependencies: + pend: ~1.2.0 + checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 + languageName: node + linkType: hard + "fflate@npm:^0.6.9": version: 0.6.10 resolution: "fflate@npm:0.6.10" @@ -11095,6 +11753,16 @@ __metadata: languageName: node linkType: hard +"find-babel-config@npm:^1.2.0": + version: 1.2.0 + resolution: "find-babel-config@npm:1.2.0" + dependencies: + json5: ^0.5.1 + path-exists: ^3.0.0 + checksum: 0a1785d3da9f38637885d9d65f183aaa072f51a834f733035e9694e4d0f6983ae8c8e75cd4e08b92af6f595b3b490ee813a1c5a9b14740685aa836fa1e878583 + languageName: node + linkType: hard + "find-cache-dir@npm:^2.1.0": version: 2.1.0 resolution: "find-cache-dir@npm:2.1.0" @@ -11471,7 +12139,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"get-stream@npm:^5.0.0": +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -11637,6 +12305,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"globby@npm:^11.0.4": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.2.9 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^3.0.0 + checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + languageName: node + linkType: hard + "globby@npm:^6.1.0": version: 6.1.0 resolution: "globby@npm:6.1.0" @@ -11664,6 +12346,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"graceful-fs@npm:^4.2.9": + version: 4.2.9 + resolution: "graceful-fs@npm:4.2.9" + checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 + languageName: node + linkType: hard + "grapheme-breaker@npm:^0.3.2": version: 0.3.2 resolution: "grapheme-breaker@npm:0.3.2" @@ -12186,7 +12875,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0": +"https-proxy-agent@npm:5.0.0, https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" dependencies: @@ -12313,6 +13002,24 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ignore@npm:^5.2.0": + version: 5.2.0 + resolution: "ignore@npm:5.2.0" + checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 + languageName: node + linkType: hard + +"image-size@npm:^1.0.0": + version: 1.0.1 + resolution: "image-size@npm:1.0.1" + dependencies: + queue: 6.0.2 + bin: + image-size: bin/image-size.js + checksum: ffa74672dc7a1b6529c66255adbfe4e7865408004db88ed100855816f03175494ec21ef9dad199b8685b5b194996ebe83ab27803af152adb66a301172fdd622d + languageName: node + linkType: hard + "immer@npm:8.0.1": version: 8.0.1 resolution: "immer@npm:8.0.1" @@ -12752,7 +13459,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-docker@npm:^2.0.0": +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" bin: @@ -13399,6 +14106,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-diff@npm:^27.2.5, jest-diff@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-diff@npm:27.5.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^27.5.1 + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 + languageName: node + linkType: hard + "jest-docblock@npm:^26.0.0": version: 26.0.0 resolution: "jest-docblock@npm:26.0.0" @@ -13515,6 +14234,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-get-type@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-get-type@npm:27.5.1" + checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 + languageName: node + linkType: hard + "jest-haste-map@npm:^26.6.2": version: 26.6.2 resolution: "jest-haste-map@npm:26.6.2" @@ -13636,6 +14362,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-matcher-utils@npm:27.2.5": + version: 27.2.5 + resolution: "jest-matcher-utils@npm:27.2.5" + dependencies: + chalk: ^4.0.0 + jest-diff: ^27.2.5 + jest-get-type: ^27.0.6 + pretty-format: ^27.2.5 + checksum: 92f285c8e2a50f2b6761a1d81db98858416b6ccb6559c9ce954ef9cad6b76729ac18b8c1e98e2e81e1a55fca4dc9d8571d5dfbc2161583ed5716119e35b2a089 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^26.6.0, jest-matcher-utils@npm:^26.6.2": version: 26.6.2 resolution: "jest-matcher-utils@npm:26.6.2" @@ -13660,6 +14398,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-matcher-utils@npm:^27.2.5": + version: 27.5.1 + resolution: "jest-matcher-utils@npm:27.5.1" + dependencies: + chalk: ^4.0.0 + jest-diff: ^27.5.1 + jest-get-type: ^27.5.1 + pretty-format: ^27.5.1 + checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a + languageName: node + linkType: hard + "jest-message-util@npm:^26.6.0, jest-message-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-message-util@npm:26.6.2" @@ -13694,6 +14444,23 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-message-util@npm:^27.2.5": + version: 27.5.1 + resolution: "jest-message-util@npm:27.5.1" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^27.5.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^27.5.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 + languageName: node + linkType: hard + "jest-mock@npm:^26.6.2": version: 26.6.2 resolution: "jest-mock@npm:26.6.2" @@ -14205,6 +14972,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jpeg-js@npm:0.4.3": + version: 0.4.3 + resolution: "jpeg-js@npm:0.4.3" + checksum: 9e5bacc9135efa7da340b62e81fa56fab0c8516ef617228758132af5b7d31b516cc6e1500cdffb82d3161629be341be980099f2b37eb76b81e26db6e3e848c77 + languageName: node + linkType: hard + "js-cookie@npm:^2.2.1": version: 2.2.1 resolution: "js-cookie@npm:2.2.1" @@ -14461,6 +15235,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"json5@npm:2.2.0, json5@npm:^2.1.2, json5@npm:^2.2.0": + version: 2.2.0 + resolution: "json5@npm:2.2.0" + dependencies: + minimist: ^1.2.5 + bin: + json5: lib/cli.js + checksum: e88fc5274bb58fc99547baa777886b069d2dd96d9cfc4490b305fd16d711dabd5979e35a4f90873cefbeb552e216b041a304fe56702bedba76e19bc7845f208d + languageName: node + linkType: hard + "json5@npm:^0.5.1": version: 0.5.1 resolution: "json5@npm:0.5.1" @@ -14481,17 +15266,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.0": - version: 2.2.0 - resolution: "json5@npm:2.2.0" - dependencies: - minimist: ^1.2.5 - bin: - json5: lib/cli.js - checksum: e88fc5274bb58fc99547baa777886b069d2dd96d9cfc4490b305fd16d711dabd5979e35a4f90873cefbeb552e216b041a304fe56702bedba76e19bc7845f208d - languageName: node - linkType: hard - "jsonc-parser@npm:^3.0.0": version: 3.0.0 resolution: "jsonc-parser@npm:3.0.0" @@ -15197,7 +15971,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"merge2@npm:^1.2.3, merge2@npm:^1.3.0": +"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 @@ -15285,6 +16059,29 @@ fsevents@^1.2.7: languageName: node linkType: hard +"mime-db@npm:1.51.0": + version: 1.51.0 + resolution: "mime-db@npm:1.51.0" + checksum: 613b1ac9d6e725cc24444600b124a7f1ce6c60b1baa654f39a3e260d0995a6dffc5693190217e271af7e2a5612dae19f2a73f3e316707d797a7391165f7ef423 + languageName: node + linkType: hard + +"mime-db@npm:~1.33.0": + version: 1.33.0 + resolution: "mime-db@npm:1.33.0" + checksum: 281a0772187c9b8f6096976cb193ac639c6007ac85acdbb8dc1617ed7b0f4777fa001d1b4f1b634532815e60717c84b2f280201d55677fb850c9d45015b50084 + languageName: node + linkType: hard + +"mime-types@npm:2.1.18": + version: 2.1.18 + resolution: "mime-types@npm:2.1.18" + dependencies: + mime-db: ~1.33.0 + checksum: 729265eff1e5a0e87cb7f869da742a610679585167d2f2ec997a7387fc6aedf8e5cad078e99b0164a927bdf3ace34fca27430d6487456ad090cba5594441ba43 + languageName: node + linkType: hard + "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19": version: 2.1.30 resolution: "mime-types@npm:2.1.30" @@ -15294,6 +16091,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"mime-types@npm:^2.1.34": + version: 2.1.34 + resolution: "mime-types@npm:2.1.34" + dependencies: + mime-db: 1.51.0 + checksum: 67013de9e9d6799bde6d669d18785b7e18bcd212e710d3e04a4727f92f67a8ad4e74aee24be28b685adb794944814bde649119b58ee3282ffdbee58f9278d9f3 + languageName: node + linkType: hard + "mime-types@npm:~2.1.17, mime-types@npm:~2.1.24": version: 2.1.32 resolution: "mime-types@npm:2.1.32" @@ -15312,6 +16118,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"mime@npm:3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 + languageName: node + linkType: hard + "mime@npm:^2.4.4": version: 2.5.2 resolution: "mime@npm:2.5.2" @@ -15546,7 +16361,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -16201,6 +17016,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"open@npm:8.4.0": + version: 8.4.0 + resolution: "open@npm:8.4.0" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + languageName: node + linkType: hard + "open@npm:^7.0.2": version: 7.4.2 resolution: "open@npm:7.4.2" @@ -16644,7 +17470,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"path-is-inside@npm:^1.0.2": +"path-is-inside@npm:1.0.2, path-is-inside@npm:^1.0.2": version: 1.0.2 resolution: "path-is-inside@npm:1.0.2" checksum: 0b5b6c92d3018b82afb1f74fe6de6338c4c654de4a96123cb343f2b747d5606590ac0c890f956ed38220a4ab59baddfd7b713d78a62d240b20b14ab801fa02cb @@ -16686,6 +17512,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"path-to-regexp@npm:2.2.1": + version: 2.2.1 + resolution: "path-to-regexp@npm:2.2.1" + checksum: b921a74e7576e25b06ad1635abf7e8125a29220d2efc2b71d74b9591f24a27e6f09078fa9a1b27516a097ea0637b7cab79d19b83d7f36a8ef3ef5422770e89d9 + languageName: node + linkType: hard + +"path-to-regexp@npm:^6.2.0": + version: 6.2.0 + resolution: "path-to-regexp@npm:6.2.0" + checksum: a6aca74d2d6e2e7594d812f653cf85e9cb5054d3a8d80f099722a44ef6ad22639b02078e5ea83d11db16321c3e4359e3f1ab0274fa78dad0754a6e53f630b0fc + languageName: node + linkType: hard + "path-type@npm:^3.0.0": version: 3.0.0 resolution: "path-type@npm:3.0.0" @@ -16715,6 +17555,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d + languageName: node + linkType: hard + "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -16750,6 +17597,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"picomatch@npm:^2.3.0": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + "pidtree@npm:^0.3.0": version: 0.3.1 resolution: "pidtree@npm:0.3.1" @@ -16796,6 +17650,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pirates@npm:4.0.4": + version: 4.0.4 + resolution: "pirates@npm:4.0.4" + checksum: 6b7187d526fd025a2b91e8fd289c78d88c4adc3ea947b9facbe9cb300a896b0ec00f3e77b36a043001695312a8debbf714453495283bd8a4eaad3bc0c38df425 + languageName: node + linkType: hard + "pirates@npm:^4.0.1": version: 4.0.1 resolution: "pirates@npm:4.0.1" @@ -16805,6 +17666,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pixelmatch@npm:5.2.1": + version: 5.2.1 + resolution: "pixelmatch@npm:5.2.1" + dependencies: + pngjs: ^4.0.1 + bin: + pixelmatch: bin/pixelmatch + checksum: 0ec7a87168e51b80812d1c39fe1a278e2266dc1e9c426418c2a9d7f0c6465de3c03c51dbf7e6b97c5ba72a043ec3fb576571cdde1f88b12ef0851bf9bfd16da0 + languageName: node + linkType: hard + "pkg-dir@npm:^2.0.0": version: 2.0.0 resolution: "pkg-dir@npm:2.0.0" @@ -16832,7 +17704,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pkg-up@npm:3.1.0": +"pkg-up@npm:3.1.0, pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" dependencies: @@ -16854,6 +17726,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "playground@workspace:packages/playground" dependencies: + "@percy/cli": ^1.0.0-beta.76 + "@percy/playwright": ^1.0.1 + "@playwright/test": ^1.19.1 "@react-three/drei": ^7.2.2 "@react-three/fiber": ^7.0.6 "@theatre/core": "workspace:*" @@ -16870,6 +17745,32 @@ fsevents@^1.2.7: languageName: unknown linkType: soft +"playwright-core@npm:1.19.1": + version: 1.19.1 + resolution: "playwright-core@npm:1.19.1" + dependencies: + commander: 8.3.0 + debug: 4.3.3 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.0 + jpeg-js: 0.4.3 + mime: 3.0.0 + pngjs: 6.0.0 + progress: 2.0.3 + proper-lockfile: 4.1.2 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + socks-proxy-agent: 6.1.1 + stack-utils: 2.0.5 + ws: 8.4.2 + yauzl: 2.10.0 + yazl: 2.5.1 + bin: + playwright: cli.js + checksum: a88b055d1180b128bc073b58dd63aff29d1f996711e8f72cae4df03ecc8c133822caf04a9f6838b4bd3f6473b9c58661274f39e9db3b4570b18bbe0a3eef1fb6 + languageName: node + linkType: hard + "please-upgrade-node@npm:^3.2.0": version: 3.2.0 resolution: "please-upgrade-node@npm:3.2.0" @@ -16886,6 +17787,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pngjs@npm:6.0.0": + version: 6.0.0 + resolution: "pngjs@npm:6.0.0" + checksum: ab6c285086060087097eab9fe6b5a528a24f9e79c03dea2b4fd6264ed4fdb5beff4a3257eeeaf2a9dc18249b539609c2a4e4013c567164a1f6b5ba2c974d5ecb + languageName: node + linkType: hard + +"pngjs@npm:^4.0.1": + version: 4.0.1 + resolution: "pngjs@npm:4.0.1" + checksum: 9497e08a6c2d850630ba7c8d3738fd36c9db1af7ee8b8c2d4b664e450807a280936dfa1489deb60e6943b968bedd58c9aa93def25a765579d745ea44467fc47f + languageName: node + linkType: hard + "pnp-webpack-plugin@npm:1.6.4": version: 1.6.4 resolution: "pnp-webpack-plugin@npm:1.6.4" @@ -17984,6 +18899,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pretty-format@npm:^27.2.5, pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 + languageName: node + linkType: hard + "private@npm:^0.1.8": version: 0.1.8 resolution: "private@npm:0.1.8" @@ -18005,7 +18931,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"progress@npm:^2.0.0": +"progress@npm:2.0.3, progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 @@ -18069,6 +18995,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"proper-lockfile@npm:4.1.2": + version: 4.1.2 + resolution: "proper-lockfile@npm:4.1.2" + dependencies: + graceful-fs: ^4.2.4 + retry: ^0.12.0 + signal-exit: ^3.0.2 + checksum: 00078ee6a61c216a56a6140c7d2a98c6c733b3678503002dc073ab8beca5d50ca271de4c85fca13b9b8ee2ff546c36674d1850509b84a04a5d0363bcb8638939 + languageName: node + linkType: hard + "propose@npm:^0.0.5": version: 0.0.5 resolution: "propose@npm:0.0.5" @@ -18088,6 +19025,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"proxy-from-env@npm:1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 + languageName: node + linkType: hard + "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" @@ -18154,7 +19098,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"punycode@npm:^1.2.4": +"punycode@npm:^1.2.4, punycode@npm:^1.3.2": version: 1.4.1 resolution: "punycode@npm:1.4.1" checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 @@ -18248,6 +19192,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"queue@npm:6.0.2": + version: 6.0.2 + resolution: "queue@npm:6.0.2" + dependencies: + inherits: ~2.0.3 + checksum: ebc23639248e4fe40a789f713c20548e513e053b3dc4924b6cb0ad741e3f264dcff948225c8737834dd4f9ec286dbc06a1a7c13858ea382d9379f4303bcc0916 + languageName: node + linkType: hard + "quote-stream@npm:^1.0.1, quote-stream@npm:~1.0.2": version: 1.0.2 resolution: "quote-stream@npm:1.0.2" @@ -18289,6 +19242,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"range-parser@npm:1.2.0": + version: 1.2.0 + resolution: "range-parser@npm:1.2.0" + checksum: bdf397f43fedc15c559d3be69c01dedf38444ca7a1610f5bf5955e3f3da6057a892f34691e7ebdd8c7e1698ce18ef6c4d4811f70e658dda3ff230ef741f8423a + languageName: node + linkType: hard + "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -19097,6 +20057,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"reselect@npm:^4.0.0": + version: 4.1.5 + resolution: "reselect@npm:4.1.5" + checksum: 54c13c1e795b2ea70cba8384138aebe78adda00cbea303cc94b64da0a70d74c896cc9a03115ae38b8bff990e7a60dcd6452ab68cbec01b0b38c1afda70714cf0 + languageName: node + linkType: hard + "resize-observer-polyfill@npm:^1.5.1": version: 1.5.1 resolution: "resize-observer-polyfill@npm:1.5.1" @@ -19302,6 +20269,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"rimraf@npm:3.0.2, rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + "rimraf@npm:^2.5.4, rimraf@npm:^2.6.2, rimraf@npm:^2.6.3": version: 2.7.1 resolution: "rimraf@npm:2.7.1" @@ -19313,17 +20291,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - "ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": version: 2.0.2 resolution: "ripemd160@npm:2.0.2" @@ -19478,7 +20445,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -19743,6 +20710,22 @@ fsevents@^1.2.7: languageName: node linkType: hard +"serve-handler@npm:^6.1.3": + version: 6.1.3 + resolution: "serve-handler@npm:6.1.3" + dependencies: + 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 + checksum: 384c1bc10add07a554207f918acaa75af47fcfd8fb89e070faa3468ab45ec5bbc9f976e62d659b6b63404edcf5c54efb7e0a48f3f55946eec83b62b283b9837e + languageName: node + linkType: hard + "serve-index@npm:^1.9.1": version: 1.9.1 resolution: "serve-index@npm:1.9.1" @@ -19980,6 +20963,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + "snapdragon-node@npm:^2.0.1": version: 2.1.1 resolution: "snapdragon-node@npm:2.1.1" @@ -20041,6 +21031,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"socks-proxy-agent@npm:6.1.1": + version: 6.1.1 + resolution: "socks-proxy-agent@npm:6.1.1" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.1 + socks: ^2.6.1 + checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c + languageName: node + linkType: hard + "socks-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "socks-proxy-agent@npm:5.0.0" @@ -20062,6 +21063,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"socks@npm:^2.6.1": + version: 2.6.2 + resolution: "socks@npm:2.6.2" + dependencies: + ip: ^1.1.5 + smart-buffer: ^4.2.0 + checksum: dd9194293059d737759d5c69273850ad4149f448426249325c4bea0e340d1cf3d266c3b022694b0dcf5d31f759de23657244c481fc1e8322add80b7985c36b5e + languageName: node + linkType: hard + "sort-keys@npm:^1.0.0": version: 1.1.2 resolution: "sort-keys@npm:1.1.2" @@ -20115,7 +21126,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"source-map-support@npm:^0.4.15": +"source-map-support@npm:0.4.18, source-map-support@npm:^0.4.15": version: 0.4.18 resolution: "source-map-support@npm:0.4.18" dependencies: @@ -20315,6 +21326,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"stack-utils@npm:2.0.5": + version: 2.0.5 + resolution: "stack-utils@npm:2.0.5" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 + languageName: node + linkType: hard + "stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "stack-utils@npm:2.0.3" @@ -22809,6 +23829,21 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ws@npm:8.4.2": + version: 8.4.2 + resolution: "ws@npm:8.4.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 4369caaac8d1092a73871f5cf1d87fcbb995dc4183a1bc48e4f451bc2d02d0a8bf7c17edf1da18e2be3c773b09262275356b256d1c55bc7ca096154293ba2a8c + languageName: node + linkType: hard + "ws@npm:^5.1.1": version: 5.2.2 resolution: "ws@npm:5.2.2" @@ -22866,6 +23901,21 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ws@npm:^8.0.0": + version: 8.5.0 + resolution: "ws@npm:8.5.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 76f2f90e40344bf18fd544194e7067812fb1372b2a37865678d8f12afe4b478ff2ebc0c7c0aff82cd5e6b66fc43d889eec0f1865c2365d8f7a66d92da7744a77 + languageName: node + linkType: hard + "xml-name-validator@npm:^3.0.0": version: 3.0.0 resolution: "xml-name-validator@npm:3.0.0" @@ -23001,6 +24051,25 @@ fsevents@^1.2.7: languageName: node linkType: hard +"yauzl@npm:2.10.0, yauzl@npm:^2.10.0": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: ~0.2.3 + fd-slicer: ~1.1.0 + checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b + languageName: node + linkType: hard + +"yazl@npm:2.5.1": + version: 2.5.1 + resolution: "yazl@npm:2.5.1" + dependencies: + buffer-crc32: ~0.2.3 + checksum: daec5154b5485d8621bfea359e905ddca0b2f068430a4aa0a802bf5d67391157a383e0c2767acccbf5964264851da643bc740155a9458e2d8dce55b94c1cc2ed + languageName: node + linkType: hard + "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1"