From 718beb4d7ba0865cc8c44644e03b8fa452eb3f3b Mon Sep 17 00:00:00 2001 From: Aria Date: Wed, 4 Jan 2023 21:03:47 +0200 Subject: [PATCH] Catch more SSR issues and improve compat tests (#353) This will cause the build to fail, as this will catch an SSR issue, which will be fixed after merging #369 --- .github/workflows/compatibility-tests.yml | 7 +- compatibility-tests/.gitignore | 4 +- compatibility-tests/README.md | 37 +- .../cra-react18/package}/.gitignore | 0 .../cra-react18/package}/README.md | 0 .../cra-react18/package}/package.json | 17 +- .../cra-react18/package}/public/index.html | 0 .../cra-react18/package}/src/index.js | 0 .../production.compat-test.ts.snap | 17 + .../next/package}/.gitignore | 0 .../next/package}/README.md | 0 .../next/package}/package.json | 6 +- .../next/package}/pages/index.js | 13 +- .../next/package/pages/playgroundState.json | 24 + .../next/package}/public/favicon.ico | Bin .../fixtures/next/production.compat-test.ts | 67 + .../parcel1-react17/package}/.gitignore | 0 .../parcel1-react17/package}/index.html | 0 .../parcel1-react17/package}/package.json | 8 +- .../parcel1-react17/package}/src/index.js | 0 .../parcel1-react18/package}/.gitignore | 0 .../parcel1-react18/package}/index.html | 0 .../parcel1-react18/package}/package.json | 6 +- .../parcel1-react18/package}/src/index.js | 0 .../parcel2-react18/package}/.gitignore | 0 .../parcel2-react18/package}/index.html | 0 .../parcel2-react18/package}/package.json | 6 +- .../parcel2-react18/package}/src/index.js | 0 .../vite-react18/package}/.gitignore | 0 .../vite-react18/package}/index.html | 0 .../vite-react18/package}/package.json | 6 +- .../vite-react18/package}/src/main.tsx | 0 .../vite-react18/package}/src/vite-env.d.ts | 0 .../vite-react18/package}/tsconfig.json | 0 .../vite-react18/package}/tsconfig.node.json | 0 .../vite-react18/package}/vite.config.ts | 0 compatibility-tests/package.json | 8 +- compatibility-tests/scripts/build-setups.mjs | 10 +- compatibility-tests/scripts/ci.mjs | 4 +- compatibility-tests/scripts/clean.mjs | 2 +- .../scripts/install-fixtures.mjs | 3 + compatibility-tests/scripts/scripts.mjs | 351 +++ .../scripts/start-registry.mjs | 3 - compatibility-tests/scripts/utils.mjs | 284 --- compatibility-tests/verdaccio.yml | 5 +- jest.compat-tests.config.js | 23 + jest.config.js | 5 +- package.json | 7 +- packages/playground/package.json | 6 +- .../tests/setting-static-props/test.e2e.ts | 1 + .../src/utils/tightJsonStringify.test.ts | 22 +- yarn.lock | 2138 ++++++++++++++--- 52 files changed, 2404 insertions(+), 686 deletions(-) rename compatibility-tests/{test-cra-react18 => fixtures/cra-react18/package}/.gitignore (100%) rename compatibility-tests/{test-cra-react18 => fixtures/cra-react18/package}/README.md (100%) rename compatibility-tests/{test-cra-react18 => fixtures/cra-react18/package}/package.json (71%) rename compatibility-tests/{test-cra-react18 => fixtures/cra-react18/package}/public/index.html (100%) rename compatibility-tests/{test-cra-react18 => fixtures/cra-react18/package}/src/index.js (100%) create mode 100644 compatibility-tests/fixtures/next/__snapshots__/production.compat-test.ts.snap rename compatibility-tests/{test-next => fixtures/next/package}/.gitignore (100%) rename compatibility-tests/{test-next => fixtures/next/package}/README.md (100%) rename compatibility-tests/{test-next => fixtures/next/package}/package.json (64%) rename compatibility-tests/{test-next => fixtures/next/package}/pages/index.js (89%) create mode 100644 compatibility-tests/fixtures/next/package/pages/playgroundState.json rename compatibility-tests/{test-next => fixtures/next/package}/public/favicon.ico (100%) create mode 100644 compatibility-tests/fixtures/next/production.compat-test.ts rename compatibility-tests/{test-parcel1-react17 => fixtures/parcel1-react17/package}/.gitignore (100%) rename compatibility-tests/{test-parcel1-react17 => fixtures/parcel1-react17/package}/index.html (100%) rename compatibility-tests/{test-parcel1-react17 => fixtures/parcel1-react17/package}/package.json (62%) rename compatibility-tests/{test-parcel1-react17 => fixtures/parcel1-react17/package}/src/index.js (100%) rename compatibility-tests/{test-parcel1-react18 => fixtures/parcel1-react18/package}/.gitignore (100%) rename compatibility-tests/{test-parcel1-react18 => fixtures/parcel1-react18/package}/index.html (100%) rename compatibility-tests/{test-parcel1-react18 => fixtures/parcel1-react18/package}/package.json (63%) rename compatibility-tests/{test-parcel1-react18 => fixtures/parcel1-react18/package}/src/index.js (100%) rename compatibility-tests/{test-parcel2-react18 => fixtures/parcel2-react18/package}/.gitignore (100%) rename compatibility-tests/{test-parcel2-react18 => fixtures/parcel2-react18/package}/index.html (100%) rename compatibility-tests/{test-parcel2-react18 => fixtures/parcel2-react18/package}/package.json (62%) rename compatibility-tests/{test-parcel2-react18 => fixtures/parcel2-react18/package}/src/index.js (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/.gitignore (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/index.html (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/package.json (81%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/src/main.tsx (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/src/vite-env.d.ts (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/tsconfig.json (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/tsconfig.node.json (100%) rename compatibility-tests/{test-vite-react18 => fixtures/vite-react18/package}/vite.config.ts (100%) create mode 100644 compatibility-tests/scripts/install-fixtures.mjs create mode 100644 compatibility-tests/scripts/scripts.mjs delete mode 100644 compatibility-tests/scripts/start-registry.mjs delete mode 100644 compatibility-tests/scripts/utils.mjs create mode 100644 jest.compat-tests.config.js diff --git a/.github/workflows/compatibility-tests.yml b/.github/workflows/compatibility-tests.yml index dcc011e..42cc34d 100644 --- a/.github/workflows/compatibility-tests.yml +++ b/.github/workflows/compatibility-tests.yml @@ -42,4 +42,9 @@ jobs: ${{ runner.os }}-${{ matrix.node-version }}-yarn- - run: yarn install - - run: yarn test:compatibility:ci + # This will test whether `npm install`/`yarn install` can actually run on each compatibility test fixture. See `compatibility-tests/README.md` for more info. + - run: + yarn workspace @theatre/compatibility-tests run install-fixtures + --verbose + # after that, we run the jest tests for each fixture + - run: yarn test:compat diff --git a/compatibility-tests/.gitignore b/compatibility-tests/.gitignore index 6d9e0ed..8b770d7 100644 --- a/compatibility-tests/.gitignore +++ b/compatibility-tests/.gitignore @@ -1,5 +1,5 @@ # these lock files include checksums of the @theatre/*@compat packages, which # would change after every edit to their source, so we better not keep them # in the repo -/*/package-lock.json -/*/yarn.lock \ No newline at end of file +/fixtures/*/package/package-lock.json +/fixtures/*/package/yarn.lock \ No newline at end of file diff --git a/compatibility-tests/README.md b/compatibility-tests/README.md index 49ad9c5..1e90145 100644 --- a/compatibility-tests/README.md +++ b/compatibility-tests/README.md @@ -1,34 +1,21 @@ # Compatibility tests -This setup helps us test whether Theatre.js is compatible with popular tools in the JS ecosystem, such as Vite, webpack, react, vue, etc. +This setup helps us test whether Theatre.js is compatible with popular tools in the JS ecosystem, such as Vite, Next.js, webpack, react, vue, etc. -> This setup is 3/10 complete. +## The directory structure -The currentr workflow is: +- `./fixtures` (contains the fixtures - read on for more details) + - `parcel2-react18/`: The name of the fixture. This name means we're testing a minimal setup of Theatre.js alongside `parcel2` and `react18`. + - `package/`: This is the npm package that contains a minimal setup of `theatre+parcel2+react18`. + - `production.compat-test.ts`: This is a jest test for creating a production build of this setup. + - `*.compat-test.ts`: Any `.compat-test.ts` file will be picked up by jest, so you can use more files to test different aspects of the fixture. -1. Run a local npm registry, and build and publish the @theatre/* packages to it. All packages will have the 0.0.1-COMPAT.1 version - - ```sh - yarn workspace @theatre/compatibility-tests run registry:start - ``` +## How to run the tests - This script will keep running until it is terminated. While running, npm will be configured to point to the local registry that contains the `@theatre/*@0.0.1-COMPAT.1` packages. - -2. `cd` into any test project (either use those in `./test-*` or make a new npm package elsewhere via `npm init`.) -3. Install `@theatre/*` from the local registry: - - ```sh - npm install @theatre/core@0.0.1-COMPAT.1 @theatre/studio@0.0.1-COMPAT.1 @theatre/r3f@0.0.1-COMPAT.1 - ``` - -4. Test your local build of Thatre.js against your setup by manually building, running a dev server, and using Theatre.js on a browser pointing to the dev server. - - -Inspired by the -[#help channel on our Discord](https://discord.com/channels/870988717190426644/870988717190426647) -we collect examples for including `Theatre.js` in project that use different -tools (`parcel`, `Next.js`, `vanilla Rollup`, etc...) to build them in the CI -(these are the _compatibility tests_). +1. First, we run `yarn run install-fixtures`, which tries to install Theatre.js on a fixture as if `@theatre/core|studio|r3f` were installed through npm. This script runs a [local npm registry](https://github.com/verdaccio/verdaccio) and publishes a production build of all the Theatre.js packages to it. Then, it iterates through `./fixtures/*/package` and runs `$ npm install` on them, using that local npm registry. + **If this step fails**, that usually means one of `@theatre/*` packages has a `dependency/peerDependency` that cannot be satisfied by `npm/yarn`. So this is always the first thing to fix. +1. Then, we run `$ yarn test:compat`, which will run jest on all of `*.compat-test.ts` files, each of which tests an aspect of a test setup. +2. Most of our fixtures don't actually have `.compat-test.ts` files, so we'll have to run them manually and see if Theatre still works in them, jut like a manual QA pass. > **Gotchas** > Some bundlers like webpack are not configured to work well with yarn workspaces by default. For example, the webpack config of create-react-app, tries to look up the node_modules chain to find missing dependencies, which is not a behavior that we want in build-tests setups. So if a setup doesn't work, try running it outside the monorepo to see if being in the monorepo is what's causing it to fail. \ No newline at end of file diff --git a/compatibility-tests/test-cra-react18/.gitignore b/compatibility-tests/fixtures/cra-react18/package/.gitignore similarity index 100% rename from compatibility-tests/test-cra-react18/.gitignore rename to compatibility-tests/fixtures/cra-react18/package/.gitignore diff --git a/compatibility-tests/test-cra-react18/README.md b/compatibility-tests/fixtures/cra-react18/package/README.md similarity index 100% rename from compatibility-tests/test-cra-react18/README.md rename to compatibility-tests/fixtures/cra-react18/package/README.md diff --git a/compatibility-tests/test-cra-react18/package.json b/compatibility-tests/fixtures/cra-react18/package/package.json similarity index 71% rename from compatibility-tests/test-cra-react18/package.json rename to compatibility-tests/fixtures/cra-react18/package/package.json index a4feae9..93fe988 100644 --- a/compatibility-tests/test-cra-react18/package.json +++ b/compatibility-tests/fixtures/cra-react18/package/package.json @@ -13,25 +13,18 @@ "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "react-scripts": "^5.0.1", "three": ">0.132.0", "web-vitals": "^1.0.1" }, "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] + "extends": ["react-app", "react-app/jest"] }, "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], + "production": [">0.2%", "not dead", "not op_mini all"], "development": [ "last 1 chrome version", "last 1 firefox version", diff --git a/compatibility-tests/test-cra-react18/public/index.html b/compatibility-tests/fixtures/cra-react18/package/public/index.html similarity index 100% rename from compatibility-tests/test-cra-react18/public/index.html rename to compatibility-tests/fixtures/cra-react18/package/public/index.html diff --git a/compatibility-tests/test-cra-react18/src/index.js b/compatibility-tests/fixtures/cra-react18/package/src/index.js similarity index 100% rename from compatibility-tests/test-cra-react18/src/index.js rename to compatibility-tests/fixtures/cra-react18/package/src/index.js diff --git a/compatibility-tests/fixtures/next/__snapshots__/production.compat-test.ts.snap b/compatibility-tests/fixtures/next/__snapshots__/production.compat-test.ts.snap new file mode 100644 index 0000000..cd6868b --- /dev/null +++ b/compatibility-tests/fixtures/next/__snapshots__/production.compat-test.ts.snap @@ -0,0 +1,17 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`next / production \`$ next build\` should succeed and have a predictable output 1`] = ` +" +> build +> next build + +info - Linting and checking validity of types... +info - Creating an optimized production build... +info - Compiled successfully +info - Collecting page data... +info - Generating static pages (0/3) +info - Generating static pages (3/3) +info - Finalizing page optimization... + +" +`; diff --git a/compatibility-tests/test-next/.gitignore b/compatibility-tests/fixtures/next/package/.gitignore similarity index 100% rename from compatibility-tests/test-next/.gitignore rename to compatibility-tests/fixtures/next/package/.gitignore diff --git a/compatibility-tests/test-next/README.md b/compatibility-tests/fixtures/next/package/README.md similarity index 100% rename from compatibility-tests/test-next/README.md rename to compatibility-tests/fixtures/next/package/README.md diff --git a/compatibility-tests/test-next/package.json b/compatibility-tests/fixtures/next/package/package.json similarity index 64% rename from compatibility-tests/test-next/package.json rename to compatibility-tests/fixtures/next/package/package.json index a36ab51..f536242 100644 --- a/compatibility-tests/test-next/package.json +++ b/compatibility-tests/fixtures/next/package/package.json @@ -6,9 +6,9 @@ "start": "next start" }, "dependencies": { - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "next": "latest", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/compatibility-tests/test-next/pages/index.js b/compatibility-tests/fixtures/next/package/pages/index.js similarity index 89% rename from compatibility-tests/test-next/pages/index.js rename to compatibility-tests/fixtures/next/package/pages/index.js index 2c900d0..154a14f 100644 --- a/compatibility-tests/test-next/pages/index.js +++ b/compatibility-tests/fixtures/next/package/pages/index.js @@ -4,12 +4,17 @@ import {Canvas} from '@react-three/fiber' import studio from '@theatre/studio' import {editable as e, SheetProvider} from '@theatre/r3f' import extension from '@theatre/r3f/dist/extension' +import playgroundState from './playgroundState.json' if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') { studio.extend(extension) studio.initialize({usePersistentStorage: false}) } +const sheet = getProject('Playground - R3F', {state: playgroundState}).sheet( + 'R3F-Canvas', +) + // credit: https://codesandbox.io/s/camera-pan-nsb7f function Plane({color, theatreKey, ...props}) { @@ -30,7 +35,7 @@ function App() { dpr={[1.5, 2]} style={{position: 'absolute', top: 0, left: 0}} > - + {/* @ts-ignore */} @@ -82,10 +87,6 @@ function App() { ) } -const project = getProject('Project') -const sheet = project.sheet('Sheet') -const obj = sheet.object('Obj', {str: 'some string', num: 0}) - export default function Home() { - return hi + return } diff --git a/compatibility-tests/fixtures/next/package/pages/playgroundState.json b/compatibility-tests/fixtures/next/package/pages/playgroundState.json new file mode 100644 index 0000000..f68a557 --- /dev/null +++ b/compatibility-tests/fixtures/next/package/pages/playgroundState.json @@ -0,0 +1,24 @@ +{ + "sheetsById": { + "R3F-Canvas": { + "staticOverrides": { + "byObject": { + "plane1": { + "position": { + "x": -0.06000000000000002 + } + }, + "plane2": { + "position": { + "x": 0, + "y": -1.1043953439330743, + "z": 6.322692591942688 + } + } + } + } + } + }, + "definitionVersion": "0.4.0", + "revisionHistory": ["lSnZ_QVusR3qNnVN"] +} diff --git a/compatibility-tests/test-next/public/favicon.ico b/compatibility-tests/fixtures/next/package/public/favicon.ico similarity index 100% rename from compatibility-tests/test-next/public/favicon.ico rename to compatibility-tests/fixtures/next/package/public/favicon.ico diff --git a/compatibility-tests/fixtures/next/production.compat-test.ts b/compatibility-tests/fixtures/next/production.compat-test.ts new file mode 100644 index 0000000..53fed96 --- /dev/null +++ b/compatibility-tests/fixtures/next/production.compat-test.ts @@ -0,0 +1,67 @@ +// @cspotcode/zx is zx in CommonJS +import {$, cd, path} from '@cspotcode/zx' +import {chromium, devices} from 'playwright' + +$.verbose = true + +const PATH_TO_PACKAGE = path.join(__dirname, `./package`) + +describe(`next / production`, () => { + test(`\`$ next build\` should succeed and have a predictable output`, async () => { + cd(PATH_TO_PACKAGE) + const {exitCode, stdout} = await $`npm run build` + // at this point, the build should have succeeded + expect(exitCode).toEqual(0) + // now let's check the output to make sure it's what we expect + + // all of stdout until the line that contains "Route (pages)". That's because what comes after that + // line is a list of all the pages that were built, and we don't want to snapshot that because it changes every time. + const stdoutUntilRoutePages = stdout.split(`Route (pages)`)[0] + + // This test will fail if `next build` outputs anything unexpected. + expect(stdoutUntilRoutePages).toMatchSnapshot() + }) + + // this test is not ready yet, so we'll skip it + describe.skip(`$ next start`, () => { + let browser, page + beforeAll(async () => { + browser = await chromium.launch() + }) + afterAll(async () => { + await browser.close() + }) + beforeEach(async () => { + page = await browser.newPage() + }) + afterEach(async () => { + await page.close() + }) + + // just a random port I'm hoping is free everywhere. + const port = 30978 + + test('`$ next start` serves the app, and the app works', async () => { + // run the production server but don't wait for it to finish + cd(PATH_TO_PACKAGE) + const p = $`npm run start -- --port ${port}` + // await p + + try { + page.on('console', (msg) => console.log('PAGE LOG:', msg.text())) + await page.goto(`http://localhost:${port}`) + // wait three seconds + await page.waitForTimeout(3000) + } finally { + p.kill() + } + try { + await p + } catch (e) { + if (e.signal !== 'SIGKILL' && e.signal !== 'SIGTERM') { + throw e + } + } + }) + }) +}) diff --git a/compatibility-tests/test-parcel1-react17/.gitignore b/compatibility-tests/fixtures/parcel1-react17/package/.gitignore similarity index 100% rename from compatibility-tests/test-parcel1-react17/.gitignore rename to compatibility-tests/fixtures/parcel1-react17/package/.gitignore diff --git a/compatibility-tests/test-parcel1-react17/index.html b/compatibility-tests/fixtures/parcel1-react17/package/index.html similarity index 100% rename from compatibility-tests/test-parcel1-react17/index.html rename to compatibility-tests/fixtures/parcel1-react17/package/index.html diff --git a/compatibility-tests/test-parcel1-react17/package.json b/compatibility-tests/fixtures/parcel1-react17/package/package.json similarity index 62% rename from compatibility-tests/test-parcel1-react17/package.json rename to compatibility-tests/fixtures/parcel1-react17/package/package.json index ccd4e01..d67d805 100644 --- a/compatibility-tests/test-parcel1-react17/package.json +++ b/compatibility-tests/fixtures/parcel1-react17/package/package.json @@ -1,14 +1,14 @@ { - "name": "@compat/parcel1-react18", + "name": "@compat/parcel1-react17", "scripts": { "dev": "parcel serve ./index.html" }, "dependencies": { "@react-three/drei": "^7.3.1", "@react-three/fiber": "^7.0.6", - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "parcel-bundler": "^1.12.5", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/compatibility-tests/test-parcel1-react17/src/index.js b/compatibility-tests/fixtures/parcel1-react17/package/src/index.js similarity index 100% rename from compatibility-tests/test-parcel1-react17/src/index.js rename to compatibility-tests/fixtures/parcel1-react17/package/src/index.js diff --git a/compatibility-tests/test-parcel1-react18/.gitignore b/compatibility-tests/fixtures/parcel1-react18/package/.gitignore similarity index 100% rename from compatibility-tests/test-parcel1-react18/.gitignore rename to compatibility-tests/fixtures/parcel1-react18/package/.gitignore diff --git a/compatibility-tests/test-parcel1-react18/index.html b/compatibility-tests/fixtures/parcel1-react18/package/index.html similarity index 100% rename from compatibility-tests/test-parcel1-react18/index.html rename to compatibility-tests/fixtures/parcel1-react18/package/index.html diff --git a/compatibility-tests/test-parcel1-react18/package.json b/compatibility-tests/fixtures/parcel1-react18/package/package.json similarity index 63% rename from compatibility-tests/test-parcel1-react18/package.json rename to compatibility-tests/fixtures/parcel1-react18/package/package.json index d34fa6e..65fc3a3 100644 --- a/compatibility-tests/test-parcel1-react18/package.json +++ b/compatibility-tests/fixtures/parcel1-react18/package/package.json @@ -4,9 +4,9 @@ "dev": "parcel serve ./index.html" }, "dependencies": { - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "parcel-bundler": "^1.12.5", "react": "^18.1.0", "react-dom": "^18.1.0" diff --git a/compatibility-tests/test-parcel1-react18/src/index.js b/compatibility-tests/fixtures/parcel1-react18/package/src/index.js similarity index 100% rename from compatibility-tests/test-parcel1-react18/src/index.js rename to compatibility-tests/fixtures/parcel1-react18/package/src/index.js diff --git a/compatibility-tests/test-parcel2-react18/.gitignore b/compatibility-tests/fixtures/parcel2-react18/package/.gitignore similarity index 100% rename from compatibility-tests/test-parcel2-react18/.gitignore rename to compatibility-tests/fixtures/parcel2-react18/package/.gitignore diff --git a/compatibility-tests/test-parcel2-react18/index.html b/compatibility-tests/fixtures/parcel2-react18/package/index.html similarity index 100% rename from compatibility-tests/test-parcel2-react18/index.html rename to compatibility-tests/fixtures/parcel2-react18/package/index.html diff --git a/compatibility-tests/test-parcel2-react18/package.json b/compatibility-tests/fixtures/parcel2-react18/package/package.json similarity index 62% rename from compatibility-tests/test-parcel2-react18/package.json rename to compatibility-tests/fixtures/parcel2-react18/package/package.json index ecbdba8..27550c1 100644 --- a/compatibility-tests/test-parcel2-react18/package.json +++ b/compatibility-tests/fixtures/parcel2-react18/package/package.json @@ -4,9 +4,9 @@ "dev": "parcel serve ./index.html" }, "dependencies": { - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "parcel": "^2.5.0", "react": "^18.1.0", "react-dom": "^18.1.0" diff --git a/compatibility-tests/test-parcel2-react18/src/index.js b/compatibility-tests/fixtures/parcel2-react18/package/src/index.js similarity index 100% rename from compatibility-tests/test-parcel2-react18/src/index.js rename to compatibility-tests/fixtures/parcel2-react18/package/src/index.js diff --git a/compatibility-tests/test-vite-react18/.gitignore b/compatibility-tests/fixtures/vite-react18/package/.gitignore similarity index 100% rename from compatibility-tests/test-vite-react18/.gitignore rename to compatibility-tests/fixtures/vite-react18/package/.gitignore diff --git a/compatibility-tests/test-vite-react18/index.html b/compatibility-tests/fixtures/vite-react18/package/index.html similarity index 100% rename from compatibility-tests/test-vite-react18/index.html rename to compatibility-tests/fixtures/vite-react18/package/index.html diff --git a/compatibility-tests/test-vite-react18/package.json b/compatibility-tests/fixtures/vite-react18/package/package.json similarity index 81% rename from compatibility-tests/test-vite-react18/package.json rename to compatibility-tests/fixtures/vite-react18/package/package.json index 877b0dd..c5837fa 100644 --- a/compatibility-tests/test-vite-react18/package.json +++ b/compatibility-tests/fixtures/vite-react18/package/package.json @@ -10,9 +10,9 @@ "dependencies": { "@react-three/drei": "^9.11.3", "@react-three/fiber": "^8.0.19", - "@theatre/core": "^0.0.1-COMPAT.1", - "@theatre/r3f": "^0.0.1-COMPAT.1", - "@theatre/studio": "^0.0.1-COMPAT.1", + "@theatre/core": "0.0.1-COMPAT.1", + "@theatre/r3f": "0.0.1-COMPAT.1", + "@theatre/studio": "0.0.1-COMPAT.1", "react": "^18.0.0", "react-dom": "^18.0.0", "three": "^0.141.0" diff --git a/compatibility-tests/test-vite-react18/src/main.tsx b/compatibility-tests/fixtures/vite-react18/package/src/main.tsx similarity index 100% rename from compatibility-tests/test-vite-react18/src/main.tsx rename to compatibility-tests/fixtures/vite-react18/package/src/main.tsx diff --git a/compatibility-tests/test-vite-react18/src/vite-env.d.ts b/compatibility-tests/fixtures/vite-react18/package/src/vite-env.d.ts similarity index 100% rename from compatibility-tests/test-vite-react18/src/vite-env.d.ts rename to compatibility-tests/fixtures/vite-react18/package/src/vite-env.d.ts diff --git a/compatibility-tests/test-vite-react18/tsconfig.json b/compatibility-tests/fixtures/vite-react18/package/tsconfig.json similarity index 100% rename from compatibility-tests/test-vite-react18/tsconfig.json rename to compatibility-tests/fixtures/vite-react18/package/tsconfig.json diff --git a/compatibility-tests/test-vite-react18/tsconfig.node.json b/compatibility-tests/fixtures/vite-react18/package/tsconfig.node.json similarity index 100% rename from compatibility-tests/test-vite-react18/tsconfig.node.json rename to compatibility-tests/fixtures/vite-react18/package/tsconfig.node.json diff --git a/compatibility-tests/test-vite-react18/vite.config.ts b/compatibility-tests/fixtures/vite-react18/package/vite.config.ts similarity index 100% rename from compatibility-tests/test-vite-react18/vite.config.ts rename to compatibility-tests/fixtures/vite-react18/package/vite.config.ts diff --git a/compatibility-tests/package.json b/compatibility-tests/package.json index 0b9f43b..fac8883 100644 --- a/compatibility-tests/package.json +++ b/compatibility-tests/package.json @@ -1,18 +1,20 @@ { "name": "@theatre/compatibility-tests", "private": true, + "type": "module", "scripts": { - "registry:start": "zx ./scripts/start-registry.mjs", - "test:ci": "zx ./scripts/ci.mjs", + "install-fixtures": "zx ./scripts/install-fixtures.mjs", "clean": "zx ./scripts/clean.mjs" }, "dependencies": { + "@cspotcode/zx": "^6.1.2", "node-cleanup": "^2.1.2", + "playwright": "^1.28.1", "prettier": "^2.6.2", "verdaccio": "^5.10.2", "verdaccio-auth-memory": "^10.2.0", "verdaccio-memory": "^10.2.0", - "zx": "^6.1.0" + "zx": "^7.1.1" }, "version": "0.0.1-COMPAT.1" } diff --git a/compatibility-tests/scripts/build-setups.mjs b/compatibility-tests/scripts/build-setups.mjs index 9c47428..0db8466 100644 --- a/compatibility-tests/scripts/build-setups.mjs +++ b/compatibility-tests/scripts/build-setups.mjs @@ -3,10 +3,10 @@ */ import path from 'path' -import {colorize, getCompatibilityTestSetups} from './utils.mjs' +import {cd, fs, $} from 'zx' +import {getCompatibilityTestSetups} from './utils.mjs' -const root = path.resolve(__dirname, '../..') -const absPathOfCompatibilityTestSetups = getCompatibilityTestSetups(root) +const absPathOfCompatibilityTestSetups = getCompatibilityTestSetups() const setupsWithErros = [] @@ -15,7 +15,7 @@ const setupsWithErros = [] for (const setupDir of absPathOfCompatibilityTestSetups) { try { cd(setupDir) - const pathToSetup = path.join(absPathOfCompatibilityTestSetups, setupDir) + const pathToSetup = path.join(setupDir, setupDir) fs.removeSync(path.join(pathToSetup, 'node_modules')) fs.removeSync(path.join(pathToSetup, 'package-lock.json')) fs.removeSync(path.join(pathToSetup, 'yarn.lock')) @@ -31,7 +31,7 @@ const setupsWithErros = [] // and print all of them to the console. if (setupsWithErros.length !== 0) { throw new Error( - `The following setups had problems when their dependencies were being installed:\n${colorize.red( + `The following setups had problems when their dependencies were being installed:\n${( setupsWithErros.join('\n'), )}`, ) diff --git a/compatibility-tests/scripts/ci.mjs b/compatibility-tests/scripts/ci.mjs index e4b56cc..c0fad2e 100644 --- a/compatibility-tests/scripts/ci.mjs +++ b/compatibility-tests/scripts/ci.mjs @@ -1,5 +1,5 @@ -import {startRegistry} from './utils.mjs' +import {installTests} from './scripts.mjs' ;(async function runCI() { - await startRegistry() + await installTests() process.exit(0) })() diff --git a/compatibility-tests/scripts/clean.mjs b/compatibility-tests/scripts/clean.mjs index 0d5fa88..7939c80 100644 --- a/compatibility-tests/scripts/clean.mjs +++ b/compatibility-tests/scripts/clean.mjs @@ -1,3 +1,3 @@ -import {clean} from './utils.mjs' +import {clean} from './scripts.mjs' await clean() diff --git a/compatibility-tests/scripts/install-fixtures.mjs b/compatibility-tests/scripts/install-fixtures.mjs new file mode 100644 index 0000000..193db52 --- /dev/null +++ b/compatibility-tests/scripts/install-fixtures.mjs @@ -0,0 +1,3 @@ +import {installFixtures} from './scripts.mjs' + +installFixtures() diff --git a/compatibility-tests/scripts/scripts.mjs b/compatibility-tests/scripts/scripts.mjs new file mode 100644 index 0000000..bf9a782 --- /dev/null +++ b/compatibility-tests/scripts/scripts.mjs @@ -0,0 +1,351 @@ +/** + * Utility functions for the compatibility tests + */ + +import prettier from 'prettier' +import path from 'path' +import {globby, argv, YAML, $, fs, cd, os, within} from 'zx' +import onCleanup from 'node-cleanup' +import * as verdaccioPackage from 'verdaccio' +import {chromium, devices} from 'playwright' + +if (!argv['verbose']) { + $.verbose = false + console.log( + 'Running in quiet mode. Add --verbose to see the output of all commands.', + ) +} + +// 'verdaccio' is not an es module so we have to do this: +// @ts-ignore +const startVerdaccioServer = verdaccioPackage.default.default + +const config = { + VERDACCIO_PORT: 4823, + VERDACCIO_HOST: `localhost`, + get VERDACCIO_URL() { + return `http://${config.VERDACCIO_HOST}:${config.VERDACCIO_PORT}/` + }, + PATH_TO_COMPAT_TESTS_ROOT: path.join(__dirname, '..'), + MONOREPO_ROOT: path.join(__dirname, '../..'), +} + +/** + * Set environment variables so that yarn and npm use verdaccio as the registry. + * These are only set for the current process. + */ +process.env.YARN_NPM_PUBLISH_REGISTRY = config.VERDACCIO_URL +process.env.YARN_UNSAFE_HTTP_WHITELIST = config.VERDACCIO_HOST +process.env.YARN_NPM_AUTH_IDENT = 'test:test' +process.env.NPM_CONFIG_REGISTRY = config.VERDACCIO_URL + +const tempVersion = + '0.0.1-COMPAT.' + + // a random integer between 1 and 50000 + (Math.floor(Math.random() * 50000) + 1).toString() + +/** + * This script starts verdaccio and publishes all the packages in the monorepo to it, then + * it runs `npm install` on all the test packages, and finally it closes verdaccio. + */ +export async function installFixtures() { + onCleanup((exitCode, signal) => { + onCleanup.uninstall() + restoreTestPackageJsons() + process.kill(process.pid, signal) + return false + }) + + console.log('Using temporary version: ' + tempVersion) + console.log('Patching package.json files in ./test-*') + const restoreTestPackageJsons = await patchTestPackageJsons() + + console.log('Starting verdaccio') + const verdaccioServer = await startVerdaccio(config.VERDACCIO_PORT) + console.log(`Verdaccio is running on ${config.VERDACCIO_URL}`) + + console.log('Releasing @theatre/* packages to verdaccio') + await releaseToVerdaccio() + + console.log('Running `$ npm install` on test packages') + await runNpmInstallOnTestPackages() + console.log('All tests installed successfully') + await verdaccioServer.close() + restoreTestPackageJsons() + console.log('Done') +} + +async function runNpmInstallOnTestPackages() { + const packagePaths = await getCompatibilityTestSetups() + + for (const pathToPackageDir of packagePaths) { + cd(pathToPackageDir) + try { + console.log('Running npm install on ' + pathToPackageDir + '...') + await $`npm install --registry ${config.VERDACCIO_URL} --loglevel error --fund false` + } catch (error) { + console.error(`Failed to install dependencies for ${pathToPackageDir} +Try running \`npm install\` in that directory manually via: +cd ${pathToPackageDir} +npm install --registry ${config.VERDACCIO_URL} +Original error: ${error}`) + } + } +} + +/** + * Takes an absolute path to a package.json file and replaces all of its + * dependencies on `@theatre/*` packatges to `version`. + * + * @param {string} pathToPackageJson absolute path to the package.json file + * @param {string} version The version to set all `@theatre/*` dependencies to + */ +async function patchTheatreDependencies(pathToPackageJson, version) { + const originalFileContent = fs.readFileSync(pathToPackageJson, { + encoding: 'utf-8', + }) + // get the package.json file's content + const packageJson = JSON.parse(originalFileContent) + + // find all dependencies on '@theatre/*' packages and replace them with the local version + for (const dependencyType of [ + 'dependencies', + 'devDependencies', + 'peerDependencies', + ]) { + const dependencies = packageJson[dependencyType] + if (dependencies) { + for (const dependencyName of Object.keys(dependencies)) { + if (dependencyName.startsWith('@theatre/')) { + dependencies[dependencyName] = version + } + } + } + } + // run the json through prettier + const jsonStringPrettified = prettier.format( + JSON.stringify(packageJson, null, 2), + { + parser: 'json', + filepath: pathToPackageJson, + }, + ) + + // write the modified package.json file + fs.writeFileSync(pathToPackageJson, jsonStringPrettified, {encoding: 'utf-8'}) +} + +async function patchTestPackageJsons() { + const packagePaths = (await getCompatibilityTestSetups()).map( + (pathToPackageDir) => path.join(pathToPackageDir, 'package.json'), + ) + + // replace all dependencies on @theatre/* packages with the local version + for (const pathToPackageJson of packagePaths) { + patchTheatreDependencies(pathToPackageJson, tempVersion) + } + + return () => { + // replace all dependencies on @theatre/* packages with the 0.0.1-COMPAT.1 + for (const pathToPackageJson of packagePaths) { + patchTheatreDependencies(pathToPackageJson, '0.0.1-COMPAT.1') + } + } +} + +/** + * Starts the verdaccio server and returns a promise that resolves when the serve is up and ready + * + * Credit: https://github.com/storybookjs/storybook/blob/92b23c080d03433765cbc7a60553d036a612a501/scripts/run-registry.ts + */ +const startVerdaccio = (port) => { + let resolved = false + return Promise.race([ + new Promise((resolve) => { + const config = { + ...YAML.parse( + fs.readFileSync(path.join(__dirname, '../verdaccio.yml'), 'utf8'), + ), + } + + const onReady = (webServer) => { + webServer.listen(port, () => { + resolved = true + resolve(webServer) + }) + } + + startVerdaccioServer( + config, + 6000, + undefined, + '1.0.0', + 'verdaccio', + onReady, + ) + }), + new Promise((_, rej) => { + setTimeout(() => { + if (!resolved) { + resolved = true + rej(new Error(`TIMEOUT - verdaccio didn't start within 10s`)) + } + }, 10000) + }), + ]) +} + +const packagesToPublish = [ + '@theatre/core', + '@theatre/studio', + '@theatre/dataverse', + '@theatre/react', + '@theatre/browser-bundles', + '@theatre/r3f', +] + +/** + * Assigns a new version to each of @theatre/* packages. If there a package depends on another package in this monorepo, + * this function makes sure the dependency version is fixed at "version" + * + * @param {{name: string, location: string}[]} workspacesListObjects - An Array of objects containing information about the workspaces + * @param {string} version - Version of the latest commit (or any other string) + * @returns {Promise<() => void>} - An async function that restores the package.json files to their original version + */ +async function writeVersionsToPackageJSONs(workspacesListObjects, version) { + /** + * An array of functions each of which restores a certain package.json to its original state + * @type {Array<() => void>} + */ + const restores = [] + for (const workspaceData of workspacesListObjects) { + const pathToPackage = path.resolve( + config.MONOREPO_ROOT, + workspaceData.location, + './package.json', + ) + + const originalFileContent = fs.readFileSync(pathToPackage, { + encoding: 'utf-8', + }) + const originalJson = JSON.parse(originalFileContent) + + restores.push(() => { + fs.writeFileSync(pathToPackage, originalFileContent, {encoding: 'utf-8'}) + }) + + let {dependencies, peerDependencies, devDependencies} = originalJson + + // Normally we don't have to override the package versions in dependencies because yarn would already convert + // all the "workspace:*" versions to a fixed version before publishing. However, packages like @theatre/studio + // have a peerDependency on @theatre/core set to "*" (meaning they would work with any version of @theatre/core). + // This is not the desired behavior in pre-release versions, so here, we'll fix those "*" versions to the set version. + for (const deps of [dependencies, peerDependencies, devDependencies]) { + if (!deps) continue + for (const wpObject of workspacesListObjects) { + if (deps[wpObject.name]) { + deps[wpObject.name] = version + } + } + } + const newJson = { + ...originalJson, + version, + dependencies, + peerDependencies, + devDependencies, + } + fs.writeFileSync(pathToPackage, JSON.stringify(newJson, undefined, 2), { + encoding: 'utf-8', + }) + } + return () => + restores.forEach((fn) => { + fn() + }) +} + +/** + * Builds all the @theatre/* packages with version number 0.0.1-COMPAT.1 and publishes + * them all to the verdaccio registry + */ +async function releaseToVerdaccio() { + cd(config.MONOREPO_ROOT) + + // @ts-ignore ignore + process.env.THEATRE_IS_PUBLISHING = true + + const workspacesListString = await $`yarn workspaces list --json` + const workspacesListObjects = workspacesListString.stdout + .split(os.EOL) + // strip out empty lines + .filter(Boolean) + .map((x) => JSON.parse(x)) + + const restorePackages = await writeVersionsToPackageJSONs( + workspacesListObjects, + tempVersion, + ) + + // Restore the package.json files to their original state when the process is killed + process.on('SIGINT', async function cleanup(a) { + restorePackages() + }) + + try { + await $`yarn clean` + await $`yarn build` + + await Promise.all( + packagesToPublish.map(async (workspaceName) => { + const npmTag = 'compat' + await $`yarn workspace ${workspaceName} npm publish --access public --tag ${npmTag}` + }), + ) + } finally { + restorePackages() + } +} + +/** + * Get all the setups from `./compatibility-tests/` + * + * @returns {Promise>} An array containing the absolute paths to the compatibility test setups + */ +export async function getCompatibilityTestSetups() { + const fixturePackageJsonFiles = await globby( + './fixtures/*/package/package.json', + { + cwd: config.PATH_TO_COMPAT_TESTS_ROOT, + gitignore: false, + onlyFiles: true, + }, + ) + + return fixturePackageJsonFiles.map((entry) => { + return path.join(config.PATH_TO_COMPAT_TESTS_ROOT, entry, '../') + }) +} + +/** + * Deletes ../test-*\/(node_modules|package-lock.json|yarn.lock) + */ +export async function clean() { + const toDelete = await globby( + './fixtures/*/package/(node_modules|yarn.lock|package-lock.json)', + { + cwd: config.PATH_TO_COMPAT_TESTS_ROOT, + // node_modules et al are gitignored, but we still want to clean them + gitignore: false, + // include directories too + onlyFiles: false, + }, + ) + + return await Promise.all( + toDelete.map((fileOrDir) => { + console.log('deleting', fileOrDir) + return fs.remove(path.join(config.PATH_TO_COMPAT_TESTS_ROOT, fileOrDir)) + }), + ) +} diff --git a/compatibility-tests/scripts/start-registry.mjs b/compatibility-tests/scripts/start-registry.mjs deleted file mode 100644 index 4dd448a..0000000 --- a/compatibility-tests/scripts/start-registry.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import {startRegistry} from './utils.mjs' - -startRegistry() diff --git a/compatibility-tests/scripts/utils.mjs b/compatibility-tests/scripts/utils.mjs deleted file mode 100644 index aa335dc..0000000 --- a/compatibility-tests/scripts/utils.mjs +++ /dev/null @@ -1,284 +0,0 @@ -/** - * Utility functions for the compatibility tests - */ - -import path from 'path' -import {globby, YAML} from 'zx' -import onCleanup from 'node-cleanup' -import * as verdaccioPackage from 'verdaccio' - -// 'verdaccio' is not an es module so we have to do this: -const startVerdaccioServer = verdaccioPackage.default.default - -export const VERDACCIO_PORT = 4823 -export const VERDACCIO_HOST = `localhost` -export const VERDACCIO_URL = `http://${VERDACCIO_HOST}:${VERDACCIO_PORT}/` -export const PATH_TO_COMPAT_TESTS_ROOT = path.join(__dirname, '..') -export const MONOREPO_ROOT = path.join(__dirname, '../..') -export const PATH_TO_YARNRC = path.join(MONOREPO_ROOT, '.yarnrc.yml') - -/** - * This script will: - * 1. Start verdaccio (a local npm registry), - * 2. Configure npm (and _not_ yarn) to use verdaccio as its registry - * 3. It will _not_ affect the global yarn installation yet. That is a TODO - * 4. It does _not_ affect the monorepo yarnrc file. - * - * If the script is interrupted, it'll attempt to restore the npm/yarn - * registry config to its original state, but that's not guaranteed. - */ -export async function startRegistry() { - const npmOriginalRegistry = ( - await $`npm config get registry --location=global` - ).stdout.trim() - onCleanup((exitCode, signal) => { - onCleanup.uninstall() - $`npm config set registry ${npmOriginalRegistry} --location=global`.then( - () => { - process.kill(process.pid, signal) - }, - ) - return false - }) - - await $`echo "Setting npm registry url to verdaccio's"` - await $`npm config set registry ${VERDACCIO_URL} --location=global` - - await $`echo Running verdaccio on ${VERDACCIO_URL}` - const verdaccioServer = await startVerdaccio(VERDACCIO_PORT) - - await releaseToVerdaccio() -} - -/** - * Starts the verdaccio server and returns a promise that resolves when the serve is up and ready - * - * Credid: https://github.com/storybookjs/storybook/blob/92b23c080d03433765cbc7a60553d036a612a501/scripts/run-registry.ts - */ -const startVerdaccio = (port) => { - let resolved = false - return Promise.race([ - new Promise((resolve) => { - const config = { - ...YAML.parse( - fs.readFileSync(path.join(__dirname, '../verdaccio.yml'), 'utf8'), - ), - } - - const onReady = (webServer) => { - webServer.listen(port, () => { - resolved = true - resolve(webServer) - }) - } - - startVerdaccioServer( - config, - 6000, - undefined, - '1.0.0', - 'verdaccio', - onReady, - ) - }), - new Promise((_, rej) => { - setTimeout(() => { - if (!resolved) { - resolved = true - rej(new Error(`TIMEOUT - verdaccio didn't start within 10s`)) - } - }, 10000) - }), - ]) -} - -const packagesToPublish = [ - '@theatre/core', - '@theatre/studio', - '@theatre/dataverse', - '@theatre/react', - '@theatre/browser-bundles', - '@theatre/r3f', -] - -/** - * Assigns a new version to each of @theatre/* packages. If there a package depends on another package in this monorepo, - * this function makes sure the dependency version is fixed at "hash" - * - * @param {{name: string, location: string}[]} workspacesListObjects - An Array of objects containing information about the workspaces - * @param {string} hash - Hash of the latest commit (or any other string) - * @returns {Promise<() => void>} - An async function that restores the package.json files to their original version - */ -async function writeVersionsToPackageJSONs(workspacesListObjects, hash) { - /** - * An array of functions each of which restores a certain package.json to its original state - * @type {Array<() => void>} - */ - const restores = [] - for (const workspaceData of workspacesListObjects) { - const pathToPackage = path.resolve( - MONOREPO_ROOT, - workspaceData.location, - './package.json', - ) - - const originalFileContent = fs.readFileSync(pathToPackage, { - encoding: 'utf-8', - }) - const originalJson = JSON.parse(originalFileContent) - - restores.push(() => { - fs.writeFileSync(pathToPackage, originalFileContent, {encoding: 'utf-8'}) - }) - - let {dependencies, peerDependencies, devDependencies} = originalJson - const version = hash - - // Normally we don't have to override the package versions in dependencies because yarn would already convert - // all the "workspace:*" versions to a fixed version before publishing. However, packages like @theatre/studio - // have a peerDependency on @theatre/core set to "*" (meaning they would work with any version of @theatre/core). - // This is not the desired behavior in pre-release versions, so here, we'll fix those "*" versions to the set version. - for (const deps of [dependencies, peerDependencies, devDependencies]) { - if (!deps) continue - for (const wpObject of workspacesListObjects) { - if (deps[wpObject.name]) { - deps[wpObject.name] = hash - } - } - } - const newJson = { - ...originalJson, - version, - dependencies, - peerDependencies, - devDependencies, - } - fs.writeFileSync(pathToPackage, JSON.stringify(newJson, undefined, 2), { - encoding: 'utf-8', - }) - } - return () => - restores.forEach((fn) => { - fn() - }) -} - -/** - * Builds all the @theatre/* packages with version number 0.0.1-COMPAT.1 and publishes - * them all to the verdaccio registry - */ -async function releaseToVerdaccio() { - const version = '0.0.1-COMPAT.1' - cd(MONOREPO_ROOT) - - // @ts-ignore ignore - process.env.THEATRE_IS_PUBLISHING = true - - const workspacesListString = await $`yarn workspaces list --json` - const workspacesListObjects = workspacesListString.stdout - .split(os.EOL) - // strip out empty lines - .filter(Boolean) - .map((x) => JSON.parse(x)) - - const restorePackages = await writeVersionsToPackageJSONs( - workspacesListObjects, - version, - ) - - process.on('SIGINT', async function cleanup(a) { - restorePackages() - process.exit(0) - }) - - // set verdaccio as the publish registry, and add it to the whitelist - const restoreYarnRc = patchYarnRcToUseVerdaccio() - - await $`yarn clean` - await $`yarn build` - - await Promise.all( - packagesToPublish.map(async (workspaceName) => { - const npmTag = 'compat' - await $`yarn workspace ${workspaceName} npm publish --access public --tag ${npmTag}` - }), - ) - - restorePackages() - restoreYarnRc() -} - -/** - * Temporarily patches the yarnrc file to sue verdaccio as its publish registry. - * - * Restores yarnrc to the old version when restoreYarnRc() is called. - */ -function patchYarnRcToUseVerdaccio() { - const originalYarnrcContent = fs.readFileSync(PATH_TO_YARNRC, { - encoding: 'utf-8', - }) - - const newYarnRcContent = YAML.stringify({ - ...YAML.parse(originalYarnrcContent), - unsafeHttpWhitelist: [VERDACCIO_HOST], - npmPublishRegistry: VERDACCIO_URL, - npmAuthIdent: 'test:test', - }) - - fs.writeFileSync(PATH_TO_YARNRC, newYarnRcContent, {encoding: 'utf-8'}) - - return function restoreYarnRc() { - fs.writeFileSync(PATH_TO_YARNRC, originalYarnrcContent, {encoding: 'utf-8'}) - } -} - -/** - * Get all the setups from `./compatibility-tests/` - * - * @returns {Array} An array containing the absolute paths to the compatibility test setups - */ -export function getCompatibilityTestSetups() { - const buildTestsDir = path.join(MONOREPO_ROOT, 'compatibility-tests') - let buildTestsDirEntries - - try { - buildTestsDirEntries = fs.readdirSync(buildTestsDir) - } catch { - throw new Error( - `Could not list directory: "${buildTestsDir}" Is it an existing directory?`, - ) - } - const setupsAbsPaths = [] - - // NOTE: We assume that every directory matching `compatibility-tests/test-*` is - // a test package - for (const entry of buildTestsDirEntries) { - if (!entry.startsWith('test-')) continue - const entryAbsPath = path.join(buildTestsDir, entry) - if (fs.lstatSync(entryAbsPath).isDirectory()) { - setupsAbsPaths.push(entryAbsPath) - } - } - - return setupsAbsPaths -} - -/** - * Deletes ../test-*\/(node_modules|package-lock.json|yarn.lock) - */ -export async function clean() { - const toDelete = await globby( - './test-*/(node_modules|yarn.lock|package-lock.json)', - { - cwd: PATH_TO_COMPAT_TESTS_ROOT, - // node_modules et al are gitignored, but we still want to clean them - gitignore: false, - // include directories too - onlyFiles: false, - }, - ) - toDelete.forEach((fileOrDir) => { - console.log('deleting', fileOrDir) - fs.removeSync(path.join(PATH_TO_COMPAT_TESTS_ROOT, fileOrDir)) - }) -} diff --git a/compatibility-tests/verdaccio.yml b/compatibility-tests/verdaccio.yml index 5e73772..1176805 100644 --- a/compatibility-tests/verdaccio.yml +++ b/compatibility-tests/verdaccio.yml @@ -21,4 +21,7 @@ packages: '**': access: $all proxy: npmjs -log: {type: stdout, format: pretty, level: http} +logs: + type: stdout + format: pretty + level: error diff --git a/jest.compat-tests.config.js b/jest.compat-tests.config.js new file mode 100644 index 0000000..58dd235 --- /dev/null +++ b/jest.compat-tests.config.js @@ -0,0 +1,23 @@ +/** @type {import('jest').Config} */ +module.exports = { + testMatch: ['/compatibility-tests/fixtures/*/*.compat-test.ts'], + moduleNameMapper: {}, + // setupFiles: ['./theatre/shared/src/setupTestEnv.ts'], + automock: false, + // transform: { + // '^.+\\.tsx?$': [ + // 'esbuild-jest', + // { + // sourcemap: true, + // }, + // ], + // '^.+\\.js$': [ + // 'esbuild-jest', + // { + // sourcemap: true, + // }, + // ], + // }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + testTimeout: 1000 * 60, +} diff --git a/jest.config.js b/jest.config.js index 42c1e7c..3e672ce 100644 --- a/jest.config.js +++ b/jest.config.js @@ -10,7 +10,10 @@ module.exports = { 'lodash-es/(.*)': 'lodash/$1', 'react-use/esm/(.*)': 'react-use/lib/$1', 'lodash-es': 'lodash', - // An ES module that jest can't handle at the moment. + // ES modules that jest can't handle at the moment. + uuid: '/node_modules/uuid/dist/index.js', + nanoid: '/node_modules/nanoid/index.cjs', + 'nanoid/non-secure': '/node_modules/nanoid/non-secure/index.cjs', 'react-icons/(.*)': 'identity-obj-proxy', }, setupFiles: ['./theatre/shared/src/setupTestEnv.ts'], diff --git a/package.json b/package.json index fbddfbd..482fe2b 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,12 @@ "playground": "yarn workspace playground run serve", "test:e2e": "yarn workspace playground run test", "test:e2e:ci": "yarn workspace playground run test:ci", - "test:compatibility:ci": "yarn workspace @theatre/compatibility-tests run test:ci", "typecheck": "yarn run build:ts", "build": "zx scripts/build.mjs", "clean": "zx scripts/clean.mjs", "build:ts": "tsc --build ./devEnv/typecheck-all-projects/tsconfig.all.json", "test": "jest", + "test:compat": "jest --config jest.compat-tests.config.js", "postinstall": "husky install", "release": "zx scripts/release.mjs", "lint:all": "eslint . --ext ts,tsx --ignore-path=.gitignore --rulesdir ./devEnv/eslint/rules" @@ -42,7 +42,7 @@ "@microsoft/api-extractor": "^7.28.6", "@typescript-eslint/eslint-plugin": "^5.30.7", "@typescript-eslint/parser": "^5.30.7", - "esbuild": "^0.14.49", + "esbuild": "^0.16.7", "esbuild-jest": "^0.5.0", "eslint": "^8.20.0", "eslint-plugin-jsx-a11y": "^6.6.1", @@ -50,7 +50,8 @@ "eslint-plugin-tsdoc": "^0.2.16", "eslint-plugin-unused-imports": "^2.0.0", "husky": "^6.0.0", - "jest": "^27.1.0", + "jest": "^29.3.1", + "jest-environment-jsdom": "^29.3.1", "jsonc-parser": "^3.1.0", "lint-staged": "^13.0.3", "node-gyp": "^9.1.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 76a8ddf..f18896c 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -14,12 +14,12 @@ "build:static": "echo 'building for vercel' && yarn run build", "typecheck": "tsc --noEmit", "test": "playwright test --config=devEnv/playwright.config.ts", - "test:ci": "percy exec -- playwright test --reporter=dot --config=devEnv/playwright.config.ts --project=chromium" + "test:ci": "playwright test --reporter=dot --config=devEnv/playwright.config.ts --project=chromium" }, "devDependencies": { - "@percy/cli": "^1.6.0", + "@percy/cli": "^1.16.0", "@percy/playwright": "^1.0.4", - "@playwright/test": "^1.23.1", + "@playwright/test": "^1.29.1", "@react-three/drei": "^7.2.2", "@react-three/fiber": "^7.0.6", "@theatre/core": "workspace:*", diff --git a/packages/playground/src/tests/setting-static-props/test.e2e.ts b/packages/playground/src/tests/setting-static-props/test.e2e.ts index 80f9b18..b3fa687 100644 --- a/packages/playground/src/tests/setting-static-props/test.e2e.ts +++ b/packages/playground/src/tests/setting-static-props/test.e2e.ts @@ -61,6 +61,7 @@ test.describe('setting-static-props', () => { await expect(secondInput).toHaveAttribute('value', '2') // Our first visual regression test + // @ts-ignore - probably percy uses a different version of playwright await percySnapshot(page, test.info().titlePath.join('/') + '/After redo') }) }) diff --git a/theatre/studio/src/utils/tightJsonStringify.test.ts b/theatre/studio/src/utils/tightJsonStringify.test.ts index 5911a7e..e29b9cd 100644 --- a/theatre/studio/src/utils/tightJsonStringify.test.ts +++ b/theatre/studio/src/utils/tightJsonStringify.test.ts @@ -3,25 +3,25 @@ describe('tightJsonStringify', () => { it('matches a series of expectations', () => { expect(tightJsonStringify({a: 1, b: 2, c: {y: 4, z: 745}})) .toMatchInlineSnapshot(` - "{ \\"a\\": 1, - \\"b\\": 2, - \\"c\\": { - \\"y\\": 4, - \\"z\\": 745 } }" + "{ "a": 1, + "b": 2, + "c": { + "y": 4, + "z": 745 } }" `) expect(tightJsonStringify(true)).toMatchInlineSnapshot(`"true"`) expect(tightJsonStringify('Already a string')).toMatchInlineSnapshot( - `"\\"Already a string\\""`, + `""Already a string""`, ) expect(tightJsonStringify({a: 1, b: {c: [1, 2, {d: 4}], e: 8}})) .toMatchInlineSnapshot(` - "{ \\"a\\": 1, - \\"b\\": { - \\"c\\": [ + "{ "a": 1, + "b": { + "c": [ 1, 2, - { \\"d\\": 4 } ], - \\"e\\": 8 } }" + { "d": 4 } ], + "e": 8 } }" `) }) }) diff --git a/yarn.lock b/yarn.lock index d0de3db..d1d4b9c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -150,6 +150,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.20.0": + version: 7.20.5 + resolution: "@babel/compat-data@npm:7.20.5" + checksum: 523790c43ef6388fae91d1ca9acf1ab0e1b22208dcd39c0e5e7a6adf0b48a133f1831be8d5931a72ecd48860f3e3fb777cb89840794abd8647a5c8e5cfab484e + languageName: node + linkType: hard + "@babel/core@npm:7.12.3": version: 7.12.3 resolution: "@babel/core@npm:7.12.3" @@ -220,6 +227,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.11.6": + version: 7.20.5 + resolution: "@babel/core@npm:7.20.5" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.20.5 + "@babel/helper-compilation-targets": ^7.20.0 + "@babel/helper-module-transforms": ^7.20.2 + "@babel/helpers": ^7.20.5 + "@babel/parser": ^7.20.5 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.5 + "@babel/types": ^7.20.5 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.1 + semver: ^6.3.0 + checksum: 9547f1e6364bc58c3621e3b17ec17f0d034ff159e5a520091d9381608d40af3be4042dd27c20ad7d3e938422d75850ac56a3758d6801d65df701557af4bd244b + languageName: node + linkType: hard + "@babel/core@npm:^7.12.17": version: 7.14.0 resolution: "@babel/core@npm:7.14.0" @@ -403,6 +433,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/generator@npm:7.20.5" + dependencies: + "@babel/types": ^7.20.5 + "@jridgewell/gen-mapping": ^0.3.2 + jsesc: ^2.5.1 + checksum: 31c10d1e122f08cf755a24bd6f5d197f47eceba03f1133759687d00ab72d210e60ba4011da42f368b6e9fa85cbfda7dc4adb9889c2c20cc5c34bb2d57c1deab7 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.0.0, @babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" @@ -563,6 +604,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/helper-compilation-targets@npm:7.20.0" + dependencies: + "@babel/compat-data": ^7.20.0 + "@babel/helper-validator-option": ^7.18.6 + browserslist: ^4.21.3 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: bc183f2109648849c8fde0b3c5cf08adf2f7ad6dc617b546fd20f34c8ef574ee5ee293c8d1bd0ed0221212e8f5907cdc2c42097870f1dcc769a654107d82c95b + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.12.1, @babel/helper-create-class-features-plugin@npm:^7.14.5, @babel/helper-create-class-features-plugin@npm:^7.15.0": version: 7.15.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.15.0" @@ -863,6 +918,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-function-name@npm:7.19.0" + dependencies: + "@babel/template": ^7.18.10 + "@babel/types": ^7.19.0 + checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-get-function-arity@npm:7.12.13" @@ -1120,6 +1185,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-module-transforms@npm:7.20.2" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.1 + "@babel/types": ^7.20.2 + checksum: 33a60ca115f6fce2c9d98e2a2e5649498aa7b23e2ae3c18745d7a021487708fc311458c33542f299387a0da168afccba94116e077f2cce49ae9e5ab83399e8a2 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" @@ -1326,6 +1407,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-simple-access@npm:7.20.2" + dependencies: + "@babel/types": ^7.20.2 + checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + languageName: node + linkType: hard + "@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" @@ -1398,6 +1488,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-string-parser@npm:7.19.4" + checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.12.11": version: 7.12.11 resolution: "@babel/helper-validator-identifier@npm:7.12.11" @@ -1433,6 +1530,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/helper-validator-identifier@npm:7.19.1" + checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.12.1, @babel/helper-validator-option@npm:^7.14.5": version: 7.14.5 resolution: "@babel/helper-validator-option@npm:7.14.5" @@ -1564,6 +1668,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.20.5": + version: 7.20.6 + resolution: "@babel/helpers@npm:7.20.6" + dependencies: + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.5 + "@babel/types": ^7.20.5 + checksum: f03ec6eb2bf8dc7cdfe2569ee421fd9ba6c7bac6c862d90b608ccdd80281ebe858bc56ca175fc92b3ac50f63126b66bbd5ec86f9f361729289a20054518f1ac5 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": version: 7.13.10 resolution: "@babel/highlight@npm:7.13.10" @@ -1662,6 +1777,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/parser@npm:7.20.5" + bin: + parser: ./bin/babel-parser.js + checksum: e8d514ce0aa74d56725bd102919a49fa367afef9cd8208cf52f670f54b061c4672f51b4b7980058ab1f5fe73615fe4dc90720ab47bbcebae07ad08d667eda318 + languageName: node + linkType: hard + "@babel/parser@npm:^7.18.6, @babel/parser@npm:^7.18.9": version: 7.18.9 resolution: "@babel/parser@npm:7.18.9" @@ -2736,7 +2860,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.18.6": +"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.18.6 resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" dependencies: @@ -5383,6 +5507,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.18.10": + version: 7.18.10 + resolution: "@babel/template@npm:7.18.10" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.18.10 + "@babel/types": ^7.18.10 + checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 + languageName: node + linkType: hard + "@babel/template@npm:^7.18.6": version: 7.18.6 resolution: "@babel/template@npm:7.18.6" @@ -5513,6 +5648,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.20.1, @babel/traverse@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/traverse@npm:7.20.5" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.20.5 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.20.5 + "@babel/types": ^7.20.5 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: c7fed468614aab1cf762dda5df26e2cfcd2b1b448c9d3321ac44786c4ee773fb0e10357e6593c3c6a648ae2e0be6d90462d855998dc10e3abae84de99291e008 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.13, @babel/types@npm:^7.13.14, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.13.14 resolution: "@babel/types@npm:7.13.14" @@ -5564,6 +5717,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.10, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5": + version: 7.20.5 + resolution: "@babel/types@npm:7.20.5" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: 773f0a1ad9f6ca5c5beaf751d1d8d81b9130de87689d1321fc911d73c3b1167326d66f0ae086a27fb5bfc8b4ee3ffebf1339be50d3b4d8015719692468c31f2d + languageName: node + linkType: hard + "@babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9": version: 7.18.9 resolution: "@babel/types@npm:7.18.9" @@ -5607,6 +5771,24 @@ __metadata: languageName: node linkType: hard +"@cspotcode/zx@npm:^6.1.2": + version: 6.1.2 + resolution: "@cspotcode/zx@npm:6.1.2" + dependencies: + "@types/fs-extra": ^9.0.13 + "@types/minimist": ^1.2.2 + "@types/node": ^17.0 + "@types/which": ^2.0.1 + chalk: ^5.0.1 + globby: ^13.1.1 + node-fetch: ^3.2.3 + yaml: ^2.0.1 + bin: + zx: zx.mjs + checksum: b8a9e86c12a32e463087d9fd3234eecbff135466804169d401b6936e0917a8b8cc953f648945cfe47b86d6d7e199d4923bcad0e5cbc99cef339cf0b7f3f581ad + languageName: node + linkType: hard + "@csstools/convert-colors@npm:^1.4.0": version: 1.4.0 resolution: "@csstools/convert-colors@npm:1.4.0" @@ -5749,6 +5931,160 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/android-arm64@npm:0.16.7" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/android-arm@npm:0.16.7" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/android-x64@npm:0.16.7" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/darwin-arm64@npm:0.16.7" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/darwin-x64@npm:0.16.7" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/freebsd-arm64@npm:0.16.7" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/freebsd-x64@npm:0.16.7" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-arm64@npm:0.16.7" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-arm@npm:0.16.7" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-ia32@npm:0.16.7" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-loong64@npm:0.16.7" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-mips64el@npm:0.16.7" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-ppc64@npm:0.16.7" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-riscv64@npm:0.16.7" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-s390x@npm:0.16.7" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/linux-x64@npm:0.16.7" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/netbsd-x64@npm:0.16.7" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/openbsd-x64@npm:0.16.7" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/sunos-x64@npm:0.16.7" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/win32-arm64@npm:0.16.7" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/win32-ia32@npm:0.16.7" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.16.7": + version: 0.16.7 + resolution: "@esbuild/win32-x64@npm:0.16.7" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^0.4.3": version: 0.4.3 resolution: "@eslint/eslintrc@npm:0.4.3" @@ -5988,6 +6324,20 @@ __metadata: languageName: node linkType: hard +"@jest/console@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/console@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.3.1 + jest-util: ^29.3.1 + slash: ^3.0.0 + checksum: 9eecbfb6df4f5b810374849b7566d321255e6fd6e804546236650384966be532ff75a3e445a3277eadefe67ddf4dc56cd38332abd72d6a450f1bea9866efc6d7 + languageName: node + linkType: hard + "@jest/core@npm:^26.6.0, @jest/core@npm:^26.6.3": version: 26.6.3 resolution: "@jest/core@npm:26.6.3" @@ -6065,6 +6415,47 @@ __metadata: languageName: node linkType: hard +"@jest/core@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/core@npm:29.3.1" + dependencies: + "@jest/console": ^29.3.1 + "@jest/reporters": ^29.3.1 + "@jest/test-result": ^29.3.1 + "@jest/transform": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^29.2.0 + jest-config: ^29.3.1 + jest-haste-map: ^29.3.1 + jest-message-util: ^29.3.1 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.3.1 + jest-resolve-dependencies: ^29.3.1 + jest-runner: ^29.3.1 + jest-runtime: ^29.3.1 + jest-snapshot: ^29.3.1 + jest-util: ^29.3.1 + jest-validate: ^29.3.1 + jest-watcher: ^29.3.1 + micromatch: ^4.0.4 + pretty-format: ^29.3.1 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: e3ac9201e8a084ccd832b17877b56490402b919f227622bb24f9372931e77b869e60959d34144222ce20fb619d0a6a6be20b257adb077a6b0f430a4584a45b0f + languageName: node + linkType: hard + "@jest/environment@npm:^26.6.0, @jest/environment@npm:^26.6.2": version: 26.6.2 resolution: "@jest/environment@npm:26.6.2" @@ -6089,6 +6480,37 @@ __metadata: languageName: node linkType: hard +"@jest/environment@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/environment@npm:29.3.1" + dependencies: + "@jest/fake-timers": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + jest-mock: ^29.3.1 + checksum: 974102aba7cc80508f787bb5504dcc96e5392e0a7776a63dffbf54ddc2c77d52ef4a3c08ed2eedec91965befff873f70cd7c9ed56f62bb132dcdb821730e6076 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/expect-utils@npm:29.3.1" + dependencies: + jest-get-type: ^29.2.0 + checksum: 7f3b853eb1e4299988f66b9aa49c1aacb7b8da1cf5518dca4ccd966e865947eed8f1bde6c8f5207d8400e9af870112a44b57aa83515ad6ea5e4a04a971863adb + languageName: node + linkType: hard + +"@jest/expect@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/expect@npm:29.3.1" + dependencies: + expect: ^29.3.1 + jest-snapshot: ^29.3.1 + checksum: 1d7b5cc735c8a99bfbed884d80fdb43b23b3456f4ec88c50fd86404b097bb77fba84f44e707fc9b49f106ca1154ae03f7c54dc34754b03f8a54eeb420196e5bf + languageName: node + linkType: hard + "@jest/fake-timers@npm:^26.6.2": version: 26.6.2 resolution: "@jest/fake-timers@npm:26.6.2" @@ -6117,6 +6539,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/fake-timers@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + "@sinonjs/fake-timers": ^9.1.2 + "@types/node": "*" + jest-message-util: ^29.3.1 + jest-mock: ^29.3.1 + jest-util: ^29.3.1 + checksum: b1dafa8cdc439ef428cd772c775f0b22703677f52615513eda11a104bbfc352d7ec69b1225db95d4ef2e1b4ef0f23e1a7d96de5313aeb0950f672e6548ae069d + languageName: node + linkType: hard + "@jest/globals@npm:^26.6.2": version: 26.6.2 resolution: "@jest/globals@npm:26.6.2" @@ -6139,6 +6575,18 @@ __metadata: languageName: node linkType: hard +"@jest/globals@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/globals@npm:29.3.1" + dependencies: + "@jest/environment": ^29.3.1 + "@jest/expect": ^29.3.1 + "@jest/types": ^29.3.1 + jest-mock: ^29.3.1 + checksum: 4d2b9458aabf7c28fd167e53984477498c897b64eec67a7f84b8fff465235cae1456ee0721cb0e7943f0cda443c7656adb9801f9f34e27495b8ebbd9f3033100 + languageName: node + linkType: hard + "@jest/reporters@npm:^26.6.2": version: 26.6.2 resolution: "@jest/reporters@npm:26.6.2" @@ -6213,6 +6661,52 @@ __metadata: languageName: node linkType: hard +"@jest/reporters@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/reporters@npm:29.3.1" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.3.1 + "@jest/test-result": ^29.3.1 + "@jest/transform": ^29.3.1 + "@jest/types": ^29.3.1 + "@jridgewell/trace-mapping": ^0.3.15 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^5.1.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.3.1 + jest-util: ^29.3.1 + jest-worker: ^29.3.1 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 273e0c6953285f01151e9d84ac1e55744802a1ec79fb62dafeea16a49adfe7b24e7f35bef47a0214e5e057272dbfdacf594208286b7766046fd0f3cfa2043840 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.0.0": + version: 29.0.0 + resolution: "@jest/schemas@npm:29.0.0" + dependencies: + "@sinclair/typebox": ^0.24.1 + checksum: 41355c78f09eb1097e57a3c5d0ca11c9099e235e01ea5fa4e3953562a79a6a9296c1d300f1ba50ca75236048829e056b00685cd2f1ff8285e56fd2ce01249acb + languageName: node + linkType: hard + "@jest/source-map@npm:^26.6.2": version: 26.6.2 resolution: "@jest/source-map@npm:26.6.2" @@ -6235,6 +6729,17 @@ __metadata: languageName: node linkType: hard +"@jest/source-map@npm:^29.2.0": + version: 29.2.0 + resolution: "@jest/source-map@npm:29.2.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.15 + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + checksum: 09f76ab63d15dcf44b3035a79412164f43be34ec189575930f1a00c87e36ea0211ebd6a4fbe2253c2516e19b49b131f348ddbb86223ca7b6bbac9a6bc76ec96e + languageName: node + linkType: hard + "@jest/test-result@npm:^26.6.0, @jest/test-result@npm:^26.6.2": version: 26.6.2 resolution: "@jest/test-result@npm:26.6.2" @@ -6259,6 +6764,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-result@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/test-result@npm:29.3.1" + dependencies: + "@jest/console": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: b24ac283321189b624c372a6369c0674b0ee6d9e3902c213452c6334d037113718156b315364bee8cee0f03419c2bdff5e2c63967193fb422830e79cbb26866a + languageName: node + linkType: hard + "@jest/test-sequencer@npm:^26.6.3": version: 26.6.3 resolution: "@jest/test-sequencer@npm:26.6.3" @@ -6284,6 +6801,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-sequencer@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/test-sequencer@npm:29.3.1" + dependencies: + "@jest/test-result": ^29.3.1 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.3.1 + slash: ^3.0.0 + checksum: a8325b1ea0ce644486fb63bb67cedd3524d04e3d7b1e6c1e3562bf12ef477ecd0cf34044391b2a07d925e1c0c8b4e0f3285035ceca3a474a2c55980f1708caf3 + languageName: node + linkType: hard + "@jest/transform@npm:^26.6.2": version: 26.6.2 resolution: "@jest/transform@npm:26.6.2" @@ -6330,6 +6859,29 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/transform@npm:29.3.1" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.3.1 + "@jridgewell/trace-mapping": ^0.3.15 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.3.1 + jest-regex-util: ^29.2.0 + jest-util: ^29.3.1 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.1 + checksum: 673df5900ffc95bc811084e09d6e47948034dea6ab6cc4f81f80977e3a52468a6c2284d0ba9796daf25a62ae50d12f7e97fc9a3a0c587f11f2a479ff5493ca53 + languageName: node + linkType: hard + "@jest/types@npm:^26.6.0, @jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -6356,6 +6908,20 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.3.1": + version: 29.3.1 + resolution: "@jest/types@npm:29.3.1" + dependencies: + "@jest/schemas": ^29.0.0 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: 6f9faf27507b845ff3839c1adc6dbd038d7046d03d37e84c9fc956f60718711a801a5094c7eeee6b39ccf42c0ab61347fdc0fa49ab493ae5a8efd2fd41228ee8 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.2 resolution: "@jridgewell/gen-mapping@npm:0.3.2" @@ -6367,6 +6933,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:3.1.0": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.0.3": version: 3.0.5 resolution: "@jridgewell/resolve-uri@npm:3.0.5" @@ -6381,6 +6954,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:1.4.14": + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.11 resolution: "@jridgewell/sourcemap-codec@npm:1.4.11" @@ -6398,6 +6978,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15": + version: 0.3.17 + resolution: "@jridgewell/trace-mapping@npm:0.3.17" + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.14 resolution: "@jridgewell/trace-mapping@npm:0.3.14" @@ -6680,117 +7270,128 @@ __metadata: languageName: node linkType: hard -"@percy/cli-build@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-build@npm:1.6.0" +"@percy/cli-app@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-app@npm:1.16.0" dependencies: - "@percy/cli-command": 1.6.0 - checksum: d43c9a856de4d391bc9905206bf66099edf26b325386fa2873a63ccfab6ea6c0825ba2206e8dd3a9e49c61eaf819d63c00a256589c968e6ebc93ba711c0a5439 + "@percy/cli-command": 1.16.0 + "@percy/cli-exec": 1.16.0 + checksum: 90566bf5ecc7ab113f068ec3c097d76d943f24933b52f06f4e47716eb897cbf04b0330594c6387cb1699896e2f473c8d3dd54576a26e1cdd2d7c8caf9cb676fb languageName: node linkType: hard -"@percy/cli-command@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-command@npm:1.6.0" +"@percy/cli-build@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-build@npm:1.16.0" dependencies: - "@percy/config": 1.6.0 - "@percy/core": 1.6.0 - "@percy/logger": 1.6.0 + "@percy/cli-command": 1.16.0 + checksum: 6ef171552ff61a687d91f4f7a2a190168e8ecb167ea5e7f1488510f0d9b570bb692b59bd7184664cd3155a409bc7cff655d2a124b166eef88c0469d12184b9bc + languageName: node + linkType: hard + +"@percy/cli-command@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-command@npm:1.16.0" + dependencies: + "@percy/config": 1.16.0 + "@percy/core": 1.16.0 + "@percy/logger": 1.16.0 bin: percy-cli-readme: bin/readme.js - checksum: 22ed4bd8781f5cc7bc68309a8c24670ebc27c616c21f95de0b96074979d6d402b934deca26b5510f59d7f78cd72be156b6f93d0bcc033912dc1cab9c622acc3d + checksum: 06833a9b31578e1985f284b072d0b98964b940c46d83ffa6a9bec4feec753521422b562e9c5f6fe941185567bb6fb3718a4559aa34eca6eeed931e083ad778bd languageName: node linkType: hard -"@percy/cli-config@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-config@npm:1.6.0" +"@percy/cli-config@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-config@npm:1.16.0" dependencies: - "@percy/cli-command": 1.6.0 - checksum: 4f72ecc1c80241d48870e697967958d82fb3ac2f90cb9d3ff70217a5909cd1cab36e6b657f8dfd52d59fc9ccbf2b038983136bc5429421bec10a069abc20cc4f + "@percy/cli-command": 1.16.0 + checksum: 187144b81d21af8724f9cfb33995b6ad9736d4fd50987c9223e616766efd44db31cb18e618e387d085e8281e893e5979c200dd0965b2bcd67b78eed26743213f languageName: node linkType: hard -"@percy/cli-exec@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-exec@npm:1.6.0" +"@percy/cli-exec@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-exec@npm:1.16.0" dependencies: - "@percy/cli-command": 1.6.0 + "@percy/cli-command": 1.16.0 cross-spawn: ^7.0.3 which: ^2.0.2 - checksum: 5dc571c3b8b81335cee28a61b5a362c2a1d81360992ee5b806ec1f71ad00f3aec0ea41566e95aecc06d36acbc46b19218d60052e86dc595bf2f5639f03f1024e + checksum: 78b64f36683db44859a0a82bd49984adeb5fd7aaa5105bed4574cc4f7a3a6fcc88bb05c823e1736bf505cd73c04771c7908dcc938f42cfc23bde9ffec4d54172 languageName: node linkType: hard -"@percy/cli-snapshot@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-snapshot@npm:1.6.0" +"@percy/cli-snapshot@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-snapshot@npm:1.16.0" dependencies: - "@percy/cli-command": 1.6.0 + "@percy/cli-command": 1.16.0 yaml: ^2.0.0 - checksum: 5f766fd57d87782b25efdad0f696d9f43ebc0a5c11c1711fefaf5a2027639f73bafc4df5e1749a49f0a46cc754cc52b58ff0d4a7e71c4789c8128876c155fd7a + checksum: 87461a6036d4e15299bea7cb6c4b64564eace7385eae48e708ed75322ed3fdd2b179a42437e675a025ee0191c943655b718a81d48a3fe5789f71fba0c88f183b languageName: node linkType: hard -"@percy/cli-upload@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/cli-upload@npm:1.6.0" +"@percy/cli-upload@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/cli-upload@npm:1.16.0" dependencies: - "@percy/cli-command": 1.6.0 + "@percy/cli-command": 1.16.0 fast-glob: ^3.2.11 image-size: ^1.0.0 - checksum: 8d07f1156d388106d9d578afbaa01bdc6266cffe166395baa5223f9241750b7ff71e916c5b65922b800138aeee7e6932b356b9dd908addaf4cc18bc6688adc28 + checksum: 8bab3fea7583abdc42403034e86e2d52821099749df0452751f24857ededf801ff7a69adf752a807e0d913e51d7503ad05608da7056cf77f2038a4f97bfb4232 languageName: node linkType: hard -"@percy/cli@npm:^1.6.0": - version: 1.6.0 - resolution: "@percy/cli@npm:1.6.0" +"@percy/cli@npm:^1.16.0": + version: 1.16.0 + resolution: "@percy/cli@npm:1.16.0" dependencies: - "@percy/cli-build": 1.6.0 - "@percy/cli-command": 1.6.0 - "@percy/cli-config": 1.6.0 - "@percy/cli-exec": 1.6.0 - "@percy/cli-snapshot": 1.6.0 - "@percy/cli-upload": 1.6.0 - "@percy/client": 1.6.0 - "@percy/logger": 1.6.0 + "@percy/cli-app": 1.16.0 + "@percy/cli-build": 1.16.0 + "@percy/cli-command": 1.16.0 + "@percy/cli-config": 1.16.0 + "@percy/cli-exec": 1.16.0 + "@percy/cli-snapshot": 1.16.0 + "@percy/cli-upload": 1.16.0 + "@percy/client": 1.16.0 + "@percy/logger": 1.16.0 bin: percy: bin/run.cjs - checksum: 4599ac3b17cb9622acedfa7ce083e430e8f333e16a7bf3b587206ad21a410f5a7d35c63830880faa75b667438cb6e680f4e2895ca057c8a3831bc00a46fde285 + checksum: fb4131670028399d0a4d76d1f6e35ac4691683a7d77ed8d69206ac6ca1e95272df2a5349c72fa4ff96506f8d0e0b74dd94cc1a5ea5fcd97043dba7d2d305772f languageName: node linkType: hard -"@percy/client@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/client@npm:1.6.0" +"@percy/client@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/client@npm:1.16.0" dependencies: - "@percy/env": 1.6.0 - "@percy/logger": 1.6.0 - checksum: e35d86646d54c15aeeb63ce41e1699eb56600ec842808592ef8b1dc4df285701e71d0f503ee9cfaff9f5e2a8bf27c9fe87c55999756fbc62cec03950f675b2db + "@percy/env": 1.16.0 + "@percy/logger": 1.16.0 + checksum: c42ffd61cbd491101bed62d7c0f1dafd4ca40d8c8601cf6dacfcc8cabf626bb828d0ff2eefc9aa77454dd3b0bc79152f2f0895000a5c7d461c69280f68584b58 languageName: node linkType: hard -"@percy/config@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/config@npm:1.6.0" +"@percy/config@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/config@npm:1.16.0" dependencies: - "@percy/logger": 1.6.0 + "@percy/logger": 1.16.0 ajv: ^8.6.2 cosmiconfig: ^7.0.0 yaml: ^2.0.0 - checksum: f9399ba2fac9eb0c71accb0f667c020979461e8e0753725718bcd665855bafb4631c6ba38fe8d7e40185a2a70de04f9eaf36f0e4782bc1dda4a57bf636fa8404 + checksum: 652000a556c593a3ed539e21d094cca918342af899ea919b2722d50e5a1a51567637ed0618dc95a1f7f8e465dc5a68d69b9be02efc72f622ee37845d82b25599 languageName: node linkType: hard -"@percy/core@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/core@npm:1.6.0" +"@percy/core@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/core@npm:1.16.0" dependencies: - "@percy/client": 1.6.0 - "@percy/config": 1.6.0 - "@percy/dom": 1.6.0 - "@percy/logger": 1.6.0 + "@percy/client": 1.16.0 + "@percy/config": 1.16.0 + "@percy/dom": 1.16.0 + "@percy/logger": 1.16.0 content-disposition: ^0.5.4 cross-spawn: ^7.0.3 extract-zip: ^2.0.1 @@ -6800,28 +7401,28 @@ __metadata: path-to-regexp: ^6.2.0 rimraf: ^3.0.2 ws: ^8.0.0 - checksum: a69bf54f1437f81b963b8034097c327cf93ae3157451391a217862a4b4e435fdb968da973043b9320c70dba5ed6eaa51281ab197f8f7f7564293f36f5c253ccf + checksum: a8202db2a65b0dcb16d879f900cdddb5b5cc0138aec88867f54471f0ed52e5debb8b1f43c620a7dc1fdcfefd9f4b7b8457153f4b0bc2643c6b01a2cc2c4cbe24 languageName: node linkType: hard -"@percy/dom@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/dom@npm:1.6.0" - checksum: 71e3924f71580ae9db6a8e5871a5d6e225c172eb25f35a710f18bb9277a25fdd210a7307c5953a10f7c2628045db8322478ca42359f1e093a2244c8cb95552f1 +"@percy/dom@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/dom@npm:1.16.0" + checksum: 433c2823c82ab4aa2636e3b17658df50765733fa6f645a80ede2dd8e3ee0199cbc62c265b5e77f75919cda2304ef071066f8d1be16b713048298bc66acfb94f0 languageName: node linkType: hard -"@percy/env@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/env@npm:1.6.0" - checksum: 7174acc1e743850df2aed74c980be2e8619651ff9432c5231a08f02392c8e35425897561b4fccb07f2f48739a0c067668f19e97cd5229630aab2c57788a7f81c +"@percy/env@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/env@npm:1.16.0" + checksum: 88fba7c4be5ce5c5662d20c3d7d4b2c6df66c516a4e0c0c5e0327768d480eeda8490a9503f60dfd8720df0dfa34481633d3c284a12c25cda87cef3e5381a5e3f languageName: node linkType: hard -"@percy/logger@npm:1.6.0": - version: 1.6.0 - resolution: "@percy/logger@npm:1.6.0" - checksum: 96eebc526a0d119a112fb63f83250ea294d1ca8a44c6eb879c3be7a05281cddee2c1facceaef9520dbe4df1480131c56a57e438e0ebf86fb0833015f083db198 +"@percy/logger@npm:1.16.0": + version: 1.16.0 + resolution: "@percy/logger@npm:1.16.0" + checksum: 172d2271a6ffd04d1990d616067f1440fb0a236b65f1c52072722e1c6e9c308110bcce86f9ccf91266e1857e83a1d40aed2db2f6dfb947efaf5db59004001d99 languageName: node linkType: hard @@ -6843,15 +7444,15 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:^1.23.1": - version: 1.23.1 - resolution: "@playwright/test@npm:1.23.1" +"@playwright/test@npm:^1.29.1": + version: 1.29.1 + resolution: "@playwright/test@npm:1.29.1" dependencies: "@types/node": "*" - playwright-core: 1.23.1 + playwright-core: 1.29.1 bin: playwright: cli.js - checksum: 27fc6b4424dfb0f0dfaaecb01a33bf77c0f95e6a1e635fe85dd4ad36e5053afdbe4ad1de4be1c5705e482451b43f7ddacf667f6c5b70ab5f8e32c30110211c29 + checksum: c4424ee09f6589a296a3a78402f8c9eac841f3e5f44d96e3a2ba07aaa00d53ee9c10cc96379b304743a9e70f231df0ded0ad2fc197f412ada67b4cf17ee24b0f languageName: node linkType: hard @@ -7226,6 +7827,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.24.1": + version: 0.24.51 + resolution: "@sinclair/typebox@npm:0.24.51" + checksum: fd0d855e748ef767eb19da1a60ed0ab928e91e0f358c1dd198d600762c0015440b15755e96d1176e2a0db7e09c6a64ed487828ee10dd0c3e22f61eb09c478cd0 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1.7.0": version: 1.8.2 resolution: "@sinonjs/commons@npm:1.8.2" @@ -7253,6 +7861,15 @@ __metadata: languageName: node linkType: hard +"@sinonjs/fake-timers@npm:^9.1.2": + version: 9.1.2 + resolution: "@sinonjs/fake-timers@npm:9.1.2" + dependencies: + "@sinonjs/commons": ^1.7.0 + checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6 + languageName: node + linkType: hard + "@surma/rollup-plugin-off-main-thread@npm:^1.1.1": version: 1.4.2 resolution: "@surma/rollup-plugin-off-main-thread@npm:1.4.2" @@ -7481,12 +8098,14 @@ __metadata: version: 0.0.0-use.local resolution: "@theatre/compatibility-tests@workspace:compatibility-tests" dependencies: + "@cspotcode/zx": ^6.1.2 node-cleanup: ^2.1.2 + playwright: ^1.28.1 prettier: ^2.6.2 verdaccio: ^5.10.2 verdaccio-auth-memory: ^10.2.0 verdaccio-memory: ^10.2.0 - zx: ^6.1.0 + zx: ^7.1.1 languageName: unknown linkType: soft @@ -7857,7 +8476,7 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2": +"@types/graceful-fs@npm:^4.1.2, @types/graceful-fs@npm:^4.1.3": version: 4.1.5 resolution: "@types/graceful-fs@npm:4.1.5" dependencies: @@ -7951,6 +8570,17 @@ __metadata: languageName: node linkType: hard +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "*" + "@types/tough-cookie": "*" + parse5: ^7.0.0 + checksum: d55402c5256ef451f93a6e3d3881f98339fe73a5ac2030588df056d6835df8367b5a857b48d27528289057e26dcdd3f502edc00cb877c79174cb3a4c7f2198c1 + languageName: node + linkType: hard + "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.3": version: 7.0.9 resolution: "@types/json-schema@npm:7.0.9" @@ -8076,9 +8706,16 @@ __metadata: linkType: hard "@types/node@npm:^17.0": - version: 17.0.35 - resolution: "@types/node@npm:17.0.35" - checksum: 7a24946ae7fd20267ed92466384f594e448bfb151081158d565cc635d406ecb29ea8fb85fcd2a1f71efccf26fb5bd3c6f509bde56077eb8b832b847a6664bc62 + version: 17.0.45 + resolution: "@types/node@npm:17.0.45" + checksum: aa04366b9103b7d6cfd6b2ef64182e0eaa7d4462c3f817618486ea0422984c51fc69fd0d436eae6c9e696ddfdbec9ccaa27a917f7c2e8c75c5d57827fe3d95e8 + languageName: node + linkType: hard + +"@types/node@npm:^18.7.20": + version: 18.11.13 + resolution: "@types/node@npm:18.11.13" + checksum: b0c1aa3bd2f5df8240e61096a49d6d4be600109b824d23408ec4ba1ec057dc0c60588e09f73b8a60455ad26d367e9c5562fad8403099f885cbc7b4cace83ec4c languageName: node linkType: hard @@ -8117,6 +8754,13 @@ __metadata: languageName: node linkType: hard +"@types/ps-tree@npm:^1.1.2": + version: 1.1.2 + resolution: "@types/ps-tree@npm:1.1.2" + checksum: 575c3b2b83ea8935ab296ac9e17f6a2c1a5bb155f9e30663bb7a7c741a8ca4641f0df9748866230f1d6c3f87ed4ffa3fa91f1df444ef9979a3df31114534bf25 + languageName: node + linkType: hard + "@types/q@npm:^1.5.1": version: 1.5.4 resolution: "@types/q@npm:1.5.4" @@ -8289,6 +8933,13 @@ __metadata: languageName: node linkType: hard +"@types/tough-cookie@npm:*": + version: 4.0.2 + resolution: "@types/tough-cookie@npm:4.0.2" + checksum: e055556ffdaa39ad85ede0af192c93f93f986f4bd9e9426efdc2948e3e2632db3a4a584d4937dbf6d7620527419bc99e6182d3daf2b08685e710f2eda5291905 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.2 resolution: "@types/trusted-types@npm:2.0.2" @@ -8378,6 +9029,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.8": + version: 17.0.17 + resolution: "@types/yargs@npm:17.0.17" + dependencies: + "@types/yargs-parser": "*" + checksum: 4f1b5149e794c8960652b4339dc96655e53b48fdbe1b847fcb0db95e72e760724a4c5c616a7fccb3c0ae8beb0e57e06e37391d492e916e3ff179aafeb890e426 + languageName: node + linkType: hard + "@types/yauzl@npm:^2.9.1": version: 2.9.2 resolution: "@types/yauzl@npm:2.9.2" @@ -9227,6 +9887,13 @@ __metadata: languageName: node linkType: hard +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + languageName: node + linkType: hard + "abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -9274,6 +9941,16 @@ __metadata: languageName: node linkType: hard +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: ^8.1.0 + acorn-walk: ^8.0.2 + checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + languageName: node + linkType: hard + "acorn-import-assertions@npm:^1.7.6": version: 1.8.0 resolution: "acorn-import-assertions@npm:1.8.0" @@ -9326,6 +10003,13 @@ __metadata: languageName: node linkType: hard +"acorn-walk@npm:^8.0.2": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + languageName: node + linkType: hard + "acorn@npm:^6.0.1, acorn@npm:^6.0.4, acorn@npm:^6.4.1": version: 6.4.2 resolution: "acorn@npm:6.4.2" @@ -9344,6 +10028,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.1.0, acorn@npm:^8.8.1": + version: 8.8.1 + resolution: "acorn@npm:8.8.1" + bin: + acorn: bin/acorn + checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f + languageName: node + linkType: hard + "acorn@npm:^8.2.4": version: 8.3.0 resolution: "acorn@npm:8.3.0" @@ -10295,6 +10988,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.3.1": + version: 29.3.1 + resolution: "babel-jest@npm:29.3.1" + dependencies: + "@jest/transform": ^29.3.1 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.2.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 793848238a771a931ddeb5930b9ec8ab800522ac8d64933665698f4a39603d157e572e20b57d79610277e1df88d3ee82b180d59a21f3570388f602beeb38a595 + languageName: node + linkType: hard + "babel-loader@npm:8.1.0": version: 8.1.0 resolution: "babel-loader@npm:8.1.0" @@ -10409,6 +11119,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-jest-hoist@npm:^29.2.0": + version: 29.2.0 + resolution: "babel-plugin-jest-hoist@npm:29.2.0" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 368d271ceae491ae6b96cd691434859ea589fbe5fd5aead7660df75d02394077273c6442f61f390e9347adffab57a32b564d0fabcf1c53c4b83cd426cb644072 + languageName: node + linkType: hard + "babel-plugin-macros@npm:2.8.0": version: 2.8.0 resolution: "babel-plugin-macros@npm:2.8.0" @@ -10659,6 +11381,18 @@ __metadata: languageName: node linkType: hard +"babel-preset-jest@npm:^29.2.0": + version: 29.2.0 + resolution: "babel-preset-jest@npm:29.2.0" + dependencies: + babel-plugin-jest-hoist: ^29.2.0 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1b09a2db968c36e064daf98082cfffa39c849b63055112ddc56fc2551fd0d4783897265775b1d2f8a257960a3339745de92e74feb01bad86d41c4cecbfa854fc + languageName: node + linkType: hard + "babel-preset-react-app@npm:^10.0.0": version: 10.0.0 resolution: "babel-preset-react-app@npm:10.0.0" @@ -11261,6 +11995,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.21.3": + version: 4.21.4 + resolution: "browserslist@npm:4.21.4" + dependencies: + caniuse-lite: ^1.0.30001400 + electron-to-chromium: ^1.4.251 + node-releases: ^2.0.6 + update-browserslist-db: ^1.0.9 + bin: + browserslist: cli.js + checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -11555,6 +12303,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001400": + version: 1.0.30001439 + resolution: "caniuse-lite@npm:1.0.30001439" + checksum: 3912dd536c9735713ca85e47721988bbcefb881ddb4886b0b9923fa984247fd22cba032cf268e57d158af0e8a2ae2eae042ae01942a1d6d7849fa9fa5d62fb82 + languageName: node + linkType: hard + "capture-exit@npm:^2.0.0": version: 2.0.0 resolution: "capture-exit@npm:2.0.0" @@ -11959,6 +12714,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" @@ -12323,6 +13089,13 @@ __metadata: languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -13183,6 +13956,13 @@ __metadata: languageName: node linkType: hard +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01 + languageName: node + linkType: hard + "cssstyle@npm:^1.1.1": version: 1.4.0 resolution: "cssstyle@npm:1.4.0" @@ -13277,6 +14057,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + "dayjs@npm:1.11.2": version: 1.11.2 resolution: "dayjs@npm:1.11.2" @@ -13357,6 +14148,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" @@ -13634,6 +14432,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.3.1": + version: 29.3.1 + resolution: "diff-sequences@npm:29.3.1" + checksum: 8edab8c383355022e470779a099852d595dd856f9f5bd7af24f177e74138a668932268b4c4fd54096eed643861575c3652d4ecbbb1a9d710488286aed3ffa443 + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -13797,6 +14602,15 @@ __metadata: languageName: node linkType: hard +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: ^7.0.0 + checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + languageName: node + linkType: hard + "domhandler@npm:^2.3.0": version: 2.4.2 resolution: "domhandler@npm:2.4.2" @@ -13997,6 +14811,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.4.251": + version: 1.4.284 + resolution: "electron-to-chromium@npm:1.4.284" + checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.71": version: 1.4.72 resolution: "electron-to-chromium@npm:1.4.72" @@ -14026,6 +14847,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 + languageName: node + linkType: hard + "emittery@npm:^0.7.1": version: 0.7.2 resolution: "emittery@npm:0.7.2" @@ -14144,6 +14972,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.4.0": + version: 4.4.0 + resolution: "entities@npm:4.4.0" + checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -14386,13 +15221,6 @@ __metadata: languageName: node linkType: hard -"esbuild-android-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-android-64@npm:0.14.49" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "esbuild-android-arm64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-android-arm64@npm:0.13.15" @@ -14400,13 +15228,6 @@ __metadata: languageName: node linkType: hard -"esbuild-android-arm64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-android-arm64@npm:0.14.49" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "esbuild-darwin-64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-darwin-64@npm:0.13.15" @@ -14414,13 +15235,6 @@ __metadata: languageName: node linkType: hard -"esbuild-darwin-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-darwin-64@npm:0.14.49" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "esbuild-darwin-arm64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-darwin-arm64@npm:0.13.15" @@ -14428,13 +15242,6 @@ __metadata: languageName: node linkType: hard -"esbuild-darwin-arm64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-darwin-arm64@npm:0.14.49" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "esbuild-freebsd-64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-freebsd-64@npm:0.13.15" @@ -14442,13 +15249,6 @@ __metadata: languageName: node linkType: hard -"esbuild-freebsd-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-freebsd-64@npm:0.14.49" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-freebsd-arm64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-freebsd-arm64@npm:0.13.15" @@ -14456,13 +15256,6 @@ __metadata: languageName: node linkType: hard -"esbuild-freebsd-arm64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-freebsd-arm64@npm:0.14.49" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "esbuild-jest@npm:^0.5.0": version: 0.5.0 resolution: "esbuild-jest@npm:0.5.0" @@ -14483,13 +15276,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-32@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-32@npm:0.14.49" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "esbuild-linux-64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-linux-64@npm:0.13.15" @@ -14497,13 +15283,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-64@npm:0.14.49" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "esbuild-linux-arm64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-linux-arm64@npm:0.13.15" @@ -14511,13 +15290,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-arm64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-arm64@npm:0.14.49" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "esbuild-linux-arm@npm:0.13.15": version: 0.13.15 resolution: "esbuild-linux-arm@npm:0.13.15" @@ -14525,13 +15297,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-arm@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-arm@npm:0.14.49" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "esbuild-linux-mips64le@npm:0.13.15": version: 0.13.15 resolution: "esbuild-linux-mips64le@npm:0.13.15" @@ -14539,13 +15304,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-mips64le@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-mips64le@npm:0.14.49" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "esbuild-linux-ppc64le@npm:0.13.15": version: 0.13.15 resolution: "esbuild-linux-ppc64le@npm:0.13.15" @@ -14553,27 +15311,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-ppc64le@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-ppc64le@npm:0.14.49" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-riscv64@npm:0.14.49" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-linux-s390x@npm:0.14.49" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "esbuild-loader@npm:^2.13.1": version: 2.13.1 resolution: "esbuild-loader@npm:2.13.1" @@ -14598,13 +15335,6 @@ __metadata: languageName: node linkType: hard -"esbuild-netbsd-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-netbsd-64@npm:0.14.49" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-openbsd-64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-openbsd-64@npm:0.13.15" @@ -14612,13 +15342,6 @@ __metadata: languageName: node linkType: hard -"esbuild-openbsd-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-openbsd-64@npm:0.14.49" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-register@npm:^2.5.0": version: 2.5.0 resolution: "esbuild-register@npm:2.5.0" @@ -14636,13 +15359,6 @@ __metadata: languageName: node linkType: hard -"esbuild-sunos-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-sunos-64@npm:0.14.49" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "esbuild-windows-32@npm:0.13.15": version: 0.13.15 resolution: "esbuild-windows-32@npm:0.13.15" @@ -14650,13 +15366,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-32@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-windows-32@npm:0.14.49" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "esbuild-windows-64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-windows-64@npm:0.13.15" @@ -14664,13 +15373,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-windows-64@npm:0.14.49" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "esbuild-windows-arm64@npm:0.13.15": version: 0.13.15 resolution: "esbuild-windows-arm64@npm:0.13.15" @@ -14678,13 +15380,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-arm64@npm:0.14.49": - version: 0.14.49 - resolution: "esbuild-windows-arm64@npm:0.14.49" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "esbuild@npm:^0.11.19": version: 0.11.19 resolution: "esbuild@npm:0.11.19" @@ -14774,74 +15469,80 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.14.49": - version: 0.14.49 - resolution: "esbuild@npm:0.14.49" +"esbuild@npm:^0.16.7": + version: 0.16.7 + resolution: "esbuild@npm:0.16.7" dependencies: - esbuild-android-64: 0.14.49 - esbuild-android-arm64: 0.14.49 - esbuild-darwin-64: 0.14.49 - esbuild-darwin-arm64: 0.14.49 - esbuild-freebsd-64: 0.14.49 - esbuild-freebsd-arm64: 0.14.49 - esbuild-linux-32: 0.14.49 - esbuild-linux-64: 0.14.49 - esbuild-linux-arm: 0.14.49 - esbuild-linux-arm64: 0.14.49 - esbuild-linux-mips64le: 0.14.49 - esbuild-linux-ppc64le: 0.14.49 - esbuild-linux-riscv64: 0.14.49 - esbuild-linux-s390x: 0.14.49 - esbuild-netbsd-64: 0.14.49 - esbuild-openbsd-64: 0.14.49 - esbuild-sunos-64: 0.14.49 - esbuild-windows-32: 0.14.49 - esbuild-windows-64: 0.14.49 - esbuild-windows-arm64: 0.14.49 + "@esbuild/android-arm": 0.16.7 + "@esbuild/android-arm64": 0.16.7 + "@esbuild/android-x64": 0.16.7 + "@esbuild/darwin-arm64": 0.16.7 + "@esbuild/darwin-x64": 0.16.7 + "@esbuild/freebsd-arm64": 0.16.7 + "@esbuild/freebsd-x64": 0.16.7 + "@esbuild/linux-arm": 0.16.7 + "@esbuild/linux-arm64": 0.16.7 + "@esbuild/linux-ia32": 0.16.7 + "@esbuild/linux-loong64": 0.16.7 + "@esbuild/linux-mips64el": 0.16.7 + "@esbuild/linux-ppc64": 0.16.7 + "@esbuild/linux-riscv64": 0.16.7 + "@esbuild/linux-s390x": 0.16.7 + "@esbuild/linux-x64": 0.16.7 + "@esbuild/netbsd-x64": 0.16.7 + "@esbuild/openbsd-x64": 0.16.7 + "@esbuild/sunos-x64": 0.16.7 + "@esbuild/win32-arm64": 0.16.7 + "@esbuild/win32-ia32": 0.16.7 + "@esbuild/win32-x64": 0.16.7 dependenciesMeta: - esbuild-android-64: + "@esbuild/android-arm": optional: true - esbuild-android-arm64: + "@esbuild/android-arm64": optional: true - esbuild-darwin-64: + "@esbuild/android-x64": optional: true - esbuild-darwin-arm64: + "@esbuild/darwin-arm64": optional: true - esbuild-freebsd-64: + "@esbuild/darwin-x64": optional: true - esbuild-freebsd-arm64: + "@esbuild/freebsd-arm64": optional: true - esbuild-linux-32: + "@esbuild/freebsd-x64": optional: true - esbuild-linux-64: + "@esbuild/linux-arm": optional: true - esbuild-linux-arm: + "@esbuild/linux-arm64": optional: true - esbuild-linux-arm64: + "@esbuild/linux-ia32": optional: true - esbuild-linux-mips64le: + "@esbuild/linux-loong64": optional: true - esbuild-linux-ppc64le: + "@esbuild/linux-mips64el": optional: true - esbuild-linux-riscv64: + "@esbuild/linux-ppc64": optional: true - esbuild-linux-s390x: + "@esbuild/linux-riscv64": optional: true - esbuild-netbsd-64: + "@esbuild/linux-s390x": optional: true - esbuild-openbsd-64: + "@esbuild/linux-x64": optional: true - esbuild-sunos-64: + "@esbuild/netbsd-x64": optional: true - esbuild-windows-32: + "@esbuild/openbsd-x64": optional: true - esbuild-windows-64: + "@esbuild/sunos-x64": optional: true - esbuild-windows-arm64: + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": optional: true bin: esbuild: bin/esbuild - checksum: b718f4c9eaf2f83bb26f2cdb18d82d70365179ae8d1d88636afc3073a0c328364340695798b9a6322ae15e31b90e1f71266151f61637412649fb31bb3ecb2e0a + checksum: 53732942109a8a22d647810d90623dd48418f49fd9d1613688585a6f81677fd8525f53658778a7b92f1124cdfbf73e6efb74385be52cf6aa11aa97f8397ec93c languageName: node linkType: hard @@ -15903,6 +16604,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.3.1": + version: 29.3.1 + resolution: "expect@npm:29.3.1" + dependencies: + "@jest/expect-utils": ^29.3.1 + jest-get-type: ^29.2.0 + jest-matcher-utils: ^29.3.1 + jest-message-util: ^29.3.1 + jest-util: ^29.3.1 + checksum: e9588c2a430b558b9a3dc72d4ad05f36b047cb477bc6a7bb9cfeef7614fe7e5edbab424c2c0ce82739ee21ecbbbd24596259528209f84cd72500cc612d910d30 + languageName: node + linkType: hard + "express-rate-limit@npm:5.5.1": version: 5.5.1 resolution: "express-rate-limit@npm:5.5.1" @@ -16548,6 +17262,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -16626,7 +17351,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.1": +"fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: @@ -17122,15 +17847,28 @@ fsevents@^1.2.7: linkType: hard "globby@npm:^13.1.1": - version: 13.1.1 - resolution: "globby@npm:13.1.1" + version: 13.1.3 + resolution: "globby@npm:13.1.3" dependencies: dir-glob: ^3.0.1 fast-glob: ^3.2.11 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^4.0.0 - checksum: e6c43409c6c31b374fbd1c01a8c1811de52336928be9c697e472d2a89a156c9cbf1fb33863755c0447b4db16485858aa57f16628d66a6b7c7131669c9fbe76cd + checksum: 93f06e02002cdf368f7e3d55bd59e7b00784c7cc8fe92c7ee5082cc7171ff6109fda45e1c97a80bb48bc811dedaf7843c7c9186f5f84bde4883ab630e13c43df + languageName: node + linkType: hard + +"globby@npm:^13.1.2": + version: 13.1.2 + resolution: "globby@npm:13.1.2" + dependencies: + dir-glob: ^3.0.1 + fast-glob: ^3.2.11 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^4.0.0 + checksum: c148fcda0c981f00fb434bb94ca258f0a9d23cedbde6fb3f37098e1abde5b065019e2c63fe2aa2fad4daf2b54bf360b4d0423d85fb3a63d09ed75a2837d4de0f languageName: node linkType: hard @@ -17532,6 +18270,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: ^2.0.0 + checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + languageName: node + linkType: hard + "html-entities@npm:^1.2.1, html-entities@npm:^1.3.1": version: 1.4.0 resolution: "html-entities@npm:1.4.0" @@ -17854,6 +18601,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + "human-signals@npm:^1.1.1": version: 1.1.1 resolution: "human-signals@npm:1.1.1" @@ -17916,6 +18673,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.3": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2": version: 0.6.2 resolution: "iconv-lite@npm:0.6.2" @@ -17925,15 +18691,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"iconv-lite@npm:^0.6.3": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - "icss-replace-symbols@npm:1.1.0, icss-replace-symbols@npm:^1.1.0": version: 1.1.0 resolution: "icss-replace-symbols@npm:1.1.0" @@ -19044,6 +19801,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-changed-files@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-changed-files@npm:29.2.0" + dependencies: + execa: ^5.0.0 + p-limit: ^3.1.0 + checksum: 8ad8290324db1de2ee3c9443d3e3fbfdcb6d72ec7054c5796be2854b2bc239dea38a7c797c8c9c2bd959f539d44305790f2f75b18f3046b04317ed77c7480cb1 + languageName: node + linkType: hard + "jest-circus@npm:26.6.0": version: 26.6.0 resolution: "jest-circus@npm:26.6.0" @@ -19100,6 +19867,33 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-circus@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-circus@npm:29.3.1" + dependencies: + "@jest/environment": ^29.3.1 + "@jest/expect": ^29.3.1 + "@jest/test-result": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^0.7.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.3.1 + jest-matcher-utils: ^29.3.1 + jest-message-util: ^29.3.1 + jest-runtime: ^29.3.1 + jest-snapshot: ^29.3.1 + jest-util: ^29.3.1 + p-limit: ^3.1.0 + pretty-format: ^29.3.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 125710debd998ad9693893e7c1235e271b79f104033b8169d82afe0bc0d883f8f5245feef87adcbb22ad27ff749fd001aa998d11a132774b03b4e2b8af77d5d8 + languageName: node + linkType: hard + "jest-cli@npm:^26.6.0": version: 26.6.3 resolution: "jest-cli@npm:26.6.3" @@ -19150,6 +19944,33 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-cli@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-cli@npm:29.3.1" + dependencies: + "@jest/core": ^29.3.1 + "@jest/test-result": ^29.3.1 + "@jest/types": ^29.3.1 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + import-local: ^3.0.2 + jest-config: ^29.3.1 + jest-util: ^29.3.1 + jest-validate: ^29.3.1 + prompts: ^2.0.1 + yargs: ^17.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 829895d33060042443bd1e9e87eb68993773d74f2c8a9b863acf53cece39d227ae0e7d76df2e9c5934c414bdf70ce398a34b3122cfe22164acb2499a74d7288d + languageName: node + linkType: hard + "jest-config@npm:^26.6.3": version: 26.6.3 resolution: "jest-config@npm:26.6.3" @@ -19218,6 +20039,44 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-config@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-config@npm:29.3.1" + dependencies: + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.3.1 + "@jest/types": ^29.3.1 + babel-jest: ^29.3.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + deepmerge: ^4.2.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-circus: ^29.3.1 + jest-environment-node: ^29.3.1 + jest-get-type: ^29.2.0 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.3.1 + jest-runner: ^29.3.1 + jest-util: ^29.3.1 + jest-validate: ^29.3.1 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^29.3.1 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 6e663f04ae1024a53a4c2c744499b4408ca9a8b74381dd5e31b11bb3c7393311ecff0fb61b06287768709eb2c9e5a2fd166d258f5a9123abbb4c5812f99c12fe + languageName: node + linkType: hard + "jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": version: 26.6.2 resolution: "jest-diff@npm:26.6.2" @@ -19242,6 +20101,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-diff@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-diff@npm:29.3.1" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.3.1 + jest-get-type: ^29.2.0 + pretty-format: ^29.3.1 + checksum: ac5c09745f2b1897e6f53216acaf6ed44fc4faed8e8df053ff4ac3db5d2a1d06a17b876e49faaa15c8a7a26f5671bcbed0a93781dcc2835f781c79a716a591a9 + languageName: node + linkType: hard + "jest-docblock@npm:^26.0.0": version: 26.0.0 resolution: "jest-docblock@npm:26.0.0" @@ -19260,6 +20131,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-docblock@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-docblock@npm:29.2.0" + dependencies: + detect-newline: ^3.0.0 + checksum: b3f1227b7d73fc9e4952180303475cf337b36fa65c7f730ac92f0580f1c08439983262fee21cf3dba11429aa251b4eee1e3bc74796c5777116b400d78f9d2bbe + languageName: node + linkType: hard + "jest-each@npm:^26.6.0, jest-each@npm:^26.6.2": version: 26.6.2 resolution: "jest-each@npm:26.6.2" @@ -19286,6 +20166,19 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-each@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-each@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + chalk: ^4.0.0 + jest-get-type: ^29.2.0 + jest-util: ^29.3.1 + pretty-format: ^29.3.1 + checksum: 16d51ef8f96fba44a3479f1c6f7672027e3b39236dc4e41217c38fe60a3b66b022ffcee72f8835a442f7a8a0a65980a93fb8e73a9782d192452526e442ad049a + languageName: node + linkType: hard + "jest-environment-jsdom@npm:^26.6.2": version: 26.6.2 resolution: "jest-environment-jsdom@npm:26.6.2" @@ -19316,6 +20209,27 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-environment-jsdom@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-environment-jsdom@npm:29.3.1" + dependencies: + "@jest/environment": ^29.3.1 + "@jest/fake-timers": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/jsdom": ^20.0.0 + "@types/node": "*" + jest-mock: ^29.3.1 + jest-util: ^29.3.1 + jsdom: ^20.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 91b04ed02b2275c3a47740e20c2691f67c4295e17174c8ccd3a71fe77707239e487506bd157279b4257ce1be0a8c2be377817ee85689966a9e604bb6ef1199f0 + languageName: node + linkType: hard + "jest-environment-node@npm:^26.6.2": version: 26.6.2 resolution: "jest-environment-node@npm:26.6.2" @@ -19344,6 +20258,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-environment-node@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-environment-node@npm:29.3.1" + dependencies: + "@jest/environment": ^29.3.1 + "@jest/fake-timers": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + jest-mock: ^29.3.1 + jest-util: ^29.3.1 + checksum: 16d4854bd2d35501bd4862ca069baf27ce9f5fd7642fdcab9d2dab49acd28c082d0c8882bf2bb28ed7bbaada486da577c814c9688ddc62d1d9f74a954fde996a + languageName: node + linkType: hard + "jest-get-type@npm:^26.3.0": version: 26.3.0 resolution: "jest-get-type@npm:26.3.0" @@ -19358,6 +20286,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-get-type@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-get-type@npm:29.2.0" + checksum: e396fd880a30d08940ed8a8e43cd4595db1b8ff09649018eb358ca701811137556bae82626af73459e3c0f8c5e972ed1e57fd3b1537b13a260893dac60a90942 + languageName: node + linkType: hard + "jest-haste-map@npm:^26.6.2": version: 26.6.2 resolution: "jest-haste-map@npm:26.6.2" @@ -19407,6 +20342,29 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-haste-map@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-haste-map@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.2.0 + jest-util: ^29.3.1 + jest-worker: ^29.3.1 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: 97ea26af0c28a2ba568c9c65d06211487bbcd501cb4944f9d55e07fd2b00ad96653ea2cc9033f3d5b7dc1feda33e47ae9cc56b400191ea4533be213c9f82e67c + languageName: node + linkType: hard + "jest-jasmine2@npm:^26.6.3": version: 26.6.3 resolution: "jest-jasmine2@npm:26.6.3" @@ -19478,6 +20436,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-leak-detector@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-leak-detector@npm:29.3.1" + dependencies: + jest-get-type: ^29.2.0 + pretty-format: ^29.3.1 + checksum: 0dd8ed31ae0b5a3d14f13f567ca8567f2663dd2d540d1e55511d3b3fd7f80a1d075392179674ebe9fab9be0b73678bf4d2f8bbbc0f4bdd52b9815259194da559 + 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" @@ -19502,6 +20470,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-matcher-utils@npm:29.3.1" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.3.1 + jest-get-type: ^29.2.0 + pretty-format: ^29.3.1 + checksum: 311e8d9f1e935216afc7dd8c6acf1fbda67a7415e1afb1bf72757213dfb025c1f2dc5e2c185c08064a35cdc1f2d8e40c57616666774ed1b03e57eb311c20ec77 + 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" @@ -19536,6 +20516,23 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-message-util@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-message-util@npm:29.3.1" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.3.1 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.3.1 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 15d0a2fca3919eb4570bbf575734780c4b9e22de6aae903c4531b346699f7deba834c6c86fe6e9a83ad17fac0f7935511cf16dce4d71a93a71ebb25f18a6e07b + languageName: node + linkType: hard + "jest-mock@npm:^26.6.2": version: 26.6.2 resolution: "jest-mock@npm:26.6.2" @@ -19556,6 +20553,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-mock@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-mock@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + "@types/node": "*" + jest-util: ^29.3.1 + checksum: 9098852cb2866db4a1a59f9f7581741dfc572f648e9e574a1b187fd69f5f2f6190ad387ede21e139a8b80a6a1343ecc3d6751cd2ae1ae11d7ea9fa1950390fb2 + languageName: node + linkType: hard + "jest-pnp-resolver@npm:^1.2.2": version: 1.2.2 resolution: "jest-pnp-resolver@npm:1.2.2" @@ -19582,6 +20590,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-regex-util@npm:^29.2.0": + version: 29.2.0 + resolution: "jest-regex-util@npm:29.2.0" + checksum: 7c533e51c51230dac20c0d7395b19b8366cb022f7c6e08e6bcf2921626840ff90424af4c9b4689f02f0addfc9b071c4cd5f8f7a989298a4c8e0f9c94418ca1c3 + languageName: node + linkType: hard + "jest-resolve-dependencies@npm:^26.6.3": version: 26.6.3 resolution: "jest-resolve-dependencies@npm:26.6.3" @@ -19604,6 +20619,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-resolve-dependencies@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-resolve-dependencies@npm:29.3.1" + dependencies: + jest-regex-util: ^29.2.0 + jest-snapshot: ^29.3.1 + checksum: 6ec4727a87c6e7954e93de9949ab9967b340ee2f07626144c273355f05a2b65fa47eb8dece2d6e5f4fd99cdb893510a3540aa5e14ba443f70b3feb63f6f98982 + languageName: node + linkType: hard + "jest-resolve@npm:26.6.0": version: 26.6.0 resolution: "jest-resolve@npm:26.6.0" @@ -19654,6 +20679,23 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-resolve@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-resolve@npm:29.3.1" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.3.1 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.3.1 + jest-validate: ^29.3.1 + resolve: ^1.20.0 + resolve.exports: ^1.1.0 + slash: ^3.0.0 + checksum: 0dea22ed625e07b8bfee52dea1391d3a4b453c1a0c627a0fa7c22e44bb48e1c289afe6f3c316def70753773f099c4e8f436c7a2cc12fcc6c7dd6da38cba2cd5f + languageName: node + linkType: hard + "jest-runner@npm:^26.6.0, jest-runner@npm:^26.6.3": version: 26.6.3 resolution: "jest-runner@npm:26.6.3" @@ -19711,6 +20753,35 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-runner@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-runner@npm:29.3.1" + dependencies: + "@jest/console": ^29.3.1 + "@jest/environment": ^29.3.1 + "@jest/test-result": ^29.3.1 + "@jest/transform": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.2.0 + jest-environment-node: ^29.3.1 + jest-haste-map: ^29.3.1 + jest-leak-detector: ^29.3.1 + jest-message-util: ^29.3.1 + jest-resolve: ^29.3.1 + jest-runtime: ^29.3.1 + jest-util: ^29.3.1 + jest-watcher: ^29.3.1 + jest-worker: ^29.3.1 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: 61ad445d8a5f29573332f27a21fc942fb0d2a82bf901a0ea1035bf3bd7f349d1e425f71f54c3a3f89b292a54872c3248d395a2829d987f26b6025b15530ea5d2 + languageName: node + linkType: hard + "jest-runtime@npm:^26.6.0, jest-runtime@npm:^26.6.3": version: 26.6.3 resolution: "jest-runtime@npm:26.6.3" @@ -19778,6 +20849,36 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-runtime@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-runtime@npm:29.3.1" + dependencies: + "@jest/environment": ^29.3.1 + "@jest/fake-timers": ^29.3.1 + "@jest/globals": ^29.3.1 + "@jest/source-map": ^29.2.0 + "@jest/test-result": ^29.3.1 + "@jest/transform": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.3.1 + jest-message-util: ^29.3.1 + jest-mock: ^29.3.1 + jest-regex-util: ^29.2.0 + jest-resolve: ^29.3.1 + jest-snapshot: ^29.3.1 + jest-util: ^29.3.1 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: 82f27b48f000be074064a854e16e768f9453e9b791d8c5f9316606c37f871b5b10f70544c1b218ab9784f00bd972bb77f868c5ab6752c275be2cd219c351f5a7 + languageName: node + linkType: hard + "jest-serializer@npm:^26.6.2": version: 26.6.2 resolution: "jest-serializer@npm:26.6.2" @@ -19852,6 +20953,38 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-snapshot@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-snapshot@npm:29.3.1" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/traverse": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.3.1 + "@jest/transform": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/babel__traverse": ^7.0.6 + "@types/prettier": ^2.1.5 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.3.1 + graceful-fs: ^4.2.9 + jest-diff: ^29.3.1 + jest-get-type: ^29.2.0 + jest-haste-map: ^29.3.1 + jest-matcher-utils: ^29.3.1 + jest-message-util: ^29.3.1 + jest-util: ^29.3.1 + natural-compare: ^1.4.0 + pretty-format: ^29.3.1 + semver: ^7.3.5 + checksum: d7d0077935e78c353c828be78ccb092e12ba7622cb0577f21641fadd728ae63a7c1f4a0d8113bfb38db3453a64bfa232fb1cdeefe0e2b48c52ef4065b0ab75ae + languageName: node + linkType: hard + "jest-util@npm:^26.6.0, jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" @@ -19880,6 +21013,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-util@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-util@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: f67c60f062b94d21cb60e84b3b812d64b7bfa81fe980151de5c17a74eb666042d0134e2e756d099b7606a1fcf1d633824d2e58197d01d76dde1e2dc00dfcd413 + languageName: node + linkType: hard + "jest-validate@npm:^26.6.2": version: 26.6.2 resolution: "jest-validate@npm:26.6.2" @@ -19908,6 +21055,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-validate@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-validate@npm:29.3.1" + dependencies: + "@jest/types": ^29.3.1 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.2.0 + leven: ^3.1.0 + pretty-format: ^29.3.1 + checksum: 92584f0b8ac284235f12b3b812ccbc43ef6dea080a3b98b1aa81adbe009e962d0aa6131f21c8157b30ac3d58f335961694238a93d553d1d1e02ab264c923778c + languageName: node + linkType: hard + "jest-watch-typeahead@npm:0.6.1": version: 0.6.1 resolution: "jest-watch-typeahead@npm:0.6.1" @@ -19972,6 +21133,22 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-watcher@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-watcher@npm:29.3.1" + dependencies: + "@jest/test-result": ^29.3.1 + "@jest/types": ^29.3.1 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.13.1 + jest-util: ^29.3.1 + string-length: ^4.0.1 + checksum: 60d189473486c73e9d540406a30189da5a3c67bfb0fb4ad4a83991c189135ef76d929ec99284ca5a505fe4ee9349ae3c99b54d2e00363e72837b46e77dec9642 + languageName: node + linkType: hard + "jest-worker@npm:^24.9.0": version: 24.9.0 resolution: "jest-worker@npm:24.9.0" @@ -20004,6 +21181,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-worker@npm:^29.3.1": + version: 29.3.1 + resolution: "jest-worker@npm:29.3.1" + dependencies: + "@types/node": "*" + jest-util: ^29.3.1 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 38687fcbdc2b7ddc70bbb5dfc703ae095b46b3c7f206d62ecdf5f4d16e336178e217302138f3b906125576bb1cfe4cfe8d43681276fa5899d138ed9422099fb3 + languageName: node + linkType: hard + "jest@npm:26.6.0": version: 26.6.0 resolution: "jest@npm:26.6.0" @@ -20017,7 +21206,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest@npm:^27.1.0, jest@npm:^27.4.3": +"jest@npm:^27.4.3": version: 27.5.1 resolution: "jest@npm:27.5.1" dependencies: @@ -20035,6 +21224,25 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest@npm:^29.3.1": + version: 29.3.1 + resolution: "jest@npm:29.3.1" + dependencies: + "@jest/core": ^29.3.1 + "@jest/types": ^29.3.1 + import-local: ^3.0.2 + jest-cli: ^29.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 613f4ec657b14dd84c0056b2fef1468502927fd551bef0b19d4a91576a609678fb316c6a5b5fc6120dd30dd4ff4569070ffef3cb507db9bb0260b28ddaa18d7a + languageName: node + linkType: hard + "jiff@npm:^0.7.3": version: 0.7.3 resolution: "jiff@npm:0.7.3" @@ -20272,6 +21480,45 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: ^2.0.6 + acorn: ^8.8.1 + acorn-globals: ^7.0.0 + cssom: ^0.5.0 + cssstyle: ^2.3.0 + data-urls: ^3.0.2 + decimal.js: ^10.4.2 + domexception: ^4.0.0 + escodegen: ^2.0.0 + form-data: ^4.0.0 + html-encoding-sniffer: ^3.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.2 + parse5: ^7.1.1 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^4.1.2 + w3c-xmlserializer: ^4.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^2.0.0 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + ws: ^8.11.0 + xml-name-validator: ^4.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 + languageName: node + linkType: hard + "jsesc@npm:^1.3.0": version: 1.3.0 resolution: "jsesc@npm:1.3.0" @@ -21278,6 +22525,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 + languageName: node + linkType: hard + "makeerror@npm:1.0.x": version: 1.0.11 resolution: "makeerror@npm:1.0.11" @@ -22158,14 +23414,25 @@ fsevents@^1.2.7: languageName: node linkType: hard -"node-fetch@npm:^3.2.3": - version: 3.2.4 - resolution: "node-fetch@npm:3.2.4" +"node-fetch@npm:3.2.10": + version: 3.2.10 + resolution: "node-fetch@npm:3.2.10" dependencies: data-uri-to-buffer: ^4.0.0 fetch-blob: ^3.1.4 formdata-polyfill: ^4.0.10 - checksum: cfc715441302167bd4a9c6d6f3ff8eecb65e5aeeccd55a690497dcce5f95ec017d65c5682414287cad3998a28b1bab4820dcbe51852902eaa5f15f3975562384 + checksum: e65322431f4897ded04197aa5923eaec63a8d53e00432de4e70a4f7006625c8dc32629c5c35f4fe8ee719a4825544d07bf53f6e146a7265914262f493e8deac1 + languageName: node + linkType: hard + +"node-fetch@npm:^3.2.3": + version: 3.3.0 + resolution: "node-fetch@npm:3.3.0" + dependencies: + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: e9936908d2783d3c48a038e187f8062de294d75ef43ec8ab812d7cbd682be2b67605868758d2e9cad6103706dcfe4a9d21d78f6df984e8edf10e7a5ce2e665f8 languageName: node linkType: hard @@ -22505,6 +23772,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"nwsapi@npm:^2.2.2": + version: 2.2.2 + resolution: "nwsapi@npm:2.2.2" + checksum: 43769106292bc95f776756ca2f3513dab7b4d506a97c67baec32406447841a35f65f29c1f95ab5d42785210fd41668beed33ca16fa058780be43b101ad73e205 + languageName: node + linkType: hard + "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -22955,7 +24229,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -23218,6 +24492,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: ^4.4.0 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 + languageName: node + linkType: hard + "parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -23578,9 +24861,9 @@ fsevents@^1.2.7: version: 0.0.0-use.local resolution: "playground@workspace:packages/playground" dependencies: - "@percy/cli": ^1.6.0 + "@percy/cli": ^1.16.0 "@percy/playwright": ^1.0.4 - "@playwright/test": ^1.23.1 + "@playwright/test": ^1.29.1 "@react-three/drei": ^7.2.2 "@react-three/fiber": ^7.0.6 "@theatre/core": "workspace:*" @@ -23596,12 +24879,32 @@ fsevents@^1.2.7: languageName: unknown linkType: soft -"playwright-core@npm:1.23.1": - version: 1.23.1 - resolution: "playwright-core@npm:1.23.1" +"playwright-core@npm:1.28.1": + version: 1.28.1 + resolution: "playwright-core@npm:1.28.1" bin: playwright: cli.js - checksum: 1e6a3a7a9aaee1864b22195c7fef52b6980fcafc6d667749737455360a44a182a7035f12bfd76f298f957d1b99550420a8748f6a473ceeacf2cb2db42beb9be0 + checksum: 8899e0d65de43ee10fadc171e0d48cd514bb574f3505478700094afa8a6e0dcd888a5c87af22acf31ebad455ada1327028909c42e20b8e25908b6255dc143bf0 + languageName: node + linkType: hard + +"playwright-core@npm:1.29.1": + version: 1.29.1 + resolution: "playwright-core@npm:1.29.1" + bin: + playwright: cli.js + checksum: e1c8423db4d28f44e5365a353f321b04a07709c8bf26d0c908f06d2c2669f715315170f84ca98a532951c2ac6324f5f48f651dca1abe43092c7637bdb4703303 + languageName: node + linkType: hard + +"playwright@npm:^1.28.1": + version: 1.28.1 + resolution: "playwright@npm:1.28.1" + dependencies: + playwright-core: 1.28.1 + bin: + playwright: cli.js + checksum: 97c6fff2835878da856bf1f587ec4cdcbcc9aa61c0efcf592633f6df37eabbb9e59d7a2ef994ec9283338e43ef80e278d6d52fed5f7c29abd0408fac0f69b3ca languageName: node linkType: hard @@ -25538,6 +26841,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pretty-format@npm:^29.3.1": + version: 29.3.1 + resolution: "pretty-format@npm:29.3.1" + dependencies: + "@jest/schemas": ^29.0.0 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 9917a0bb859cd7a24a343363f70d5222402c86d10eb45bcc2f77b23a4e67586257390e959061aec22762a782fe6bafb59bf34eb94527bc2e5d211afdb287eb4e + languageName: node + linkType: hard + "pretty-ms@npm:^7.0.1": version: 7.0.1 resolution: "pretty-ms@npm:7.0.1" @@ -26129,6 +27443,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + languageName: node + linkType: hard + "react-merge-refs@npm:^1.0.0, react-merge-refs@npm:^1.1.0": version: 1.1.0 resolution: "react-merge-refs@npm:1.1.0" @@ -27584,6 +28905,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: ^2.2.0 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b + languageName: node + linkType: hard + "scheduler@npm:^0.20.2": version: 0.20.2 resolution: "scheduler@npm:0.20.2" @@ -28333,6 +29663,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + languageName: node + linkType: hard + "source-map-support@npm:^0.4.15": version: 0.4.18 resolution: "source-map-support@npm:0.4.18" @@ -29587,7 +30927,7 @@ fsevents@^1.2.7: "@microsoft/api-extractor": ^7.28.6 "@typescript-eslint/eslint-plugin": ^5.30.7 "@typescript-eslint/parser": ^5.30.7 - esbuild: ^0.14.49 + esbuild: ^0.16.7 esbuild-jest: ^0.5.0 eslint: ^8.20.0 eslint-plugin-jsx-a11y: ^6.6.1 @@ -29595,7 +30935,8 @@ fsevents@^1.2.7: eslint-plugin-tsdoc: ^0.2.16 eslint-plugin-unused-imports: ^2.0.0 husky: ^6.0.0 - jest: ^27.1.0 + jest: ^29.3.1 + jest-environment-jsdom: ^29.3.1 jsonc-parser: ^3.1.0 lint-staged: ^13.0.3 node-gyp: ^9.1.0 @@ -29841,6 +31182,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + languageName: node + linkType: hard + "tmpl@npm:1.0.x": version: 1.0.4 resolution: "tmpl@npm:1.0.4" @@ -29987,6 +31335,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"tough-cookie@npm:^4.1.2": + version: 4.1.2 + resolution: "tough-cookie@npm:4.1.2" + dependencies: + psl: ^1.1.33 + punycode: ^2.1.1 + universalify: ^0.2.0 + url-parse: ^1.5.3 + checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a + languageName: node + linkType: hard + "tough-cookie@npm:~2.4.3": version: 2.4.3 resolution: "tough-cookie@npm:2.4.3" @@ -30015,6 +31375,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: ^2.1.1 + checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -30545,6 +31914,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -30604,6 +31980,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"update-browserslist-db@npm:^1.0.9": + version: 1.0.10 + resolution: "update-browserslist-db@npm:1.0.10" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + browserslist-lint: cli.js + checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -30647,6 +32037,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: ^2.1.1 + requires-port: ^1.0.0 + checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf + languageName: node + linkType: hard + "url@npm:^0.11.0": version: 0.11.0 resolution: "url@npm:0.11.0" @@ -30790,6 +32190,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"v8-to-istanbul@npm:^9.0.1": + version: 9.0.1 + resolution: "v8-to-istanbul@npm:9.0.1" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^1.6.0 + checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -30979,6 +32390,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: ^4.0.0 + checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091 + languageName: node + linkType: hard + "walker@npm:^1.0.7, walker@npm:~1.0.5": version: 1.0.7 resolution: "walker@npm:1.0.7" @@ -30988,6 +32408,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: 1.0.12 + checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + languageName: node + linkType: hard + "watchpack-chokidar2@npm:^2.0.1": version: 2.0.1 resolution: "watchpack-chokidar2@npm:2.0.1" @@ -31091,6 +32520,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^3.7.2": version: 3.7.3 resolution: "webpack-dev-middleware@npm:3.7.3" @@ -31385,6 +32821,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: 0.6.3 + checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 + languageName: node + linkType: hard + "whatwg-fetch@npm:^3.4.1, whatwg-fetch@npm:^3.6.2": version: 3.6.2 resolution: "whatwg-fetch@npm:3.6.2" @@ -31399,6 +32844,23 @@ fsevents@^1.2.7: languageName: node linkType: hard +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824 + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: ^3.0.0 + webidl-conversions: ^7.0.0 + checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -31967,6 +33429,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.1": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + "ws@npm:^5.1.1": version: 5.2.2 resolution: "ws@npm:5.2.2" @@ -32054,6 +33526,21 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ws@npm:^8.11.0": + version: 8.11.0 + resolution: "ws@npm:8.11.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 + languageName: node + linkType: hard + "xml-name-validator@npm:^3.0.0": version: 3.0.0 resolution: "xml-name-validator@npm:3.0.0" @@ -32061,6 +33548,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad + languageName: node + linkType: hard + "xmlchars@npm:^2.1.1, xmlchars@npm:^2.2.0": version: 2.2.0 resolution: "xmlchars@npm:2.2.0" @@ -32117,6 +33611,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"yaml@npm:^2.0.1": + version: 2.1.3 + resolution: "yaml@npm:2.1.3" + checksum: 91316062324a93f9cb547469092392e7d004ff8f70c40fecb420f042a4870b2181557350da56c92f07bd44b8f7a252b0be26e6ade1f548e1f4351bdd01c9d3c7 + languageName: node + linkType: hard + "yaml@npm:^2.1.1": version: 2.1.1 resolution: "yaml@npm:2.1.1" @@ -32151,6 +33652,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + "yargs@npm:^13.3.2": version: 13.3.2 resolution: "yargs@npm:13.3.2" @@ -32203,6 +33711,21 @@ fsevents@^1.2.7: languageName: node linkType: hard +"yargs@npm:^17.3.1": + version: 17.6.2 + resolution: "yargs@npm:17.6.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 47da1b0d854fa16d45a3ded57b716b013b2179022352a5f7467409da5a04a1eef5b3b3d97a2dfc13e8bbe5f2ffc0afe3bc6a4a72f8254e60f5a4bd7947138643 + languageName: node + linkType: hard + "yauzl@npm:^2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0" @@ -32297,24 +33820,25 @@ fsevents@^1.2.7: languageName: node linkType: hard -"zx@npm:^6.1.0": - version: 6.1.0 - resolution: "zx@npm:6.1.0" +"zx@npm:^7.1.1": + version: 7.1.1 + resolution: "zx@npm:7.1.1" dependencies: "@types/fs-extra": ^9.0.13 "@types/minimist": ^1.2.2 - "@types/node": ^17.0 + "@types/node": ^18.7.20 + "@types/ps-tree": ^1.1.2 "@types/which": ^2.0.1 chalk: ^5.0.1 - fs-extra: ^10.0.1 - globby: ^13.1.1 + fs-extra: ^10.1.0 + globby: ^13.1.2 minimist: ^1.2.6 - node-fetch: ^3.2.3 + node-fetch: 3.2.10 ps-tree: ^1.2.0 which: ^2.0.2 - yaml: ^2.0.0 + yaml: ^2.1.1 bin: - zx: zx.mjs - checksum: 5aa56ff38cb9183aa1a5f75406cc2838ee55897cc2b3f113a42df885b1ef11daa9186b368fb36b27126d68c9f81b6d7accd0a58d2607073e3d953428439ee3cf + zx: build/cli.js + checksum: 510c56366a62220108247624a83fc088bfc8f393e3f20168d69a67e3c7aff1a4b790c118ee70e58171dcbc91b53ab079bba3074e1c40829f6179a7f48a38be78 languageName: node linkType: hard