From 4c9edcf3b0c3c93c063d2e93c810a2946b8c958e Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 9 May 2022 17:38:39 +0800 Subject: [PATCH 01/26] chore: migrate to vitest --- CONTRIBUTING.md | 2 +- jest.config.ts | 24 - package.json | 13 +- playground/define/__tests__/define.spec.ts | 1 + .../__tests__/file-delete-restore.spec.ts | 13 +- .../fs-serve/__tests__/fs-serve.spec.ts | 98 +- playground/hmr/tsconfig.json | 2 +- playground/lib/__tests__/lib.spec.ts | 6 +- .../__tests__/resolve-config.spec.ts | 2 +- playground/resolve-config/__tests__/serve.js | 3 +- playground/testUtils.ts | 30 +- playground/tsconfig.json | 2 +- .../worker/__tests__/es/es-worker.spec.ts | 2 +- .../worker/__tests__/iife/worker.spec.ts | 2 +- .../sourcemap-hidden-worker.spec.ts | 2 +- .../sourcemap-inline-worker.spec.ts | 2 +- .../sourcemap/sourcemap-worker.spec.ts | 2 +- pnpm-lock.yaml | 1648 +---------------- scripts/jestEnv.cjs | 48 - scripts/jestGlobalTeardown.cjs | 9 - scripts/tsconfig.json | 2 +- ...stGlobalSetup.cjs => vitestGlobalSetup.ts} | 28 +- .../{jestPerTestSetup.ts => vitestSetup.ts} | 66 +- vitest.e2e.config.ts | 17 + 24 files changed, 238 insertions(+), 1786 deletions(-) delete mode 100644 jest.config.ts delete mode 100644 scripts/jestEnv.cjs delete mode 100644 scripts/jestGlobalTeardown.cjs rename scripts/{jestGlobalSetup.cjs => vitestGlobalSetup.ts} (63%) rename scripts/{jestPerTestSetup.ts => vitestSetup.ts} (85%) create mode 100644 vitest.e2e.config.ts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e620377c75408f..da1600a2353f0e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,7 +69,7 @@ And re-run `pnpm install` to link the package. ### Integration Tests -Each package under `playground/` contains a `__tests__` directory. The tests are run using [Jest](https://jestjs.io/) + [Playwright](https://playwright.dev/) with custom integrations to make writing tests simple. The detailed setup is inside `jest.config.js` and `scripts/jest*` files. +Each package under `playground/` contains a `__tests__` directory. The tests are run using [Jest](https://jestjs.io/) + [Playwright](https://playwright.dev/) with custom integrations to make writing tests simple. The detailed setup is inside `jest.config.js` and `scripts/vitest*` files. Before running the tests, make sure that [Vite has been built](#repo-setup). On Windows, you may want to [activate Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) to solve [issues with symlink creation for non-admins](https://github.com/vitejs/vite/issues/7390). Also you may want to [set git `core.symlinks` to `true` to solve issues with symlinks in git](https://github.com/vitejs/vite/issues/5242). diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 719d67f39b8bce..00000000000000 --- a/jest.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -// eslint-disable-next-line node/no-extraneous-import -import type { Config } from '@jest/types' - -const config: Config.InitialOptions = { - preset: 'ts-jest', - testMatch: ['**/playground/**/*.spec.[jt]s?(x)'], - testTimeout: process.env.CI ? 50000 : 20000, - globalSetup: './scripts/jestGlobalSetup.cjs', - globalTeardown: './scripts/jestGlobalTeardown.cjs', - testEnvironment: './scripts/jestEnv.cjs', - setupFilesAfterEnv: ['./scripts/jestPerTestSetup.ts'], - watchPathIgnorePatterns: ['/playground-temp'], - modulePathIgnorePatterns: ['/playground-temp'], - moduleNameMapper: { - testUtils: '/playground/testUtils.ts' - }, - globals: { - 'ts-jest': { - tsconfig: './playground/tsconfig.json' - } - } -} - -export default config diff --git a/package.json b/package.json index 1ba4ca2cec68dc..00f88bae33779e 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "format": "prettier --write .", "lint": "eslint packages/*/{src,types}/**", "test": "run-s test-unit test-serve test-build", - "test-serve": "jest", - "test-build": "cross-env VITE_TEST_BUILD=1 jest", + "test-serve": "vitest -c vitest.e2e.config.ts", + "test-build": "cross-env VITE_TEST_BUILD=1 vitest -c vitest.e2e.config.ts", "test-unit": "vitest run", - "debug-serve": "cross-env VITE_DEBUG_SERVE=1 node --inspect-brk ./node_modules/.bin/jest", - "debug-build": "cross-env VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 node --inspect-brk ./node_modules/.bin/jest", + "debug-serve": "cross-env VITE_DEBUG_SERVE=1 node --inspect-brk ./node_modules/.bin/vitest -- -c vitest.e2e.config.ts", + "debug-build": "cross-env VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 node --inspect-brk ./node_modules/.bin/vitest -- -c vitest.e2e.config.ts", "docs": "vitepress dev docs", "build-docs": "vitepress build docs", "serve-docs": "vitepress serve docs", @@ -37,7 +37,6 @@ "devDependencies": { "@microsoft/api-extractor": "^7.23.1", "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.5.0", "@types/node": "^17.0.31", "@types/prompts": "^2.4.0", "@types/semver": "^7.3.9", @@ -51,7 +50,6 @@ "eslint-plugin-node": "^11.1.0", "execa": "^5.1.1", "fs-extra": "^10.1.0", - "jest": "^27.5.1", "lint-staged": "^12.4.1", "minimist": "^1.2.6", "node-fetch": "^2.6.7", @@ -65,12 +63,11 @@ "semver": "^7.3.7", "simple-git-hooks": "^2.7.0", "sirv": "^2.0.2", - "ts-jest": "^27.1.4", "ts-node": "^10.7.0", "typescript": "^4.6.4", "vite": "workspace:*", "vitepress": "^0.22.4", - "vitest": "^0.10.5" + "vitest": "^0.12.0" }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged --concurrent false", diff --git a/playground/define/__tests__/define.spec.ts b/playground/define/__tests__/define.spec.ts index 5d9707e70b47ba..80659c7295cbb0 100644 --- a/playground/define/__tests__/define.spec.ts +++ b/playground/define/__tests__/define.spec.ts @@ -5,6 +5,7 @@ test('string', async () => { expect(await page.textContent('.string')).toBe(JSON.parse(defines.__STRING__)) expect(await page.textContent('.number')).toBe(String(defines.__NUMBER__)) expect(await page.textContent('.boolean')).toBe(String(defines.__BOOLEAN__)) + expect(await page.textContent('.object')).toBe( JSON.stringify(defines.__OBJ__, null, 2) ) diff --git a/playground/file-delete-restore/__tests__/file-delete-restore.spec.ts b/playground/file-delete-restore/__tests__/file-delete-restore.spec.ts index 24f1237efedeec..64162669109794 100644 --- a/playground/file-delete-restore/__tests__/file-delete-restore.spec.ts +++ b/playground/file-delete-restore/__tests__/file-delete-restore.spec.ts @@ -6,8 +6,9 @@ import { isBuild } from '../../testUtils' -if (!isBuild) { - test('should hmr when file is deleted and restored', async () => { +test.runIf(isBuild)( + 'should hmr when file is deleted and restored', + async () => { await untilUpdated(() => page.textContent('p'), 'Child state 1') editFile('Child.jsx', (code) => @@ -53,9 +54,5 @@ if (!isBuild) { ) await untilUpdated(() => page.textContent('p'), 'Child state 1') - }) -} else { - test('dummy test to make jest happy', async () => { - // Your test suite must contain at least one test. - }) -} + } +) diff --git a/playground/fs-serve/__tests__/fs-serve.spec.ts b/playground/fs-serve/__tests__/fs-serve.spec.ts index eba1e441881710..415f7cadc59e1b 100644 --- a/playground/fs-serve/__tests__/fs-serve.spec.ts +++ b/playground/fs-serve/__tests__/fs-serve.spec.ts @@ -3,71 +3,65 @@ import { isBuild } from '../../testUtils' const json = require('../safe.json') const stringified = JSON.stringify(json) -describe('main', () => { +describe.runIf(isBuild)('main', () => { beforeAll(async () => { // viteTestUrl is globally injected in scripts/jestPerTestSetup.ts await page.goto(viteTestUrl + '/src/') }) - if (!isBuild) { - test('default import', async () => { - expect(await page.textContent('.full')).toBe(stringified) - }) + test('default import', async () => { + expect(await page.textContent('.full')).toBe(stringified) + }) - test('named import', async () => { - expect(await page.textContent('.named')).toBe(json.msg) - }) + test('named import', async () => { + expect(await page.textContent('.named')).toBe(json.msg) + }) - test('safe fetch', async () => { - expect(await page.textContent('.safe-fetch')).toMatch('KEY=safe') - expect(await page.textContent('.safe-fetch-status')).toBe('200') - }) + test('safe fetch', async () => { + expect(await page.textContent('.safe-fetch')).toMatch('KEY=safe') + expect(await page.textContent('.safe-fetch-status')).toBe('200') + }) - test('safe fetch with special characters', async () => { - expect( - await page.textContent('.safe-fetch-subdir-special-characters') - ).toMatch('KEY=safe') - expect( - await page.textContent('.safe-fetch-subdir-special-characters-status') - ).toBe('200') - }) + test('safe fetch with special characters', async () => { + expect( + await page.textContent('.safe-fetch-subdir-special-characters') + ).toMatch('KEY=safe') + expect( + await page.textContent('.safe-fetch-subdir-special-characters-status') + ).toBe('200') + }) - test('unsafe fetch', async () => { - expect(await page.textContent('.unsafe-fetch')).toMatch('403 Restricted') - expect(await page.textContent('.unsafe-fetch-status')).toBe('403') - }) + test('unsafe fetch', async () => { + expect(await page.textContent('.unsafe-fetch')).toMatch('403 Restricted') + expect(await page.textContent('.unsafe-fetch-status')).toBe('403') + }) - test('safe fs fetch', async () => { - expect(await page.textContent('.safe-fs-fetch')).toBe(stringified) - expect(await page.textContent('.safe-fs-fetch-status')).toBe('200') - }) + test('safe fs fetch', async () => { + expect(await page.textContent('.safe-fs-fetch')).toBe(stringified) + expect(await page.textContent('.safe-fs-fetch-status')).toBe('200') + }) - test('safe fs fetch with special characters', async () => { - expect(await page.textContent('.safe-fs-fetch-special-characters')).toBe( - stringified - ) - expect(await page.textContent('.safe-fs-fetch-status')).toBe('200') - }) + test('safe fs fetch with special characters', async () => { + expect(await page.textContent('.safe-fs-fetch-special-characters')).toBe( + stringified + ) + expect(await page.textContent('.safe-fs-fetch-status')).toBe('200') + }) - test('unsafe fs fetch', async () => { - expect(await page.textContent('.unsafe-fs-fetch')).toBe('') - expect(await page.textContent('.unsafe-fs-fetch-status')).toBe('403') - }) + test('unsafe fs fetch', async () => { + expect(await page.textContent('.unsafe-fs-fetch')).toBe('') + expect(await page.textContent('.unsafe-fs-fetch-status')).toBe('403') + }) - test('nested entry', async () => { - expect(await page.textContent('.nested-entry')).toBe('foobar') - }) + test('nested entry', async () => { + expect(await page.textContent('.nested-entry')).toBe('foobar') + }) - test('nested entry', async () => { - expect(await page.textContent('.nested-entry')).toBe('foobar') - }) + test('nested entry', async () => { + expect(await page.textContent('.nested-entry')).toBe('foobar') + }) - test('denied', async () => { - expect(await page.textContent('.unsafe-dotenv')).toBe('404') - }) - } else { - test('dummy test to make jest happy', async () => { - // Your test suite must contain at least one test. - }) - } + test('denied', async () => { + expect(await page.textContent('.unsafe-dotenv')).toBe('404') + }) }) diff --git a/playground/hmr/tsconfig.json b/playground/hmr/tsconfig.json index 41b16fdc65ec8c..9da745ba51a3e9 100644 --- a/playground/hmr/tsconfig.json +++ b/playground/hmr/tsconfig.json @@ -10,6 +10,6 @@ "moduleResolution": "node", "baseUrl": ".", "jsx": "preserve", - "types": ["vite/client", "jest", "node"] + "types": ["vite/client", "node"] } } diff --git a/playground/lib/__tests__/lib.spec.ts b/playground/lib/__tests__/lib.spec.ts index cc5887c2777fcb..3c1dbbb313dfc3 100644 --- a/playground/lib/__tests__/lib.spec.ts +++ b/playground/lib/__tests__/lib.spec.ts @@ -10,7 +10,7 @@ if (isBuild) { test('umd', async () => { expect(await page.textContent('.umd')).toBe('It works') const code = fs.readFileSync( - path.join(testDir, 'dist/my-lib-custom-filename.umd.js'), + path.join(testDir(), 'dist/my-lib-custom-filename.umd.js'), 'utf-8' ) // esbuild helpers are injected inside of the UMD wrapper @@ -20,7 +20,7 @@ if (isBuild) { test('iife', async () => { expect(await page.textContent('.iife')).toBe('It works') const code = fs.readFileSync( - path.join(testDir, 'dist/my-lib-custom-filename.iife.js'), + path.join(testDir(), 'dist/my-lib-custom-filename.iife.js'), 'utf-8' ) // esbuild helpers are injected inside of the IIFE wrapper @@ -30,7 +30,7 @@ if (isBuild) { test('Library mode does not include `preload`', async () => { expect(await page.textContent('.dynamic-import-message')).toBe('hello vite') const code = fs.readFileSync( - path.join(testDir, 'dist/lib/dynamic-import-message.js'), + path.join(testDir(), 'dist/lib/dynamic-import-message.js'), 'utf-8' ) expect(code).not.toMatch('__vitePreload') diff --git a/playground/resolve-config/__tests__/resolve-config.spec.ts b/playground/resolve-config/__tests__/resolve-config.spec.ts index cde329afde2f50..a9c13750f0a278 100644 --- a/playground/resolve-config/__tests__/resolve-config.spec.ts +++ b/playground/resolve-config/__tests__/resolve-config.spec.ts @@ -5,7 +5,7 @@ import { isBuild, testDir, workspaceRoot } from '../../testUtils' const viteBin = path.join(workspaceRoot, 'packages', 'vite', 'bin', 'vite.js') -const fromTestDir = (...p: string[]) => path.resolve(testDir, ...p) +const fromTestDir = (...p: string[]) => path.resolve(testDir(), ...p) const build = (configName: string) => { commandSync(`${viteBin} build`, { cwd: fromTestDir(configName) }) diff --git a/playground/resolve-config/__tests__/serve.js b/playground/resolve-config/__tests__/serve.js index bd451d4cf6f6bc..2c813699fcc828 100644 --- a/playground/resolve-config/__tests__/serve.js +++ b/playground/resolve-config/__tests__/serve.js @@ -6,7 +6,8 @@ const path = require('path') const fs = require('fs-extra') const { testDir } = require('../../testUtils') -const fromTestDir = (/** @type{string[]} */ ...p) => path.resolve(testDir, ...p) +const fromTestDir = (/** @type{string[]} */ ...p) => + path.resolve(testDir(), ...p) const configNames = ['js', 'cjs', 'mjs', 'ts'] diff --git a/playground/testUtils.ts b/playground/testUtils.ts index 7abf09eaada081..dce5ba627d498d 100644 --- a/playground/testUtils.ts +++ b/playground/testUtils.ts @@ -9,6 +9,7 @@ import type { ElementHandle } from 'playwright-chromium' import type { Manifest } from 'vite' import { normalizePath } from 'vite' import { fromComment } from 'convert-source-map' +import { expect } from 'vitest' // make sure these ports are unique export const ports = { @@ -33,9 +34,11 @@ export function slash(p: string): string { export const isBuild = !!process.env.VITE_TEST_BUILD -const testPath = expect.getState().testPath -const testName = slash(testPath).match(/playground\/([\w-]+)\//)?.[1] -export const testDir = path.resolve(__dirname, '../playground-temp', testName) +export const testDir = () => { + const testPath = expect.getState().testPath + const testName = slash(testPath).match(/playground\/([\w-]+)\//)?.[1] + return path.resolve(__dirname, '../playground-temp', testName) +} export const workspaceRoot = path.resolve(__dirname, '../') const hexToNameMap: Record = {} @@ -89,7 +92,7 @@ export async function getBgColor(el: string | ElementHandle): Promise { } export function readFile(filename: string): string { - return fs.readFileSync(path.resolve(testDir, filename), 'utf-8') + return fs.readFileSync(path.resolve(testDir(), filename), 'utf-8') } export function editFile( @@ -98,27 +101,27 @@ export function editFile( runInBuild: boolean = false ): void { if (isBuild && !runInBuild) return - filename = path.resolve(testDir, filename) + filename = path.resolve(testDir(), filename) const content = fs.readFileSync(filename, 'utf-8') const modified = replacer(content) fs.writeFileSync(filename, modified) } export function addFile(filename: string, content: string): void { - fs.writeFileSync(path.resolve(testDir, filename), content) + fs.writeFileSync(path.resolve(testDir(), filename), content) } export function removeFile(filename: string): void { - fs.unlinkSync(path.resolve(testDir, filename)) + fs.unlinkSync(path.resolve(testDir(), filename)) } export function listAssets(base = ''): string[] { - const assetsDir = path.join(testDir, 'dist', base, 'assets') + const assetsDir = path.join(testDir(), 'dist', base, 'assets') return fs.readdirSync(assetsDir) } export function findAssetFile(match: string | RegExp, base = ''): string { - const assetsDir = path.join(testDir, 'dist', base, 'assets') + const assetsDir = path.join(testDir(), 'dist', base, 'assets') const files = fs.readdirSync(assetsDir) const file = files.find((file) => { return file.match(match) @@ -128,7 +131,10 @@ export function findAssetFile(match: string | RegExp, base = ''): string { export function readManifest(base = ''): Manifest { return JSON.parse( - fs.readFileSync(path.join(testDir, 'dist', base, 'manifest.json'), 'utf-8') + fs.readFileSync( + path.join(testDir(), 'dist', base, 'manifest.json'), + 'utf-8' + ) ) } @@ -156,7 +162,7 @@ export async function untilUpdated( /** * Send the rebuild complete message in build watch */ -export { notifyRebuildComplete } from '../scripts/jestPerTestSetup' +export { notifyRebuildComplete } from '../scripts/vitestSetup' export const extractSourcemap = (content: string) => { const lines = content.trim().split('\n') @@ -164,7 +170,7 @@ export const extractSourcemap = (content: string) => { } export const formatSourcemapForSnapshot = (map: any) => { - const root = normalizePath(testDir) + const root = normalizePath(testDir()) const m = { ...map } delete m.file delete m.names diff --git a/playground/tsconfig.json b/playground/tsconfig.json index d60edb9f78c801..06bea8c1328d7f 100644 --- a/playground/tsconfig.json +++ b/playground/tsconfig.json @@ -9,6 +9,6 @@ "moduleResolution": "node", "baseUrl": ".", "jsx": "preserve", - "types": ["vite/client", "jest", "node"] + "types": ["vite/client", "vitest/globals", "node"] } } diff --git a/playground/worker/__tests__/es/es-worker.spec.ts b/playground/worker/__tests__/es/es-worker.spec.ts index 61215f931c77dc..100f57d6620572 100644 --- a/playground/worker/__tests__/es/es-worker.spec.ts +++ b/playground/worker/__tests__/es/es-worker.spec.ts @@ -60,7 +60,7 @@ test('worker emitted and import.meta.url in nested worker (serve)', async () => }) if (isBuild) { - const assetsDir = path.resolve(testDir, 'dist/es/assets') + const assetsDir = path.resolve(testDir(), 'dist/es/assets') // assert correct files test('inlined code generation', async () => { const files = fs.readdirSync(assetsDir) diff --git a/playground/worker/__tests__/iife/worker.spec.ts b/playground/worker/__tests__/iife/worker.spec.ts index f49666e4918a25..eb129de4c5ad69 100644 --- a/playground/worker/__tests__/iife/worker.spec.ts +++ b/playground/worker/__tests__/iife/worker.spec.ts @@ -60,7 +60,7 @@ test('worker emitted and import.meta.url in nested worker (serve)', async () => }) if (isBuild) { - const assetsDir = path.resolve(testDir, 'dist/iife/assets') + const assetsDir = path.resolve(testDir(), 'dist/iife/assets') // assert correct files test('inlined code generation', async () => { const files = fs.readdirSync(assetsDir) diff --git a/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts b/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts index e4cb3318ebd5f5..87fbee3ba56704 100644 --- a/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts +++ b/playground/worker/__tests__/sourcemap-hidden/sourcemap-hidden-worker.spec.ts @@ -4,7 +4,7 @@ import { untilUpdated, isBuild, testDir } from '../../../testUtils' import { Page } from 'playwright-chromium' if (isBuild) { - const assetsDir = path.resolve(testDir, 'dist/iife-sourcemap-hidden/assets') + const assetsDir = path.resolve(testDir(), 'dist/iife-sourcemap-hidden/assets') // assert correct files test('sourcemap generation for web workers', async () => { const files = fs.readdirSync(assetsDir) diff --git a/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts b/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts index ceda7dae1fec7c..02aec2cd0adcef 100644 --- a/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts +++ b/playground/worker/__tests__/sourcemap-inline/sourcemap-inline-worker.spec.ts @@ -4,7 +4,7 @@ import { untilUpdated, isBuild, testDir } from '../../../testUtils' import { Page } from 'playwright-chromium' if (isBuild) { - const assetsDir = path.resolve(testDir, 'dist/iife-sourcemap-inline/assets') + const assetsDir = path.resolve(testDir(), 'dist/iife-sourcemap-inline/assets') // assert correct files test('sourcemap generation for web workers', async () => { const files = fs.readdirSync(assetsDir) diff --git a/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts b/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts index 04cc079b4bc289..d14bf73b6a08c3 100644 --- a/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts +++ b/playground/worker/__tests__/sourcemap/sourcemap-worker.spec.ts @@ -4,7 +4,7 @@ import { untilUpdated, isBuild, testDir } from '../../../testUtils' import { Page } from 'playwright-chromium' if (isBuild) { - const assetsDir = path.resolve(testDir, 'dist/iife-sourcemap/assets') + const assetsDir = path.resolve(testDir(), 'dist/iife-sourcemap/assets') // assert correct files test('sourcemap generation for web workers', async () => { const files = fs.readdirSync(assetsDir) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 655b3273279f9e..ddecbdeeae3f1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,7 +12,6 @@ importers: specifiers: '@microsoft/api-extractor': ^7.23.1 '@types/fs-extra': ^9.0.13 - '@types/jest': ^27.5.0 '@types/node': ^17.0.31 '@types/prompts': ^2.4.0 '@types/semver': ^7.3.9 @@ -26,7 +25,6 @@ importers: eslint-plugin-node: ^11.1.0 execa: ^5.1.1 fs-extra: ^10.1.0 - jest: ^27.5.1 lint-staged: ^12.4.1 minimist: ^1.2.6 node-fetch: ^2.6.7 @@ -40,16 +38,14 @@ importers: semver: ^7.3.7 simple-git-hooks: ^2.7.0 sirv: ^2.0.2 - ts-jest: ^27.1.4 ts-node: ^10.7.0 typescript: ^4.6.4 vite: workspace:* vitepress: ^0.22.4 - vitest: ^0.10.5 + vitest: ^0.12.0 devDependencies: '@microsoft/api-extractor': 7.23.1 '@types/fs-extra': 9.0.13 - '@types/jest': 27.5.0 '@types/node': 17.0.31 '@types/prompts': 2.4.0 '@types/semver': 7.3.9 @@ -63,7 +59,6 @@ importers: eslint-plugin-node: 11.1.0_eslint@8.15.0 execa: 5.1.1 fs-extra: 10.1.0 - jest: 27.5.1_ts-node@10.7.0 lint-staged: 12.4.1 minimist: 1.2.6 node-fetch: 2.6.7 @@ -77,12 +72,11 @@ importers: semver: 7.3.7 simple-git-hooks: 2.7.0 sirv: 2.0.2 - ts-jest: 27.1.4_edb1f862ecf73b6f0cc1f906c6266936 ts-node: 10.7.0_5f3e12794cebfbf3197131903b74d233 typescript: 4.6.4 vite: link:packages/vite vitepress: 0.22.4 - vitest: 0.10.5 + vitest: 0.12.0 packages/create-vite: specifiers: @@ -1104,6 +1098,7 @@ packages: /@babel/compat-data/7.17.10: resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==} engines: {node: '>=6.9.0'} + dev: false /@babel/core/7.17.10: resolution: {integrity: sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==} @@ -1126,6 +1121,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: false /@babel/generator/7.17.10: resolution: {integrity: sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==} @@ -1134,6 +1130,7 @@ packages: '@babel/types': 7.17.10 '@jridgewell/gen-mapping': 0.1.1 jsesc: 2.5.2 + dev: false /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} @@ -1153,6 +1150,7 @@ packages: '@babel/helper-validator-option': 7.16.7 browserslist: 4.20.3 semver: 6.3.0 + dev: false /@babel/helper-create-class-features-plugin/7.17.9_@babel+core@7.17.10: resolution: {integrity: sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==} @@ -1177,6 +1175,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.10 + dev: false /@babel/helper-function-name/7.17.9: resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} @@ -1184,12 +1183,14 @@ packages: dependencies: '@babel/template': 7.16.7 '@babel/types': 7.17.10 + dev: false /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.10 + dev: false /@babel/helper-member-expression-to-functions/7.17.7: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} @@ -1218,6 +1219,7 @@ packages: '@babel/types': 7.17.10 transitivePeerDependencies: - supports-color + dev: false /@babel/helper-optimise-call-expression/7.16.7: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} @@ -1248,12 +1250,14 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.10 + dev: false /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.10 + dev: false /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} @@ -1262,6 +1266,7 @@ packages: /@babel/helper-validator-option/7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} + dev: false /@babel/helpers/7.17.9: resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} @@ -1272,6 +1277,7 @@ packages: '@babel/types': 7.17.10 transitivePeerDependencies: - supports-color + dev: false /@babel/highlight/7.17.9: resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} @@ -1296,33 +1302,6 @@ packages: '@babel/plugin-syntax-pipeline-operator': 7.17.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.10: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.10: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.10: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1330,15 +1309,7 @@ packages: dependencies: '@babel/core': 7.17.10 '@babel/helper-plugin-utils': 7.16.7 - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true + dev: false /@babel/plugin-syntax-jsx/7.16.7: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} @@ -1358,60 +1329,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.10: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.10: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.10: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - /@babel/plugin-syntax-pipeline-operator/7.17.0: resolution: {integrity: sha512-vNE+4pNAOk2Q0BkyTf+XMwZ53vMDJ7Ic/Z85sruaJfJJ+4O5k/61z2a4Xj3CSl9kKRlXOALbsxWca0vZz7ENbw==} engines: {node: '>=6.9.0'} @@ -1421,16 +1338,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.10: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.17.10 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - /@babel/plugin-syntax-typescript/7.17.10_@babel+core@7.17.10: resolution: {integrity: sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==} engines: {node: '>=6.9.0'} @@ -1439,6 +1346,7 @@ packages: dependencies: '@babel/core': 7.17.10 '@babel/helper-plugin-utils': 7.16.7 + dev: false /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.10: resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} @@ -1516,6 +1424,7 @@ packages: '@babel/code-frame': 7.16.7 '@babel/parser': 7.17.10 '@babel/types': 7.17.10 + dev: false /@babel/traverse/7.17.10: resolution: {integrity: sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==} @@ -1533,6 +1442,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false /@babel/types/7.17.10: resolution: {integrity: sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==} @@ -1541,10 +1451,6 @@ packages: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - /@cloudflare/workers-types/2.2.2: resolution: {integrity: sha512-kaMn2rueJ0PL1TYVGknTCh0X0x0d9G+FNXAFep7/4uqecEZoQb/63o6rOmMuiqI09zLuHV6xhKRXinokV/MY9A==} dev: true @@ -1712,213 +1618,6 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - dev: true - - /@jest/core/27.5.1_ts-node@10.7.0: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 27.5.1 - jest-config: 27.5.1_ts-node@10.7.0 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.5 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - jest-mock: 27.5.1 - dev: true - - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 17.0.31 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 - dev: true - - /@jest/reporters/27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.0 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.4 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.10 - source-map: 0.6.1 - dev: true - - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.17.10 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.8.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.31 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -2186,23 +1885,6 @@ packages: string-argv: 0.3.1 dev: true - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers/8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - dependencies: - '@sinonjs/commons': 1.8.3 - dev: true - - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -2227,35 +1909,6 @@ packages: resolution: {integrity: sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==} dev: true - /@types/babel__core/7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} - dependencies: - '@babel/parser': 7.17.10 - '@babel/types': 7.17.10 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.17.1 - dev: true - - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.17.10 - dev: true - - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.17.10 - '@babel/types': 7.17.10 - dev: true - - /@types/babel__traverse/7.17.1: - resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} - dependencies: - '@babel/types': 7.17.10 - dev: true - /@types/braces/3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true @@ -2306,39 +1959,10 @@ packages: '@types/node': 17.0.31 dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - dependencies: - '@types/node': 17.0.31 - dev: true - /@types/hash-sum/1.0.0: resolution: {integrity: sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==} dev: true - /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest/27.5.0: - resolution: {integrity: sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==} - dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 - dev: true - /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -2384,10 +2008,6 @@ packages: /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - /@types/prettier/2.6.0: - resolution: {integrity: sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==} - dev: true - /@types/prompts/2.4.0: resolution: {integrity: sha512-7th8Opn+0XlN0O6qzO7dXOPwL6rigq/EwRS2DntaTHwSw8cLaYKeAPt5dWEKHSL+ffVSUl1itTPUC06+FlsV4Q==} dev: true @@ -2416,10 +2036,6 @@ packages: resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} dev: true - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - /@types/stylus/0.48.37: resolution: {integrity: sha512-IkLnS/GzdDK3rgAmQwLr8LqPvUMa43SHlCnXqsfXNukwaIpiXBNgSHil3ro8aemhF4k4ZiMoa4URE7mwBHPJnQ==} dependencies: @@ -2432,16 +2048,6 @@ packages: '@types/node': 17.0.31 dev: true - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - /@types/yauzl/2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true @@ -2687,10 +2293,6 @@ packages: through: 2.3.8 dev: true - /abab/2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false @@ -2703,13 +2305,6 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-jsx/5.3.2_acorn@8.7.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2729,6 +2324,7 @@ packages: /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} + dev: false /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} @@ -2822,11 +2418,6 @@ packages: dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles/6.1.0: resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} engines: {node: '>=12'} @@ -2916,10 +2507,6 @@ packages: engines: {node: '>=8'} dev: true - /asynckit/0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} - dev: true - /atob/2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} @@ -2949,86 +2536,13 @@ packages: - debug dev: false - /babel-jest/27.5.1_@babel+core@7.17.10: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.17.10 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.1.19 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.17.10 - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul/6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.16.7 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.0 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist/27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.17.10 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.17.1 - dev: true - - /babel-plugin-macros/2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + /babel-plugin-macros/2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: '@babel/runtime': 7.17.9 cosmiconfig: 6.0.0 resolve: 1.22.0 - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.10: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.17.10 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.10 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.10 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.10 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.10 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.10 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.10 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.10 - dev: true - - /babel-preset-jest/27.5.1_@babel+core@7.17.10: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.17.10 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.10 - dev: true - /babel-walk/3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} @@ -3094,10 +2608,6 @@ packages: dependencies: fill-range: 7.0.1 - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - /browserslist/4.20.3: resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3108,19 +2618,7 @@ packages: escalade: 3.1.1 node-releases: 2.0.4 picocolors: 1.0.0 - - /bs-logger/0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser/2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true + dev: false /buffer-crc32/0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} @@ -3189,9 +2687,11 @@ packages: /camelcase/6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + dev: false /caniuse-lite/1.0.30001338: resolution: {integrity: sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==} + dev: false /chai/4.3.6: resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} @@ -3221,11 +2721,6 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - /character-parser/2.2.0: resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} dependencies: @@ -3255,14 +2750,6 @@ packages: engines: {node: '>=10'} dev: false - /ci-info/3.3.0: - resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} - dev: true - - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - /cjstoesm/1.1.4_typescript@4.6.4: resolution: {integrity: sha512-cixLJwK2HS8R8J1jJcYwlrLxWUbdNms5EmVQuvP3O0CGvHNv2WVd2gnqTP/tbTEYzbgWiSYQBZDoAakqsSl94Q==} engines: {node: '>=10.0.0'} @@ -3331,15 +2818,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /co/4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -3391,13 +2869,6 @@ packages: engines: {node: '>=0.1.90'} dev: true - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true @@ -3782,21 +3253,6 @@ packages: engines: {node: '>=4'} hasBin: true - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /csstype/2.6.20: resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} @@ -3815,15 +3271,6 @@ packages: engines: {node: '>=8'} dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -3896,19 +3343,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} - dev: true - /decode-uri-component/0.2.0: resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} engines: {node: '>=0.10'} dev: true - /dedent/0.7.0: - resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} - dev: true - /deep-eql/3.0.1: resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} engines: {node: '>=0.12'} @@ -3942,11 +3381,6 @@ packages: resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=} dev: false - /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} - engines: {node: '>=0.4.0'} - dev: true - /delegate/3.2.0: resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} dev: false @@ -3975,11 +3409,6 @@ packages: engines: {node: '>=8'} dev: false - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /detective/5.2.0: resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==} engines: {node: '>=0.8.0'} @@ -4001,11 +3430,6 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -4033,13 +3457,6 @@ packages: resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -4071,11 +3488,7 @@ packages: /electron-to-chromium/1.4.137: resolution: {integrity: sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==} - - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - dev: true + dev: false /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4387,19 +3800,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-define-config/1.4.0: resolution: {integrity: sha512-DJGEdzX4fkdkhPSzPgOpBbBjhT+b9DcgbAgxfrEUcipVWlSuesQJriKffHz1JF5mhKFm7PGoiZz4D2nb4GslNA==} engines: {node: '>= 14.6.0', npm: '>= 6.0.0', pnpm: '>= 6.32.9'} @@ -4532,12 +3932,6 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} @@ -4603,21 +3997,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit/0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} - engines: {node: '>= 0.8.0'} - dev: true - - /expect/27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - dev: true - /express/4.18.1: resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} engines: {node: '>= 0.10.0'} @@ -4702,12 +4081,6 @@ packages: dependencies: reusify: 1.0.4 - /fb-watchman/2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} - dependencies: - bser: 2.1.1 - dev: true - /fd-slicer/1.1.0: resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=} dependencies: @@ -4792,15 +4165,6 @@ packages: debug: optional: true - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /formdata-node/2.5.0: resolution: {integrity: sha512-JFSNLq34u2Tqc6F034x5aaK3ksIfrDBMPie8b4KYx2/pVDLxWFXDly52dsvHjZ+A0LGHTZb/w4HBZVdgN74RTw==} engines: {node: '>= 10.17'} @@ -4901,6 +4265,7 @@ packages: /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: false /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -4919,11 +4284,6 @@ packages: has-symbols: 1.0.3 dev: true - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - /get-pkg-repo/4.2.1: resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} engines: {node: '>=6.9.0'} @@ -5015,6 +4375,7 @@ packages: /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: false /globals/13.14.0: resolution: {integrity: sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==} @@ -5150,17 +4511,6 @@ packages: resolution: {integrity: sha1-wc56MWjIxmFAM6S194d/OyJfnDg=} dev: false - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - /html-rewriter-wasm/0.3.2: resolution: {integrity: sha512-b+pOh+bs00uRVNIZoTgGBREjUKN47pchTNwkxKuP4ecQTFcOA6KJIW+jjvjjXrkSRURZsideLxFKqX7hnxdegQ==} dev: true @@ -5185,17 +4535,6 @@ packages: toidentifier: 1.0.1 dev: true - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy/1.18.1_debug@4.3.4: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} @@ -5225,6 +4564,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -5280,15 +4620,6 @@ packages: engines: {node: '>=8'} dev: true - /import-local/3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} @@ -5430,11 +4761,6 @@ packages: engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -5471,10 +4797,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-promise/2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: true @@ -5498,577 +4820,60 @@ packages: dependencies: call-bind: 1.0.2 dev: true - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-text-path/1.0.1: - resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true - - /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true - - /is-weakref/1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-what/3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray/0.0.1: - resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /istanbul-lib-coverage/3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument/5.2.0: - resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.17.10 - '@babel/parser': 7.17.10 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.4: - resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jest-changed-files/27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - execa: 5.1.1 - throat: 6.0.1 - dev: true - - /jest-circus/27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.5 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli/27.5.1_ts-node@10.7.0: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1_ts-node@10.7.0 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 27.5.1_ts-node@10.7.0 - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-config/27.5.1_ts-node@10.7.0: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - dependencies: - '@babel/core': 7.17.10 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.17.10 - chalk: 4.1.2 - ci-info: 3.3.0 - deepmerge: 4.2.2 - glob: 7.2.0 - graceful-fs: 4.2.10 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 27.5.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.7.0_5f3e12794cebfbf3197131903b74d233 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-diff/27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-docblock/27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each/27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node/27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - jest-mock: 27.5.1 - jest-util: 27.5.1 - dev: true - - /jest-get-type/27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.31 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.10 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-jasmine2/27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector/27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-message-util/27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.16.7 - '@jest/types': 27.5.1 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 27.5.1 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - - /jest-mock/27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - dev: true - - /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 27.5.1 - dev: true - - /jest-regex-util/27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /jest-resolve-dependencies/27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve/27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.22.0 - resolve.exports: 1.1.0 - slash: 3.0.0 - dev: true - - /jest-runner/27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.10 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} dev: true - /jest-runtime/27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - execa: 5.1.1 - glob: 7.2.0 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color + has-tostringtag: 1.0.0 dev: true - /jest-serializer/27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: - '@types/node': 17.0.31 - graceful-fs: 4.2.10 + has-symbols: 1.0.3 dev: true - /jest-snapshot/27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-text-path/1.0.1: + resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} + engines: {node: '>=0.10.0'} dependencies: - '@babel/core': 7.17.10 - '@babel/generator': 7.17.10 - '@babel/plugin-syntax-typescript': 7.17.10_@babel+core@7.17.10 - '@babel/traverse': 7.17.10 - '@babel/types': 7.17.10 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.17.1 - '@types/prettier': 2.6.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.10 - chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.10 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.3.7 - transitivePeerDependencies: - - supports-color + text-extensions: 1.9.0 dev: true - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - chalk: 4.1.2 - ci-info: 3.3.0 - graceful-fs: 4.2.10 - picomatch: 2.3.1 + call-bind: 1.0.2 dev: true - /jest-validate/27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.5.1 - leven: 3.1.0 - pretty-format: 27.5.1 + /is-what/3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true - /jest-watcher/27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.31 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 + is-docker: 2.2.1 dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 17.0.31 - merge-stream: 2.0.0 - supports-color: 8.1.1 + /isarray/0.0.1: + resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + dev: false + + /isarray/1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: true - /jest/27.5.1_ts-node@10.7.0: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.5.1_ts-node@10.7.0 - import-local: 3.1.0 - jest-cli: 27.5.1_ts-node@10.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + /isexe/2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true /jju/1.4.0: @@ -6086,14 +4891,6 @@ packages: /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -6101,52 +4898,11 @@ packages: argparse: 2.0.1 dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.7.1 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.3.1 - domexception: 2.0.1 - escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.0.0 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.7 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: false /json-parse-better-errors/1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -6246,19 +5002,6 @@ packages: source-map: 0.6.1 dev: true - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6388,10 +5131,6 @@ packages: resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} dev: true - /lodash.memoize/4.1.2: - resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} - dev: true - /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -6462,17 +5201,12 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 + dev: false /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: true - /map-obj/1.0.1: resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} @@ -6780,12 +5514,9 @@ packages: engines: {node: '>= 6.13.0'} dev: true - /node-int64/0.4.0: - resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} - dev: true - /node-releases/2.0.4: resolution: {integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==} + dev: false /nopt/5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -6859,10 +5590,6 @@ packages: set-blocking: 2.0.0 dev: false - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} - dev: true - /object-assign/4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} engines: {node: '>=0.10.0'} @@ -6946,18 +5673,6 @@ packages: hasBin: true dev: true - /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -7053,10 +5768,6 @@ packages: engines: {node: '>= 0.10'} dev: true - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - /parseurl/1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -7164,11 +5875,6 @@ packages: dev: true optional: true - /pirates/4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true - /pixelmatch/5.2.1: resolution: {integrity: sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==} hasBin: true @@ -7176,13 +5882,6 @@ packages: pngjs: 4.0.1 dev: true - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - /playwright-chromium/1.21.1: resolution: {integrity: sha512-bbqFFpcTs+3amiofja/KvTmZ+FZnMNEOuGkRyJk2p6DV9EbgRYVrlzzgLtMnX2DwaX3ZZ23MukGuQ+bVKOdsnw==} engines: {node: '>=12'} @@ -7400,11 +6099,6 @@ packages: resolution: {integrity: sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==} dev: true - /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} - engines: {node: '>= 0.8.0'} - dev: true - /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -7416,15 +6110,6 @@ packages: hasBin: true dev: true - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - /pretty-hrtime/1.0.3: resolution: {integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=} engines: {node: '>= 0.8'} @@ -7490,10 +6175,6 @@ packages: dev: true optional: true - /psl/1.8.0: - resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} - dev: true - /pug-attrs/3.0.0: resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} dependencies: @@ -7683,10 +6364,6 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - /react-refresh/0.13.0: resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} engines: {node: '>=0.10.0'} @@ -7873,22 +6550,10 @@ packages: resolution: {integrity: sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=} dev: true - /resolve-cwd/3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} dev: false @@ -8020,13 +6685,6 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: true - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /scheduler/0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: @@ -8370,14 +7028,6 @@ packages: resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=} dev: true - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -8449,11 +7099,6 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -8506,26 +7151,11 @@ packages: dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-color/9.2.2: resolution: {integrity: sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==} engines: {node: '>=12'} dev: true - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -8534,10 +7164,6 @@ packages: resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=} dev: false - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /systemjs/6.12.1: resolution: {integrity: sha512-hqTN6kW+pN6/qro6G9OZ7ceDQOcYno020zBQKpZQLsJhYTDMCMNfXi/Y8duF5iW+4WWZr42ry0MMkcRGpbwG2A==} dev: false @@ -8686,14 +7312,6 @@ packages: uuid: 3.4.0 dev: true - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 - dev: true - /terser/5.13.1: resolution: {integrity: sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==} engines: {node: '>=10'} @@ -8705,15 +7323,6 @@ packages: source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.0 - minimatch: 3.1.2 - dev: true - /text-extensions/1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -8723,10 +7332,6 @@ packages: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /through/2.3.8: resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} dev: true @@ -8777,10 +7382,6 @@ packages: rimraf: 3.0.2 dev: false - /tmpl/1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - /to-fast-properties/2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} @@ -8805,15 +7406,6 @@ packages: engines: {node: '>=6'} dev: true - /tough-cookie/4.0.0: - resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} - engines: {node: '>=6'} - dependencies: - psl: 1.8.0 - punycode: 2.1.1 - universalify: 0.1.2 - dev: true - /tr46/0.0.3: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} @@ -8841,41 +7433,6 @@ packages: utf8-byte-length: 1.0.4 dev: true - /ts-jest/27.1.4_edb1f862ecf73b6f0cc1f906c6266936: - resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: '*' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@types/jest': 27.5.0 - bs-logger: 0.2.6 - esbuild: 0.14.38 - fast-json-stable-stringify: 2.1.0 - jest: 27.5.1_ts-node@10.7.0 - jest-util: 27.5.1 - json5: 2.2.1 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.7 - typescript: 4.6.4 - yargs-parser: 20.2.9 - dev: true - /ts-node/10.7.0_5f3e12794cebfbf3197131903b74d233: resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==} hasBin: true @@ -8938,13 +7495,6 @@ packages: typescript: 4.6.4 dev: true - /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -8998,12 +7548,6 @@ packages: resolution: {integrity: sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==} dev: false - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typescript/4.6.4: resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} @@ -9102,15 +7646,6 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} - engines: {node: '>=10.12.0'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.8.0 - source-map: 0.7.3 - dev: true - /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -9150,8 +7685,8 @@ packages: - react-dom dev: true - /vitest/0.10.5: - resolution: {integrity: sha512-4qXdNbHwAd9YcsztJoVMWUQGcMATVlY9Xd95I3KQ2JJwDLTL97f/jgfGRotqptvNxdlmme5TBY0Gv+l6+JSYvA==} + /vitest/0.12.0: + resolution: {integrity: sha512-ITdIJJ5nl7eu2Iq4oON/wgpgRbhUR+50ShdMsUw87zByzjtJIx2vPbkz+J8Bq6eEUvyy8p7j0bU1sB/xWz05bw==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: @@ -9210,25 +7745,6 @@ packages: vue: 3.2.33 dev: false - /w3c-hr-time/1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - - /walker/1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - /web-streams-polyfill/3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -9251,26 +7767,11 @@ packages: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - /webidl-conversions/6.1.0: resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} engines: {node: '>=10.4'} dev: true - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - /whatwg-url/5.0.0: resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} dependencies: @@ -9365,15 +7866,6 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - /ws/7.5.7: resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==} engines: {node: '>=8.3.0'} @@ -9413,14 +7905,6 @@ packages: optional: true dev: true - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true - /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} diff --git a/scripts/jestEnv.cjs b/scripts/jestEnv.cjs deleted file mode 100644 index b576155644a27f..00000000000000 --- a/scripts/jestEnv.cjs +++ /dev/null @@ -1,48 +0,0 @@ -const os = require('os') -const fs = require('fs') -const path = require('path') -const NodeEnvironment = require('jest-environment-node') -const { chromium } = require('playwright-chromium') - -const DIR = path.join(os.tmpdir(), 'jest_playwright_global_setup') - -module.exports = class PlaywrightEnvironment extends NodeEnvironment { - constructor(config, context) { - super(config) - this.testPath = context.testPath - } - - async setup() { - await super.setup() - const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf-8') - if (!wsEndpoint) { - throw new Error('wsEndpoint not found') - } - - // skip browser setup for non-playground tests - if (!this.testPath.includes('playground')) { - return - } - - const browser = (this.browser = await chromium.connect({ - wsEndpoint - })) - this.global.page = await browser.newPage() - - const console = this.global.console - const warn = console.warn - console.warn = (msg, ...args) => { - // suppress @vue/ref-transform warning - if (msg.includes('@vue/ref-transform')) return - if (msg.includes('Generated an empty chunk')) return - warn.call(console, msg, ...args) - } - } - - async teardown() { - if (this.browser) { - await this.browser.close() - } - await super.teardown() - } -} diff --git a/scripts/jestGlobalTeardown.cjs b/scripts/jestGlobalTeardown.cjs deleted file mode 100644 index 786b7b95724fa3..00000000000000 --- a/scripts/jestGlobalTeardown.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const fs = require('fs-extra') -const path = require('path') - -module.exports = async () => { - await global.__BROWSER_SERVER__.close() - if (!process.env.VITE_PRESERVE_BUILD_ARTIFACTS) { - fs.removeSync(path.resolve(__dirname, '../playground-temp')) - } -} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 5c70fcc7f15823..bb673b6c8e21fb 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -8,6 +8,6 @@ "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, - "types": ["node", "jest"] + "types": ["node", "vitest/globals"] } } diff --git a/scripts/jestGlobalSetup.cjs b/scripts/vitestGlobalSetup.ts similarity index 63% rename from scripts/jestGlobalSetup.cjs rename to scripts/vitestGlobalSetup.ts index b4098ba3f6f2c1..0ee108761845e9 100644 --- a/scripts/jestGlobalSetup.cjs +++ b/scripts/vitestGlobalSetup.ts @@ -1,26 +1,27 @@ // @ts-check -const os = require('os') -const fs = require('fs-extra') -const path = require('path') -const { chromium } = require('playwright-chromium') +import os from 'os' +import fs from 'fs-extra' +import path from 'path' +import type { BrowserServer } from 'playwright-chromium' +import { chromium } from 'playwright-chromium' -const DIR = path.join(os.tmpdir(), 'jest_playwright_global_setup') +const DIR = path.join(os.tmpdir(), 'vitest_playwright_global_setup') -module.exports = async () => { - const browserServer = await chromium.launchServer({ +let browserServer: BrowserServer | undefined + +export async function setup() { + browserServer = await chromium.launchServer({ headless: !process.env.VITE_DEBUG_SERVE, args: process.env.CI ? ['--no-sandbox', '--disable-setuid-sandbox'] : undefined }) - global.__BROWSER_SERVER__ = browserServer - await fs.mkdirp(DIR) await fs.writeFile(path.join(DIR, 'wsEndpoint'), browserServer.wsEndpoint()) const tempDir = path.resolve(__dirname, '../playground-temp') - await fs.remove(tempDir) + await fs.ensureDir(tempDir) await fs .copy(path.resolve(__dirname, '../playground'), tempDir, { dereference: false, @@ -39,3 +40,10 @@ module.exports = async () => { } }) } + +export async function teardown() { + browserServer?.close() + if (!process.env.VITE_PRESERVE_BUILD_ARTIFACTS) { + fs.removeSync(path.resolve(__dirname, '../playground-temp')) + } +} diff --git a/scripts/jestPerTestSetup.ts b/scripts/vitestSetup.ts similarity index 85% rename from scripts/jestPerTestSetup.ts rename to scripts/vitestSetup.ts index 8160a04d9df4a9..74f8374557b035 100644 --- a/scripts/jestPerTestSetup.ts +++ b/scripts/vitestSetup.ts @@ -2,6 +2,9 @@ import fs from 'fs-extra' import * as http from 'http' import { resolve, dirname } from 'path' import sirv from 'sirv' +import os from 'os' +import path from 'path' +import { chromium } from 'playwright-chromium' import type { ViteDevServer, InlineConfig, @@ -12,6 +15,7 @@ import type { import { createServer, build, mergeConfig } from 'vite' import type { Page, ConsoleMessage } from 'playwright-chromium' import type { RollupError, RollupWatcher, RollupWatcherEvent } from 'rollup' +import { beforeAll, afterAll, File } from 'vitest' const isBuildTest = !!process.env.VITE_TEST_BUILD @@ -63,16 +67,39 @@ const onPageError = (error: Error) => { errors.push(error) } -beforeAll(async () => { - const page = global.page - if (!page) { +const DIR = path.join(os.tmpdir(), 'vitest_playwright_global_setup') + +beforeAll(async (s) => { + const suite = s as File + const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf-8') + if (!wsEndpoint) { + throw new Error('wsEndpoint not found') + } + + // skip browser setup for non-playground tests + if (!suite.filepath.includes('playground')) { return } + + const browser = await chromium.connect(wsEndpoint) + const page = await browser.newPage() + // @ts-expect-error + globalThis.page = page + + const globalConsole = globalThis.console + const warn = globalConsole.warn + globalConsole.warn = (msg, ...args) => { + // suppress @vue/ref-transform warning + if (msg.includes('@vue/ref-transform')) return + if (msg.includes('Generated an empty chunk')) return + warn.call(globalConsole, msg, ...args) + } + try { page.on('console', onConsole) page.on('pageerror', onPageError) - const testPath = expect.getState().testPath + const testPath = suite.filepath! const testName = slash(testPath).match(/playground\/([\w-]+)\//)?.[1] // if this is a test placed under playground/xxx/__tests__ @@ -167,29 +194,30 @@ beforeAll(async () => { } } } catch (e: any) { - // jest doesn't exit if our setup has error here - // https://github.com/facebook/jest/issues/2713 - setBeforeAllError(e) - // Closing the page since an error in the setup, for example a runtime error // when building the playground should skip further tests. // If the page remains open, a command like `await page.click(...)` produces // a timeout with an exception that hides the real error in the console. await page.close() + + throw e } -}, 30000) -afterAll(async () => { - global.page?.off('console', onConsole) - global.serverLogs = [] - await global.page?.close() - await server?.close() - global.watcher?.close() - const beforeAllErr = getBeforeAllError() - if (beforeAllErr) { - throw beforeAllErr + return async () => { + page?.off('console', onConsole) + global.serverLogs = [] + await page?.close() + await server?.close() + global.watcher?.close() + const beforeAllErr = getBeforeAllError() + if (browser) { + await browser.close() + } + if (beforeAllErr) { + throw beforeAllErr + } } -}) +}, 30000) function startStaticServer(config?: InlineConfig): Promise { if (!config) { diff --git a/vitest.e2e.config.ts b/vitest.e2e.config.ts new file mode 100644 index 00000000000000..484016ef77a445 --- /dev/null +++ b/vitest.e2e.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + include: ['./playground/**/*.spec.[tj]s'], + setupFiles: ['./scripts/vitestSetup.ts'], + globalSetup: ['./scripts/vitestGlobalSetup.ts'], + testTimeout: process.env.CI ? 50000 : 20000, + maxThreads: 1, + minThreads: 1, + globals: true, + reporters: 'dot' + }, + esbuild: { + target: 'node14' + } +}) From bf3b4a2a68e32eda3f800bd731160d33a99d2aa4 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 9 May 2022 17:43:18 +0800 Subject: [PATCH 02/26] chore: fix build --- packages/vite/src/node/ssr/ssrModuleLoader.ts | 1 + packages/vite/src/node/utils.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/vite/src/node/ssr/ssrModuleLoader.ts b/packages/vite/src/node/ssr/ssrModuleLoader.ts index 8b3a423f58aeab..df1e408374cfa5 100644 --- a/packages/vite/src/node/ssr/ssrModuleLoader.ts +++ b/packages/vite/src/node/ssr/ssrModuleLoader.ts @@ -287,6 +287,7 @@ async function nodeImport( importer, // Non-external modules can import ESM-only modules, but only outside // of test runs, because we use Node `require` in Jest to avoid segfault. + // @ts-expect-error typeof jest === 'undefined' ? { ...resolveOptions, tryEsmOnly: true } : resolveOptions diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index ddcaced9832bc1..39cea0288598d5 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -724,7 +724,9 @@ export function toUpperCaseDriveLetter(pathName: string): string { export const multilineCommentsRE = /\/\*(.|[\r\n])*?\*\//gm export const singlelineCommentsRE = /\/\/.*/g +// @ts-expect-error export const usingDynamicImport = typeof jest === 'undefined' + /** * Dynamically import files. It will make sure it's not being compiled away by TS/Rollup. * From 459cd8b8754d419441fc16846169b7a4f7c3ddae Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 9 May 2022 17:44:29 +0800 Subject: [PATCH 03/26] chore: types --- package.json | 1 + pnpm-lock.yaml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/package.json b/package.json index 00f88bae33779e..27f26b97ab8b7a 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ }, "devDependencies": { "@microsoft/api-extractor": "^7.23.1", + "@types/babel__core": "^7.1.19", "@types/fs-extra": "^9.0.13", "@types/node": "^17.0.31", "@types/prompts": "^2.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddecbdeeae3f1e..aa064dd0ebfdc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,7 @@ importers: .: specifiers: '@microsoft/api-extractor': ^7.23.1 + '@types/babel__core': ^7.1.19 '@types/fs-extra': ^9.0.13 '@types/node': ^17.0.31 '@types/prompts': ^2.4.0 @@ -45,6 +46,7 @@ importers: vitest: ^0.12.0 devDependencies: '@microsoft/api-extractor': 7.23.1 + '@types/babel__core': 7.1.19 '@types/fs-extra': 9.0.13 '@types/node': 17.0.31 '@types/prompts': 2.4.0 @@ -1909,6 +1911,35 @@ packages: resolution: {integrity: sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==} dev: true + /@types/babel__core/7.1.19: + resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + dependencies: + '@babel/parser': 7.17.10 + '@babel/types': 7.17.10 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.17.1 + dev: true + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.17.10 + dev: true + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.17.10 + '@babel/types': 7.17.10 + dev: true + + /@types/babel__traverse/7.17.1: + resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} + dependencies: + '@babel/types': 7.17.10 + dev: true + /@types/braces/3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true From c0849bad29e001cfd3b150e75ee85bc600c0e2ff Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 9 May 2022 18:54:21 +0800 Subject: [PATCH 04/26] chore: update --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 27f26b97ab8b7a..37ec7980f405d5 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "typescript": "^4.6.4", "vite": "workspace:*", "vitepress": "^0.22.4", - "vitest": "^0.12.0" + "vitest": "^0.12.1" }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged --concurrent false", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa064dd0ebfdc8..7a8dc5fc6c76c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: typescript: ^4.6.4 vite: workspace:* vitepress: ^0.22.4 - vitest: ^0.12.0 + vitest: ^0.12.1 devDependencies: '@microsoft/api-extractor': 7.23.1 '@types/babel__core': 7.1.19 @@ -78,7 +78,7 @@ importers: typescript: 4.6.4 vite: link:packages/vite vitepress: 0.22.4 - vitest: 0.12.0 + vitest: 0.12.1 packages/create-vite: specifiers: @@ -7716,8 +7716,8 @@ packages: - react-dom dev: true - /vitest/0.12.0: - resolution: {integrity: sha512-ITdIJJ5nl7eu2Iq4oON/wgpgRbhUR+50ShdMsUw87zByzjtJIx2vPbkz+J8Bq6eEUvyy8p7j0bU1sB/xWz05bw==} + /vitest/0.12.1: + resolution: {integrity: sha512-ltTPYmxv4JxZ+2mxnAQ6TnDNRI03oS7qPNFFy9PbQiABkN2ha/a7i7FCrYg3cNmbwD/4cyP7vHnTBv+/or492A==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: From 55413a4c66a3cc4264fdb635f30827094f81d6ce Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 9 May 2022 21:37:34 +0800 Subject: [PATCH 05/26] chore: update --- .github/workflows/ci.yml | 4 ++-- CONTRIBUTING.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1c663db40e80f..ce695749544b39 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,10 +72,10 @@ jobs: run: pnpm run test-unit - name: Test serve - run: pnpm run test-serve -- --runInBand + run: pnpm run test-serve - name: Test build - run: pnpm run test-build -- --runInBand + run: pnpm run test-build lint: timeout-minutes: 10 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index da1600a2353f0e..26f5d74f208347 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,7 +77,7 @@ Each integration test can be run under either dev server mode or build mode. - `pnpm test` by default runs every integration test in both serve and build mode, and also unit tests. -- `pnpm run test-serve` runs tests only under serve mode. This is just calling `jest` so you can pass any Jest flags to this command. Since Jest will attempt to run tests in parallel, if your machine has many cores this may cause flaky test failures with multiple Playwright instances running at the same time. You can force the tests to run in series with `pnpm run test-serve -- --runInBand`. +- `pnpm run test-serve` runs tests only under serve mode. This is just calling `jest` so you can pass any Jest flags to this command. Since Jest will attempt to run tests in parallel, if your machine has many cores this may cause flaky test failures with multiple Playwright instances running at the same time. - `pnpm run test-build` runs tests only under build mode. From ede40f13c227d2b94d6d79771130ea85d76defe5 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 10 May 2022 08:57:00 +0800 Subject: [PATCH 06/26] chore: update --- package.json | 2 +- packages/vite/src/node/server/index.ts | 2 +- .../css-sourcemap/__tests__/serve.spec.ts | 48 +++++++++---------- .../js-sourcemap/__tests__/serve.spec.ts | 8 ++-- .../legacy/__tests__/ssr/legacy-ssr.spec.ts | 8 +--- playground/lib/__tests__/lib.spec.ts | 2 +- playground/lib/__tests__/serve.js | 2 +- .../optimize-missing-deps/__test__/serve.js | 2 +- playground/ports.js | 16 +++++++ .../{vite.config.js => vite.config.ts} | 7 +-- playground/ssr-deps/__tests__/serve.js | 2 +- playground/ssr-html/__tests__/serve.js | 2 +- playground/ssr-pug/__tests__/serve.js | 2 +- playground/ssr-react/__tests__/serve.js | 2 +- playground/ssr-vue/__tests__/serve.js | 2 +- playground/ssr-webworker/__tests__/serve.js | 2 +- .../__tests__/build.spec.ts | 16 ++----- .../__tests__/serve.spec.ts | 16 ++----- playground/testUtils.ts | 18 +------ playground/vue-jsx/__tests__/vue-jsx.spec.ts | 6 +-- .../vue-sourcemap/__tests__/build.spec.ts | 16 ++----- .../vue-sourcemap/__tests__/serve.spec.ts | 12 ++--- .../{vite.config.js => vite.config.ts} | 10 ++-- playground/vue/__tests__/vue.spec.ts | 8 +++- .../worker/__tests__/es/es-worker.spec.ts | 2 +- .../worker/__tests__/iife/worker.spec.ts | 3 +- pnpm-lock.yaml | 8 ++-- scripts/vitestGlobalSetup.ts | 1 + scripts/vitestSetup.ts | 3 +- vitest.e2e.config.ts | 2 - 30 files changed, 105 insertions(+), 125 deletions(-) create mode 100644 playground/ports.js rename playground/preload/{vite.config.js => vite.config.ts} (62%) rename playground/vue-sourcemap/{vite.config.js => vite.config.ts} (62%) diff --git a/package.json b/package.json index 37ec7980f405d5..956cea33465143 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "typescript": "^4.6.4", "vite": "workspace:*", "vitepress": "^0.22.4", - "vitest": "^0.12.1" + "vitest": "^0.12.3" }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged --concurrent false", diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 0b499b42c2d457..9be336721f31f7 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -405,7 +405,7 @@ export async function createServer( try { await server.close() } finally { - process.exit(0) + process.exit() } } diff --git a/playground/css-sourcemap/__tests__/serve.spec.ts b/playground/css-sourcemap/__tests__/serve.spec.ts index becd792e82293a..929407f1c65c20 100644 --- a/playground/css-sourcemap/__tests__/serve.spec.ts +++ b/playground/css-sourcemap/__tests__/serve.spec.ts @@ -3,7 +3,7 @@ import { extractSourcemap, formatSourcemapForSnapshot, isBuild -} from 'testUtils' +} from '../../testUtils' if (!isBuild) { const getStyleTagContentIncluding = async (content: string) => { @@ -43,19 +43,19 @@ if (!isBuild) { const css = await res.text() const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", - "sources": Array [ + "sources": [ "/root/be-imported.css", "/root/linked-with-import.css", ], - "sourcesContent": Array [ + "sourcesContent": [ ".be-imported { color: red; } ", "@import '@/be-imported.css'; - + .linked-with-import { color: red; } @@ -70,12 +70,12 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('.imported ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;", - "sources": Array [ + "sources": [ "/root/imported.css", ], - "sourcesContent": Array [ + "sourcesContent": [ ".imported { color: red; } @@ -90,19 +90,19 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('.imported-with-import ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAAA;EACE,UAAU;AACZ;;ACAA;EACE,UAAU;AACZ", - "sources": Array [ + "sources": [ "/root/be-imported.css", "/root/imported-with-import.css", ], - "sourcesContent": Array [ + "sourcesContent": [ ".be-imported { color: red; } ", "@import '@/be-imported.css'; - + .imported-with-import { color: red; } @@ -117,12 +117,12 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('.imported-sass ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AACE;EACE", - "sources": Array [ + "sources": [ "/root/imported.sass", ], - "sourcesContent": Array [ + "sourcesContent": [ ".imported &-sass color: red @@ -137,12 +137,12 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('._imported-sass-module_') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AACE;EACE", - "sources": Array [ + "sources": [ "/root/imported.module.sass", ], - "sourcesContent": Array [ + "sourcesContent": [ ".imported &-sass-module color: red @@ -157,12 +157,12 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('.imported-less ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AACE;EACE", - "sources": Array [ + "sources": [ "/root/imported.less", ], - "sourcesContent": Array [ + "sourcesContent": [ ".imported { &-less { color: @color; @@ -179,12 +179,12 @@ if (!isBuild) { const css = await getStyleTagContentIncluding('.imported-stylus ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AACE;EACE,cAAM", - "sources": Array [ + "sources": [ "/root/imported.styl", ], - "sourcesContent": Array [ + "sourcesContent": [ ".imported &-stylus color blue-red-mixed diff --git a/playground/js-sourcemap/__tests__/serve.spec.ts b/playground/js-sourcemap/__tests__/serve.spec.ts index a1ffdddc37ecd5..b3946461dde197 100644 --- a/playground/js-sourcemap/__tests__/serve.spec.ts +++ b/playground/js-sourcemap/__tests__/serve.spec.ts @@ -3,7 +3,7 @@ import { extractSourcemap, formatSourcemapForSnapshot, isBuild -} from 'testUtils' +} from '../../testUtils' if (!isBuild) { test('js', async () => { @@ -18,12 +18,12 @@ if (!isBuild) { const js = await res.text() const map = extractSourcemap(js) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAAO,aAAM,MAAM;", - "sources": Array [ + "sources": [ "/root/bar.ts", ], - "sourcesContent": Array [ + "sourcesContent": [ "export const bar = 'bar' ", ], diff --git a/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts b/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts index dad9b94d83509e..bc232e8af129c6 100644 --- a/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts +++ b/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts @@ -3,7 +3,7 @@ import { port } from './serve' const url = `http://localhost:${port}` -if (isBuild) { +describe.runIf(isBuild)('legacy-ssr', () => { test('should work', async () => { await page.goto(url) expect(await page.textContent('#app')).toMatch('Hello') @@ -13,8 +13,4 @@ if (isBuild) { // SSR build is always modern expect(await page.textContent('#env')).toMatch('false') }) -} else { - // this test doesn't support serve mode - // must contain at least one test - test('should work', () => void 0) -} +}) diff --git a/playground/lib/__tests__/lib.spec.ts b/playground/lib/__tests__/lib.spec.ts index 3c1dbbb313dfc3..ae4aedfdfe7f5f 100644 --- a/playground/lib/__tests__/lib.spec.ts +++ b/playground/lib/__tests__/lib.spec.ts @@ -1,4 +1,4 @@ -import { isBuild, findAssetFile, testDir } from 'testUtils' +import { isBuild, findAssetFile, testDir } from '../../testUtils' import path from 'path' import fs from 'fs' diff --git a/playground/lib/__tests__/serve.js b/playground/lib/__tests__/serve.js index 2534545de5c221..10de41ed2b1aec 100644 --- a/playground/lib/__tests__/serve.js +++ b/playground/lib/__tests__/serve.js @@ -5,7 +5,7 @@ const path = require('path') const http = require('http') const sirv = require('sirv') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports.lib) diff --git a/playground/optimize-missing-deps/__test__/serve.js b/playground/optimize-missing-deps/__test__/serve.js index 89a6ce3593cd0e..78c992f6a56f02 100644 --- a/playground/optimize-missing-deps/__test__/serve.js +++ b/playground/optimize-missing-deps/__test__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['optimize-missing-deps']) diff --git a/playground/ports.js b/playground/ports.js new file mode 100644 index 00000000000000..e06b51c3a11432 --- /dev/null +++ b/playground/ports.js @@ -0,0 +1,16 @@ +// make sure these ports are unique +module.exports.ports = { + cli: 9510, + 'cli-module': 9511, + 'legacy/ssr': 9520, + lib: 9521, + 'optimize-missing-deps': 9522, + 'ssr-deps': 9600, + 'ssr-html': 9601, + 'ssr-pug': 9602, + 'ssr-react': 9603, + 'ssr-vue': 9604, + 'ssr-webworker': 9605, + 'css/postcss-caching': 5005, + 'css/postcss-plugins-different-dir': 5006 +} diff --git a/playground/preload/vite.config.js b/playground/preload/vite.config.ts similarity index 62% rename from playground/preload/vite.config.js rename to playground/preload/vite.config.ts index 90684f41829953..7fa1eb189818b3 100644 --- a/playground/preload/vite.config.js +++ b/playground/preload/vite.config.ts @@ -1,6 +1,7 @@ -const vuePlugin = require('@vitejs/plugin-vue') +import vuePlugin from '@vitejs/plugin-vue' +import { defineConfig } from 'vite' -module.exports = { +export default defineConfig({ plugins: [vuePlugin()], build: { minify: 'terser', @@ -13,4 +14,4 @@ module.exports = { } } } -} +}) diff --git a/playground/ssr-deps/__tests__/serve.js b/playground/ssr-deps/__tests__/serve.js index 6c2584601c9331..72cdf92499cceb 100644 --- a/playground/ssr-deps/__tests__/serve.js +++ b/playground/ssr-deps/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-deps']) diff --git a/playground/ssr-html/__tests__/serve.js b/playground/ssr-html/__tests__/serve.js index d119397700cf75..e445407795bae8 100644 --- a/playground/ssr-html/__tests__/serve.js +++ b/playground/ssr-html/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-html']) diff --git a/playground/ssr-pug/__tests__/serve.js b/playground/ssr-pug/__tests__/serve.js index 392aa831ebb82d..89b26f13b03c2f 100644 --- a/playground/ssr-pug/__tests__/serve.js +++ b/playground/ssr-pug/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-pug']) diff --git a/playground/ssr-react/__tests__/serve.js b/playground/ssr-react/__tests__/serve.js index 07476e0726e268..216bb201bed9b1 100644 --- a/playground/ssr-react/__tests__/serve.js +++ b/playground/ssr-react/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-react']) diff --git a/playground/ssr-vue/__tests__/serve.js b/playground/ssr-vue/__tests__/serve.js index 5bcd5a4639877a..4f51c7d505ca2b 100644 --- a/playground/ssr-vue/__tests__/serve.js +++ b/playground/ssr-vue/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-vue']) diff --git a/playground/ssr-webworker/__tests__/serve.js b/playground/ssr-webworker/__tests__/serve.js index 38a957b0a333ea..2e87e802bd21eb 100644 --- a/playground/ssr-webworker/__tests__/serve.js +++ b/playground/ssr-webworker/__tests__/serve.js @@ -3,7 +3,7 @@ // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../testUtils') +const { ports } = require('../../ports') const port = (exports.port = ports['ssr-webworker']) diff --git a/playground/tailwind-sourcemap/__tests__/build.spec.ts b/playground/tailwind-sourcemap/__tests__/build.spec.ts index e36c1f52d2c1f8..50b8814aed9c4e 100644 --- a/playground/tailwind-sourcemap/__tests__/build.spec.ts +++ b/playground/tailwind-sourcemap/__tests__/build.spec.ts @@ -1,13 +1,7 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' -if (isBuild) { - test('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') }) -} else { - test('this file only includes test for build', () => { - expect(true).toBe(true) - }) -} +}) diff --git a/playground/tailwind-sourcemap/__tests__/serve.spec.ts b/playground/tailwind-sourcemap/__tests__/serve.spec.ts index d961f75e4536e5..8d4613190f02a2 100644 --- a/playground/tailwind-sourcemap/__tests__/serve.spec.ts +++ b/playground/tailwind-sourcemap/__tests__/serve.spec.ts @@ -1,13 +1,7 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' -if (!isBuild) { - test('should not output missing source file warning', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) - }) +test.runIf(isBuild)('should not output missing source file warning', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch(/Sourcemap for .+ points to missing source files/) }) -} else { - test('this file only includes test for serve', () => { - expect(true).toBe(true) - }) -} +}) diff --git a/playground/testUtils.ts b/playground/testUtils.ts index dce5ba627d498d..1a74b18621cd9e 100644 --- a/playground/testUtils.ts +++ b/playground/testUtils.ts @@ -11,28 +11,12 @@ import { normalizePath } from 'vite' import { fromComment } from 'convert-source-map' import { expect } from 'vitest' -// make sure these ports are unique -export const ports = { - cli: 9510, - 'cli-module': 9511, - 'legacy/ssr': 9520, - lib: 9521, - 'optimize-missing-deps': 9522, - 'ssr-deps': 9600, - 'ssr-html': 9601, - 'ssr-pug': 9602, - 'ssr-react': 9603, - 'ssr-vue': 9604, - 'ssr-webworker': 9605, - 'css/postcss-caching': 5005, - 'css/postcss-plugins-different-dir': 5006 -} - export function slash(p: string): string { return p.replace(/\\/g, '/') } export const isBuild = !!process.env.VITE_TEST_BUILD +export const isServe = !isBuild export const testDir = () => { const testPath = expect.getState().testPath diff --git a/playground/vue-jsx/__tests__/vue-jsx.spec.ts b/playground/vue-jsx/__tests__/vue-jsx.spec.ts index 275c918684119d..94c4eb147a0b84 100644 --- a/playground/vue-jsx/__tests__/vue-jsx.spec.ts +++ b/playground/vue-jsx/__tests__/vue-jsx.spec.ts @@ -1,4 +1,4 @@ -import { editFile, isBuild, untilUpdated } from 'testUtils' +import { editFile, isServe, untilUpdated } from '../../testUtils' test('should render', async () => { expect(await page.textContent('.named')).toMatch('0') @@ -29,7 +29,7 @@ test('should update', async () => { expect(await page.textContent('.jsx-with-query')).toMatch('7') }) -if (!isBuild) { +describe.runIf(isServe)('vue-jsx server', () => { test('hmr: named export', async () => { editFile('Comps.jsx', (code) => code.replace('named {count', 'named updated {count') @@ -113,4 +113,4 @@ if (!isBuild) { ) await untilUpdated(() => page.textContent('.setup-jsx'), '1000') }) -} +}) diff --git a/playground/vue-sourcemap/__tests__/build.spec.ts b/playground/vue-sourcemap/__tests__/build.spec.ts index e36c1f52d2c1f8..50b8814aed9c4e 100644 --- a/playground/vue-sourcemap/__tests__/build.spec.ts +++ b/playground/vue-sourcemap/__tests__/build.spec.ts @@ -1,13 +1,7 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' -if (isBuild) { - test('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') }) -} else { - test('this file only includes test for build', () => { - expect(true).toBe(true) - }) -} +}) diff --git a/playground/vue-sourcemap/__tests__/serve.spec.ts b/playground/vue-sourcemap/__tests__/serve.spec.ts index 7dfa271deea322..0f285597de1111 100644 --- a/playground/vue-sourcemap/__tests__/serve.spec.ts +++ b/playground/vue-sourcemap/__tests__/serve.spec.ts @@ -1,11 +1,11 @@ import { extractSourcemap, formatSourcemapForSnapshot, - isBuild -} from 'testUtils' + isServe +} from '../../testUtils' import { URL } from 'url' -if (!isBuild) { +describe.runIf(isServe)('serve:vue-sourcemap', () => { const getStyleTagContentIncluding = async (content: string) => { const styles = await page.$$('style') for (const style of styles) { @@ -355,8 +355,4 @@ if (!isBuild) { } `) }) -} else { - test('this file only includes test for serve', () => { - expect(true).toBe(true) - }) -} +}) diff --git a/playground/vue-sourcemap/vite.config.js b/playground/vue-sourcemap/vite.config.ts similarity index 62% rename from playground/vue-sourcemap/vite.config.js rename to playground/vue-sourcemap/vite.config.ts index 2a48cad3cb00d4..dbfa81dbeb1144 100644 --- a/playground/vue-sourcemap/vite.config.js +++ b/playground/vue-sourcemap/vite.config.ts @@ -1,9 +1,7 @@ -const vuePlugin = require('@vitejs/plugin-vue') +import vuePlugin from '@vitejs/plugin-vue' +import { defineConfig } from 'vite' -/** - * @type {import('vite').UserConfig} - */ -module.exports = { +export default defineConfig({ css: { devSourcemap: true, preprocessorOptions: { @@ -16,4 +14,4 @@ module.exports = { build: { sourcemap: true } -} +}) diff --git a/playground/vue/__tests__/vue.spec.ts b/playground/vue/__tests__/vue.spec.ts index 0bce5d1e1a03f5..f790bd612bfa9e 100644 --- a/playground/vue/__tests__/vue.spec.ts +++ b/playground/vue/__tests__/vue.spec.ts @@ -1,4 +1,10 @@ -import { editFile, getBg, getColor, isBuild, untilUpdated } from 'testUtils' +import { + editFile, + getBg, + getColor, + isBuild, + untilUpdated +} from '../../testUtils' test('should render', async () => { expect(await page.textContent('h1')).toMatch('Vue SFCs') diff --git a/playground/worker/__tests__/es/es-worker.spec.ts b/playground/worker/__tests__/es/es-worker.spec.ts index 100f57d6620572..90f47e6b695614 100644 --- a/playground/worker/__tests__/es/es-worker.spec.ts +++ b/playground/worker/__tests__/es/es-worker.spec.ts @@ -44,7 +44,7 @@ const waitSharedWorkerTick = ( } )(0) -test.concurrent.each([[true], [false]])('shared worker', async (doTick) => { +test.each([[true], [false]])('shared worker', async (doTick) => { if (doTick) { await page.click('.tick-shared') } diff --git a/playground/worker/__tests__/iife/worker.spec.ts b/playground/worker/__tests__/iife/worker.spec.ts index eb129de4c5ad69..8a22a8d147fbdb 100644 --- a/playground/worker/__tests__/iife/worker.spec.ts +++ b/playground/worker/__tests__/iife/worker.spec.ts @@ -2,6 +2,7 @@ import fs from 'fs' import path from 'path' import { untilUpdated, isBuild, testDir } from '../../../testUtils' import type { Page } from 'playwright-chromium' +import { test } from 'vitest' test('normal', async () => { await page.click('.ping') @@ -44,7 +45,7 @@ const waitSharedWorkerTick = ( } )(0) -test.concurrent.each([[true], [false]])('shared worker', async (doTick) => { +test.each([[true], [false]])('shared worker', async (doTick) => { if (doTick) { await page.click('.tick-shared') } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a8dc5fc6c76c3..6e2ee80a3c46fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: typescript: ^4.6.4 vite: workspace:* vitepress: ^0.22.4 - vitest: ^0.12.1 + vitest: ^0.12.3 devDependencies: '@microsoft/api-extractor': 7.23.1 '@types/babel__core': 7.1.19 @@ -78,7 +78,7 @@ importers: typescript: 4.6.4 vite: link:packages/vite vitepress: 0.22.4 - vitest: 0.12.1 + vitest: 0.12.3 packages/create-vite: specifiers: @@ -7716,8 +7716,8 @@ packages: - react-dom dev: true - /vitest/0.12.1: - resolution: {integrity: sha512-ltTPYmxv4JxZ+2mxnAQ6TnDNRI03oS7qPNFFy9PbQiABkN2ha/a7i7FCrYg3cNmbwD/4cyP7vHnTBv+/or492A==} + /vitest/0.12.3: + resolution: {integrity: sha512-Dc4uJAcnUampdJ6+C8IasrmL+Px+oDhS9gxeHlL9uwUzoM0ae2WydAK9UF2THxHszfZogLGT37atQwOkj1Lqvg==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: diff --git a/scripts/vitestGlobalSetup.ts b/scripts/vitestGlobalSetup.ts index 0ee108761845e9..101f6ede2b9b13 100644 --- a/scripts/vitestGlobalSetup.ts +++ b/scripts/vitestGlobalSetup.ts @@ -22,6 +22,7 @@ export async function setup() { const tempDir = path.resolve(__dirname, '../playground-temp') await fs.ensureDir(tempDir) + await fs.emptyDir(tempDir) await fs .copy(path.resolve(__dirname, '../playground'), tempDir, { dereference: false, diff --git a/scripts/vitestSetup.ts b/scripts/vitestSetup.ts index 74f8374557b035..956a70d2afa1e3 100644 --- a/scripts/vitestSetup.ts +++ b/scripts/vitestSetup.ts @@ -15,7 +15,8 @@ import type { import { createServer, build, mergeConfig } from 'vite' import type { Page, ConsoleMessage } from 'playwright-chromium' import type { RollupError, RollupWatcher, RollupWatcherEvent } from 'rollup' -import { beforeAll, afterAll, File } from 'vitest' +import type { File } from 'vitest' +import { beforeAll } from 'vitest' const isBuildTest = !!process.env.VITE_TEST_BUILD diff --git a/vitest.e2e.config.ts b/vitest.e2e.config.ts index 484016ef77a445..10a18953bf9b05 100644 --- a/vitest.e2e.config.ts +++ b/vitest.e2e.config.ts @@ -6,8 +6,6 @@ export default defineConfig({ setupFiles: ['./scripts/vitestSetup.ts'], globalSetup: ['./scripts/vitestGlobalSetup.ts'], testTimeout: process.env.CI ? 50000 : 20000, - maxThreads: 1, - minThreads: 1, globals: true, reporters: 'dot' }, From 9ad79ad088280370d9742ca4449b4a7c9750d30d Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 10 May 2022 09:28:00 +0800 Subject: [PATCH 07/26] chore: improve tests --- .eslintrc.cjs | 9 +- .../cli-module/__tests__/cli-module.spec.ts | 4 +- .../__tests__/{serve.js => serve.cjs} | 4 +- playground/cli/__tests__/serve.js | 4 +- .../css-sourcemap/__tests__/build.spec.ts | 16 +-- .../env-nested/__tests__/env-nested.spec.ts | 2 +- playground/env/__tests__/env.spec.ts | 2 +- .../js-sourcemap/__tests__/build.spec.ts | 2 +- playground/legacy/__tests__/ssr/serve.js | 4 +- playground/lib/__tests__/serve.js | 2 +- .../optimize-missing-deps/__test__/serve.js | 2 +- playground/ports.js | 5 + playground/resolve-config/__tests__/serve.js | 6 +- playground/ssr-deps/__tests__/serve.js | 2 +- playground/ssr-html/__tests__/serve.js | 2 +- playground/ssr-pug/__tests__/serve.js | 2 +- playground/ssr-react/__tests__/serve.js | 2 +- playground/ssr-vue/__tests__/serve.js | 2 +- playground/ssr-webworker/__tests__/serve.js | 2 +- playground/testUtils.ts | 5 +- playground/vue-lib/__tests__/serve.js | 2 +- .../vue-sourcemap/__tests__/serve.spec.ts | 108 +++++++++--------- scripts/vitestSetup.ts | 7 +- 23 files changed, 97 insertions(+), 99 deletions(-) rename playground/cli-module/__tests__/{serve.js => serve.cjs} (97%) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index beab59a2df5ac9..63a8d282ba9b25 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -29,14 +29,7 @@ module.exports = defineConfig({ 'node/no-missing-import': [ 'error', { - allowModules: [ - 'types', - 'estree', - 'testUtils', - 'less', - 'sass', - 'stylus' - ], + allowModules: ['types', 'estree', 'less', 'sass', 'stylus'], tryExtensions: ['.ts', '.js', '.jsx', '.tsx', '.d.ts'] } ], diff --git a/playground/cli-module/__tests__/cli-module.spec.ts b/playground/cli-module/__tests__/cli-module.spec.ts index e761343298910b..6ed1a4b9f2857a 100644 --- a/playground/cli-module/__tests__/cli-module.spec.ts +++ b/playground/cli-module/__tests__/cli-module.spec.ts @@ -1,4 +1,6 @@ -import { port } from './serve' +import { ports } from '../../ports' + +const port = ports['cli-module'] test('cli should work in "type":"module" package', async () => { // this test uses a custom serve implementation, so regular helpers for browserLogs and goto don't work diff --git a/playground/cli-module/__tests__/serve.js b/playground/cli-module/__tests__/serve.cjs similarity index 97% rename from playground/cli-module/__tests__/serve.js rename to playground/cli-module/__tests__/serve.cjs index cf873fd481830b..4834bcb39b6aa6 100644 --- a/playground/cli-module/__tests__/serve.js +++ b/playground/cli-module/__tests__/serve.cjs @@ -1,11 +1,11 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') // eslint-disable-next-line node/no-restricted-require const execa = require('execa') -const { workspaceRoot, ports } = require('../../testUtils') +const { workspaceRoot, ports } = require('../../ports') const isWindows = process.platform === 'win32' const port = (exports.port = ports['cli-module']) diff --git a/playground/cli/__tests__/serve.js b/playground/cli/__tests__/serve.js index 3ad375d9d1f543..88d3636fcf1173 100644 --- a/playground/cli/__tests__/serve.js +++ b/playground/cli/__tests__/serve.js @@ -1,11 +1,11 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') // eslint-disable-next-line node/no-restricted-require const execa = require('execa') -const { workspaceRoot, ports } = require('../../testUtils') +const { workspaceRoot, ports } = require('../../ports') const isWindows = process.platform === 'win32' const port = (exports.port = ports.cli) diff --git a/playground/css-sourcemap/__tests__/build.spec.ts b/playground/css-sourcemap/__tests__/build.spec.ts index e36c1f52d2c1f8..50b8814aed9c4e 100644 --- a/playground/css-sourcemap/__tests__/build.spec.ts +++ b/playground/css-sourcemap/__tests__/build.spec.ts @@ -1,13 +1,7 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' -if (isBuild) { - test('should not output sourcemap warning (#4939)', () => { - serverLogs.forEach((log) => { - expect(log).not.toMatch('Sourcemap is likely to be incorrect') - }) +test.runIf(isBuild)('should not output sourcemap warning (#4939)', () => { + serverLogs.forEach((log) => { + expect(log).not.toMatch('Sourcemap is likely to be incorrect') }) -} else { - test('this file only includes test for build', () => { - expect(true).toBe(true) - }) -} +}) diff --git a/playground/env-nested/__tests__/env-nested.spec.ts b/playground/env-nested/__tests__/env-nested.spec.ts index 1ceebde7a044b7..ed107acb233e02 100644 --- a/playground/env-nested/__tests__/env-nested.spec.ts +++ b/playground/env-nested/__tests__/env-nested.spec.ts @@ -1,4 +1,4 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' const mode = isBuild ? `production` : `development` diff --git a/playground/env/__tests__/env.spec.ts b/playground/env/__tests__/env.spec.ts index 907cebc8037ce9..cbc0aad524001c 100644 --- a/playground/env/__tests__/env.spec.ts +++ b/playground/env/__tests__/env.spec.ts @@ -1,4 +1,4 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' const mode = isBuild ? `production` : `development` diff --git a/playground/js-sourcemap/__tests__/build.spec.ts b/playground/js-sourcemap/__tests__/build.spec.ts index e36c1f52d2c1f8..c3d1133cbce03e 100644 --- a/playground/js-sourcemap/__tests__/build.spec.ts +++ b/playground/js-sourcemap/__tests__/build.spec.ts @@ -1,4 +1,4 @@ -import { isBuild } from 'testUtils' +import { isBuild } from '../../testUtils' if (isBuild) { test('should not output sourcemap warning (#4939)', () => { diff --git a/playground/legacy/__tests__/ssr/serve.js b/playground/legacy/__tests__/ssr/serve.js index c7ef2ed3520e53..ea4cdf598b5d08 100644 --- a/playground/legacy/__tests__/ssr/serve.js +++ b/playground/legacy/__tests__/ssr/serve.js @@ -1,8 +1,8 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') -const { ports } = require('../../../testUtils') +const { ports } = require('../../../ports') const port = (exports.port = ports['legacy/ssr']) diff --git a/playground/lib/__tests__/serve.js b/playground/lib/__tests__/serve.js index 10de41ed2b1aec..0c72982aab184d 100644 --- a/playground/lib/__tests__/serve.js +++ b/playground/lib/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/optimize-missing-deps/__test__/serve.js b/playground/optimize-missing-deps/__test__/serve.js index 78c992f6a56f02..18c4a375cd6d42 100644 --- a/playground/optimize-missing-deps/__test__/serve.js +++ b/playground/optimize-missing-deps/__test__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ports.js b/playground/ports.js index e06b51c3a11432..d5170b4ab8cc62 100644 --- a/playground/ports.js +++ b/playground/ports.js @@ -1,3 +1,6 @@ +// TODO: migrate to ESM +const path = require('path') + // make sure these ports are unique module.exports.ports = { cli: 9510, @@ -14,3 +17,5 @@ module.exports.ports = { 'css/postcss-caching': 5005, 'css/postcss-plugins-different-dir': 5006 } + +module.exports.workspaceRoot = path.resolve(__dirname, '../') diff --git a/playground/resolve-config/__tests__/serve.js b/playground/resolve-config/__tests__/serve.js index 2c813699fcc828..8f0fe381a0d176 100644 --- a/playground/resolve-config/__tests__/serve.js +++ b/playground/resolve-config/__tests__/serve.js @@ -1,13 +1,13 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') const fs = require('fs-extra') -const { testDir } = require('../../testUtils') +const { workspaceRoot } = require('../../ports') const fromTestDir = (/** @type{string[]} */ ...p) => - path.resolve(testDir(), ...p) + path.resolve(workspaceRoot, 'resolve-config', ...p) const configNames = ['js', 'cjs', 'mjs', 'ts'] diff --git a/playground/ssr-deps/__tests__/serve.js b/playground/ssr-deps/__tests__/serve.js index 72cdf92499cceb..58270b2f7fd11c 100644 --- a/playground/ssr-deps/__tests__/serve.js +++ b/playground/ssr-deps/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ssr-html/__tests__/serve.js b/playground/ssr-html/__tests__/serve.js index e445407795bae8..ef331cc94769ff 100644 --- a/playground/ssr-html/__tests__/serve.js +++ b/playground/ssr-html/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ssr-pug/__tests__/serve.js b/playground/ssr-pug/__tests__/serve.js index 89b26f13b03c2f..53274929fb8001 100644 --- a/playground/ssr-pug/__tests__/serve.js +++ b/playground/ssr-pug/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ssr-react/__tests__/serve.js b/playground/ssr-react/__tests__/serve.js index 216bb201bed9b1..25b2631420bfb0 100644 --- a/playground/ssr-react/__tests__/serve.js +++ b/playground/ssr-react/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ssr-vue/__tests__/serve.js b/playground/ssr-vue/__tests__/serve.js index 4f51c7d505ca2b..f82145bc3f3e4c 100644 --- a/playground/ssr-vue/__tests__/serve.js +++ b/playground/ssr-vue/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/ssr-webworker/__tests__/serve.js b/playground/ssr-webworker/__tests__/serve.js index 2e87e802bd21eb..2d68a9fc3ae3b4 100644 --- a/playground/ssr-webworker/__tests__/serve.js +++ b/playground/ssr-webworker/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior const path = require('path') diff --git a/playground/testUtils.ts b/playground/testUtils.ts index 1a74b18621cd9e..3ab438112a933e 100644 --- a/playground/testUtils.ts +++ b/playground/testUtils.ts @@ -1,6 +1,5 @@ // test utils used in e2e tests for playgrounds. -// this can be directly imported in any playground tests as 'testUtils', e.g. -// `import { getColor } from 'testUtils'` +// `import { getColor } from '../../testUtils'` import fs from 'fs' import path from 'path' @@ -11,6 +10,8 @@ import { normalizePath } from 'vite' import { fromComment } from 'convert-source-map' import { expect } from 'vitest' +export * from './ports' + export function slash(p: string): string { return p.replace(/\\/g, '/') } diff --git a/playground/vue-lib/__tests__/serve.js b/playground/vue-lib/__tests__/serve.js index 73f89eee44ea3e..5816affc1548c6 100644 --- a/playground/vue-lib/__tests__/serve.js +++ b/playground/vue-lib/__tests__/serve.js @@ -1,5 +1,5 @@ // @ts-check -// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// this is automatically detected by scripts/jestPerTestSetup.ts and will replace // the default e2e test serve behavior exports.serve = async function serve() { diff --git a/playground/vue-sourcemap/__tests__/serve.spec.ts b/playground/vue-sourcemap/__tests__/serve.spec.ts index 0f285597de1111..6346485741bc3a 100644 --- a/playground/vue-sourcemap/__tests__/serve.spec.ts +++ b/playground/vue-sourcemap/__tests__/serve.spec.ts @@ -22,20 +22,20 @@ describe.runIf(isServe)('serve:vue-sourcemap', () => { const js = await res.text() const map = extractSourcemap(js) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;AAGP;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;wBARlB,oBAAiB,WAAd,MAAU", - "sources": Array [ + "sources": [ "/root/Js.vue", ], - "sourcesContent": Array [ + "sourcesContent": [ " - + - + @@ -51,20 +51,20 @@ describe.runIf(isServe)('serve:vue-sourcemap', () => { const js = await res.text() const map = extractSourcemap(js) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": ";AAKA,QAAQ,IAAI,WAAW;;;;AAIvB,YAAQ,IAAI,UAAU;;;;;;;;uBARpB,oBAAiB,WAAd,MAAU", - "sources": Array [ + "sources": [ "/root/Ts.vue", ], - "sourcesContent": Array [ + "sourcesContent": [ " - + - + @@ -79,37 +79,37 @@ describe.runIf(isServe)('serve:vue-sourcemap', () => { const css = await getStyleTagContentIncluding('.css ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": ";AAQA;EACE,UAAU;AACZ", - "sources": Array [ + "sources": [ "/root/Css.vue", ], - "sourcesContent": Array [ + "sourcesContent": [ " - + - + - + - + - + - + - + - + - + - + @@ -289,16 +289,16 @@ describe.runIf(isServe)('serve:vue-sourcemap', () => { const css = await getStyleTagContentIncluding('.less ') const map = extractSourcemap(css) expect(formatSourcemapForSnapshot(map)).toMatchInlineSnapshot(` - Object { + { "mappings": "AAKA;EACE", - "sources": Array [ + "sources": [ "/root/Less.vue", ], - "sourcesContent": Array [ + "sourcesContent": [ " - + - + - + - + - + - + - + - + - + - + @@ -298,7 +298,7 @@ describe.runIf(isServe)('serve:vue-sourcemap', () => { " - +