From bf752f97bade4316a358aefcbb0dc048f6f211c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Sun, 17 Jul 2022 09:36:23 +0000 Subject: [PATCH 01/27] refactor: move `coverage.ts` to `coverage/c8.ts` --- .eslintignore | 1 + .gitignore | 1 + packages/vite-node/src/client.ts | 2 +- .../src/integrations/{coverage.ts => coverage/c8.ts} | 8 ++++---- packages/vitest/src/node/config.ts | 2 +- packages/vitest/src/node/core.ts | 2 +- packages/vitest/src/runtime/run.ts | 2 +- 7 files changed, 10 insertions(+), 8 deletions(-) rename packages/vitest/src/integrations/{coverage.ts => coverage/c8.ts} (94%) diff --git a/.eslintignore b/.eslintignore index ecb0c8801995..5891d08ff31e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,5 +4,6 @@ node_modules *.snap *.d.ts coverage +!**/integrations/coverage !.vitepress test/core/src/self \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5168f474f52b..6c53c3a54331 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ yarn-debug.log* yarn-error.log* lib-cov coverage +!**/integrations/coverage node_modules .env .cache diff --git a/packages/vite-node/src/client.ts b/packages/vite-node/src/client.ts index 308f3fa4f232..3b50764c5a44 100644 --- a/packages/vite-node/src/client.ts +++ b/packages/vite-node/src/client.ts @@ -216,7 +216,7 @@ export class ViteNodeRunner { // Be careful when changing this // changing context will change amount of code added on line :114 (vm.runInThisContext) // this messes up sourcemaps for coverage - // adjust `offset` variable in packages/vitest/src/integrations/coverage.ts#L100 if you do change this + // adjust `offset` variable in packages/vitest/src/integrations/coverage/c8.ts#L100 if you do change this const context = this.prepareContext({ // esm transformed by Vite __vite_ssr_import__: request, diff --git a/packages/vitest/src/integrations/coverage.ts b/packages/vitest/src/integrations/coverage/c8.ts similarity index 94% rename from packages/vitest/src/integrations/coverage.ts rename to packages/vitest/src/integrations/coverage/c8.ts index 76c95a476621..bf17a410c4b2 100644 --- a/packages/vitest/src/integrations/coverage.ts +++ b/packages/vitest/src/integrations/coverage/c8.ts @@ -4,10 +4,10 @@ import _url from 'url' import type { Profiler } from 'inspector' import { resolve } from 'pathe' import type { RawSourceMap } from 'vite-node' -import type { Vitest } from '../node' -import { toArray } from '../utils' -import type { C8Options, ResolvedC8Options } from '../types' -import { configDefaults } from '../defaults' +import type { Vitest } from '../../node' +import { toArray } from '../../utils' +import type { C8Options, ResolvedC8Options } from '../../types' +import { configDefaults } from '../../defaults' export function resolveC8Options(options: C8Options, root: string): ResolvedC8Options { const resolved: ResolvedC8Options = { diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index e2543ac6ca7c..685f4192dcec 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -6,7 +6,7 @@ import type { ResolvedConfig as ResolvedViteConfig } from 'vite' import type { ApiConfig, ResolvedConfig, UserConfig } from '../types' import { defaultPort } from '../constants' import { configDefaults } from '../defaults' -import { resolveC8Options } from '../integrations/coverage' +import { resolveC8Options } from '../integrations/coverage/c8' import { toArray } from '../utils' import { VitestCache } from './cache' import { BaseSequencer } from './sequencers/BaseSequencer' diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 49b7e361e9b6..92cb684ed4cd 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -9,7 +9,7 @@ import { ViteNodeServer } from 'vite-node/server' import type { ArgumentsType, Reporter, ResolvedConfig, UserConfig } from '../types' import { SnapshotManager } from '../integrations/snapshot/manager' import { clearTimeout, deepMerge, hasFailed, noop, setTimeout, slash } from '../utils' -import { cleanCoverage, reportCoverage } from '../integrations/coverage' +import { cleanCoverage, reportCoverage } from '../integrations/coverage/c8' import { createPool } from './pool' import type { WorkerPool } from './pool' import { createReporters } from './reporters/utils' diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index 9dcb5601ebe1..def1124e9e54 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -2,7 +2,7 @@ import limit from 'p-limit' import type { File, HookCleanupCallback, HookListener, ResolvedConfig, Suite, SuiteHooks, Task, TaskResult, TaskState, Test } from '../types' import { vi } from '../integrations/vi' import { clearTimeout, getFullName, getWorkerState, hasFailed, hasTests, isBrowser, isNode, partitionSuiteChildren, setTimeout, shuffle } from '../utils' -import { takeCoverage } from '../integrations/coverage' +import { takeCoverage } from '../integrations/coverage/c8' import { getState, setState } from '../integrations/chai/jest-expect' import { GLOBAL_EXPECT } from '../integrations/chai/constants' import { getFn, getHooks } from './map' From 28f0bef987e05c4c787af03bfd1f8e11a558cddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Sun, 17 Jul 2022 11:17:25 +0000 Subject: [PATCH 02/27] refactor: create interface for coverage logic --- packages/vite-node/src/client.ts | 2 +- packages/vitest/src/defaults.ts | 5 +- .../vitest/src/integrations/coverage/base.ts | 13 ++ .../vitest/src/integrations/coverage/c8.ts | 196 ++++++++++-------- .../vitest/src/integrations/coverage/index.ts | 30 +++ packages/vitest/src/node/cli-api.ts | 12 +- packages/vitest/src/node/config.ts | 3 - packages/vitest/src/node/core.ts | 19 +- packages/vitest/src/node/pool.ts | 5 +- packages/vitest/src/runtime/run.ts | 5 +- packages/vitest/src/types/config.ts | 6 +- packages/vitest/src/types/coverage.ts | 27 ++- packages/vitest/src/types/worker.ts | 1 + 13 files changed, 206 insertions(+), 118 deletions(-) create mode 100644 packages/vitest/src/integrations/coverage/base.ts create mode 100644 packages/vitest/src/integrations/coverage/index.ts diff --git a/packages/vite-node/src/client.ts b/packages/vite-node/src/client.ts index 3b50764c5a44..f53e97a3218a 100644 --- a/packages/vite-node/src/client.ts +++ b/packages/vite-node/src/client.ts @@ -216,7 +216,7 @@ export class ViteNodeRunner { // Be careful when changing this // changing context will change amount of code added on line :114 (vm.runInThisContext) // this messes up sourcemaps for coverage - // adjust `offset` variable in packages/vitest/src/integrations/coverage/c8.ts#L100 if you do change this + // adjust `offset` variable in packages/vitest/src/integrations/coverage/c8.ts#86 if you do change this const context = this.prepareContext({ // esm transformed by Vite __vite_ssr_import__: request, diff --git a/packages/vitest/src/defaults.ts b/packages/vitest/src/defaults.ts index 63add24a37dd..54d16961b713 100644 --- a/packages/vitest/src/defaults.ts +++ b/packages/vitest/src/defaults.ts @@ -1,4 +1,4 @@ -import type { ResolvedC8Options, UserConfig } from './types' +import type { ResolvedCoverageOptions, UserConfig } from './types' export const defaultInclude = ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'] export const defaultExclude = ['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**'] @@ -19,6 +19,7 @@ const defaultCoverageExcludes = [ ] const coverageConfigDefaults = { + provider: 'c8', enabled: false, clean: true, cleanOnRerun: false, @@ -30,7 +31,7 @@ const coverageConfigDefaults = { // default extensions used by c8, plus '.vue' and '.svelte' // see https://github.com/istanbuljs/schema/blob/master/default-extension.js extension: ['.js', '.cjs', '.mjs', '.ts', '.tsx', '.jsx', '.vue', '.svelte'], -} as ResolvedC8Options +} as ResolvedCoverageOptions export const fakeTimersDefaults = { loopLimit: 10_000, diff --git a/packages/vitest/src/integrations/coverage/base.ts b/packages/vitest/src/integrations/coverage/base.ts new file mode 100644 index 000000000000..aa83fe5e73d2 --- /dev/null +++ b/packages/vitest/src/integrations/coverage/base.ts @@ -0,0 +1,13 @@ +import type { Vitest } from '../../node' +import type { ResolvedCoverageOptions } from '../../types' + +export interface BaseCoverageProvider { + initialize(ctx: Vitest): Promise | void + + resolveOptions(): ResolvedCoverageOptions + clean(clean?: boolean): void | Promise + + onBeforeFilesRun?(): void | Promise + onAfterAllFilesRun(): void | Promise + onAfterSuiteRun(): void | Promise +} diff --git a/packages/vitest/src/integrations/coverage/c8.ts b/packages/vitest/src/integrations/coverage/c8.ts index bf17a410c4b2..090f0356d7ac 100644 --- a/packages/vitest/src/integrations/coverage/c8.ts +++ b/packages/vitest/src/integrations/coverage/c8.ts @@ -4,112 +4,134 @@ import _url from 'url' import type { Profiler } from 'inspector' import { resolve } from 'pathe' import type { RawSourceMap } from 'vite-node' -import type { Vitest } from '../../node' + import { toArray } from '../../utils' -import type { C8Options, ResolvedC8Options } from '../../types' import { configDefaults } from '../../defaults' +import type { C8Options, ResolvedCoverageOptions } from '../../types' +import type { Vitest } from '../../node' +import type { BaseCoverageProvider } from './base' -export function resolveC8Options(options: C8Options, root: string): ResolvedC8Options { - const resolved: ResolvedC8Options = { - ...configDefaults.coverage, - ...options as any, - } - - resolved.reporter = toArray(resolved.reporter) - resolved.reportsDirectory = resolve(root, resolved.reportsDirectory) - resolved.tempDirectory = process.env.NODE_V8_COVERAGE || resolve(resolved.reportsDirectory, 'tmp') - - return resolved as ResolvedC8Options -} - -export async function cleanCoverage(options: ResolvedC8Options, clean = true) { - if (clean && existsSync(options.reportsDirectory)) - await fs.rm(options.reportsDirectory, { recursive: true, force: true }) +const require = createRequire(import.meta.url) - if (!existsSync(options.tempDirectory)) - await fs.mkdir(options.tempDirectory, { recursive: true }) -} +export class C8CoverageProvider implements BaseCoverageProvider { + ctx!: Vitest + options!: ResolvedCoverageOptions & { provider: 'c8' } -const require = createRequire(import.meta.url) + initialize(ctx: Vitest) { + this.ctx = ctx + this.options = resolveC8Options(ctx.config.coverage, ctx.config.root) + } -// Flush coverage to disk -export function takeCoverage() { - const v8 = require('v8') - if (v8.takeCoverage == null) - console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') - else - v8.takeCoverage() -} + resolveOptions() { + return this.options + } -export async function reportCoverage(ctx: Vitest) { - takeCoverage() + onBeforeFilesRun() { + process.env.NODE_V8_COVERAGE ||= this.options.tempDirectory + } - const createReport = require('c8/lib/report') - const report = createReport(ctx.config.coverage) + async clean(clean = true) { + if (clean && existsSync(this.options.reportsDirectory)) + await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) - // add source maps - const sourceMapMeta: Record = {} - await Promise.all(Array - .from(ctx.vitenode.fetchCache.entries()) - .filter(i => !i[0].includes('/node_modules/')) - .map(async ([file, { result }]) => { - const map = result.map - if (!map) - return + if (!existsSync(this.options.tempDirectory)) + await fs.mkdir(this.options.tempDirectory, { recursive: true }) + } - const url = _url.pathToFileURL(file).href + onAfterSuiteRun() { + C8CoverageProvider.getCoverage() + } - let code: string | undefined - try { - code = (await fs.readFile(file)).toString() - } - catch {} - - // Vite does not report full path in sourcemap sources - // so use an actual file path - const sources = [url] - - sourceMapMeta[url] = { - source: result.code, - map: { - sourcesContent: code ? [code] : undefined, - ...map, - sources, + async onAfterAllFilesRun() { + C8CoverageProvider.getCoverage() + + const createReport = require('c8/lib/report') + const report = createReport(this.ctx.config.coverage) + + // add source maps + const sourceMapMeta: Record = {} + await Promise.all(Array + .from(this.ctx.vitenode.fetchCache.entries()) + .filter(i => !i[0].includes('/node_modules/')) + .map(async ([file, { result }]) => { + const map = result.map + if (!map) + return + + const url = _url.pathToFileURL(file).href + + let code: string | undefined + try { + code = (await fs.readFile(file)).toString() + } + catch {} + + // Vite does not report full path in sourcemap sources + // so use an actual file path + const sources = [url] + + sourceMapMeta[url] = { + source: result.code, + map: { + sourcesContent: code ? [code] : undefined, + ...map, + sources, + }, + } + })) + + // This is a magic number. It corresponds to the amount of code + // that we add in packages/vite-node/src/client.ts:114 (vm.runInThisContext) + // TODO: Include our transformations in sourcemaps + const offset = 224 + + report._getSourceMap = (coverage: Profiler.ScriptCoverage) => { + const path = _url.pathToFileURL(coverage.url).href + const data = sourceMapMeta[path] + + if (!data) + return {} + + return { + sourceMap: { + sourcemap: data.map, }, + source: Array(offset).fill('.').join('') + data.source, } - })) + } - // This is a magic number. It corresponds to the amount of code - // that we add in packages/vite-node/src/client.ts:114 (vm.runInThisContext) - // TODO: Include our transformations in sourcemaps - const offset = 224 + await report.run() - report._getSourceMap = (coverage: Profiler.ScriptCoverage) => { - const path = _url.pathToFileURL(coverage.url).href - const data = sourceMapMeta[path] + const { checkCoverages } = require('c8/lib/commands/check-coverage') + await checkCoverages(this.options, report) + } - if (!data) - return {} + // Flush coverage to disk + static getCoverage() { + const v8 = require('v8') + if (v8.takeCoverage == null) + console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') + else + v8.takeCoverage() + } +} - return { - sourceMap: { - sourcemap: data.map, - }, - source: Array(offset).fill('.').join('') + data.source, - } +function resolveC8Options(options: C8Options, root: string) { + const resolved = { + ...configDefaults.coverage, + ...options as any, } - await report.run() + if (options['100']) { + resolved.lines = 100 + resolved.functions = 100 + resolved.branches = 100 + resolved.statements = 100 + } - if (ctx.config.coverage.enabled) { - if (ctx.config.coverage['100']) { - ctx.config.coverage.lines = 100 - ctx.config.coverage.functions = 100 - ctx.config.coverage.branches = 100 - ctx.config.coverage.statements = 100 - } + resolved.reporter = toArray(resolved.reporter) + resolved.reportsDirectory = resolve(root, resolved.reportsDirectory) + resolved.tempDirectory = process.env.NODE_V8_COVERAGE || resolve(resolved.reportsDirectory, 'tmp') - const { checkCoverages } = require('c8/lib/commands/check-coverage') - await checkCoverages(ctx.config.coverage, report) - } + return resolved } diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage/index.ts new file mode 100644 index 000000000000..d9928fb37d8e --- /dev/null +++ b/packages/vitest/src/integrations/coverage/index.ts @@ -0,0 +1,30 @@ +import type { CoverageOptions } from '../../types' + +import type { BaseCoverageProvider } from './base' +import { C8CoverageProvider } from './c8' + +const CoverageProviderMap: Record< + NonNullable, + { new(): BaseCoverageProvider; getCoverage(): any } +> = { + c8: C8CoverageProvider, +} + +export function getCoverageProvider(options?: CoverageOptions): BaseCoverageProvider { + if (options?.enabled && options?.provider) { + const CoverageProvider = CoverageProviderMap[options.provider] + + return new CoverageProvider() + } + + // TODO: Return NullCoverageProvider + return new C8CoverageProvider() +} + +export function getCoverageInsideWorker(options: CoverageOptions) { + if (options.enabled && options.provider) { + const CoverageProvider = CoverageProviderMap[options.provider] + + return CoverageProvider.getCoverage() + } +} diff --git a/packages/vitest/src/node/cli-api.ts b/packages/vitest/src/node/cli-api.ts index db60a81381b3..b3c124758547 100644 --- a/packages/vitest/src/node/cli-api.ts +++ b/packages/vitest/src/node/cli-api.ts @@ -37,9 +37,15 @@ export async function startVitest(cliFilters: string[], options: CliOptions, vit const ctx = await createVitest(options, viteOverrides) if (ctx.config.coverage.enabled) { - if (!await ensurePackageInstalled('c8', root)) { - process.exitCode = 1 - return false + const requiredPackages = ctx.config.coverage.provider === 'c8' + ? ['c8'] + : [] + + for (const pkg of requiredPackages) { + if (!await ensurePackageInstalled(pkg, root)) { + process.exitCode = 1 + return false + } } } diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index 685f4192dcec..4e1b6ddba6cc 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -6,7 +6,6 @@ import type { ResolvedConfig as ResolvedViteConfig } from 'vite' import type { ApiConfig, ResolvedConfig, UserConfig } from '../types' import { defaultPort } from '../constants' import { configDefaults } from '../defaults' -import { resolveC8Options } from '../integrations/coverage/c8' import { toArray } from '../utils' import { VitestCache } from './cache' import { BaseSequencer } from './sequencers/BaseSequencer' @@ -93,8 +92,6 @@ export function resolveConfig( if (viteConfig.base !== '/') resolved.base = viteConfig.base - resolved.coverage = resolveC8Options(options.coverage || {}, resolved.root) - if (options.shard) { if (resolved.watch) throw new Error('You cannot use --shard option with enabled watch') diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 92cb684ed4cd..bab308f9cdf7 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -9,7 +9,8 @@ import { ViteNodeServer } from 'vite-node/server' import type { ArgumentsType, Reporter, ResolvedConfig, UserConfig } from '../types' import { SnapshotManager } from '../integrations/snapshot/manager' import { clearTimeout, deepMerge, hasFailed, noop, setTimeout, slash } from '../utils' -import { cleanCoverage, reportCoverage } from '../integrations/coverage/c8' +import type { BaseCoverageProvider } from '../integrations/coverage/base' +import { getCoverageProvider } from '../integrations/coverage' import { createPool } from './pool' import type { WorkerPool } from './pool' import { createReporters } from './reporters/utils' @@ -29,6 +30,7 @@ export class Vitest { snapshot: SnapshotManager = undefined! cache: VitestCache = undefined! reporters: Reporter[] = undefined! + coverageProvider: BaseCoverageProvider = undefined! logger: Logger pool: WorkerPool | undefined @@ -82,12 +84,17 @@ export class Vitest { this.reporters = await createReporters(resolved.reporters, this.runner) + this.coverageProvider = getCoverageProvider(options.coverage) + this.coverageProvider.initialize(this) + + this.config.coverage = this.coverageProvider.resolveOptions() + this.runningPromise = undefined this._onRestartListeners.forEach(fn => fn()) - if (resolved.coverage.enabled) - await cleanCoverage(resolved.coverage, resolved.coverage.clean) + if (this.config.coverage.enabled) + await this.coverageProvider.clean(this.config.coverage.clean) this.cache.results.setConfig(resolved.root, resolved.cache) try { @@ -137,7 +144,7 @@ export class Vitest { await this.runFiles(files) if (this.config.coverage.enabled) - await reportCoverage(this) + await this.coverageProvider.onAfterAllFilesRun() if (this.config.watch && !this.config.browser) await this.report('onWatcherStart') @@ -322,14 +329,14 @@ export class Vitest { this.changedTests.clear() if (this.config.coverage.enabled && this.config.coverage.cleanOnRerun) - await cleanCoverage(this.config.coverage) + await this.coverageProvider.clean() await this.report('onWatcherRerun', files, triggerId) await this.runFiles(files) if (this.config.coverage.enabled) - await reportCoverage(this) + await this.coverageProvider.onAfterAllFilesRun() if (!this.config.browser) await this.report('onWatcherStart') diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index 0f1b116b8755..3f9557d1d0cf 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -65,7 +65,7 @@ export function createPool(ctx: Vitest): WorkerPool { } if (ctx.config.coverage.enabled) - process.env.NODE_V8_COVERAGE ||= ctx.config.coverage.tempDirectory + ctx.coverageProvider.onBeforeFilesRun?.() options.env = { TEST: 'true', @@ -171,6 +171,9 @@ function createChannel(ctx: Vitest) { ctx.state.collectFiles(files) ctx.report('onCollected', files) }, + onFilesRun() { + ctx.coverageProvider.onAfterSuiteRun() + }, onTaskUpdate(packs) { ctx.state.updateTasks(packs) ctx.report('onTaskUpdate', packs) diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index def1124e9e54..7654b55d0eff 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -2,9 +2,9 @@ import limit from 'p-limit' import type { File, HookCleanupCallback, HookListener, ResolvedConfig, Suite, SuiteHooks, Task, TaskResult, TaskState, Test } from '../types' import { vi } from '../integrations/vi' import { clearTimeout, getFullName, getWorkerState, hasFailed, hasTests, isBrowser, isNode, partitionSuiteChildren, setTimeout, shuffle } from '../utils' -import { takeCoverage } from '../integrations/coverage/c8' import { getState, setState } from '../integrations/chai/jest-expect' import { GLOBAL_EXPECT } from '../integrations/chai/constants' +import { getCoverageInsideWorker } from '../integrations/coverage' import { getFn, getHooks } from './map' import { rpc } from './rpc' import { collectTests } from './collect' @@ -316,7 +316,8 @@ async function startTestsNode(paths: string[], config: ResolvedConfig) { await runFiles(files, config) - takeCoverage() + getCoverageInsideWorker(config.coverage) + rpc().onFilesRun() await getSnapshotClient().saveCurrent() diff --git a/packages/vitest/src/types/config.ts b/packages/vitest/src/types/config.ts index 8258f24262f7..aa63e8274e8f 100644 --- a/packages/vitest/src/types/config.ts +++ b/packages/vitest/src/types/config.ts @@ -3,7 +3,7 @@ import type { PrettyFormatOptions } from 'pretty-format' import type { FakeTimerInstallOpts } from '@sinonjs/fake-timers' import type { BuiltinReporters } from '../node/reporters' import type { TestSequencerConstructor } from '../node/sequencers/types' -import type { C8Options, ResolvedC8Options } from './coverage' +import type { CoverageOptions, ResolvedCoverageOptions } from './coverage' import type { JSDOMOptions } from './jsdom-options' import type { Reporter } from './reporter' import type { SnapshotStateOptions } from './snapshot' @@ -242,7 +242,7 @@ export interface InlineConfig { /** * Coverage options */ - coverage?: C8Options + coverage?: CoverageOptions /** * run test names with the specified pattern @@ -478,7 +478,7 @@ export interface ResolvedConfig extends Omit, 'config' | 'f testNamePattern?: RegExp related?: string[] - coverage: ResolvedC8Options + coverage: ResolvedCoverageOptions snapshotOptions: SnapshotStateOptions reporters: (Reporter | BuiltinReporters)[] diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index f65cfac9a44c..26fe7200e3d5 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -15,29 +15,36 @@ export type CoverageReporter = | 'text-summary' | 'text' -export interface C8Options { +export type CoverageOptions = C8Options & { provider?: 'c8' } + +interface BaseCoverageOptions { /** * Enable coverage, pass `--coverage` to enable * * @default false */ enabled?: boolean + + /** + * Clean coverage report on watch rerun + * + * @default false + */ + cleanOnRerun?: boolean + /** * Directory to write coverage report to */ reportsDirectory?: string +} + +export interface C8Options extends BaseCoverageOptions { /** * Clean coverage before running tests * * @default true */ clean?: boolean - /** - * Clean coverage report on watch rerun - * - * @default false - */ - cleanOnRerun?: boolean /** * Check thresholds per file * @@ -77,6 +84,6 @@ export interface C8Options { statements?: number } -export interface ResolvedC8Options extends Required { - tempDirectory: string -} +export type ResolvedCoverageOptions = + & { tempDirectory: string } + & Required diff --git a/packages/vitest/src/types/worker.ts b/packages/vitest/src/types/worker.ts index 2e49a77c1866..68eff9c88bfb 100644 --- a/packages/vitest/src/types/worker.ts +++ b/packages/vitest/src/types/worker.ts @@ -28,6 +28,7 @@ export interface WorkerRPC { onUserConsoleLog: (log: UserConsoleLog) => void onUnhandledRejection: (err: unknown) => void onCollected: (files: File[]) => void + onFilesRun: () => void onTaskUpdate: (pack: TaskResultPack[]) => void snapshotSaved: (snapshot: SnapshotResult) => void From d98028f67bb55e844541baa70dd67553727509c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Fri, 22 Jul 2022 11:14:46 +0000 Subject: [PATCH 03/27] refactor: add `NullCoverageProvider` to handled disabled coverage --- .../coverage/NullCoverageProvider.ts | 20 +++++++++++++++++++ .../vitest/src/integrations/coverage/index.ts | 5 ++--- packages/vitest/src/node/core.ts | 11 ++++------ packages/vitest/src/node/pool.ts | 3 +-- packages/vitest/src/types/coverage.ts | 15 +++++++++++++- 5 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 packages/vitest/src/integrations/coverage/NullCoverageProvider.ts diff --git a/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts b/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts new file mode 100644 index 000000000000..c85055bd8e41 --- /dev/null +++ b/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts @@ -0,0 +1,20 @@ +import type { ResolvedCoverageOptions } from '../../types' +import type { BaseCoverageProvider } from './base' + +export class NullCoverageProvider implements BaseCoverageProvider { + resolveOptions(): ResolvedCoverageOptions { + return { + provider: null, + enabled: false, + clean: false, + cleanOnRerun: false, + reportsDirectory: 'coverage', + tempDirectory: 'coverage/tmp', + } + } + + initialize() {} + clean() {} + onAfterAllFilesRun() {} + onAfterSuiteRun() {} +} diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage/index.ts index d9928fb37d8e..3efe3ccff372 100644 --- a/packages/vitest/src/integrations/coverage/index.ts +++ b/packages/vitest/src/integrations/coverage/index.ts @@ -1,7 +1,7 @@ import type { CoverageOptions } from '../../types' - import type { BaseCoverageProvider } from './base' import { C8CoverageProvider } from './c8' +import { NullCoverageProvider } from './NullCoverageProvider' const CoverageProviderMap: Record< NonNullable, @@ -17,8 +17,7 @@ export function getCoverageProvider(options?: CoverageOptions): BaseCoverageProv return new CoverageProvider() } - // TODO: Return NullCoverageProvider - return new C8CoverageProvider() + return new NullCoverageProvider() } export function getCoverageInsideWorker(options: CoverageOptions) { diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index bab308f9cdf7..f35639bef7a4 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -93,8 +93,7 @@ export class Vitest { this._onRestartListeners.forEach(fn => fn()) - if (this.config.coverage.enabled) - await this.coverageProvider.clean(this.config.coverage.clean) + await this.coverageProvider.clean(this.config.coverage.clean) this.cache.results.setConfig(resolved.root, resolved.cache) try { @@ -143,8 +142,7 @@ export class Vitest { await this.runFiles(files) - if (this.config.coverage.enabled) - await this.coverageProvider.onAfterAllFilesRun() + await this.coverageProvider.onAfterAllFilesRun() if (this.config.watch && !this.config.browser) await this.report('onWatcherStart') @@ -328,15 +326,14 @@ export class Vitest { const files = Array.from(this.changedTests) this.changedTests.clear() - if (this.config.coverage.enabled && this.config.coverage.cleanOnRerun) + if (this.config.coverage.cleanOnRerun) await this.coverageProvider.clean() await this.report('onWatcherRerun', files, triggerId) await this.runFiles(files) - if (this.config.coverage.enabled) - await this.coverageProvider.onAfterAllFilesRun() + await this.coverageProvider.onAfterAllFilesRun() if (!this.config.browser) await this.report('onWatcherStart') diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index 3f9557d1d0cf..a134870f5a53 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -64,8 +64,7 @@ export function createPool(ctx: Vitest): WorkerPool { options.minThreads = 1 } - if (ctx.config.coverage.enabled) - ctx.coverageProvider.onBeforeFilesRun?.() + ctx.coverageProvider.onBeforeFilesRun?.() options.env = { TEST: 'true', diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index 26fe7200e3d5..1fe8daec5ac6 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -15,7 +15,9 @@ export type CoverageReporter = | 'text-summary' | 'text' -export type CoverageOptions = C8Options & { provider?: 'c8' } +export type CoverageOptions = + | NullCoverageOptions & { provider?: null } + | C8Options & { provider?: 'c8' } interface BaseCoverageOptions { /** @@ -25,6 +27,13 @@ interface BaseCoverageOptions { */ enabled?: boolean + /** + * Clean coverage before running tests + * + * @default true + */ + clean?: boolean + /** * Clean coverage report on watch rerun * @@ -38,6 +47,10 @@ interface BaseCoverageOptions { reportsDirectory?: string } +export interface NullCoverageOptions extends BaseCoverageOptions { + enabled: false +} + export interface C8Options extends BaseCoverageOptions { /** * Clean coverage before running tests From 7e203011e1e5a0cd3bcb0381425ed97ebd3ed265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Tue, 19 Jul 2022 09:25:46 +0000 Subject: [PATCH 04/27] feat: support `istanbul` coverage provider --- packages/vitest/package.json | 5 + .../coverage/NullCoverageProvider.ts | 8 + .../vitest/src/integrations/coverage/base.ts | 10 +- .../vitest/src/integrations/coverage/index.ts | 2 + .../src/integrations/coverage/istanbul.ts | 212 ++++++++++++++++++ packages/vitest/src/node/cli-api.ts | 15 +- packages/vitest/src/node/plugins/index.ts | 2 + .../vitest/src/node/plugins/instrumenter.ts | 13 ++ packages/vitest/src/node/pool.ts | 4 +- packages/vitest/src/runtime/run.ts | 4 +- packages/vitest/src/types/coverage.ts | 76 +++++-- packages/vitest/src/types/worker.ts | 2 +- pnpm-lock.yaml | 20 +- 13 files changed, 342 insertions(+), 31 deletions(-) create mode 100644 packages/vitest/src/integrations/coverage/istanbul.ts create mode 100644 packages/vitest/src/node/plugins/instrumenter.ts diff --git a/packages/vitest/package.json b/packages/vitest/package.json index ee0c7c1f66a3..05c2a2403a4a 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -127,6 +127,11 @@ "find-up": "^6.3.0", "flatted": "^3.2.6", "happy-dom": "^6.0.4", + "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.5", "jsdom": "^20.0.0", "log-update": "^5.0.1", "magic-string": "^0.26.2", diff --git a/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts b/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts index c85055bd8e41..3b4a389cd1bf 100644 --- a/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts +++ b/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts @@ -10,6 +10,14 @@ export class NullCoverageProvider implements BaseCoverageProvider { cleanOnRerun: false, reportsDirectory: 'coverage', tempDirectory: 'coverage/tmp', + reporter: [], + exclude: [], + skipFull: true, + branches: 0, + functions: 0, + lines: 0, + statements: 0, + perFile: false, } } diff --git a/packages/vitest/src/integrations/coverage/base.ts b/packages/vitest/src/integrations/coverage/base.ts index aa83fe5e73d2..b82b7cb7ac4a 100644 --- a/packages/vitest/src/integrations/coverage/base.ts +++ b/packages/vitest/src/integrations/coverage/base.ts @@ -1,3 +1,5 @@ +import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' + import type { Vitest } from '../../node' import type { ResolvedCoverageOptions } from '../../types' @@ -9,5 +11,11 @@ export interface BaseCoverageProvider { onBeforeFilesRun?(): void | Promise onAfterAllFilesRun(): void | Promise - onAfterSuiteRun(): void | Promise + onAfterSuiteRun(collectedCoverage: any): void | Promise + + onFileTransform?( + sourceCode: string, + id: string, + pluginCtx: TransformPluginContext + ): void | { code: string; map: ExistingRawSourceMap } } diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage/index.ts index 3efe3ccff372..bb75af0349ce 100644 --- a/packages/vitest/src/integrations/coverage/index.ts +++ b/packages/vitest/src/integrations/coverage/index.ts @@ -1,6 +1,7 @@ import type { CoverageOptions } from '../../types' import type { BaseCoverageProvider } from './base' import { C8CoverageProvider } from './c8' +import { IstanbulCoverageProvider } from './istanbul' import { NullCoverageProvider } from './NullCoverageProvider' const CoverageProviderMap: Record< @@ -8,6 +9,7 @@ const CoverageProviderMap: Record< { new(): BaseCoverageProvider; getCoverage(): any } > = { c8: C8CoverageProvider, + istanbul: IstanbulCoverageProvider, } export function getCoverageProvider(options?: CoverageOptions): BaseCoverageProvider { diff --git a/packages/vitest/src/integrations/coverage/istanbul.ts b/packages/vitest/src/integrations/coverage/istanbul.ts new file mode 100644 index 000000000000..37ba15f33ab5 --- /dev/null +++ b/packages/vitest/src/integrations/coverage/istanbul.ts @@ -0,0 +1,212 @@ +import { existsSync, promises as fs } from 'fs' +import { createRequire } from 'module' +import { relative, resolve } from 'pathe' +import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' + +import { configDefaults, defaultExclude, defaultInclude } from '../../defaults' +import type { Vitest } from '../../node' +import type { IstanbulOptions, ResolvedCoverageOptions } from '../../types' +import type { BaseCoverageProvider } from './base' + +const require = createRequire(import.meta.url) +const coverageVariable = '__VITEST_COVERAGE__' + +interface Instrumenter { + instrumentSync( + code: string, + filename: string, + inputSourceMap: object + ): string + lastSourceMap(): ExistingRawSourceMap +} + +type Threshold = 'lines' | 'functions' | 'statements' | 'branches' + +interface CoverageSummary { + data: { [key in Threshold]: { pct: number } } +} + +interface CoverageMap { + files: () => string[] + fileCoverageFor: (file: string) => { toSummary: () => CoverageSummary } + getCoverageSummary: () => CoverageSummary +} + +interface TestExclude { + new(opts: { + cwd?: string | string[] + include?: string | string[] + exclude?: string | string[] + extension?: string | string[] + excludeNodeModules?: boolean + }): { shouldInstrument(filePath: string): boolean } +} + +export class IstanbulCoverageProvider implements BaseCoverageProvider { + ctx!: Vitest + options!: ResolvedCoverageOptions & { provider: 'istanbul' } + instrumenter!: Instrumenter + testExclude!: InstanceType + + /** + * Coverage objects collected from workers. + * Some istanbul utilizers write these into file system instead of storing in memory. + * If storing in memory causes issues, we can simply write these into fs in `onAfterSuiteRun` + * and read them back when merging coverage objects in `onAfterAllFilesRun`. + */ + coverages: any[] = [] + + initialize(ctx: Vitest) { + this.ctx = ctx + this.options = resolveIstanbulOptions(ctx.config.coverage, ctx.config.root) + + const { createInstrumenter } = require('istanbul-lib-instrument') + this.instrumenter = createInstrumenter({ + produceSourceMap: true, + autoWrap: false, + esModules: true, + coverageVariable, + coverageGlobalScope: 'globalThis', + coverageGlobalScopeFunc: false, + ignoreClassMethods: this.options.ignoreClassMethods, + }) + + const TestExclude = require('test-exclude') + this.testExclude = new TestExclude({ + cwd: ctx.config.root, + exclude: [...defaultExclude, ...defaultInclude, ...this.options.exclude], + excludeNodeModules: true, + + // @ts-expect-error -- extension is not typed in configDefaults for some reason + extension: configDefaults.coverage.extension, + }) + } + + resolveOptions(): ResolvedCoverageOptions { + return this.options + } + + onFileTransform(sourceCode: string, id: string, pluginCtx: TransformPluginContext) { + if (!this.testExclude.shouldInstrument(id)) + return + + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- ignoreRestSiblings should be enabled + const { sourcesContent, ...sourceMap } = pluginCtx.getCombinedSourcemap() + const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap) + const map = this.instrumenter.lastSourceMap() + + return { code, map } + } + + onAfterSuiteRun(coverage: any) { + this.coverages.push(coverage) + } + + async clean(clean = true) { + if (clean && existsSync(this.options.reportsDirectory)) + await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) + + this.coverages = [] + } + + async onAfterAllFilesRun() { + const libReport = require('istanbul-lib-report') + const reports = require('istanbul-reports') + const libCoverage = require('istanbul-lib-coverage') + const libSourceMaps = require('istanbul-lib-source-maps') + + const mergedCoverage = this.coverages.reduce((coverage, previousCoverageMap) => { + const map = libCoverage.createCoverageMap(coverage) + map.merge(previousCoverageMap) + + return map + }, {}) + + const sourceMapStore = libSourceMaps.createSourceMapStore() + const coverageMap: CoverageMap = await sourceMapStore.transformCoverage(mergedCoverage) + + const context = libReport.createContext({ + dir: this.options.reportsDirectory, + coverageMap, + sourceFinder: sourceMapStore.sourceFinder, + watermarks: this.options.watermarks, + }) + + for (const reporter of this.options.reporter) { + reports.create(reporter, { + skipFull: this.options.skipFull, + }).execute(context) + } + + if (this.options.branches + || this.options.functions + || this.options.lines + || this.options.statements) { + this.checkThresholds(coverageMap, { + branches: this.options.branches, + functions: this.options.functions, + lines: this.options.lines, + statements: this.options.statements, + }) + } + } + + checkThresholds(coverageMap: CoverageMap, thresholds: Record) { + // Construct list of coverage summaries where thresholds are compared against + const summaries = this.options.perFile + ? coverageMap.files().map((file: string) => ({ file, summary: coverageMap.fileCoverageFor(file).toSummary() })) + : [{ summary: coverageMap.getCoverageSummary(), file: null }] + + // Check thresholds of each summary + for (const { summary, file } of summaries) { + for (const thresholdKey of ['lines', 'functions', 'statements', 'branches'] as const) { + const threshold = thresholds[thresholdKey] + + if (threshold !== undefined) { + const coverage = summary.data[thresholdKey].pct + + if (coverage < threshold) { + process.exitCode = 1 + + /* + * Generate error message based on perFile flag: + * - ERROR: Coverage for statements (33.33%) does not meet threshold (85%) for src/math.ts + * - ERROR: Coverage for statements (50%) does not meet global threshold (85%) + */ + let errorMessage = `ERROR: Coverage for ${thresholdKey} (${coverage}%) does not meet` + + if (!this.options.perFile) + errorMessage += ' global' + + errorMessage += ` threshold (${threshold}%)` + + if (this.options.perFile && file) + errorMessage += ` for ${relative('./', file).replace(/\\/g, '/')}` + + console.error(errorMessage) + } + } + } + } + } + + static getCoverage() { + // @ts-expect-error -- untyped global + return globalThis[coverageVariable] + } +} + +function resolveIstanbulOptions(options: IstanbulOptions, root: string) { + const reportsDirectory = resolve(root, options.reportsDirectory || configDefaults.coverage.reportsDirectory!) + + const resolved = { + ...configDefaults.coverage, + ...options, + + provider: 'istanbul', + reportsDirectory, + tempDirectory: resolve(reportsDirectory, 'tmp'), + } + + return resolved as ResolvedCoverageOptions & { provider: 'istanbul' } +} diff --git a/packages/vitest/src/node/cli-api.ts b/packages/vitest/src/node/cli-api.ts index b3c124758547..566cddaffb98 100644 --- a/packages/vitest/src/node/cli-api.ts +++ b/packages/vitest/src/node/cli-api.ts @@ -37,9 +37,18 @@ export async function startVitest(cliFilters: string[], options: CliOptions, vit const ctx = await createVitest(options, viteOverrides) if (ctx.config.coverage.enabled) { - const requiredPackages = ctx.config.coverage.provider === 'c8' - ? ['c8'] - : [] + // TODO: Requring all these packages to be installed by users may be too much + const requiredPackages = ctx.config.coverage.provider === 'istanbul' + ? [ + 'istanbul-lib-coverage', + 'istanbul-lib-instrument', + 'istanbul-lib-report', + 'istanbul-reports', + 'istanbul-lib-source-maps', + ] + : ctx.config.coverage.provider === 'c8' + ? ['c8'] + : [] for (const pkg of requiredPackages) { if (!await ensurePackageInstalled(pkg, root)) { diff --git a/packages/vitest/src/node/plugins/index.ts b/packages/vitest/src/node/plugins/index.ts index d722baa94939..72e57ef34eff 100644 --- a/packages/vitest/src/node/plugins/index.ts +++ b/packages/vitest/src/node/plugins/index.ts @@ -8,6 +8,7 @@ import { EnvReplacerPlugin } from './envRelacer' import { GlobalSetupPlugin } from './globalSetup' import { MocksPlugin } from './mock' import { CSSEnablerPlugin } from './cssEnabler' +import { InstrumenterPlugin } from './instrumenter' export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest()): Promise { let haveStarted = false @@ -169,6 +170,7 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest()) ? await BrowserPlugin() : []), CSSEnablerPlugin(ctx), + InstrumenterPlugin(ctx), options.ui ? await UIPlugin() : null, diff --git a/packages/vitest/src/node/plugins/instrumenter.ts b/packages/vitest/src/node/plugins/instrumenter.ts new file mode 100644 index 000000000000..7edbfb3d2727 --- /dev/null +++ b/packages/vitest/src/node/plugins/instrumenter.ts @@ -0,0 +1,13 @@ +import type { Plugin as VitePlugin } from 'vite' + +import type { Vitest } from '../core' + +export function InstrumenterPlugin(ctx: Vitest): VitePlugin | null { + return { + name: 'vitest:instrumenter', + + transform(srcCode, id) { + return ctx.coverageProvider?.onFileTransform?.(srcCode, id, this) + }, + } +} diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index a134870f5a53..7bfac6f07d8b 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -170,8 +170,8 @@ function createChannel(ctx: Vitest) { ctx.state.collectFiles(files) ctx.report('onCollected', files) }, - onFilesRun() { - ctx.coverageProvider.onAfterSuiteRun() + onFilesRun(coverage: any) { + ctx.coverageProvider.onAfterSuiteRun(coverage) }, onTaskUpdate(packs) { ctx.state.updateTasks(packs) diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index 7654b55d0eff..b4cdb4267eca 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -316,8 +316,8 @@ async function startTestsNode(paths: string[], config: ResolvedConfig) { await runFiles(files, config) - getCoverageInsideWorker(config.coverage) - rpc().onFilesRun() + const coverage = getCoverageInsideWorker(config.coverage) + rpc().onFilesRun(coverage) await getSnapshotClient().saveCurrent() diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index 1fe8daec5ac6..7782be4244c7 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -18,6 +18,7 @@ export type CoverageReporter = export type CoverageOptions = | NullCoverageOptions & { provider?: null } | C8Options & { provider?: 'c8' } + | IstanbulOptions & { provider?: 'istanbul' } interface BaseCoverageOptions { /** @@ -45,56 +46,89 @@ interface BaseCoverageOptions { * Directory to write coverage report to */ reportsDirectory?: string -} - -export interface NullCoverageOptions extends BaseCoverageOptions { - enabled: false -} -export interface C8Options extends BaseCoverageOptions { /** - * Clean coverage before running tests + * Reporters * - * @default true + * @default 'text' */ - clean?: boolean + reporter?: Arrayable + + /** + * List of files excluded from coverage as glob patterns + */ + exclude?: string[] + + /** + * Do not show files with 100% statement, branch, and function coverage + */ + skipFull?: boolean + /** * Check thresholds per file * * @default false */ perFile?: boolean + + /** + * Threshold for lines + */ + lines?: number + + /** + * Threshold for functions + */ + functions?: number + + /** + * Threshold for branches + */ + branches?: number + + /** + * Threshold for statements + */ + statements?: number +} + +export interface NullCoverageOptions extends BaseCoverageOptions { + enabled: false +} + +export interface IstanbulOptions extends BaseCoverageOptions { + /* Set to array of class method names to ignore for coverage */ + ignoreClassMethods?: string[] + + /* Watermarks for statements, lines, branches and functions */ + watermarks?: { + statements?: [number, number] + functions?: [number, number] + branches?: [number, number] + lines?: [number, number] + } +} + +export interface C8Options extends BaseCoverageOptions { /** * Allow files from outside of your cwd. * * @default false */ allowExternal?: any - /** - * Reporters - * - * @default 'text' - */ - reporter?: Arrayable /** * Exclude coverage under /node_modules/ * * @default true */ excludeNodeModules?: boolean - exclude?: string[] include?: string[] - skipFull?: boolean extension?: string | string[] all?: boolean src?: string[] 100?: boolean - lines?: number - functions?: number - branches?: number - statements?: number } export type ResolvedCoverageOptions = diff --git a/packages/vitest/src/types/worker.ts b/packages/vitest/src/types/worker.ts index 68eff9c88bfb..26d4daf48157 100644 --- a/packages/vitest/src/types/worker.ts +++ b/packages/vitest/src/types/worker.ts @@ -28,7 +28,7 @@ export interface WorkerRPC { onUserConsoleLog: (log: UserConsoleLog) => void onUnhandledRejection: (err: unknown) => void onCollected: (files: File[]) => void - onFilesRun: () => void + onFilesRun: (coverage: any) => void onTaskUpdate: (pack: TaskResultPack[]) => void snapshotSaved: (snapshot: SnapshotResult) => void diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 805b2e7b5db1..5ac4cb065c71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -712,6 +712,11 @@ importers: find-up: ^6.3.0 flatted: ^3.2.6 happy-dom: ^6.0.4 + 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.5 jsdom: ^20.0.0 local-pkg: ^0.4.2 log-update: ^5.0.1 @@ -767,6 +772,11 @@ importers: find-up: 6.3.0 flatted: 3.2.6 happy-dom: 6.0.4 + 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.5 jsdom: 20.0.0 log-update: 5.0.1 magic-string: 0.26.2 @@ -9980,7 +9990,7 @@ packages: foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.4 + istanbul-reports: 3.1.5 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 9.0.0 @@ -14702,6 +14712,14 @@ packages: istanbul-lib-report: 3.0.0 dev: true + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + /iterate-iterator/1.0.2: resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} dev: true From 0126cf49f7dd64b89d0e564d71c2541644e3248e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Tue, 2 Aug 2022 16:27:01 +0000 Subject: [PATCH 05/27] test: `istanbul` coverage provider --- .../{coverage.test.ts => coverage.c8.test.ts} | 2 +- .../coverage-test/coverage.istanbul.test.ts | 24 +++++++++++++++++++ test/coverage-test/package.json | 19 ++++++++++----- ...verage.ts => vitest.config-c8-coverage.ts} | 2 +- .../vitest.config-istanbul-coverage.ts | 9 +++++++ test/coverage-test/vitest.config.ts | 5 ++++ 6 files changed, 53 insertions(+), 8 deletions(-) rename test/coverage-test/coverage-test/{coverage.test.ts => coverage.c8.test.ts} (90%) create mode 100644 test/coverage-test/coverage-test/coverage.istanbul.test.ts rename test/coverage-test/{vitest.config-coverage.ts => vitest.config-c8-coverage.ts} (73%) create mode 100644 test/coverage-test/vitest.config-istanbul-coverage.ts diff --git a/test/coverage-test/coverage-test/coverage.test.ts b/test/coverage-test/coverage-test/coverage.c8.test.ts similarity index 90% rename from test/coverage-test/coverage-test/coverage.test.ts rename to test/coverage-test/coverage-test/coverage.c8.test.ts index 1cf39650795f..75b544526efb 100644 --- a/test/coverage-test/coverage-test/coverage.test.ts +++ b/test/coverage-test/coverage-test/coverage.c8.test.ts @@ -2,7 +2,7 @@ import fs from 'fs' import { resolve } from 'pathe' import { expect, test } from 'vitest' -test('coverage', async () => { +test('coverage c8', async () => { const coveragePath = resolve('./coverage/tmp/') const stat = fs.statSync(coveragePath) expect(stat.isDirectory()).toBe(true) diff --git a/test/coverage-test/coverage-test/coverage.istanbul.test.ts b/test/coverage-test/coverage-test/coverage.istanbul.test.ts new file mode 100644 index 000000000000..c2188e16ec90 --- /dev/null +++ b/test/coverage-test/coverage-test/coverage.istanbul.test.ts @@ -0,0 +1,24 @@ +import fs from 'fs' +import { resolve } from 'pathe' +import { expect, test } from 'vitest' + +test('istanbul html report', async () => { + const coveragePath = resolve('./coverage') + const files = fs.readdirSync(coveragePath) + + expect(files).toContain('index.html') + expect(files).toContain('index.ts.html') + expect(files).toContain('Hello.vue.html') +}) + +test('istanbul lcov report', async () => { + const coveragePath = resolve('./coverage') + const files = fs.readdirSync(coveragePath) + + expect(files).toContain('lcov.info') + + const lcovReport = resolve('./coverage/lcov-report') + const lcovReportFiles = fs.readdirSync(lcovReport) + + expect(lcovReportFiles).toContain('index.html') +}) diff --git a/test/coverage-test/package.json b/test/coverage-test/package.json index adbdb3dd5f90..0d120fd09f97 100644 --- a/test/coverage-test/package.json +++ b/test/coverage-test/package.json @@ -2,12 +2,19 @@ "name": "@vitest/test-coverage", "private": true, "scripts": { - "test": "npm run test:thread && npm run test:nothread", - "coverage": "vitest run --coverage", - "coverage:thread": "cross-env THREAD=true vitest run --coverage", - "coverage-test": "vitest -c vitest.config-coverage.ts run", - "test:thread": "npm run coverage:thread && npm run coverage-test", - "test:nothread": "npm run coverage && npm run coverage-test" + "test": "npm run test:c8 && npm run test:istanbul", + "test:c8": "npm run test:thread:c8 && npm run test:nothread:c8", + "coverage:c8": "vitest run --coverage.provider c8", + "coverage:thread:c8": "cross-env THREAD=true vitest run --coverage.provider c8", + "coverage-test:c8": "vitest -c vitest.config-c8-coverage.ts run", + "test:thread:c8": "npm run coverage:thread:c8 && npm run coverage-test:c8", + "test:nothread:c8": "npm run coverage:c8 && npm run coverage-test:c8", + "test:istanbul": "npm run test:thread:istanbul && npm run test:nothread:istanbul", + "coverage:istanbul": "vitest run --coverage.provider istanbul", + "coverage:thread:istanbul": "cross-env THREAD=true vitest run --coverage.provider istanbul", + "coverage-test:istanbul": "vitest -c vitest.config-istanbul-coverage.ts run", + "test:thread:istanbul": "npm run coverage:thread:istanbul && npm run coverage-test:istanbul", + "test:nothread:istanbul": "npm run coverage:istanbul && npm run coverage-test:istanbul" }, "devDependencies": { "@vitejs/plugin-vue": "^3.0.1", diff --git a/test/coverage-test/vitest.config-coverage.ts b/test/coverage-test/vitest.config-c8-coverage.ts similarity index 73% rename from test/coverage-test/vitest.config-coverage.ts rename to test/coverage-test/vitest.config-c8-coverage.ts index cf8df9d72998..0e9e69239b76 100644 --- a/test/coverage-test/vitest.config-coverage.ts +++ b/test/coverage-test/vitest.config-c8-coverage.ts @@ -3,7 +3,7 @@ import { defineConfig } from 'vite' export default defineConfig({ test: { include: [ - './coverage-test/*.test.ts', + './coverage-test/*.c8.test.ts', ], }, }) diff --git a/test/coverage-test/vitest.config-istanbul-coverage.ts b/test/coverage-test/vitest.config-istanbul-coverage.ts new file mode 100644 index 000000000000..620af8701b8b --- /dev/null +++ b/test/coverage-test/vitest.config-istanbul-coverage.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite' + +export default defineConfig({ + test: { + include: [ + './coverage-test/*.istanbul.test.ts', + ], + }, +}) diff --git a/test/coverage-test/vitest.config.ts b/test/coverage-test/vitest.config.ts index 3944cd39f032..3d4e9cf640f3 100644 --- a/test/coverage-test/vitest.config.ts +++ b/test/coverage-test/vitest.config.ts @@ -16,5 +16,10 @@ export default defineConfig({ exclude: [ 'coverage-test/*.test.ts', ], + coverage: { + enabled: true, + clean: true, + reporter: ['html', 'text', 'lcov'], + }, }, }) From 1b05a3dbbfae74336734435964dfe2ee4b4c1d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Thu, 4 Aug 2022 17:52:28 +0000 Subject: [PATCH 06/27] docs: `istanbul` coverage provider --- docs/config/index.md | 97 +++++++++++++++++++++++++++++++++++++++++- docs/guide/coverage.md | 23 +++++++++- 2 files changed, 117 insertions(+), 3 deletions(-) diff --git a/docs/config/index.md b/docs/config/index.md index fb668aad8ffa..8594cb2ecbd5 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -420,10 +420,103 @@ Isolate environment for each test file. Does not work if you disable [`--threads ### coverage -- **Type:** `C8Options` +- **Type:** `C8Options | IstanbulOptions` - **Default:** `undefined` -Coverage options passed to [C8](https://github.com/bcoe/c8). +You can use [`c8`](https://github.com/bcoe/c8) or [`istanbul`](https://istanbul.js.org/) for coverage collection. + +#### provider + +- **Type:** `'c8' | 'istanbul'` +- **Default:** `'c8'` + +Use `provider` to select the tool for coverage collection. + +#### C8Options + +Used when `provider: 'c8'` is set. Coverage options are passed to [`c8`](https://github.com/bcoe/c8). + +#### IstanbulOptions + +Used when `provider: 'istanbul'` is set. + +##### exclude + +- **Type:** `string[]` +- **Default:** `[]` + +List of files excluded from coverage as glob patterns. + +##### skipFull + +- **Type:** `boolean` +- **Default:** `false` + +Do not show files with 100% statement, branch, and function coverage. + +##### perFile + +- **Type:** `boolean` +- **Default:** `false` + +Check thresholds per file. + +##### lines + +- **Type:** `number` + +Threshold for lines. + +##### functions + +- **Type:** `number` + +Threshold for functions. + +##### branches + +- **Type:** `number` + +Threshold for branches. + +##### statements + +- **Type:** `number` + +Threshold for statements. + +##### ignoreClassMethods + +- **Type:** `string[]` +- **Default:** [] + +Set to array of class method names to ignore for coverage. + +##### watermarks + +- **Type:** + +```ts +{ + statements?: [number, number], + functions?: [number, number], + branches?: [number, number], + lines?: [number, number] +} +``` + +- **Default:** + +```ts +{ + statements: [50, 80], + functions: [50, 80], + branches: [50, 80], + lines: [50, 80] +} +``` + +Watermarks for statements, lines, branches and functions. ### testNamePattern diff --git a/docs/guide/coverage.md b/docs/guide/coverage.md index b65fac2cdded..4e24ae9b8ff2 100644 --- a/docs/guide/coverage.md +++ b/docs/guide/coverage.md @@ -4,10 +4,16 @@ title: Coverage | Guide # Coverage -Vitest supports Native code coverage via [`c8`](https://github.com/bcoe/c8). `c8` is an optional peer dependency, to use the coverage feature you will need to install it first by: +Vitest supports Native code coverage via [`c8`](https://github.com/bcoe/c8) and instrumented code coverage via [`istanbul`](https://istanbul.js.org/). + +`c8` and `istanbul`-packages are optional peer dependencies, to use the coverage feature you will need to install these first by: ```bash +# For c8 npm i -D c8 + +# For istanbul, TODO: replace with `@vitest/coverage-istanbul` or similar package +npm i -D istanbul-lib-coverage istanbul-lib-instrument istanbul-lib-report istanbul-lib-source-maps istanbul-reports ``` Then you could get the coverage by passing the `--coverage` flag in CLI. @@ -35,3 +41,18 @@ export default defineConfig({ }, }) ``` + +You can select the coverage tool by setting `test.coverage.provider` to either `c8` or `istanbul`: + +```ts +// vite.config.ts +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + coverage: { + provider: 'istanbul', + }, + }, +}) +``` From 3519f6d8a9a7b716a7089af7242b8a4a2e0ab23b Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 13 Aug 2022 09:04:42 +0800 Subject: [PATCH 07/27] refactor: provide info on coverage report --- .../coverage/NullCoverageProvider.ts | 28 -- .../vitest/src/integrations/coverage/base.ts | 6 +- .../vitest/src/integrations/coverage/c8.ts | 8 +- .../vitest/src/integrations/coverage/index.ts | 11 +- .../src/integrations/coverage/istanbul.ts | 8 +- packages/vitest/src/node/core.ts | 22 +- pnpm-lock.yaml | 417 ++++++++++++++---- 7 files changed, 365 insertions(+), 135 deletions(-) delete mode 100644 packages/vitest/src/integrations/coverage/NullCoverageProvider.ts diff --git a/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts b/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts deleted file mode 100644 index 3b4a389cd1bf..000000000000 --- a/packages/vitest/src/integrations/coverage/NullCoverageProvider.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { ResolvedCoverageOptions } from '../../types' -import type { BaseCoverageProvider } from './base' - -export class NullCoverageProvider implements BaseCoverageProvider { - resolveOptions(): ResolvedCoverageOptions { - return { - provider: null, - enabled: false, - clean: false, - cleanOnRerun: false, - reportsDirectory: 'coverage', - tempDirectory: 'coverage/tmp', - reporter: [], - exclude: [], - skipFull: true, - branches: 0, - functions: 0, - lines: 0, - statements: 0, - perFile: false, - } - } - - initialize() {} - clean() {} - onAfterAllFilesRun() {} - onAfterSuiteRun() {} -} diff --git a/packages/vitest/src/integrations/coverage/base.ts b/packages/vitest/src/integrations/coverage/base.ts index b82b7cb7ac4a..9da79c939d0e 100644 --- a/packages/vitest/src/integrations/coverage/base.ts +++ b/packages/vitest/src/integrations/coverage/base.ts @@ -3,16 +3,18 @@ import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' import type { Vitest } from '../../node' import type { ResolvedCoverageOptions } from '../../types' -export interface BaseCoverageProvider { +export interface CoverageProvider { + name: string initialize(ctx: Vitest): Promise | void resolveOptions(): ResolvedCoverageOptions clean(clean?: boolean): void | Promise onBeforeFilesRun?(): void | Promise - onAfterAllFilesRun(): void | Promise onAfterSuiteRun(collectedCoverage: any): void | Promise + reportCoverage(): void | Promise + onFileTransform?( sourceCode: string, id: string, diff --git a/packages/vitest/src/integrations/coverage/c8.ts b/packages/vitest/src/integrations/coverage/c8.ts index 090f0356d7ac..01d539f94628 100644 --- a/packages/vitest/src/integrations/coverage/c8.ts +++ b/packages/vitest/src/integrations/coverage/c8.ts @@ -9,11 +9,13 @@ import { toArray } from '../../utils' import { configDefaults } from '../../defaults' import type { C8Options, ResolvedCoverageOptions } from '../../types' import type { Vitest } from '../../node' -import type { BaseCoverageProvider } from './base' +import type { CoverageProvider } from './base' const require = createRequire(import.meta.url) -export class C8CoverageProvider implements BaseCoverageProvider { +export class C8CoverageProvider implements CoverageProvider { + name = 'c8' + ctx!: Vitest options!: ResolvedCoverageOptions & { provider: 'c8' } @@ -42,7 +44,7 @@ export class C8CoverageProvider implements BaseCoverageProvider { C8CoverageProvider.getCoverage() } - async onAfterAllFilesRun() { + async reportCoverage() { C8CoverageProvider.getCoverage() const createReport = require('c8/lib/report') diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage/index.ts index bb75af0349ce..5463fffb2626 100644 --- a/packages/vitest/src/integrations/coverage/index.ts +++ b/packages/vitest/src/integrations/coverage/index.ts @@ -1,25 +1,22 @@ import type { CoverageOptions } from '../../types' -import type { BaseCoverageProvider } from './base' +import type { CoverageProvider } from './base' import { C8CoverageProvider } from './c8' import { IstanbulCoverageProvider } from './istanbul' -import { NullCoverageProvider } from './NullCoverageProvider' const CoverageProviderMap: Record< NonNullable, - { new(): BaseCoverageProvider; getCoverage(): any } + { new(): CoverageProvider; getCoverage(): any } > = { c8: C8CoverageProvider, istanbul: IstanbulCoverageProvider, } -export function getCoverageProvider(options?: CoverageOptions): BaseCoverageProvider { +export function getCoverageProvider(options?: CoverageOptions): CoverageProvider | undefined { if (options?.enabled && options?.provider) { const CoverageProvider = CoverageProviderMap[options.provider] - return new CoverageProvider() } - - return new NullCoverageProvider() + return undefined } export function getCoverageInsideWorker(options: CoverageOptions) { diff --git a/packages/vitest/src/integrations/coverage/istanbul.ts b/packages/vitest/src/integrations/coverage/istanbul.ts index 37ba15f33ab5..a37ed4362c9e 100644 --- a/packages/vitest/src/integrations/coverage/istanbul.ts +++ b/packages/vitest/src/integrations/coverage/istanbul.ts @@ -6,7 +6,7 @@ import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' import { configDefaults, defaultExclude, defaultInclude } from '../../defaults' import type { Vitest } from '../../node' import type { IstanbulOptions, ResolvedCoverageOptions } from '../../types' -import type { BaseCoverageProvider } from './base' +import type { CoverageProvider } from './base' const require = createRequire(import.meta.url) const coverageVariable = '__VITEST_COVERAGE__' @@ -42,7 +42,9 @@ interface TestExclude { }): { shouldInstrument(filePath: string): boolean } } -export class IstanbulCoverageProvider implements BaseCoverageProvider { +export class IstanbulCoverageProvider implements CoverageProvider { + name = 'istanbul' + ctx!: Vitest options!: ResolvedCoverageOptions & { provider: 'istanbul' } instrumenter!: Instrumenter @@ -109,7 +111,7 @@ export class IstanbulCoverageProvider implements BaseCoverageProvider { this.coverages = [] } - async onAfterAllFilesRun() { + async reportCoverage() { const libReport = require('istanbul-lib-report') const reports = require('istanbul-reports') const libCoverage = require('istanbul-lib-coverage') diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index f35639bef7a4..7b5777427ccd 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -9,7 +9,7 @@ import { ViteNodeServer } from 'vite-node/server' import type { ArgumentsType, Reporter, ResolvedConfig, UserConfig } from '../types' import { SnapshotManager } from '../integrations/snapshot/manager' import { clearTimeout, deepMerge, hasFailed, noop, setTimeout, slash } from '../utils' -import type { BaseCoverageProvider } from '../integrations/coverage/base' +import type { CoverageProvider } from '../integrations/coverage/base' import { getCoverageProvider } from '../integrations/coverage' import { createPool } from './pool' import type { WorkerPool } from './pool' @@ -30,7 +30,7 @@ export class Vitest { snapshot: SnapshotManager = undefined! cache: VitestCache = undefined! reporters: Reporter[] = undefined! - coverageProvider: BaseCoverageProvider = undefined! + coverageProvider: CoverageProvider | undefined logger: Logger pool: WorkerPool | undefined @@ -85,15 +85,16 @@ export class Vitest { this.reporters = await createReporters(resolved.reporters, this.runner) this.coverageProvider = getCoverageProvider(options.coverage) - this.coverageProvider.initialize(this) - - this.config.coverage = this.coverageProvider.resolveOptions() + if (this.coverageProvider) { + this.coverageProvider.initialize(this) + this.config.coverage = this.coverageProvider.resolveOptions() + } this.runningPromise = undefined this._onRestartListeners.forEach(fn => fn()) - await this.coverageProvider.clean(this.config.coverage.clean) + await this.coverageProvider?.clean(this.config.coverage.clean) this.cache.results.setConfig(resolved.root, resolved.cache) try { @@ -142,7 +143,10 @@ export class Vitest { await this.runFiles(files) - await this.coverageProvider.onAfterAllFilesRun() + if (this.coverageProvider) { + this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.yellow(this.coverageProvider.name)) + await this.coverageProvider.reportCoverage() + } if (this.config.watch && !this.config.browser) await this.report('onWatcherStart') @@ -326,14 +330,14 @@ export class Vitest { const files = Array.from(this.changedTests) this.changedTests.clear() - if (this.config.coverage.cleanOnRerun) + if (this.coverageProvider && this.config.coverage.cleanOnRerun) await this.coverageProvider.clean() await this.report('onWatcherRerun', files, triggerId) await this.runFiles(files) - await this.coverageProvider.onAfterAllFilesRun() + await this.coverageProvider?.reportCoverage() if (!this.config.browser) await this.report('onWatcherStart') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ac4cb065c71..f06e8a36c9b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -285,11 +285,11 @@ importers: '@types/enzyme': 3.10.12 '@types/react': 17.0.45 '@types/react-dom': 17.0.17 - '@vitejs/plugin-react': 2.0.0_vite@3.0.4 + '@vitejs/plugin-react': 2.0.1_vite@3.0.7 '@vitest/ui': link:../../packages/ui '@wojtekmaj/enzyme-adapter-react-17': 0.6.7_7ltvq4e2railvf5uya4ffxpe2a enzyme: 3.11.0 - vite: 3.0.4 + vite: 3.0.7 vitest: link:../../packages/vitest examples/react-mui: @@ -545,11 +545,11 @@ importers: vitest: workspace:* vue: ^3.2.36 devDependencies: - '@vitejs/plugin-vue': 3.0.1_vite@3.0.4+vue@3.2.36 - '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.4+vue@3.2.36 + '@vitejs/plugin-vue': 3.0.1_vite@3.0.7+vue@3.2.36 + '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.7+vue@3.2.36 '@vue/test-utils': 2.0.0_vue@3.2.36 jsdom: 20.0.0 - vite: 3.0.4 + vite: 3.0.7 vitest: link:../../packages/vitest vue: 3.2.36 @@ -565,10 +565,10 @@ importers: dependencies: vue: 2.7.8 devDependencies: - '@vitejs/plugin-vue2': 1.1.2_vite@3.0.4+vue@2.7.8 + '@vitejs/plugin-vue2': 1.1.2_vite@3.0.7+vue@2.7.8 '@vue/test-utils': 1.3.0_7unolrgjwxngstwwllrtmolbmm jsdom: 20.0.0 - vite: 3.0.4 + vite: 3.0.7 vitest: link:../../packages/vitest vue-template-compiler: 2.7.8 @@ -875,7 +875,7 @@ importers: happy-dom: ^6.0.4 vitest: workspace:* devDependencies: - '@vitejs/plugin-vue': 3.0.1_vite@3.0.4+vue@3.2.37 + '@vitejs/plugin-vue': 3.0.1_vite@3.0.7+vue@3.2.37 '@vue/test-utils': 2.0.0_vue@3.2.37 happy-dom: 6.0.4 vitest: link:../../packages/vitest @@ -1349,6 +1349,29 @@ packages: - supports-color dev: true + /@babel/core/7.18.10: + resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.12 + '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 + '@babel/helper-module-transforms': 7.18.9 + '@babel/helpers': 7.18.9 + '@babel/parser': 7.18.11 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/core/7.18.2: resolution: {integrity: sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==} engines: {node: '>=6.9.0'} @@ -1412,6 +1435,15 @@ packages: source-map: 0.5.7 dev: true + /@babel/generator/7.18.12: + resolution: {integrity: sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.10 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + /@babel/generator/7.18.2: resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} engines: {node: '>=6.9.0'} @@ -1477,6 +1509,19 @@ packages: semver: 6.3.0 dev: true + /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10: + resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.18.8 + '@babel/core': 7.18.10 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.20.3 + semver: 6.3.0 + dev: true + /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.2: resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} engines: {node: '>=6.9.0'} @@ -1860,6 +1905,11 @@ packages: dependencies: '@babel/types': 7.18.9 + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} @@ -1954,6 +2004,14 @@ packages: '@babel/types': 7.17.10 dev: true + /@babel/parser/7.18.11: + resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.10 + dev: true + /@babel/parser/7.18.3: resolution: {integrity: sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==} engines: {node: '>=6.0.0'} @@ -2424,6 +2482,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.10: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.2: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2442,12 +2509,21 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.9: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.10: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.10: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 '@babel/helper-plugin-utils': 7.18.9 dev: true @@ -2555,6 +2631,15 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.10: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.9: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -2564,6 +2649,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.10: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2620,13 +2714,22 @@ packages: '@babel/core': 7.18.9 '@babel/helper-plugin-utils': 7.16.7 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.9: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.10: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 '@babel/helper-plugin-utils': 7.18.9 dev: true @@ -2648,6 +2751,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.10: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -2666,6 +2778,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.10: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.2: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2693,6 +2814,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.10: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2711,6 +2841,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.10: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2729,6 +2868,15 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.10: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2767,6 +2915,16 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.10: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.2: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2797,6 +2955,16 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.10: + resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.18.9 + dev: true + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.9: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} @@ -3394,14 +3562,14 @@ packages: '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.18.2 dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.9: + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.9 + '@babel/core': 7.18.10 + '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 dev: true /@babel/plugin-transform-react-jsx-self/7.16.7_@babel+core@7.17.9: @@ -3424,13 +3592,13 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.9: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/helper-plugin-utils': 7.18.9 dev: true @@ -3454,13 +3622,13 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.9: + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/helper-plugin-utils': 7.18.9 dev: true @@ -3492,18 +3660,18 @@ packages: '@babel/types': 7.18.2 dev: true - /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.9: - resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} + /@babel/plugin-transform-react-jsx/7.18.10_@babel+core@7.18.10: + resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.9 - '@babel/types': 7.18.9 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.10 + '@babel/types': 7.18.10 dev: true /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.18.2: @@ -4003,6 +4171,15 @@ packages: '@babel/types': 7.18.4 dev: true + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + dev: true + /@babel/template/7.18.6: resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} engines: {node: '>=6.9.0'} @@ -4047,6 +4224,24 @@ packages: - supports-color dev: true + /@babel/traverse/7.18.11: + resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.18.9 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/traverse/7.18.2: resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} engines: {node: '>=6.9.0'} @@ -4098,6 +4293,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types/7.18.10: + resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + dev: true + /@babel/types/7.18.2: resolution: {integrity: sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==} engines: {node: '>=6.9.0'} @@ -4696,7 +4900,7 @@ packages: istanbul-lib-instrument: 5.2.0 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.4 + istanbul-reports: 3.1.5 jest-haste-map: 27.5.1 jest-resolve: 27.5.1 jest-util: 27.5.1 @@ -4768,7 +4972,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -7387,8 +7591,8 @@ packages: /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.17.1 @@ -7397,20 +7601,20 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 dev: true /@types/babel__traverse/7.17.1: resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 dev: true /@types/braces/3.0.1: @@ -8181,25 +8385,25 @@ packages: - supports-color dev: true - /@vitejs/plugin-react/2.0.0_vite@3.0.4: - resolution: {integrity: sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw==} - engines: {node: '>=14.18.0'} + /@vitejs/plugin-react/2.0.1_vite@3.0.7: + resolution: {integrity: sha512-uINzNHmjrbunlFtyVkST6lY1ewSfz/XwLufG0PIqvLGnpk2nOIOa/1CACTDNcKi1/RwaCzJLmsXwm1NsUVV/NA==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 dependencies: - '@babel/core': 7.18.9 - '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.9 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.9 + '@babel/core': 7.18.10 + '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.10 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.10 magic-string: 0.26.2 react-refresh: 0.14.0 - vite: 3.0.4 + vite: 3.0.7 transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-vue-jsx/2.0.0_vite@3.0.4+vue@3.2.36: + /@vitejs/plugin-vue-jsx/2.0.0_vite@3.0.4+vue@3.2.37: resolution: {integrity: sha512-WF9ApZ/ivyyW3volQfu0Td0KNPhcccYEaRNzNY1NxRLVJQLSX0nFqquv3e2g7MF74p1XZK4bGtDL2y5i5O5+1A==} engines: {node: '>=14.18.0'} peerDependencies: @@ -8211,12 +8415,12 @@ packages: '@babel/plugin-transform-typescript': 7.18.10_@babel+core@7.18.9 '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.18.9 vite: 3.0.4 - vue: 3.2.36 + vue: 3.2.37 transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-vue-jsx/2.0.0_vite@3.0.4+vue@3.2.37: + /@vitejs/plugin-vue-jsx/2.0.0_vite@3.0.7+vue@3.2.36: resolution: {integrity: sha512-WF9ApZ/ivyyW3volQfu0Td0KNPhcccYEaRNzNY1NxRLVJQLSX0nFqquv3e2g7MF74p1XZK4bGtDL2y5i5O5+1A==} engines: {node: '>=14.18.0'} peerDependencies: @@ -8227,8 +8431,8 @@ packages: '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.9 '@babel/plugin-transform-typescript': 7.18.10_@babel+core@7.18.9 '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.18.9 - vite: 3.0.4 - vue: 3.2.37 + vite: 3.0.7 + vue: 3.2.36 transitivePeerDependencies: - supports-color dev: true @@ -8266,7 +8470,7 @@ packages: vue: 3.2.37 dev: true - /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.36: + /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.37: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8274,28 +8478,39 @@ packages: vue: ^3.2.25 dependencies: vite: 3.0.4 + vue: 3.2.37 + dev: true + + /@vitejs/plugin-vue/3.0.1_vite@3.0.7+vue@3.2.36: + resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.0.7 vue: 3.2.36 dev: true - /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.37: + /@vitejs/plugin-vue/3.0.1_vite@3.0.7+vue@3.2.37: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 vue: ^3.2.25 dependencies: - vite: 3.0.4 + vite: 3.0.7 vue: 3.2.37 dev: true - /@vitejs/plugin-vue2/1.1.2_vite@3.0.4+vue@2.7.8: + /@vitejs/plugin-vue2/1.1.2_vite@3.0.7+vue@2.7.8: resolution: {integrity: sha512-y6OEA+2UdJ0xrEQHodq20v9r3SpS62IOHrgN92JPLvVpNkhcissu7yvD5PXMzMESyazj0XNWGsc8UQk8+mVrjQ==} engines: {node: '>=14.6.0'} peerDependencies: vite: '>=2.5.10' vue: ^2.7.0-0 dependencies: - vite: 3.0.4 + vite: 3.0.7 vue: 2.7.8 dev: true @@ -9378,18 +9593,18 @@ packages: - debug dev: false - /babel-jest/27.5.1_@babel+core@7.18.9: + /babel-jest/27.5.1_@babel+core@7.18.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.18.9 + '@babel/core': 7.18.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.18.9 + babel-preset-jest: 27.5.1_@babel+core@7.18.10 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -9470,8 +9685,8 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.9 + '@babel/template': 7.18.10 + '@babel/types': 7.18.10 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.17.1 dev: true @@ -9601,35 +9816,35 @@ packages: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.9: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.10: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.9 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.9 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.9 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.9 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.9 - dev: true - - /babel-preset-jest/27.5.1_@babel+core@7.18.9: + '@babel/core': 7.18.10 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.10 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.10 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.10 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.10 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.10 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.10 + dev: true + + /babel-preset-jest/27.5.1_@babel+core@7.18.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.18.9 + '@babel/core': 7.18.10 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.9 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.10 dev: true /babel-preset-solid/1.3.17_@babel+core@7.18.2: @@ -14817,10 +15032,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.18.9 + babel-jest: 27.5.1_@babel+core@7.18.10 chalk: 4.1.2 ci-info: 3.3.1 deepmerge: 4.2.2 @@ -15169,16 +15384,16 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.18.9 - '@babel/generator': 7.18.9 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.9 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 + '@babel/core': 7.18.10 + '@babel/generator': 7.18.12 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.9 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.10 chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.10 @@ -17629,6 +17844,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /postcss/8.4.5: resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} engines: {node: ^10 || ^12 || >=14} @@ -21240,6 +21464,33 @@ packages: optionalDependencies: fsevents: 2.3.2 + /vite/3.0.7: + resolution: {integrity: sha512-dILhvKba1mbP1wCezVQx/qhEK7/+jVn9ciadEcyKMMhZpsuAi/eWZfJRMkmYlkSFG7Qq9NvJbgFq4XOBxugJsA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.14.47 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.2 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vitepress/1.0.0-alpha.4_jbvntnid6ohjelon6ccj5dhg2u: resolution: {integrity: sha512-bOAA4KW6vYGlkbcrPLZLTKWTgXVroObU+o9xj9EENyEl6yg26WWvfN7DGA4BftjdM5O8nR93Z5khPQ3W/tFE7Q==} engines: {node: '>=14.6.0'} From f7f31560ae13b0630e023d46228f01da74cf5ae0 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 13 Aug 2022 10:09:55 +0800 Subject: [PATCH 08/27] wip: move to packages --- package.json | 3 + packages/coverage-c8/package.json | 50 +++ .../c8.ts => coverage-c8/src/index.ts} | 29 +- packages/coverage-c8/tsconfig.json | 6 + packages/coverage-c8/tsup.config.ts | 10 + packages/coverage-istanbul/package.json | 51 +++ .../src/index.ts} | 13 +- packages/coverage-istanbul/tsconfig.json | 6 + packages/coverage-istanbul/tsup.config.ts | 10 + packages/ui/client/auto-imports.d.ts | 17 +- packages/ui/client/composables/summary.ts | 1 + packages/vitest/package.json | 10 +- packages/vitest/src/config.ts | 2 +- .../vitest/src/integrations/coverage/base.ts | 23 -- .../vitest/src/integrations/coverage/index.ts | 26 +- packages/vitest/src/node/core.ts | 5 +- packages/vitest/src/node/pool.ts | 4 +- packages/vitest/src/runtime/run.ts | 2 +- packages/vitest/src/types/coverage.ts | 45 ++- pnpm-lock.yaml | 325 ++++++++++++------ test/core/vitest.config.ts | 1 + 21 files changed, 429 insertions(+), 210 deletions(-) create mode 100644 packages/coverage-c8/package.json rename packages/{vitest/src/integrations/coverage/c8.ts => coverage-c8/src/index.ts} (82%) create mode 100644 packages/coverage-c8/tsconfig.json create mode 100644 packages/coverage-c8/tsup.config.ts create mode 100644 packages/coverage-istanbul/package.json rename packages/{vitest/src/integrations/coverage/istanbul.ts => coverage-istanbul/src/index.ts} (95%) create mode 100644 packages/coverage-istanbul/tsconfig.json create mode 100644 packages/coverage-istanbul/tsup.config.ts delete mode 100644 packages/vitest/src/integrations/coverage/base.ts diff --git a/package.json b/package.json index 6417ad610921..38ff69bbb2e7 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ "@types/ws": "^8.5.3", "@vitest/browser": "workspace:*", "@vitest/ui": "workspace:*", + "@vitest/coverage-istanbul": "workspace:*", + "@vitest/coverage-c8": "workspace:*", "bumpp": "^8.2.1", "c8": "^7.12.0", "cross-env": "^7.0.3", @@ -64,6 +66,7 @@ "rollup-plugin-esbuild": "^4.9.1", "rollup-plugin-license": "^2.8.1", "simple-git-hooks": "^2.8.0", + "tsup": "^6.2.2", "typescript": "^4.7.4", "vite": "^3.0.4", "vitest": "workspace:*", diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json new file mode 100644 index 000000000000..30295c5ffe34 --- /dev/null +++ b/packages/coverage-c8/package.json @@ -0,0 +1,50 @@ +{ + "name": "@vitest/coverage-c8", + "type": "module", + "version": "0.0.0", + "description": "C8 coverage provider for Vitest", + "author": "Anthony Fu ", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vitest-dev/vitest#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vitest-dev/vitest.git", + "directory": "packages/coverage-c8" + }, + "bugs": { + "url": "https://github.com/vitest-dev/vitest/issues" + }, + "keywords": [ + "vite", + "vitest", + "test", + "coverage", + "c8" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "import": "./dist/index.mjs" + } + }, + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch=src" + }, + "dependencies": { + "vitest": "workspace:*", + "c8": "^7.12.0" + }, + "devDependencies": { + "vite-node": "workspace:*" + } +} diff --git a/packages/vitest/src/integrations/coverage/c8.ts b/packages/coverage-c8/src/index.ts similarity index 82% rename from packages/vitest/src/integrations/coverage/c8.ts rename to packages/coverage-c8/src/index.ts index 01d539f94628..f2af3162358e 100644 --- a/packages/vitest/src/integrations/coverage/c8.ts +++ b/packages/coverage-c8/src/index.ts @@ -1,19 +1,20 @@ +/* eslint-disable no-restricted-imports */ import { existsSync, promises as fs } from 'fs' -import { createRequire } from 'module' import _url from 'url' import type { Profiler } from 'inspector' +import v8 from 'v8' import { resolve } from 'pathe' import type { RawSourceMap } from 'vite-node' -import { toArray } from '../../utils' -import { configDefaults } from '../../defaults' -import type { C8Options, ResolvedCoverageOptions } from '../../types' -import type { Vitest } from '../../node' -import type { CoverageProvider } from './base' +import { configDefaults } from 'vitest/config' +import type { CoverageC8Options, CoverageProvider, ResolvedCoverageOptions } from 'vitest' +import type { Vitest } from 'vitest/node' +// @ts-expect-error missing types +import createReport from 'c8/lib/report' +// @ts-expect-error missing types +import { checkCoverages } from 'c8/lib/commands/check-coverage' -const require = createRequire(import.meta.url) - -export class C8CoverageProvider implements CoverageProvider { +export default class C8CoverageProvider implements CoverageProvider { name = 'c8' ctx!: Vitest @@ -46,8 +47,6 @@ export class C8CoverageProvider implements CoverageProvider { async reportCoverage() { C8CoverageProvider.getCoverage() - - const createReport = require('c8/lib/report') const report = createReport(this.ctx.config.coverage) // add source maps @@ -103,14 +102,11 @@ export class C8CoverageProvider implements CoverageProvider { } await report.run() - - const { checkCoverages } = require('c8/lib/commands/check-coverage') await checkCoverages(this.options, report) } // Flush coverage to disk static getCoverage() { - const v8 = require('v8') if (v8.takeCoverage == null) console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') else @@ -118,7 +114,7 @@ export class C8CoverageProvider implements CoverageProvider { } } -function resolveC8Options(options: C8Options, root: string) { +function resolveC8Options(options: CoverageC8Options, root: string) { const resolved = { ...configDefaults.coverage, ...options as any, @@ -131,7 +127,8 @@ function resolveC8Options(options: C8Options, root: string) { resolved.statements = 100 } - resolved.reporter = toArray(resolved.reporter) + resolved.reporter = resolved.reporter || [] + resolved.reporter = Array.isArray(resolved.reporter) ? resolved.reporter : [resolved.reporter] resolved.reportsDirectory = resolve(root, resolved.reportsDirectory) resolved.tempDirectory = process.env.NODE_V8_COVERAGE || resolve(resolved.reportsDirectory, 'tmp') diff --git a/packages/coverage-c8/tsconfig.json b/packages/coverage-c8/tsconfig.json new file mode 100644 index 000000000000..0edba30e4b40 --- /dev/null +++ b/packages/coverage-c8/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "src/**/*.ts", + ] +} diff --git a/packages/coverage-c8/tsup.config.ts b/packages/coverage-c8/tsup.config.ts new file mode 100644 index 000000000000..0c74967b68c8 --- /dev/null +++ b/packages/coverage-c8/tsup.config.ts @@ -0,0 +1,10 @@ +import type { Options } from 'tsup' + +export const tsup: Options = { + clean: true, + format: ['cjs', 'esm'], + dts: true, + entryPoints: [ + 'src/index.ts', + ], +} diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json new file mode 100644 index 000000000000..4cd85a08532b --- /dev/null +++ b/packages/coverage-istanbul/package.json @@ -0,0 +1,51 @@ +{ + "name": "@vitest/coverage-istanbul", + "type": "module", + "version": "0.0.0", + "description": "Istanbul coverage provider for Vitest", + "author": "Anthony Fu ", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vitest-dev/vitest#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vitest-dev/vitest.git", + "directory": "packages/coverage-istanbul" + }, + "bugs": { + "url": "https://github.com/vitest-dev/vitest/issues" + }, + "keywords": [ + "vite", + "vitest", + "test", + "coverage", + "istanbul" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "import": "./dist/index.mjs" + } + }, + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch=src" + }, + "dependencies": { + "vitest": "workspace:*", + "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.5" + } +} diff --git a/packages/vitest/src/integrations/coverage/istanbul.ts b/packages/coverage-istanbul/src/index.ts similarity index 95% rename from packages/vitest/src/integrations/coverage/istanbul.ts rename to packages/coverage-istanbul/src/index.ts index a37ed4362c9e..34d976698df3 100644 --- a/packages/vitest/src/integrations/coverage/istanbul.ts +++ b/packages/coverage-istanbul/src/index.ts @@ -1,12 +1,10 @@ +/* eslint-disable no-restricted-imports */ import { existsSync, promises as fs } from 'fs' import { createRequire } from 'module' import { relative, resolve } from 'pathe' import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' - -import { configDefaults, defaultExclude, defaultInclude } from '../../defaults' -import type { Vitest } from '../../node' -import type { IstanbulOptions, ResolvedCoverageOptions } from '../../types' -import type { CoverageProvider } from './base' +import type { CoverageIstanbulOptions, CoverageProvider, ResolvedCoverageOptions, Vitest } from 'vitest' +import { configDefaults, defaultExclude, defaultInclude } from 'vitest/config' const require = createRequire(import.meta.url) const coverageVariable = '__VITEST_COVERAGE__' @@ -42,7 +40,7 @@ interface TestExclude { }): { shouldInstrument(filePath: string): boolean } } -export class IstanbulCoverageProvider implements CoverageProvider { +export default class IstanbulCoverageProvider implements CoverageProvider { name = 'istanbul' ctx!: Vitest @@ -198,13 +196,12 @@ export class IstanbulCoverageProvider implements CoverageProvider { } } -function resolveIstanbulOptions(options: IstanbulOptions, root: string) { +function resolveIstanbulOptions(options: CoverageIstanbulOptions, root: string) { const reportsDirectory = resolve(root, options.reportsDirectory || configDefaults.coverage.reportsDirectory!) const resolved = { ...configDefaults.coverage, ...options, - provider: 'istanbul', reportsDirectory, tempDirectory: resolve(reportsDirectory, 'tmp'), diff --git a/packages/coverage-istanbul/tsconfig.json b/packages/coverage-istanbul/tsconfig.json new file mode 100644 index 000000000000..0edba30e4b40 --- /dev/null +++ b/packages/coverage-istanbul/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "src/**/*.ts", + ] +} diff --git a/packages/coverage-istanbul/tsup.config.ts b/packages/coverage-istanbul/tsup.config.ts new file mode 100644 index 000000000000..0c74967b68c8 --- /dev/null +++ b/packages/coverage-istanbul/tsup.config.ts @@ -0,0 +1,10 @@ +import type { Options } from 'tsup' + +export const tsup: Options = { + clean: true, + format: ['cjs', 'esm'], + dts: true, + entryPoints: [ + 'src/index.ts', + ], +} diff --git a/packages/ui/client/auto-imports.d.ts b/packages/ui/client/auto-imports.d.ts index b943fc3c8d0e..69e11b963e69 100644 --- a/packages/ui/client/auto-imports.d.ts +++ b/packages/ui/client/auto-imports.d.ts @@ -36,9 +36,6 @@ declare global { const isReactive: typeof import('vue')['isReactive'] const isReadonly: typeof import('vue')['isReadonly'] const isRef: typeof import('vue')['isRef'] - const logicAnd: typeof import('@vueuse/core')['logicAnd'] - const logicNot: typeof import('@vueuse/core')['logicNot'] - const logicOr: typeof import('@vueuse/core')['logicOr'] const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable'] const markRaw: typeof import('vue')['markRaw'] const nextTick: typeof import('vue')['nextTick'] @@ -99,6 +96,14 @@ declare global { const unrefElement: typeof import('@vueuse/core')['unrefElement'] const until: typeof import('@vueuse/core')['until'] const useActiveElement: typeof import('@vueuse/core')['useActiveElement'] + const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery'] + const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] + const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] + const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] + const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] + const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] + const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] + const useArraySome: typeof import('@vueuse/core')['useArraySome'] const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] const useAttrs: typeof import('vue')['useAttrs'] @@ -109,7 +114,6 @@ declare global { const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel'] const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation'] const useCached: typeof import('@vueuse/core')['useCached'] - const useClamp: typeof import('@vueuse/core')['useClamp'] const useClipboard: typeof import('@vueuse/core')['useClipboard'] const useColorMode: typeof import('@vueuse/core')['useColorMode'] const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog'] @@ -185,6 +189,7 @@ declare global { const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] + const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] const useRafFn: typeof import('@vueuse/core')['useRafFn'] const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] @@ -204,8 +209,10 @@ declare global { const useStorage: typeof import('@vueuse/core')['useStorage'] const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync'] const useStyleTag: typeof import('@vueuse/core')['useStyleTag'] + const useSupported: typeof import('@vueuse/core')['useSupported'] const useSwipe: typeof import('@vueuse/core')['useSwipe'] const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList'] + const useTextDirection: typeof import('@vueuse/core')['useTextDirection'] const useTextSelection: typeof import('@vueuse/core')['useTextSelection'] const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize'] const useThrottle: typeof import('@vueuse/core')['useThrottle'] @@ -217,6 +224,8 @@ declare global { const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll'] const useTimestamp: typeof import('@vueuse/core')['useTimestamp'] const useTitle: typeof import('@vueuse/core')['useTitle'] + const useToNumber: typeof import('@vueuse/core')['useToNumber'] + const useToString: typeof import('@vueuse/core')['useToString'] const useToggle: typeof import('@vueuse/core')['useToggle'] const useTransition: typeof import('@vueuse/core')['useTransition'] const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams'] diff --git a/packages/ui/client/composables/summary.ts b/packages/ui/client/composables/summary.ts index 534b01c8e172..07f1518ac836 100644 --- a/packages/ui/client/composables/summary.ts +++ b/packages/ui/client/composables/summary.ts @@ -52,6 +52,7 @@ function toArray(array?: Nullable>): Array { return array return [array] } + function getTests(suite: Arrayable): Test[] { return toArray(suite).flatMap(s => s.type === 'test' ? [s] : s.tasks.flatMap(c => c.type === 'test' ? [c] : getTests(c))) } diff --git a/packages/vitest/package.json b/packages/vitest/package.json index 05c2a2403a4a..6444e2a2ea0e 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -16,6 +16,7 @@ "keywords": [ "vite", "vite-node", + "vitest", "test", "jest" ], @@ -81,9 +82,6 @@ "@vitest/browser": { "optional": true }, - "c8": { - "optional": true - }, "happy-dom": { "optional": true }, @@ -117,7 +115,6 @@ "@types/sinonjs__fake-timers": "^8.1.2", "@vitest/ui": "workspace:*", "birpc": "^0.2.3", - "c8": "^7.12.0", "cac": "^6.7.12", "chai-subset": "^1.6.0", "cli-truncate": "^3.1.0", @@ -127,11 +124,6 @@ "find-up": "^6.3.0", "flatted": "^3.2.6", "happy-dom": "^6.0.4", - "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.5", "jsdom": "^20.0.0", "log-update": "^5.0.1", "magic-string": "^0.26.2", diff --git a/packages/vitest/src/config.ts b/packages/vitest/src/config.ts index 5b783a22fed8..dc18055c82e0 100644 --- a/packages/vitest/src/config.ts +++ b/packages/vitest/src/config.ts @@ -5,7 +5,7 @@ export interface UserConfig extends ViteUserConfig { } // will import vitest declare test in module 'vite' -export { configDefaults } from './defaults' +export { configDefaults, defaultInclude, defaultExclude } from './defaults' export type { ConfigEnv } export type UserConfigFn = (env: ConfigEnv) => UserConfig | Promise diff --git a/packages/vitest/src/integrations/coverage/base.ts b/packages/vitest/src/integrations/coverage/base.ts deleted file mode 100644 index 9da79c939d0e..000000000000 --- a/packages/vitest/src/integrations/coverage/base.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' - -import type { Vitest } from '../../node' -import type { ResolvedCoverageOptions } from '../../types' - -export interface CoverageProvider { - name: string - initialize(ctx: Vitest): Promise | void - - resolveOptions(): ResolvedCoverageOptions - clean(clean?: boolean): void | Promise - - onBeforeFilesRun?(): void | Promise - onAfterSuiteRun(collectedCoverage: any): void | Promise - - reportCoverage(): void | Promise - - onFileTransform?( - sourceCode: string, - id: string, - pluginCtx: TransformPluginContext - ): void | { code: string; map: ExistingRawSourceMap } -} diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage/index.ts index 5463fffb2626..fdc625aacd35 100644 --- a/packages/vitest/src/integrations/coverage/index.ts +++ b/packages/vitest/src/integrations/coverage/index.ts @@ -1,28 +1,22 @@ -import type { CoverageOptions } from '../../types' -import type { CoverageProvider } from './base' -import { C8CoverageProvider } from './c8' -import { IstanbulCoverageProvider } from './istanbul' +import { importModule } from 'local-pkg' +import type { CoverageOptions, CoverageProvider } from '../../types' -const CoverageProviderMap: Record< - NonNullable, - { new(): CoverageProvider; getCoverage(): any } -> = { - c8: C8CoverageProvider, - istanbul: IstanbulCoverageProvider, +const providerMap = { + c8: '@vitest/coverage-c8', + istanbul: '@vitest/coverage-istanbul', } -export function getCoverageProvider(options?: CoverageOptions): CoverageProvider | undefined { +export async function getCoverageProvider(options?: CoverageOptions): Promise { if (options?.enabled && options?.provider) { - const CoverageProvider = CoverageProviderMap[options.provider] + const { default: CoverageProvider } = await importModule(providerMap[options.provider]) return new CoverageProvider() } return undefined } -export function getCoverageInsideWorker(options: CoverageOptions) { +export async function getCoverageInsideWorker(options: CoverageOptions) { if (options.enabled && options.provider) { - const CoverageProvider = CoverageProviderMap[options.provider] - - return CoverageProvider.getCoverage() + const { default: CoverageProvider } = await importModule(providerMap[options.provider]) + return CoverageProvider?.getCoverage() } } diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 7b5777427ccd..7432dd00bdeb 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -6,10 +6,9 @@ import mm from 'micromatch' import c from 'picocolors' import { ViteNodeRunner } from 'vite-node/client' import { ViteNodeServer } from 'vite-node/server' -import type { ArgumentsType, Reporter, ResolvedConfig, UserConfig } from '../types' +import type { ArgumentsType, CoverageProvider, Reporter, ResolvedConfig, UserConfig } from '../types' import { SnapshotManager } from '../integrations/snapshot/manager' import { clearTimeout, deepMerge, hasFailed, noop, setTimeout, slash } from '../utils' -import type { CoverageProvider } from '../integrations/coverage/base' import { getCoverageProvider } from '../integrations/coverage' import { createPool } from './pool' import type { WorkerPool } from './pool' @@ -84,7 +83,7 @@ export class Vitest { this.reporters = await createReporters(resolved.reporters, this.runner) - this.coverageProvider = getCoverageProvider(options.coverage) + this.coverageProvider = await getCoverageProvider(options.coverage) if (this.coverageProvider) { this.coverageProvider.initialize(this) this.config.coverage = this.coverageProvider.resolveOptions() diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index 7bfac6f07d8b..df3f751d926e 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -64,7 +64,7 @@ export function createPool(ctx: Vitest): WorkerPool { options.minThreads = 1 } - ctx.coverageProvider.onBeforeFilesRun?.() + ctx.coverageProvider?.onBeforeFilesRun?.() options.env = { TEST: 'true', @@ -171,7 +171,7 @@ function createChannel(ctx: Vitest) { ctx.report('onCollected', files) }, onFilesRun(coverage: any) { - ctx.coverageProvider.onAfterSuiteRun(coverage) + ctx.coverageProvider?.onAfterSuiteRun(coverage) }, onTaskUpdate(packs) { ctx.state.updateTasks(packs) diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index b4cdb4267eca..e65393f396a0 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -316,7 +316,7 @@ async function startTestsNode(paths: string[], config: ResolvedConfig) { await runFiles(files, config) - const coverage = getCoverageInsideWorker(config.coverage) + const coverage = await getCoverageInsideWorker(config.coverage) rpc().onFilesRun(coverage) await getSnapshotClient().saveCurrent() diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index 7782be4244c7..e5c5eed89876 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -1,5 +1,26 @@ +import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' +import type { Vitest } from '../node' import type { Arrayable } from './general' +export interface CoverageProvider { + name: string + initialize(ctx: Vitest): Promise | void + + resolveOptions(): ResolvedCoverageOptions + clean(clean?: boolean): void | Promise + + onBeforeFilesRun?(): void | Promise + onAfterSuiteRun(collectedCoverage: any): void | Promise + + reportCoverage(): void | Promise + + onFileTransform?( + sourceCode: string, + id: string, + pluginCtx: TransformPluginContext + ): void | { code: string; map: ExistingRawSourceMap } +} + export type CoverageReporter = | 'clover' | 'cobertura' @@ -16,11 +37,15 @@ export type CoverageReporter = | 'text' export type CoverageOptions = - | NullCoverageOptions & { provider?: null } - | C8Options & { provider?: 'c8' } - | IstanbulOptions & { provider?: 'istanbul' } + | BaseCoverageOptions & { provider?: null } + | CoverageC8Options & { provider?: 'c8' } + | CoverageIstanbulOptions & { provider?: 'istanbul' } + +export type ResolvedCoverageOptions = + & { tempDirectory: string } + & Required -interface BaseCoverageOptions { +export interface BaseCoverageOptions { /** * Enable coverage, pass `--coverage` to enable * @@ -92,11 +117,7 @@ interface BaseCoverageOptions { statements?: number } -export interface NullCoverageOptions extends BaseCoverageOptions { - enabled: false -} - -export interface IstanbulOptions extends BaseCoverageOptions { +export interface CoverageIstanbulOptions extends BaseCoverageOptions { /* Set to array of class method names to ignore for coverage */ ignoreClassMethods?: string[] @@ -109,7 +130,7 @@ export interface IstanbulOptions extends BaseCoverageOptions { } } -export interface C8Options extends BaseCoverageOptions { +export interface CoverageC8Options extends BaseCoverageOptions { /** * Allow files from outside of your cwd. * @@ -130,7 +151,3 @@ export interface C8Options extends BaseCoverageOptions { 100?: boolean } - -export type ResolvedCoverageOptions = - & { tempDirectory: string } - & Required diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f06e8a36c9b2..5364c1828acd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,8 @@ importers: '@types/node': ^18.0.4 '@types/ws': ^8.5.3 '@vitest/browser': workspace:* + '@vitest/coverage-c8': workspace:* + '@vitest/coverage-istanbul': workspace:* '@vitest/ui': workspace:* bumpp: ^8.2.1 c8: ^7.12.0 @@ -42,6 +44,7 @@ importers: rollup-plugin-esbuild: ^4.9.1 rollup-plugin-license: ^2.8.1 simple-git-hooks: ^2.8.0 + tsup: ^6.2.2 typescript: ^4.7.4 vite: ^3.0.4 vitest: workspace:* @@ -58,6 +61,8 @@ importers: '@types/node': 18.0.4 '@types/ws': 8.5.3 '@vitest/browser': link:packages/browser + '@vitest/coverage-c8': link:packages/coverage-c8 + '@vitest/coverage-istanbul': link:packages/coverage-istanbul '@vitest/ui': link:packages/ui bumpp: 8.2.1 c8: 7.12.0 @@ -80,6 +85,7 @@ importers: rollup-plugin-esbuild: 4.9.1_pemzyxl4ergeow3755j2gtd5cm rollup-plugin-license: 2.8.1_rollup@2.77.2 simple-git-hooks: 2.8.0 + tsup: 6.2.2_typescript@4.7.4 typescript: 4.7.4 vite: 3.0.4 vitest: link:packages/vitest @@ -204,7 +210,7 @@ importers: typescript: 4.6.3 vitest: workspace:* dependencies: - next: 12.1.5_fjquie5vgc3vhmxncuaaouwdhe + next: 12.1.5_hbavo5rcrxpva3rqoclkpvthlq react: 18.0.0 react-dom: 18.0.0_react@18.0.0 devDependencies: @@ -314,8 +320,8 @@ importers: vite: ^2.9.9 vitest: workspace:* dependencies: - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy '@mui/x-date-pickers': 5.0.0-beta.0_rucrrzx7cwvijf52oha4jx7jty history: 5.3.0 @@ -597,6 +603,33 @@ importers: rollup: 2.77.2 vitest: link:../vitest + packages/coverage-c8: + specifiers: + c8: ^7.12.0 + vite-node: workspace:* + vitest: workspace:* + dependencies: + c8: 7.12.0 + vitest: link:../vitest + devDependencies: + vite-node: link:../vite-node + + packages/coverage-istanbul: + specifiers: + 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.5 + vitest: workspace:* + dependencies: + 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.5 + vitest: link:../vitest + packages/ui: specifiers: '@faker-js/faker': ^7.3.0 @@ -700,7 +733,7 @@ importers: '@vitest/browser': '*' '@vitest/ui': workspace:* birpc: ^0.2.3 - c8: ^7.12.0 + c8: '*' cac: ^6.7.12 chai: ^4.3.6 chai-subset: ^1.6.0 @@ -712,11 +745,6 @@ importers: find-up: ^6.3.0 flatted: ^3.2.6 happy-dom: ^6.0.4 - 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.5 jsdom: ^20.0.0 local-pkg: ^0.4.2 log-update: ^5.0.1 @@ -772,11 +800,6 @@ importers: find-up: 6.3.0 flatted: 3.2.6 happy-dom: 6.0.4 - 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.5 jsdom: 20.0.0 log-update: 5.0.1 magic-string: 0.26.2 @@ -1370,7 +1393,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/core/7.18.2: resolution: {integrity: sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==} @@ -1442,7 +1464,6 @@ packages: '@babel/types': 7.18.10 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - dev: true /@babel/generator/7.18.2: resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} @@ -1472,7 +1493,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: @@ -1520,7 +1541,6 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.20.3 semver: 6.3.0 - dev: true /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.2: resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} @@ -1712,8 +1732,8 @@ packages: resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.9 + '@babel/template': 7.18.10 + '@babel/types': 7.18.10 /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} @@ -1726,7 +1746,7 @@ packages: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 /@babel/helper-member-expression-to-functions/7.17.7: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} @@ -1759,7 +1779,7 @@ packages: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 /@babel/helper-module-transforms/7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} @@ -1802,9 +1822,9 @@ packages: '@babel/helper-simple-access': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 transitivePeerDependencies: - supports-color @@ -1883,7 +1903,7 @@ packages: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 /@babel/helper-skip-transparent-expression-wrappers/7.16.0: resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} @@ -1903,12 +1923,11 @@ packages: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.18.10 /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} @@ -1965,9 +1984,9 @@ packages: resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 + '@babel/template': 7.18.10 + '@babel/traverse': 7.18.11 + '@babel/types': 7.18.10 transitivePeerDependencies: - supports-color @@ -2010,7 +2029,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.18.10 - dev: true /@babel/parser/7.18.3: resolution: {integrity: sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==} @@ -2695,6 +2713,16 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.10: + resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.10 + '@babel/helper-plugin-utils': 7.16.7 + dev: false + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.2: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} @@ -2713,6 +2741,7 @@ packages: dependencies: '@babel/core': 7.18.9 '@babel/helper-plugin-utils': 7.16.7 + dev: true /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} @@ -4178,7 +4207,6 @@ packages: '@babel/code-frame': 7.18.6 '@babel/parser': 7.18.11 '@babel/types': 7.18.10 - dev: true /@babel/template/7.18.6: resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} @@ -4240,7 +4268,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/traverse/7.18.2: resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} @@ -4300,7 +4327,6 @@ packages: '@babel/helper-string-parser': 7.18.10 '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 - dev: true /@babel/types/7.18.2: resolution: {integrity: sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==} @@ -4329,7 +4355,6 @@ packages: /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true /@cnakazawa/watch/1.0.4: resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} @@ -4484,14 +4509,14 @@ packages: '@edge-runtime/primitives': 1.1.0-beta.26 dev: true - /@emotion/babel-plugin/11.9.2_@babel+core@7.18.9: + /@emotion/babel-plugin/11.9.2_@babel+core@7.18.10: resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/helper-module-imports': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.9 + '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.10 '@babel/runtime': 7.17.9 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.5 @@ -4568,7 +4593,7 @@ packages: resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} dev: false - /@emotion/react/11.9.3_lxeixztqul6ae7cp3cpkyxlhzm: + /@emotion/react/11.9.3_byq7oc57qftat37gkdlgphtura: resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -4580,9 +4605,9 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/runtime': 7.17.9 - '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.9 + '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.10 '@emotion/cache': 11.9.3 '@emotion/serialize': 1.0.4 '@emotion/utils': 1.1.0 @@ -4645,7 +4670,7 @@ packages: react: 17.0.2 dev: true - /@emotion/styled/11.9.3_lrdyawhmscavswn6eqk2uibmxm: + /@emotion/styled/11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy: resolution: {integrity: sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==} peerDependencies: '@babel/core': ^7.0.0 @@ -4658,11 +4683,11 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 '@babel/runtime': 7.17.9 - '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.9 + '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.10 '@emotion/is-prop-valid': 1.1.3 - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura '@emotion/serialize': 1.0.4 '@emotion/utils': 1.1.0 react: 18.2.0 @@ -4786,7 +4811,6 @@ packages: /@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==} @@ -5195,8 +5219,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.9 - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy '@mui/base': 5.0.0-alpha.89_biqbaboplfbrettd7655fr4n2y '@mui/system': 5.9.0_fdnqutfacy7v3gmlcm66flps3q '@mui/types': 7.1.4 @@ -5242,8 +5266,8 @@ packages: dependencies: '@babel/runtime': 7.17.9 '@emotion/cache': 11.9.3 - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -5266,8 +5290,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.9 - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy '@mui/private-theming': 5.9.0_react@18.2.0 '@mui/styled-engine': 5.8.7_fdnqutfacy7v3gmlcm66flps3q '@mui/types': 7.1.4 @@ -5334,8 +5358,8 @@ packages: '@date-io/dayjs': 2.14.0 '@date-io/luxon': 2.14.0 '@date-io/moment': 2.14.0 - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy '@mui/system': 5.9.0_fdnqutfacy7v3gmlcm66flps3q '@mui/utils': 5.9.0_react@18.2.0 @@ -7686,7 +7710,7 @@ packages: dev: true /@types/form-data/0.0.33: - resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + resolution: {integrity: sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=} dependencies: '@types/node': 18.0.4 dev: true @@ -7726,7 +7750,6 @@ packages: /@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==} @@ -9260,7 +9283,6 @@ packages: /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} @@ -9283,7 +9305,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -9311,6 +9332,10 @@ packages: entities: 2.2.0 dev: true + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch/2.0.0: resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} dependencies: @@ -10184,6 +10209,16 @@ packages: semver: 7.3.7 dev: true + /bundle-require/3.0.4_esbuild@0.14.47: + resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.13' + dependencies: + esbuild: 0.14.47 + load-tsconfig: 0.2.3 + dev: true + /bytes/3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -10224,13 +10259,12 @@ packages: foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.4 + istanbul-reports: 3.1.5 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 9.0.0 yargs: 16.2.0 yargs-parser: 20.2.9 - dev: true /cac/6.7.12: resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==} @@ -10660,7 +10694,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} @@ -10725,14 +10758,12 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true /color-support/1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} @@ -11062,7 +11093,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /crypto-browserify/3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} @@ -11876,7 +11906,6 @@ packages: /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -13194,7 +13223,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-up/6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -13257,7 +13285,6 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 - dev: true /forever-agent/0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} @@ -13504,7 +13531,6 @@ packages: /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-func-name/2.0.0: resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} @@ -13644,6 +13670,17 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true + /glob/7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -13810,7 +13847,6 @@ packages: /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-glob/1.0.0: resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==} @@ -14037,7 +14073,6 @@ packages: /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true /html-minifier-terser/5.1.1: resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} @@ -14578,7 +14613,6 @@ packages: /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-fullwidth-code-point/4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -14849,7 +14883,6 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true /isobject/2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} @@ -14884,7 +14917,6 @@ packages: /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==} @@ -14897,7 +14929,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /istanbul-lib-report/3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} @@ -14906,7 +14937,6 @@ packages: 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==} @@ -14917,15 +14947,6 @@ packages: 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 /istanbul-reports/3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} @@ -14933,7 +14954,6 @@ packages: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: true /iterate-iterator/1.0.2: resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} @@ -15984,6 +16004,11 @@ packages: strip-bom: 3.0.0 dev: true + /load-tsconfig/0.2.3: + resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /loader-runner/2.4.0: resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} @@ -16044,7 +16069,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true /locate-path/7.1.0: resolution: {integrity: sha512-HNx5uOnYeK4SxEoid5qnhRfprlJeGMzFRKPLCf/15N3/B4AiofNwC/yq7VBKdVk9dx7m+PiYCJOGg55JYTAqoQ==} @@ -16201,7 +16225,6 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: true /makeerror/1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -16705,6 +16728,14 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /nan/2.15.0: resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} requiresBuild: true @@ -16774,7 +16805,7 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next/12.1.5_fjquie5vgc3vhmxncuaaouwdhe: + /next/12.1.5_hbavo5rcrxpva3rqoclkpvthlq: resolution: {integrity: sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ==} engines: {node: '>=12.22.0'} hasBin: true @@ -16797,7 +16828,7 @@ packages: postcss: 8.4.5 react: 18.0.0 react-dom: 18.0.0_react@18.0.0 - styled-jsx: 5.0.1_7jenfiqst5d22hffn2mljxpp4e + styled-jsx: 5.0.1_k6xwmnqmgysg6weibx66ue6pyi optionalDependencies: '@next/swc-android-arm-eabi': 12.1.5 '@next/swc-android-arm64': 12.1.5 @@ -16932,8 +16963,8 @@ packages: '@emotion/styled': optional: true dependencies: - '@emotion/react': 11.9.3_lxeixztqul6ae7cp3cpkyxlhzm - '@emotion/styled': 11.9.3_lrdyawhmscavswn6eqk2uibmxm + '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy clsx: 1.1.1 hoist-non-react-statics: 3.3.2 @@ -17281,7 +17312,6 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true /p-limit/4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -17316,7 +17346,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-locate/6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -17503,7 +17532,6 @@ packages: /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true /path-exists/5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} @@ -17522,7 +17550,6 @@ packages: /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -17764,6 +17791,22 @@ packages: postcss: 7.0.39 dev: true + /postcss-load-config/3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.5 + yaml: 1.10.2 + dev: true + /postcss-loader/4.3.0_gzaxsinx64nntyd3vmdqwl7coe: resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} engines: {node: '>= 10.13.0'} @@ -18875,7 +18918,6 @@ packages: /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -19370,7 +19412,6 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex/1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} @@ -19380,7 +19421,6 @@ packages: /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true /shell-quote/1.7.3: resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} @@ -19408,7 +19448,6 @@ packages: /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true /simple-git-hooks/2.8.0: resolution: {integrity: sha512-ocmZQORwa6x9mxg+gVIAp5o4wXiWOHGXyrDBA0+UxGKIEKOyFtL4LWNKkP/2ornQPdlnlDGDteVeYP5FjhIoWA==} @@ -19804,7 +19843,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width/5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -19904,7 +19942,6 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-ansi/7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} @@ -19995,7 +20032,7 @@ packages: inline-style-parser: 0.1.1 dev: true - /styled-jsx/5.0.1_7jenfiqst5d22hffn2mljxpp4e: + /styled-jsx/5.0.1_k6xwmnqmgysg6weibx66ue6pyi: resolution: {integrity: sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -20008,7 +20045,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.18.9 + '@babel/core': 7.18.10 react: 18.0.0 dev: false @@ -20016,6 +20053,19 @@ packages: resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} dev: false + /sucrase/3.25.0: + resolution: {integrity: sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + /supports-color/2.0.0: resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=} engines: {node: '>=0.8.0'} @@ -20032,7 +20082,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -20270,7 +20319,6 @@ packages: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -20293,6 +20341,19 @@ packages: qs: 6.10.3 dev: true + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + /throat/6.0.1: resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} dev: true @@ -20441,6 +20502,11 @@ packages: punycode: 2.1.1 dev: true + /tree-kill/1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + /trim-newlines/1.0.0: resolution: {integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM=} engines: {node: '>=0.10.0'} @@ -20468,6 +20534,10 @@ packages: resolution: {integrity: sha512-+xUYN/yYCwAtK7NtE0M1w5U1TlJg8ODoepMttmfsuRSo/Pz49bv7ZCILkCiBEpGBOIRrFMynnIhrY42U57Rl1g==} dev: true + /ts-interface-checker/0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /ts-invariant/0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} @@ -20507,6 +20577,42 @@ packages: /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tsup/6.2.2_typescript@4.7.4: + resolution: {integrity: sha512-vJ9IAdif4GKAz2XMZzjX1hNqhBezJWXjm0qeQEoI7y//a64cxgCF8178eTMV4jBu7YNKnfAPpPSuyXW4mN+9rA==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: ^4.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 3.0.4_esbuild@0.14.47 + cac: 6.7.12 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.14.47 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4 + resolve-from: 5.0.0 + rollup: 2.77.2 + source-map: 0.8.0-beta.0 + sucrase: 3.25.0 + tree-kill: 1.2.2 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -21284,7 +21390,6 @@ packages: '@jridgewell/trace-mapping': 0.3.13 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - dev: true /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -21915,7 +22020,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /wide-align/1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -22124,7 +22228,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi/8.0.1: resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} @@ -22230,7 +22333,6 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist/2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -22265,7 +22367,6 @@ packages: /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: true /yargs-parser/21.0.1: resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} @@ -22283,7 +22384,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true /yargs/17.4.1: resolution: {integrity: sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==} @@ -22308,7 +22408,6 @@ packages: /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} diff --git a/test/core/vitest.config.ts b/test/core/vitest.config.ts index abbb0fa1c691..f18624c68273 100644 --- a/test/core/vitest.config.ts +++ b/test/core/vitest.config.ts @@ -43,6 +43,7 @@ export default defineConfig({ ], testNamePattern: '^((?!does not include test that).)*$', coverage: { + provider: 'c8', reporter: ['text', 'html'], }, env: { From 684f7e36fbee45ddae25c953ff22fa9d9906c8a0 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 12:34:28 +0800 Subject: [PATCH 09/27] fix: make it working --- packages/coverage-c8/package.json | 6 ++-- packages/coverage-c8/src/index.ts | 4 +-- packages/coverage-istanbul/package.json | 6 ++-- .../{coverage/index.ts => coverage.ts} | 12 ++++---- packages/vitest/src/node/cli-api.ts | 23 ++++----------- packages/vitest/src/node/core.ts | 29 ++++++++++++++----- packages/vitest/src/node/logger.ts | 3 ++ test/core/vitest.config.ts | 2 +- 8 files changed, 45 insertions(+), 40 deletions(-) rename packages/vitest/src/integrations/{coverage/index.ts => coverage.ts} (54%) diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index 30295c5ffe34..b76cdce305a5 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -27,11 +27,11 @@ ".": { "types": "./dist/index.d.ts", "require": "./dist/index.cjs", - "import": "./dist/index.mjs" + "import": "./dist/index.js" } }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ "dist" diff --git a/packages/coverage-c8/src/index.ts b/packages/coverage-c8/src/index.ts index f2af3162358e..eed983902705 100644 --- a/packages/coverage-c8/src/index.ts +++ b/packages/coverage-c8/src/index.ts @@ -10,9 +10,9 @@ import { configDefaults } from 'vitest/config' import type { CoverageC8Options, CoverageProvider, ResolvedCoverageOptions } from 'vitest' import type { Vitest } from 'vitest/node' // @ts-expect-error missing types -import createReport from 'c8/lib/report' +import createReport from 'c8/lib/report.js' // @ts-expect-error missing types -import { checkCoverages } from 'c8/lib/commands/check-coverage' +import { checkCoverages } from 'c8/lib/commands/check-coverage.js' export default class C8CoverageProvider implements CoverageProvider { name = 'c8' diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 4cd85a08532b..3dd7532114f2 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -27,11 +27,11 @@ ".": { "types": "./dist/index.d.ts", "require": "./dist/index.cjs", - "import": "./dist/index.mjs" + "import": "./dist/index.js" } }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", + "main": "./dist/index.js", + "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ "dist" diff --git a/packages/vitest/src/integrations/coverage/index.ts b/packages/vitest/src/integrations/coverage.ts similarity index 54% rename from packages/vitest/src/integrations/coverage/index.ts rename to packages/vitest/src/integrations/coverage.ts index fdc625aacd35..ed7a674cf9ae 100644 --- a/packages/vitest/src/integrations/coverage/index.ts +++ b/packages/vitest/src/integrations/coverage.ts @@ -1,22 +1,22 @@ import { importModule } from 'local-pkg' -import type { CoverageOptions, CoverageProvider } from '../../types' +import type { CoverageOptions, CoverageProvider } from '../types' -const providerMap = { +export const CoverageProviderMap = { c8: '@vitest/coverage-c8', istanbul: '@vitest/coverage-istanbul', } -export async function getCoverageProvider(options?: CoverageOptions): Promise { +export async function getCoverageProvider(options?: CoverageOptions): Promise { if (options?.enabled && options?.provider) { - const { default: CoverageProvider } = await importModule(providerMap[options.provider]) + const { default: CoverageProvider } = await importModule(CoverageProviderMap[options.provider]) return new CoverageProvider() } - return undefined + return null } export async function getCoverageInsideWorker(options: CoverageOptions) { if (options.enabled && options.provider) { - const { default: CoverageProvider } = await importModule(providerMap[options.provider]) + const { default: CoverageProvider } = await importModule(CoverageProviderMap[options.provider]) return CoverageProvider?.getCoverage() } } diff --git a/packages/vitest/src/node/cli-api.ts b/packages/vitest/src/node/cli-api.ts index 566cddaffb98..0b8453c6911d 100644 --- a/packages/vitest/src/node/cli-api.ts +++ b/packages/vitest/src/node/cli-api.ts @@ -1,5 +1,6 @@ import { resolve } from 'pathe' import type { UserConfig as ViteUserConfig } from 'vite' +import { CoverageProviderMap } from '../integrations/coverage' import { envPackageNames } from '../integrations/env' import type { UserConfig } from '../types' import { ensurePackageInstalled } from '../utils' @@ -37,24 +38,12 @@ export async function startVitest(cliFilters: string[], options: CliOptions, vit const ctx = await createVitest(options, viteOverrides) if (ctx.config.coverage.enabled) { - // TODO: Requring all these packages to be installed by users may be too much - const requiredPackages = ctx.config.coverage.provider === 'istanbul' - ? [ - 'istanbul-lib-coverage', - 'istanbul-lib-instrument', - 'istanbul-lib-report', - 'istanbul-reports', - 'istanbul-lib-source-maps', - ] - : ctx.config.coverage.provider === 'c8' - ? ['c8'] - : [] + const provider = ctx.config.coverage.provider || 'c8' + const requiredPackages = CoverageProviderMap[provider] - for (const pkg of requiredPackages) { - if (!await ensurePackageInstalled(pkg, root)) { - process.exitCode = 1 - return false - } + if (!await ensurePackageInstalled(requiredPackages, root)) { + process.exitCode = 1 + return false } } diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 7432dd00bdeb..c4768035a8a7 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -29,7 +29,7 @@ export class Vitest { snapshot: SnapshotManager = undefined! cache: VitestCache = undefined! reporters: Reporter[] = undefined! - coverageProvider: CoverageProvider | undefined + coverageProvider: CoverageProvider | null | undefined logger: Logger pool: WorkerPool | undefined @@ -83,12 +83,6 @@ export class Vitest { this.reporters = await createReporters(resolved.reporters, this.runner) - this.coverageProvider = await getCoverageProvider(options.coverage) - if (this.coverageProvider) { - this.coverageProvider.initialize(this) - this.config.coverage = this.coverageProvider.resolveOptions() - } - this.runningPromise = undefined this._onRestartListeners.forEach(fn => fn()) @@ -104,6 +98,17 @@ export class Vitest { } } + async initCoverageProvider() { + if (this.coverageProvider !== undefined) + return + this.coverageProvider = await getCoverageProvider(this.config.coverage) + if (this.coverageProvider) { + await this.coverageProvider.initialize(this) + this.config.coverage = this.coverageProvider.resolveOptions() + } + return this.coverageProvider + } + getSerializableConfig() { return deepMerge({ ...this.config, @@ -123,6 +128,14 @@ export class Vitest { } async start(filters?: string[]) { + try { + await this.initCoverageProvider() + } + catch (e) { + this.logger.error(e) + process.exit(1) + } + await this.report('onInit', this) const files = await this.filterTestsBySource( @@ -143,7 +156,7 @@ export class Vitest { await this.runFiles(files) if (this.coverageProvider) { - this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.yellow(this.coverageProvider.name)) + this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.green(this.coverageProvider.name)) await this.coverageProvider.reportCoverage() } diff --git a/packages/vitest/src/node/logger.ts b/packages/vitest/src/node/logger.ts index c4a613522006..4633617cd0ca 100644 --- a/packages/vitest/src/node/logger.ts +++ b/packages/vitest/src/node/logger.ts @@ -102,6 +102,9 @@ export class Logger { else if (this.ctx.config.api) this.log(c.dim(c.green(` API started at http://${this.ctx.config.api?.host || 'localhost'}:${c.bold(`${this.ctx.config.api.port}`)}`))) + if (this.ctx.coverageProvider) + this.log(c.dim(' Coverage enabled with ') + c.green(this.ctx.coverageProvider.name)) + this.log() } diff --git a/test/core/vitest.config.ts b/test/core/vitest.config.ts index f18624c68273..a0acc89392e5 100644 --- a/test/core/vitest.config.ts +++ b/test/core/vitest.config.ts @@ -43,7 +43,7 @@ export default defineConfig({ ], testNamePattern: '^((?!does not include test that).)*$', coverage: { - provider: 'c8', + provider: 'istanbul', reporter: ['text', 'html'], }, env: { From 93291ad839fb87f24450db1d6d0bd00175906885 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 12:47:59 +0800 Subject: [PATCH 10/27] refactor: use top-level imports for istanbul --- docs/config/index.md | 6 +- packages/coverage-istanbul/package.json | 12 +++- packages/coverage-istanbul/src/index.ts | 58 ++++++++----------- .../{instrumenter.ts => coverageTransform.ts} | 5 +- packages/vitest/src/node/plugins/index.ts | 4 +- packages/vitest/src/types/coverage.ts | 4 +- pnpm-lock.yaml | 32 ++++++++++ 7 files changed, 74 insertions(+), 47 deletions(-) rename packages/vitest/src/node/plugins/{instrumenter.ts => coverageTransform.ts} (66%) diff --git a/docs/config/index.md b/docs/config/index.md index 8594cb2ecbd5..e10422b5c36b 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -420,7 +420,7 @@ Isolate environment for each test file. Does not work if you disable [`--threads ### coverage -- **Type:** `C8Options | IstanbulOptions` +- **Type:** `CoverageC8Options | CoverageIstanbulOptions` - **Default:** `undefined` You can use [`c8`](https://github.com/bcoe/c8) or [`istanbul`](https://istanbul.js.org/) for coverage collection. @@ -432,11 +432,11 @@ You can use [`c8`](https://github.com/bcoe/c8) or [`istanbul`](https://istanbul. Use `provider` to select the tool for coverage collection. -#### C8Options +#### CoverageC8Options Used when `provider: 'c8'` is set. Coverage options are passed to [`c8`](https://github.com/bcoe/c8). -#### IstanbulOptions +#### CoverageIstanbulOptions Used when `provider: 'istanbul'` is set. diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 3dd7532114f2..1570567b019b 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -41,11 +41,19 @@ "dev": "tsup --watch=src" }, "dependencies": { - "vitest": "workspace:*", "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.5" + "istanbul-reports": "^3.1.5", + "test-exclude": "^6.0.0", + "vitest": "workspace:*" + }, + "devDependencies": { + "@types/istanbul-lib-coverage": "^2.0.4", + "@types/istanbul-lib-instrument": "^1.7.4", + "@types/istanbul-lib-report": "^3.0.0", + "@types/istanbul-lib-source-maps": "^4.0.1", + "@types/istanbul-reports": "^3.0.1" } } diff --git a/packages/coverage-istanbul/src/index.ts b/packages/coverage-istanbul/src/index.ts index 34d976698df3..06547aeeb6be 100644 --- a/packages/coverage-istanbul/src/index.ts +++ b/packages/coverage-istanbul/src/index.ts @@ -1,35 +1,22 @@ /* eslint-disable no-restricted-imports */ import { existsSync, promises as fs } from 'fs' -import { createRequire } from 'module' import { relative, resolve } from 'pathe' -import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' +import type { TransformPluginContext } from 'rollup' import type { CoverageIstanbulOptions, CoverageProvider, ResolvedCoverageOptions, Vitest } from 'vitest' import { configDefaults, defaultExclude, defaultInclude } from 'vitest/config' +import libReport from 'istanbul-lib-report' +import reports from 'istanbul-reports' +import type { CoverageMap } from 'istanbul-lib-coverage' +import libCoverage from 'istanbul-lib-coverage' +import libSourceMaps from 'istanbul-lib-source-maps' +import { type Instrumenter, createInstrumenter } from 'istanbul-lib-instrument' +// @ts-expect-error missing types +import _TestExclude from 'test-exclude' -const require = createRequire(import.meta.url) const coverageVariable = '__VITEST_COVERAGE__' -interface Instrumenter { - instrumentSync( - code: string, - filename: string, - inputSourceMap: object - ): string - lastSourceMap(): ExistingRawSourceMap -} - type Threshold = 'lines' | 'functions' | 'statements' | 'branches' -interface CoverageSummary { - data: { [key in Threshold]: { pct: number } } -} - -interface CoverageMap { - files: () => string[] - fileCoverageFor: (file: string) => { toSummary: () => CoverageSummary } - getCoverageSummary: () => CoverageSummary -} - interface TestExclude { new(opts: { cwd?: string | string[] @@ -60,19 +47,18 @@ export default class IstanbulCoverageProvider implements CoverageProvider { this.ctx = ctx this.options = resolveIstanbulOptions(ctx.config.coverage, ctx.config.root) - const { createInstrumenter } = require('istanbul-lib-instrument') this.instrumenter = createInstrumenter({ produceSourceMap: true, autoWrap: false, esModules: true, coverageVariable, + // @ts-expect-error missing type coverageGlobalScope: 'globalThis', coverageGlobalScopeFunc: false, ignoreClassMethods: this.options.ignoreClassMethods, }) - const TestExclude = require('test-exclude') - this.testExclude = new TestExclude({ + this.testExclude = new _TestExclude({ cwd: ctx.config.root, exclude: [...defaultExclude, ...defaultInclude, ...this.options.exclude], excludeNodeModules: true, @@ -92,8 +78,8 @@ export default class IstanbulCoverageProvider implements CoverageProvider { // eslint-disable-next-line @typescript-eslint/no-unused-vars -- ignoreRestSiblings should be enabled const { sourcesContent, ...sourceMap } = pluginCtx.getCombinedSourcemap() - const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap) - const map = this.instrumenter.lastSourceMap() + const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap as any) + const map = this.instrumenter.lastSourceMap() as any return { code, map } } @@ -110,11 +96,6 @@ export default class IstanbulCoverageProvider implements CoverageProvider { } async reportCoverage() { - const libReport = require('istanbul-lib-report') - const reports = require('istanbul-reports') - const libCoverage = require('istanbul-lib-coverage') - const libSourceMaps = require('istanbul-lib-source-maps') - const mergedCoverage = this.coverages.reduce((coverage, previousCoverageMap) => { const map = libCoverage.createCoverageMap(coverage) map.merge(previousCoverageMap) @@ -133,7 +114,7 @@ export default class IstanbulCoverageProvider implements CoverageProvider { }) for (const reporter of this.options.reporter) { - reports.create(reporter, { + reports.create(reporter as any, { skipFull: this.options.skipFull, }).execute(context) } @@ -154,8 +135,15 @@ export default class IstanbulCoverageProvider implements CoverageProvider { checkThresholds(coverageMap: CoverageMap, thresholds: Record) { // Construct list of coverage summaries where thresholds are compared against const summaries = this.options.perFile - ? coverageMap.files().map((file: string) => ({ file, summary: coverageMap.fileCoverageFor(file).toSummary() })) - : [{ summary: coverageMap.getCoverageSummary(), file: null }] + ? coverageMap.files() + .map((file: string) => ({ + file, + summary: coverageMap.fileCoverageFor(file).toSummary(), + })) + : [{ + file: null, + summary: coverageMap.getCoverageSummary(), + }] // Check thresholds of each summary for (const { summary, file } of summaries) { diff --git a/packages/vitest/src/node/plugins/instrumenter.ts b/packages/vitest/src/node/plugins/coverageTransform.ts similarity index 66% rename from packages/vitest/src/node/plugins/instrumenter.ts rename to packages/vitest/src/node/plugins/coverageTransform.ts index 7edbfb3d2727..f31d19762e87 100644 --- a/packages/vitest/src/node/plugins/instrumenter.ts +++ b/packages/vitest/src/node/plugins/coverageTransform.ts @@ -2,10 +2,9 @@ import type { Plugin as VitePlugin } from 'vite' import type { Vitest } from '../core' -export function InstrumenterPlugin(ctx: Vitest): VitePlugin | null { +export function CoverageTransform(ctx: Vitest): VitePlugin | null { return { - name: 'vitest:instrumenter', - + name: 'vitest:coverage-transform', transform(srcCode, id) { return ctx.coverageProvider?.onFileTransform?.(srcCode, id, this) }, diff --git a/packages/vitest/src/node/plugins/index.ts b/packages/vitest/src/node/plugins/index.ts index 72e57ef34eff..a2a8266151e6 100644 --- a/packages/vitest/src/node/plugins/index.ts +++ b/packages/vitest/src/node/plugins/index.ts @@ -8,7 +8,7 @@ import { EnvReplacerPlugin } from './envRelacer' import { GlobalSetupPlugin } from './globalSetup' import { MocksPlugin } from './mock' import { CSSEnablerPlugin } from './cssEnabler' -import { InstrumenterPlugin } from './instrumenter' +import { CoverageTransform } from './coverageTransform' export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest()): Promise { let haveStarted = false @@ -170,7 +170,7 @@ export async function VitestPlugin(options: UserConfig = {}, ctx = new Vitest()) ? await BrowserPlugin() : []), CSSEnablerPlugin(ctx), - InstrumenterPlugin(ctx), + CoverageTransform(ctx), options.ui ? await UIPlugin() : null, diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index e5c5eed89876..15c6eff438c9 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -1,4 +1,4 @@ -import type { ExistingRawSourceMap, TransformPluginContext } from 'rollup' +import type { TransformPluginContext, TransformResult } from 'rollup' import type { Vitest } from '../node' import type { Arrayable } from './general' @@ -18,7 +18,7 @@ export interface CoverageProvider { sourceCode: string, id: string, pluginCtx: TransformPluginContext - ): void | { code: string; map: ExistingRawSourceMap } + ): TransformResult | Promise } export type CoverageReporter = diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5364c1828acd..7bd11e15a7fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -616,11 +616,17 @@ importers: packages/coverage-istanbul: specifiers: + '@types/istanbul-lib-coverage': ^2.0.4 + '@types/istanbul-lib-instrument': ^1.7.4 + '@types/istanbul-lib-report': ^3.0.0 + '@types/istanbul-lib-source-maps': ^4.0.1 + '@types/istanbul-reports': ^3.0.1 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.5 + test-exclude: ^6.0.0 vitest: workspace:* dependencies: istanbul-lib-coverage: 3.2.0 @@ -628,7 +634,14 @@ importers: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 + test-exclude: 6.0.0 vitest: link:../vitest + devDependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-instrument': 1.7.4 + '@types/istanbul-lib-report': 3.0.0 + '@types/istanbul-lib-source-maps': 4.0.1 + '@types/istanbul-reports': 3.0.1 packages/ui: specifiers: @@ -7612,6 +7625,10 @@ packages: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true + /@types/babel-types/7.0.11: + resolution: {integrity: sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==} + dev: true + /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: @@ -7751,12 +7768,27 @@ packages: /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + /@types/istanbul-lib-instrument/1.7.4: + resolution: {integrity: sha512-1i1VVkU2KrpZCmti+t5J/zBb2KLKxHgU1EYL+0QtnDnVyZ59aSKcpnG6J0I6BZGDON566YzPNIlNfk7m+9l1JA==} + dependencies: + '@types/babel-types': 7.0.11 + '@types/istanbul-lib-coverage': 2.0.4 + source-map: 0.6.1 + 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-lib-source-maps/4.0.1: + resolution: {integrity: sha512-WH6e5naLXI3vB2Px3whNeYxzDgm6S6sk3Ht8e3/BiWwEnzZi72wja3bWzWwcgbFTFp8hBLB7NT2p3lNJgxCxvA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + source-map: 0.6.1 + dev: true + /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: From 1f662ea0af94fa761e732e4f84ef61b64a173b20 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:05:30 +0800 Subject: [PATCH 11/27] docs: update --- README.md | 2 +- docs/.vitepress/components/FeaturesList.vue | 2 +- docs/guide/coverage.md | 52 +++++++++++++-------- docs/guide/features.md | 17 +------ 4 files changed, 36 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index d860d50ed09b..2608108ebd6c 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ A blazing fast unit test framework powered by Vite. - [Jest Snapshot](https://jestjs.io/docs/snapshot-testing) - [Chai](https://www.chaijs.com/) built-in for assertions, with [Jest expect](https://jestjs.io/docs/expect) compatible APIs. - [Smart & instant watch mode](https://vitest.dev/guide/features.html#watch-mode), like HMR for tests! -- [Native code coverage](https://vitest.dev/guide/features.html#coverage) via [c8](https://github.com/bcoe/c8) +- [Native code coverage](https://vitest.dev/guide/features.html#coverage) via [c8](https://github.com/bcoe/c8) or [`istanbul`](https://istanbul.js.org/). - [Tinyspy](https://github.com/Aslemammad/tinyspy) built-in for mocking, stubbing, and spies. - [JSDOM](https://github.com/jsdom/jsdom) and [happy-dom](https://github.com/capricorn86/happy-dom) for DOM and browser API mocking - Components testing ([Vue](./examples/vue), [React](./examples/react), [Svelte](./examples/svelte), [Lit](./examples/lit), [Vitesse](./examples/vitesse)) diff --git a/docs/.vitepress/components/FeaturesList.vue b/docs/.vitepress/components/FeaturesList.vue index 277590a3b702..ea64c7de68c3 100644 --- a/docs/.vitepress/components/FeaturesList.vue +++ b/docs/.vitepress/components/FeaturesList.vue @@ -20,7 +20,7 @@ Chai built-in for assertions + Jest expect compatible APIs Tinyspy built-in for mocking happy-dom or jsdom for DOM mocking - Native code coverage via c8 + Code coverage via c8 or istanbul Rust-like in-source testing diff --git a/docs/guide/coverage.md b/docs/guide/coverage.md index 4e24ae9b8ff2..9721b627fd8d 100644 --- a/docs/guide/coverage.md +++ b/docs/guide/coverage.md @@ -6,17 +6,44 @@ title: Coverage | Guide Vitest supports Native code coverage via [`c8`](https://github.com/bcoe/c8) and instrumented code coverage via [`istanbul`](https://istanbul.js.org/). -`c8` and `istanbul`-packages are optional peer dependencies, to use the coverage feature you will need to install these first by: +## Coverage Providers + +:::tip +Since Vitest v0.22.0 +::: + +Both `c8` and `istanbul` support are optional. By default, `c8` will be used. + +You can select the coverage tool by setting `test.coverage.provider` to either `c8` or `istanbul`: + +```ts +// vite.config.ts +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + coverage: { + provider: 'istanbul' // or 'c8' + }, + }, +}) +``` + +When you start the Vitest process, it will prompt you to install the corresponding support package automatically. + +Or if you prefer to install them manually: ```bash # For c8 -npm i -D c8 +npm i -D @vitest/coverage-c8 -# For istanbul, TODO: replace with `@vitest/coverage-istanbul` or similar package -npm i -D istanbul-lib-coverage istanbul-lib-instrument istanbul-lib-report istanbul-lib-source-maps istanbul-reports +# For istanbul +npm i -D @vitest/coverage-istanbul ``` -Then you could get the coverage by passing the `--coverage` flag in CLI. +## Coverage Setup + +To test with coverage enabled, you can pass the `--coverage` flag in CLI. ```json { @@ -41,18 +68,3 @@ export default defineConfig({ }, }) ``` - -You can select the coverage tool by setting `test.coverage.provider` to either `c8` or `istanbul`: - -```ts -// vite.config.ts -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - coverage: { - provider: 'istanbul', - }, - }, -}) -``` diff --git a/docs/guide/features.md b/docs/guide/features.md index 16b3c7419fc2..b7ae12f1071a 100644 --- a/docs/guide/features.md +++ b/docs/guide/features.md @@ -136,7 +136,7 @@ Learn more at [Mocking](/guide/mocking). ## Coverage -Vitest supports Native code coverage via [c8](https://github.com/bcoe/c8). +Vitest supports Native code coverage via [`c8`](https://github.com/bcoe/c8) and instrumented code coverage via [`istanbul`](https://istanbul.js.org/). ```json { @@ -147,20 +147,7 @@ Vitest supports Native code coverage via [c8](https://github.com/bcoe/c8). } ``` -To configure it, set `test.coverage` options in your config file: - -```ts -// vite.config.ts -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - coverage: { - reporter: ['text', 'json', 'html'], - }, - }, -}) -``` +Learn more at [Coverage](/guide/coverage). ## In-source testing From c228115b6a4bec729c7b48d5ff72e74652d4bcb9 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:08:46 +0800 Subject: [PATCH 12/27] chore: lint --- .eslintignore | 3 +-- package.json | 4 ++-- packages/coverage-c8/package.json | 4 ++-- packages/coverage-c8/tsconfig.json | 2 +- packages/coverage-istanbul/tsconfig.json | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.eslintignore b/.eslintignore index 5891d08ff31e..ceee5217c471 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,6 +4,5 @@ node_modules *.snap *.d.ts coverage -!**/integrations/coverage !.vitepress -test/core/src/self \ No newline at end of file +test/core/src/self diff --git a/package.json b/package.json index 38ff69bbb2e7..5a9fcae37441 100644 --- a/package.json +++ b/package.json @@ -42,9 +42,9 @@ "@types/node": "^18.0.4", "@types/ws": "^8.5.3", "@vitest/browser": "workspace:*", - "@vitest/ui": "workspace:*", - "@vitest/coverage-istanbul": "workspace:*", "@vitest/coverage-c8": "workspace:*", + "@vitest/coverage-istanbul": "workspace:*", + "@vitest/ui": "workspace:*", "bumpp": "^8.2.1", "c8": "^7.12.0", "cross-env": "^7.0.3", diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index b76cdce305a5..505f80773c4e 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -41,8 +41,8 @@ "dev": "tsup --watch=src" }, "dependencies": { - "vitest": "workspace:*", - "c8": "^7.12.0" + "c8": "^7.12.0", + "vitest": "workspace:*" }, "devDependencies": { "vite-node": "workspace:*" diff --git a/packages/coverage-c8/tsconfig.json b/packages/coverage-c8/tsconfig.json index 0edba30e4b40..6bb61453c99e 100644 --- a/packages/coverage-c8/tsconfig.json +++ b/packages/coverage-c8/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.json", "include": [ - "src/**/*.ts", + "src/**/*.ts" ] } diff --git a/packages/coverage-istanbul/tsconfig.json b/packages/coverage-istanbul/tsconfig.json index 0edba30e4b40..6bb61453c99e 100644 --- a/packages/coverage-istanbul/tsconfig.json +++ b/packages/coverage-istanbul/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.json", "include": [ - "src/**/*.ts", + "src/**/*.ts" ] } From d675dabd5e86f45588735300da00619df8819f93 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:32:26 +0800 Subject: [PATCH 13/27] refactor: update coverage provider interface --- packages/coverage-c8/src/index.ts | 138 +------------ packages/coverage-c8/src/provider.ts | 126 ++++++++++++ packages/coverage-c8/src/takeCoverage.ts | 10 + packages/coverage-istanbul/src/constants.ts | 1 + packages/coverage-istanbul/src/index.ts | 202 +------------------ packages/coverage-istanbul/src/provider.ts | 192 ++++++++++++++++++ packages/vitest/src/integrations/coverage.ts | 12 +- packages/vitest/src/node/pool.ts | 4 +- packages/vitest/src/runtime/run.ts | 6 +- packages/vitest/src/types/coverage.ts | 14 +- packages/vitest/src/types/worker.ts | 6 +- 11 files changed, 369 insertions(+), 342 deletions(-) create mode 100644 packages/coverage-c8/src/provider.ts create mode 100644 packages/coverage-c8/src/takeCoverage.ts create mode 100644 packages/coverage-istanbul/src/constants.ts create mode 100644 packages/coverage-istanbul/src/provider.ts diff --git a/packages/coverage-c8/src/index.ts b/packages/coverage-c8/src/index.ts index eed983902705..ddc09359a394 100644 --- a/packages/coverage-c8/src/index.ts +++ b/packages/coverage-c8/src/index.ts @@ -1,136 +1,6 @@ -/* eslint-disable no-restricted-imports */ -import { existsSync, promises as fs } from 'fs' -import _url from 'url' -import type { Profiler } from 'inspector' -import v8 from 'v8' -import { resolve } from 'pathe' -import type { RawSourceMap } from 'vite-node' +export * from './takeCoverage' -import { configDefaults } from 'vitest/config' -import type { CoverageC8Options, CoverageProvider, ResolvedCoverageOptions } from 'vitest' -import type { Vitest } from 'vitest/node' -// @ts-expect-error missing types -import createReport from 'c8/lib/report.js' -// @ts-expect-error missing types -import { checkCoverages } from 'c8/lib/commands/check-coverage.js' - -export default class C8CoverageProvider implements CoverageProvider { - name = 'c8' - - ctx!: Vitest - options!: ResolvedCoverageOptions & { provider: 'c8' } - - initialize(ctx: Vitest) { - this.ctx = ctx - this.options = resolveC8Options(ctx.config.coverage, ctx.config.root) - } - - resolveOptions() { - return this.options - } - - onBeforeFilesRun() { - process.env.NODE_V8_COVERAGE ||= this.options.tempDirectory - } - - async clean(clean = true) { - if (clean && existsSync(this.options.reportsDirectory)) - await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) - - if (!existsSync(this.options.tempDirectory)) - await fs.mkdir(this.options.tempDirectory, { recursive: true }) - } - - onAfterSuiteRun() { - C8CoverageProvider.getCoverage() - } - - async reportCoverage() { - C8CoverageProvider.getCoverage() - const report = createReport(this.ctx.config.coverage) - - // add source maps - const sourceMapMeta: Record = {} - await Promise.all(Array - .from(this.ctx.vitenode.fetchCache.entries()) - .filter(i => !i[0].includes('/node_modules/')) - .map(async ([file, { result }]) => { - const map = result.map - if (!map) - return - - const url = _url.pathToFileURL(file).href - - let code: string | undefined - try { - code = (await fs.readFile(file)).toString() - } - catch {} - - // Vite does not report full path in sourcemap sources - // so use an actual file path - const sources = [url] - - sourceMapMeta[url] = { - source: result.code, - map: { - sourcesContent: code ? [code] : undefined, - ...map, - sources, - }, - } - })) - - // This is a magic number. It corresponds to the amount of code - // that we add in packages/vite-node/src/client.ts:114 (vm.runInThisContext) - // TODO: Include our transformations in sourcemaps - const offset = 224 - - report._getSourceMap = (coverage: Profiler.ScriptCoverage) => { - const path = _url.pathToFileURL(coverage.url).href - const data = sourceMapMeta[path] - - if (!data) - return {} - - return { - sourceMap: { - sourcemap: data.map, - }, - source: Array(offset).fill('.').join('') + data.source, - } - } - - await report.run() - await checkCoverages(this.options, report) - } - - // Flush coverage to disk - static getCoverage() { - if (v8.takeCoverage == null) - console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') - else - v8.takeCoverage() - } -} - -function resolveC8Options(options: CoverageC8Options, root: string) { - const resolved = { - ...configDefaults.coverage, - ...options as any, - } - - if (options['100']) { - resolved.lines = 100 - resolved.functions = 100 - resolved.branches = 100 - resolved.statements = 100 - } - - resolved.reporter = resolved.reporter || [] - resolved.reporter = Array.isArray(resolved.reporter) ? resolved.reporter : [resolved.reporter] - resolved.reportsDirectory = resolve(root, resolved.reportsDirectory) - resolved.tempDirectory = process.env.NODE_V8_COVERAGE || resolve(resolved.reportsDirectory, 'tmp') - - return resolved +export async function getProvider() { + const { C8CoverageProvider } = await import('./provider') + return new C8CoverageProvider() } diff --git a/packages/coverage-c8/src/provider.ts b/packages/coverage-c8/src/provider.ts new file mode 100644 index 000000000000..3c05da7b9fd2 --- /dev/null +++ b/packages/coverage-c8/src/provider.ts @@ -0,0 +1,126 @@ +import { existsSync, promises as fs } from 'fs' +import _url from 'url' +import type { Profiler } from 'inspector' +import { takeCoverage } from 'v8' +import { resolve } from 'pathe' +import type { RawSourceMap } from 'vite-node' +import { configDefaults } from 'vitest/config' +// eslint-disable-next-line no-restricted-imports +import type { CoverageC8Options, CoverageProvider, ResolvedCoverageOptions } from 'vitest' +import type { Vitest } from 'vitest/node' +// @ts-expect-error missing types +import createReport from 'c8/lib/report.js' +// @ts-expect-error missing types +import { checkCoverages } from 'c8/lib/commands/check-coverage.js' + +export class C8CoverageProvider implements CoverageProvider { + name = 'c8' + + ctx!: Vitest + options!: ResolvedCoverageOptions & { provider: 'c8' } + + initialize(ctx: Vitest) { + this.ctx = ctx + this.options = resolveC8Options(ctx.config.coverage, ctx.config.root) + } + + resolveOptions() { + return this.options + } + + onBeforeFilesRun() { + process.env.NODE_V8_COVERAGE ||= this.options.tempDirectory + } + + async clean(clean = true) { + if (clean && existsSync(this.options.reportsDirectory)) + await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) + + if (!existsSync(this.options.tempDirectory)) + await fs.mkdir(this.options.tempDirectory, { recursive: true }) + } + + onAfterSuiteRun() { + takeCoverage() + } + + async reportCoverage() { + takeCoverage() + const report = createReport(this.ctx.config.coverage) + + // add source maps + const sourceMapMeta: Record = {} + await Promise.all(Array + .from(this.ctx.vitenode.fetchCache.entries()) + .filter(i => !i[0].includes('/node_modules/')) + .map(async ([file, { result }]) => { + const map = result.map + if (!map) + return + + const url = _url.pathToFileURL(file).href + + let code: string | undefined + try { + code = (await fs.readFile(file)).toString() + } + catch { } + + // Vite does not report full path in sourcemap sources + // so use an actual file path + const sources = [url] + + sourceMapMeta[url] = { + source: result.code, + map: { + sourcesContent: code ? [code] : undefined, + ...map, + sources, + }, + } + })) + + // This is a magic number. It corresponds to the amount of code + // that we add in packages/vite-node/src/client.ts:114 (vm.runInThisContext) + // TODO: Include our transformations in sourcemaps + const offset = 224 + + report._getSourceMap = (coverage: Profiler.ScriptCoverage) => { + const path = _url.pathToFileURL(coverage.url).href + const data = sourceMapMeta[path] + + if (!data) + return {} + + return { + sourceMap: { + sourcemap: data.map, + }, + source: Array(offset).fill('.').join('') + data.source, + } + } + + await report.run() + await checkCoverages(this.options, report) + } +} +function resolveC8Options(options: CoverageC8Options, root: string) { + const resolved = { + ...configDefaults.coverage, + ...options as any, + } + + if (options['100']) { + resolved.lines = 100 + resolved.functions = 100 + resolved.branches = 100 + resolved.statements = 100 + } + + resolved.reporter = resolved.reporter || [] + resolved.reporter = Array.isArray(resolved.reporter) ? resolved.reporter : [resolved.reporter] + resolved.reportsDirectory = resolve(root, resolved.reportsDirectory) + resolved.tempDirectory = process.env.NODE_V8_COVERAGE || resolve(resolved.reportsDirectory, 'tmp') + + return resolved +} diff --git a/packages/coverage-c8/src/takeCoverage.ts b/packages/coverage-c8/src/takeCoverage.ts new file mode 100644 index 000000000000..5669b1088671 --- /dev/null +++ b/packages/coverage-c8/src/takeCoverage.ts @@ -0,0 +1,10 @@ +import v8 from 'v8' + +// Flush coverage to disk + +export function takeCoverage() { + if (v8.takeCoverage == null) + console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') + else + v8.takeCoverage() +} diff --git a/packages/coverage-istanbul/src/constants.ts b/packages/coverage-istanbul/src/constants.ts new file mode 100644 index 000000000000..1f81d8ad9fd9 --- /dev/null +++ b/packages/coverage-istanbul/src/constants.ts @@ -0,0 +1 @@ +export const COVERAGE_STORE_KEY = '__VITEST_COVERAGE__' diff --git a/packages/coverage-istanbul/src/index.ts b/packages/coverage-istanbul/src/index.ts index 06547aeeb6be..a88aae227082 100644 --- a/packages/coverage-istanbul/src/index.ts +++ b/packages/coverage-istanbul/src/index.ts @@ -1,199 +1,11 @@ -/* eslint-disable no-restricted-imports */ -import { existsSync, promises as fs } from 'fs' -import { relative, resolve } from 'pathe' -import type { TransformPluginContext } from 'rollup' -import type { CoverageIstanbulOptions, CoverageProvider, ResolvedCoverageOptions, Vitest } from 'vitest' -import { configDefaults, defaultExclude, defaultInclude } from 'vitest/config' -import libReport from 'istanbul-lib-report' -import reports from 'istanbul-reports' -import type { CoverageMap } from 'istanbul-lib-coverage' -import libCoverage from 'istanbul-lib-coverage' -import libSourceMaps from 'istanbul-lib-source-maps' -import { type Instrumenter, createInstrumenter } from 'istanbul-lib-instrument' -// @ts-expect-error missing types -import _TestExclude from 'test-exclude' +import { COVERAGE_STORE_KEY } from './constants' -const coverageVariable = '__VITEST_COVERAGE__' - -type Threshold = 'lines' | 'functions' | 'statements' | 'branches' - -interface TestExclude { - new(opts: { - cwd?: string | string[] - include?: string | string[] - exclude?: string | string[] - extension?: string | string[] - excludeNodeModules?: boolean - }): { shouldInstrument(filePath: string): boolean } +export async function getProvider() { + const { IstanbulCoverageProvider } = await import('./provider') + return new IstanbulCoverageProvider() } -export default class IstanbulCoverageProvider implements CoverageProvider { - name = 'istanbul' - - ctx!: Vitest - options!: ResolvedCoverageOptions & { provider: 'istanbul' } - instrumenter!: Instrumenter - testExclude!: InstanceType - - /** - * Coverage objects collected from workers. - * Some istanbul utilizers write these into file system instead of storing in memory. - * If storing in memory causes issues, we can simply write these into fs in `onAfterSuiteRun` - * and read them back when merging coverage objects in `onAfterAllFilesRun`. - */ - coverages: any[] = [] - - initialize(ctx: Vitest) { - this.ctx = ctx - this.options = resolveIstanbulOptions(ctx.config.coverage, ctx.config.root) - - this.instrumenter = createInstrumenter({ - produceSourceMap: true, - autoWrap: false, - esModules: true, - coverageVariable, - // @ts-expect-error missing type - coverageGlobalScope: 'globalThis', - coverageGlobalScopeFunc: false, - ignoreClassMethods: this.options.ignoreClassMethods, - }) - - this.testExclude = new _TestExclude({ - cwd: ctx.config.root, - exclude: [...defaultExclude, ...defaultInclude, ...this.options.exclude], - excludeNodeModules: true, - - // @ts-expect-error -- extension is not typed in configDefaults for some reason - extension: configDefaults.coverage.extension, - }) - } - - resolveOptions(): ResolvedCoverageOptions { - return this.options - } - - onFileTransform(sourceCode: string, id: string, pluginCtx: TransformPluginContext) { - if (!this.testExclude.shouldInstrument(id)) - return - - // eslint-disable-next-line @typescript-eslint/no-unused-vars -- ignoreRestSiblings should be enabled - const { sourcesContent, ...sourceMap } = pluginCtx.getCombinedSourcemap() - const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap as any) - const map = this.instrumenter.lastSourceMap() as any - - return { code, map } - } - - onAfterSuiteRun(coverage: any) { - this.coverages.push(coverage) - } - - async clean(clean = true) { - if (clean && existsSync(this.options.reportsDirectory)) - await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) - - this.coverages = [] - } - - async reportCoverage() { - const mergedCoverage = this.coverages.reduce((coverage, previousCoverageMap) => { - const map = libCoverage.createCoverageMap(coverage) - map.merge(previousCoverageMap) - - return map - }, {}) - - const sourceMapStore = libSourceMaps.createSourceMapStore() - const coverageMap: CoverageMap = await sourceMapStore.transformCoverage(mergedCoverage) - - const context = libReport.createContext({ - dir: this.options.reportsDirectory, - coverageMap, - sourceFinder: sourceMapStore.sourceFinder, - watermarks: this.options.watermarks, - }) - - for (const reporter of this.options.reporter) { - reports.create(reporter as any, { - skipFull: this.options.skipFull, - }).execute(context) - } - - if (this.options.branches - || this.options.functions - || this.options.lines - || this.options.statements) { - this.checkThresholds(coverageMap, { - branches: this.options.branches, - functions: this.options.functions, - lines: this.options.lines, - statements: this.options.statements, - }) - } - } - - checkThresholds(coverageMap: CoverageMap, thresholds: Record) { - // Construct list of coverage summaries where thresholds are compared against - const summaries = this.options.perFile - ? coverageMap.files() - .map((file: string) => ({ - file, - summary: coverageMap.fileCoverageFor(file).toSummary(), - })) - : [{ - file: null, - summary: coverageMap.getCoverageSummary(), - }] - - // Check thresholds of each summary - for (const { summary, file } of summaries) { - for (const thresholdKey of ['lines', 'functions', 'statements', 'branches'] as const) { - const threshold = thresholds[thresholdKey] - - if (threshold !== undefined) { - const coverage = summary.data[thresholdKey].pct - - if (coverage < threshold) { - process.exitCode = 1 - - /* - * Generate error message based on perFile flag: - * - ERROR: Coverage for statements (33.33%) does not meet threshold (85%) for src/math.ts - * - ERROR: Coverage for statements (50%) does not meet global threshold (85%) - */ - let errorMessage = `ERROR: Coverage for ${thresholdKey} (${coverage}%) does not meet` - - if (!this.options.perFile) - errorMessage += ' global' - - errorMessage += ` threshold (${threshold}%)` - - if (this.options.perFile && file) - errorMessage += ` for ${relative('./', file).replace(/\\/g, '/')}` - - console.error(errorMessage) - } - } - } - } - } - - static getCoverage() { - // @ts-expect-error -- untyped global - return globalThis[coverageVariable] - } -} - -function resolveIstanbulOptions(options: CoverageIstanbulOptions, root: string) { - const reportsDirectory = resolve(root, options.reportsDirectory || configDefaults.coverage.reportsDirectory!) - - const resolved = { - ...configDefaults.coverage, - ...options, - provider: 'istanbul', - reportsDirectory, - tempDirectory: resolve(reportsDirectory, 'tmp'), - } - - return resolved as ResolvedCoverageOptions & { provider: 'istanbul' } +export function takeCoverage() { + // @ts-expect-error -- untyped global + return globalThis[COVERAGE_STORE_KEY] } diff --git a/packages/coverage-istanbul/src/provider.ts b/packages/coverage-istanbul/src/provider.ts new file mode 100644 index 000000000000..e4411ef4da5a --- /dev/null +++ b/packages/coverage-istanbul/src/provider.ts @@ -0,0 +1,192 @@ +/* eslint-disable no-restricted-imports */ +import { existsSync, promises as fs } from 'fs' +import { relative, resolve } from 'pathe' +import type { TransformPluginContext } from 'rollup' +import type { AfterSuiteRunMeta, CoverageIstanbulOptions, CoverageProvider, ResolvedCoverageOptions, Vitest } from 'vitest' +import { configDefaults, defaultExclude, defaultInclude } from 'vitest/config' +import libReport from 'istanbul-lib-report' +import reports from 'istanbul-reports' +import type { CoverageMap } from 'istanbul-lib-coverage' +import libCoverage from 'istanbul-lib-coverage' +import libSourceMaps from 'istanbul-lib-source-maps' +import { type Instrumenter, createInstrumenter } from 'istanbul-lib-instrument' +// @ts-expect-error missing types +import _TestExclude from 'test-exclude' +import { COVERAGE_STORE_KEY } from './constants' + +type Threshold = 'lines' | 'functions' | 'statements' | 'branches' + +interface TestExclude { + new(opts: { + cwd?: string | string[] + include?: string | string[] + exclude?: string | string[] + extension?: string | string[] + excludeNodeModules?: boolean + }): { shouldInstrument(filePath: string): boolean } +} + +export class IstanbulCoverageProvider implements CoverageProvider { + name = 'istanbul' + + ctx!: Vitest + options!: ResolvedCoverageOptions & { provider: 'istanbul' } + instrumenter!: Instrumenter + testExclude!: InstanceType + + /** + * Coverage objects collected from workers. + * Some istanbul utilizers write these into file system instead of storing in memory. + * If storing in memory causes issues, we can simply write these into fs in `onAfterSuiteRun` + * and read them back when merging coverage objects in `onAfterAllFilesRun`. + */ + coverages: any[] = [] + + initialize(ctx: Vitest) { + this.ctx = ctx + this.options = resolveIstanbulOptions(ctx.config.coverage, ctx.config.root) + + this.instrumenter = createInstrumenter({ + produceSourceMap: true, + autoWrap: false, + esModules: true, + coverageVariable: COVERAGE_STORE_KEY, + // @ts-expect-error missing type + coverageGlobalScope: 'globalThis', + coverageGlobalScopeFunc: false, + ignoreClassMethods: this.options.ignoreClassMethods, + }) + + this.testExclude = new _TestExclude({ + cwd: ctx.config.root, + exclude: [...defaultExclude, ...defaultInclude, ...this.options.exclude], + excludeNodeModules: true, + + // @ts-expect-error -- extension is not typed in configDefaults for some reason + extension: configDefaults.coverage.extension, + }) + } + + resolveOptions(): ResolvedCoverageOptions { + return this.options + } + + onFileTransform(sourceCode: string, id: string, pluginCtx: TransformPluginContext) { + if (!this.testExclude.shouldInstrument(id)) + return + + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- ignoreRestSiblings should be enabled + const { sourcesContent, ...sourceMap } = pluginCtx.getCombinedSourcemap() + const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap as any) + const map = this.instrumenter.lastSourceMap() as any + + return { code, map } + } + + onAfterSuiteRun({ coverage }: AfterSuiteRunMeta) { + this.coverages.push(coverage) + } + + async clean(clean = true) { + if (clean && existsSync(this.options.reportsDirectory)) + await fs.rm(this.options.reportsDirectory, { recursive: true, force: true }) + + this.coverages = [] + } + + async reportCoverage() { + const mergedCoverage = this.coverages.reduce((coverage, previousCoverageMap) => { + const map = libCoverage.createCoverageMap(coverage) + map.merge(previousCoverageMap) + return map + }, {}) + + const sourceMapStore = libSourceMaps.createSourceMapStore() + const coverageMap: CoverageMap = await sourceMapStore.transformCoverage(mergedCoverage) + + const context = libReport.createContext({ + dir: this.options.reportsDirectory, + coverageMap, + sourceFinder: sourceMapStore.sourceFinder, + watermarks: this.options.watermarks, + }) + + for (const reporter of this.options.reporter) { + reports.create(reporter as any, { + skipFull: this.options.skipFull, + }).execute(context) + } + + if (this.options.branches + || this.options.functions + || this.options.lines + || this.options.statements) { + this.checkThresholds(coverageMap, { + branches: this.options.branches, + functions: this.options.functions, + lines: this.options.lines, + statements: this.options.statements, + }) + } + } + + checkThresholds(coverageMap: CoverageMap, thresholds: Record) { + // Construct list of coverage summaries where thresholds are compared against + const summaries = this.options.perFile + ? coverageMap.files() + .map((file: string) => ({ + file, + summary: coverageMap.fileCoverageFor(file).toSummary(), + })) + : [{ + file: null, + summary: coverageMap.getCoverageSummary(), + }] + + // Check thresholds of each summary + for (const { summary, file } of summaries) { + for (const thresholdKey of ['lines', 'functions', 'statements', 'branches'] as const) { + const threshold = thresholds[thresholdKey] + + if (threshold !== undefined) { + const coverage = summary.data[thresholdKey].pct + + if (coverage < threshold) { + process.exitCode = 1 + + /* + * Generate error message based on perFile flag: + * - ERROR: Coverage for statements (33.33%) does not meet threshold (85%) for src/math.ts + * - ERROR: Coverage for statements (50%) does not meet global threshold (85%) + */ + let errorMessage = `ERROR: Coverage for ${thresholdKey} (${coverage}%) does not meet` + + if (!this.options.perFile) + errorMessage += ' global' + + errorMessage += ` threshold (${threshold}%)` + + if (this.options.perFile && file) + errorMessage += ` for ${relative('./', file).replace(/\\/g, '/')}` + + console.error(errorMessage) + } + } + } + } + } +} + +function resolveIstanbulOptions(options: CoverageIstanbulOptions, root: string) { + const reportsDirectory = resolve(root, options.reportsDirectory || configDefaults.coverage.reportsDirectory!) + + const resolved = { + ...configDefaults.coverage, + ...options, + provider: 'istanbul', + reportsDirectory, + tempDirectory: resolve(reportsDirectory, 'tmp'), + } + + return resolved as ResolvedCoverageOptions & { provider: 'istanbul' } +} diff --git a/packages/vitest/src/integrations/coverage.ts b/packages/vitest/src/integrations/coverage.ts index ed7a674cf9ae..6ac1006959fa 100644 --- a/packages/vitest/src/integrations/coverage.ts +++ b/packages/vitest/src/integrations/coverage.ts @@ -1,5 +1,5 @@ import { importModule } from 'local-pkg' -import type { CoverageOptions, CoverageProvider } from '../types' +import type { CoverageOptions, CoverageProvider, CoverageProviderModule } from '../types' export const CoverageProviderMap = { c8: '@vitest/coverage-c8', @@ -8,15 +8,15 @@ export const CoverageProviderMap = { export async function getCoverageProvider(options?: CoverageOptions): Promise { if (options?.enabled && options?.provider) { - const { default: CoverageProvider } = await importModule(CoverageProviderMap[options.provider]) - return new CoverageProvider() + const { getProvider } = await importModule(CoverageProviderMap[options.provider]) + return await getProvider() } return null } -export async function getCoverageInsideWorker(options: CoverageOptions) { +export async function takeCoverageInsideWorker(options: CoverageOptions) { if (options.enabled && options.provider) { - const { default: CoverageProvider } = await importModule(CoverageProviderMap[options.provider]) - return CoverageProvider?.getCoverage() + const { takeCoverage } = await importModule(CoverageProviderMap[options.provider]) + return await takeCoverage?.() } } diff --git a/packages/vitest/src/node/pool.ts b/packages/vitest/src/node/pool.ts index df3f751d926e..6b0d6e07d9d0 100644 --- a/packages/vitest/src/node/pool.ts +++ b/packages/vitest/src/node/pool.ts @@ -170,8 +170,8 @@ function createChannel(ctx: Vitest) { ctx.state.collectFiles(files) ctx.report('onCollected', files) }, - onFilesRun(coverage: any) { - ctx.coverageProvider?.onAfterSuiteRun(coverage) + onAfterSuiteRun(meta) { + ctx.coverageProvider?.onAfterSuiteRun(meta) }, onTaskUpdate(packs) { ctx.state.updateTasks(packs) diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index e65393f396a0..fb019a302fc9 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -4,7 +4,7 @@ import { vi } from '../integrations/vi' import { clearTimeout, getFullName, getWorkerState, hasFailed, hasTests, isBrowser, isNode, partitionSuiteChildren, setTimeout, shuffle } from '../utils' import { getState, setState } from '../integrations/chai/jest-expect' import { GLOBAL_EXPECT } from '../integrations/chai/constants' -import { getCoverageInsideWorker } from '../integrations/coverage' +import { takeCoverageInsideWorker } from '../integrations/coverage' import { getFn, getHooks } from './map' import { rpc } from './rpc' import { collectTests } from './collect' @@ -316,8 +316,8 @@ async function startTestsNode(paths: string[], config: ResolvedConfig) { await runFiles(files, config) - const coverage = await getCoverageInsideWorker(config.coverage) - rpc().onFilesRun(coverage) + const coverage = await takeCoverageInsideWorker(config.coverage) + rpc().onAfterSuiteRun({ coverage }) await getSnapshotClient().saveCurrent() diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index 15c6eff438c9..84a376688d4a 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -1,6 +1,7 @@ import type { TransformPluginContext, TransformResult } from 'rollup' import type { Vitest } from '../node' import type { Arrayable } from './general' +import type { AfterSuiteRunMeta } from './worker' export interface CoverageProvider { name: string @@ -10,7 +11,7 @@ export interface CoverageProvider { clean(clean?: boolean): void | Promise onBeforeFilesRun?(): void | Promise - onAfterSuiteRun(collectedCoverage: any): void | Promise + onAfterSuiteRun(meta: AfterSuiteRunMeta): void | Promise reportCoverage(): void | Promise @@ -21,6 +22,17 @@ export interface CoverageProvider { ): TransformResult | Promise } +export interface CoverageProviderModule { + /** + * Factory for creating a new coverage provider + */ + getProvider(): CoverageProvider | Promise + /** + * Executed on after each run in the worker thread. Possible to return a payload passed to the provider + */ + takeCoverage?(): unknown | Promise +} + export type CoverageReporter = | 'clover' | 'cobertura' diff --git a/packages/vitest/src/types/worker.ts b/packages/vitest/src/types/worker.ts index 26d4daf48157..4b4b984cf7cf 100644 --- a/packages/vitest/src/types/worker.ts +++ b/packages/vitest/src/types/worker.ts @@ -17,6 +17,10 @@ export interface WorkerContext { export type ResolveIdFunction = (id: string, importer?: string) => Promise +export interface AfterSuiteRunMeta { + coverage?: unknown +} + export interface WorkerRPC { fetch: FetchFunction resolveId: ResolveIdFunction @@ -28,7 +32,7 @@ export interface WorkerRPC { onUserConsoleLog: (log: UserConsoleLog) => void onUnhandledRejection: (err: unknown) => void onCollected: (files: File[]) => void - onFilesRun: (coverage: any) => void + onAfterSuiteRun: (meta: AfterSuiteRunMeta) => void onTaskUpdate: (pack: TaskResultPack[]) => void snapshotSaved: (snapshot: SnapshotResult) => void From 5c0e3aa2ae21713562bcd7e61f44660bcadc5813 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:36:07 +0800 Subject: [PATCH 14/27] refactor: ship ESM only for coverage support --- packages/coverage-c8/package.json | 4 ++-- packages/coverage-c8/tsup.config.ts | 2 +- packages/coverage-istanbul/package.json | 4 ++-- packages/coverage-istanbul/tsup.config.ts | 2 +- packages/vitest/src/node/core.ts | 2 +- packages/vitest/src/node/logger.ts | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index 505f80773c4e..68153ed6aabb 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -26,9 +26,9 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "require": "./dist/index.cjs", "import": "./dist/index.js" - } + }, + "./*": "./*" }, "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/coverage-c8/tsup.config.ts b/packages/coverage-c8/tsup.config.ts index 0c74967b68c8..60ece0ed062f 100644 --- a/packages/coverage-c8/tsup.config.ts +++ b/packages/coverage-c8/tsup.config.ts @@ -2,7 +2,7 @@ import type { Options } from 'tsup' export const tsup: Options = { clean: true, - format: ['cjs', 'esm'], + format: ['esm'], dts: true, entryPoints: [ 'src/index.ts', diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 1570567b019b..5e79c3c91200 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -26,9 +26,9 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "require": "./dist/index.cjs", "import": "./dist/index.js" - } + }, + "./*": "./*" }, "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/coverage-istanbul/tsup.config.ts b/packages/coverage-istanbul/tsup.config.ts index 0c74967b68c8..60ece0ed062f 100644 --- a/packages/coverage-istanbul/tsup.config.ts +++ b/packages/coverage-istanbul/tsup.config.ts @@ -2,7 +2,7 @@ import type { Options } from 'tsup' export const tsup: Options = { clean: true, - format: ['cjs', 'esm'], + format: ['esm'], dts: true, entryPoints: [ 'src/index.ts', diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index c4768035a8a7..ac8aa7da9ad1 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -156,7 +156,7 @@ export class Vitest { await this.runFiles(files) if (this.coverageProvider) { - this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.green(this.coverageProvider.name)) + this.logger.log(c.blue(' % ') + c.dim('Coverage report from ') + c.yellow(this.coverageProvider.name)) await this.coverageProvider.reportCoverage() } diff --git a/packages/vitest/src/node/logger.ts b/packages/vitest/src/node/logger.ts index 4633617cd0ca..5509c161c2cd 100644 --- a/packages/vitest/src/node/logger.ts +++ b/packages/vitest/src/node/logger.ts @@ -103,7 +103,7 @@ export class Logger { this.log(c.dim(c.green(` API started at http://${this.ctx.config.api?.host || 'localhost'}:${c.bold(`${this.ctx.config.api.port}`)}`))) if (this.ctx.coverageProvider) - this.log(c.dim(' Coverage enabled with ') + c.green(this.ctx.coverageProvider.name)) + this.log(c.dim(' Coverage enabled with ') + c.yellow(this.ctx.coverageProvider.name)) this.log() } From 7ce1e0eb813bc799170088a41df938149908e16e Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:44:47 +0800 Subject: [PATCH 15/27] feat: support custom coverage provider --- docs/guide/coverage.md | 20 ++++++++++++++++++++ packages/vitest/src/integrations/coverage.ts | 16 ++++++++++++++-- packages/vitest/src/types/coverage.ts | 2 +- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/docs/guide/coverage.md b/docs/guide/coverage.md index 9721b627fd8d..5e808c10cd33 100644 --- a/docs/guide/coverage.md +++ b/docs/guide/coverage.md @@ -68,3 +68,23 @@ export default defineConfig({ }, }) ``` + +## Custom Coverage Provider + +It's also possible to provide your custom coverage provider by passing an object to the `test.coverage.provider`: + +```ts +// vite.config.ts +import { defineConfig } from 'vitest/config' +import CustomCoverageProvider from 'my-custom-coverage-provider' + +export default defineConfig({ + test: { + coverage: { + provider: CustomCoverageProvider() + }, + }, +}) +``` + +Please refer to the type definition for more details. diff --git a/packages/vitest/src/integrations/coverage.ts b/packages/vitest/src/integrations/coverage.ts index 6ac1006959fa..a14b4d5dc9f9 100644 --- a/packages/vitest/src/integrations/coverage.ts +++ b/packages/vitest/src/integrations/coverage.ts @@ -6,9 +6,21 @@ export const CoverageProviderMap = { istanbul: '@vitest/coverage-istanbul', } +export async function resolveCoverageProvider(provider: NonNullable) { + if (typeof provider === 'string') { + const pkg = CoverageProviderMap[provider] + if (!pkg) + throw new Error(`Unknown coverage provider: ${provider}`) + return await importModule(pkg) + } + else { + return provider + } +} + export async function getCoverageProvider(options?: CoverageOptions): Promise { if (options?.enabled && options?.provider) { - const { getProvider } = await importModule(CoverageProviderMap[options.provider]) + const { getProvider } = await resolveCoverageProvider(options.provider) return await getProvider() } return null @@ -16,7 +28,7 @@ export async function getCoverageProvider(options?: CoverageOptions): Promise(CoverageProviderMap[options.provider]) + const { takeCoverage } = await resolveCoverageProvider(options.provider) return await takeCoverage?.() } } diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index 84a376688d4a..c868e1e1d8e9 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -49,7 +49,7 @@ export type CoverageReporter = | 'text' export type CoverageOptions = - | BaseCoverageOptions & { provider?: null } + | BaseCoverageOptions & { provider?: null | CoverageProviderModule } | CoverageC8Options & { provider?: 'c8' } | CoverageIstanbulOptions & { provider?: 'istanbul' } From 9d5317040a27bc1360b4d46bf9139c5cac19b2ff Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:57:23 +0800 Subject: [PATCH 16/27] chore: fix lock --- .npmrc | 1 - package.json | 14 +- pnpm-lock.yaml | 2302 ++++++++++++++++-------------------------------- 3 files changed, 742 insertions(+), 1575 deletions(-) diff --git a/.npmrc b/.npmrc index 2f0eaa08c985..2621fbbfd550 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,3 @@ ignore-workspace-root-check=true strict-peer-dependencies=false -auto-install-peers=true registry=https://registry.npmjs.org/ diff --git a/package.json b/package.json index 5a9fcae37441..8a49fa9534ea 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "version": "0.21.1", "private": true, - "packageManager": "pnpm@7.9.0", + "packageManager": "pnpm@7.8.0", "description": "A blazing fast unit test framework powered by Vite", "scripts": { "ci": "ni && nr typecheck && nr lint && nr build && nr test:all", @@ -39,7 +39,7 @@ "@rollup/plugin-node-resolve": "^13.3.0", "@types/fs-extra": "^9.0.13", "@types/lodash": "^4.14.182", - "@types/node": "^18.0.4", + "@types/node": "^18.7.3", "@types/ws": "^8.5.3", "@vitest/browser": "workspace:*", "@vitest/coverage-c8": "workspace:*", @@ -48,8 +48,8 @@ "bumpp": "^8.2.1", "c8": "^7.12.0", "cross-env": "^7.0.3", - "esbuild": "~0.14.53", - "eslint": "^8.21.0", + "esbuild": "^0.14.54", + "eslint": "^8.22.0", "esno": "^0.14.1", "fast-glob": "^3.2.11", "if-node-version": "^1.1.1", @@ -61,14 +61,14 @@ "pathe": "^0.2.0", "pnpm": "7.9.0", "rimraf": "^3.0.2", - "rollup": "^2.77.2", + "rollup": "^2.78.0", "rollup-plugin-dts": "^4.2.2", - "rollup-plugin-esbuild": "^4.9.1", + "rollup-plugin-esbuild": "^4.9.3", "rollup-plugin-license": "^2.8.1", "simple-git-hooks": "^2.8.0", "tsup": "^6.2.2", "typescript": "^4.7.4", - "vite": "^3.0.4", + "vite": "^3.0.7", "vitest": "workspace:*", "vue": "^3.2.37" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7bd11e15a7fe..b66788369e7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,7 +17,7 @@ importers: '@rollup/plugin-node-resolve': ^13.3.0 '@types/fs-extra': ^9.0.13 '@types/lodash': ^4.14.182 - '@types/node': ^18.0.4 + '@types/node': ^18.7.3 '@types/ws': ^8.5.3 '@vitest/browser': workspace:* '@vitest/coverage-c8': workspace:* @@ -27,7 +27,7 @@ importers: c8: ^7.12.0 cross-env: ^7.0.3 esbuild: ^0.14.47 - eslint: ^8.21.0 + eslint: ^8.22.0 esno: ^0.14.1 fast-glob: ^3.2.11 if-node-version: ^1.1.1 @@ -39,26 +39,26 @@ importers: pathe: ^0.2.0 pnpm: 7.9.0 rimraf: ^3.0.2 - rollup: ^2.77.2 + rollup: ^2.78.0 rollup-plugin-dts: ^4.2.2 - rollup-plugin-esbuild: ^4.9.1 + rollup-plugin-esbuild: ^4.9.3 rollup-plugin-license: ^2.8.1 simple-git-hooks: ^2.8.0 tsup: ^6.2.2 typescript: ^4.7.4 - vite: ^3.0.4 + vite: ^3.0.7 vitest: workspace:* vue: ^3.2.37 devDependencies: - '@antfu/eslint-config': 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq + '@antfu/eslint-config': 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq '@antfu/ni': 0.17.2 - '@rollup/plugin-alias': 3.1.9_rollup@2.77.2 - '@rollup/plugin-commonjs': 22.0.2_rollup@2.77.2 - '@rollup/plugin-json': 4.1.0_rollup@2.77.2 - '@rollup/plugin-node-resolve': 13.3.0_rollup@2.77.2 + '@rollup/plugin-alias': 3.1.9_rollup@2.78.0 + '@rollup/plugin-commonjs': 22.0.2_rollup@2.78.0 + '@rollup/plugin-json': 4.1.0_rollup@2.78.0 + '@rollup/plugin-node-resolve': 13.3.0_rollup@2.78.0 '@types/fs-extra': 9.0.13 '@types/lodash': 4.14.182 - '@types/node': 18.0.4 + '@types/node': 18.7.3 '@types/ws': 8.5.3 '@vitest/browser': link:packages/browser '@vitest/coverage-c8': link:packages/coverage-c8 @@ -67,8 +67,8 @@ importers: bumpp: 8.2.1 c8: 7.12.0 cross-env: 7.0.3 - esbuild: 0.14.47 - eslint: 8.21.0 + esbuild: 0.14.54 + eslint: 8.22.0 esno: 0.14.1 fast-glob: 3.2.11 if-node-version: 1.1.1 @@ -80,14 +80,14 @@ importers: pathe: 0.2.0 pnpm: 7.9.0 rimraf: 3.0.2 - rollup: 2.77.2 - rollup-plugin-dts: 4.2.2_oo3i3f3qmqiztdz5qgxrrjmd5e - rollup-plugin-esbuild: 4.9.1_pemzyxl4ergeow3755j2gtd5cm - rollup-plugin-license: 2.8.1_rollup@2.77.2 + rollup: 2.78.0 + rollup-plugin-dts: 4.2.2_nm5mlcuxlwr6samvke7b2fz27i + rollup-plugin-esbuild: 4.9.3_2yhceorlees6ev364fcurqi67q + rollup-plugin-license: 2.8.1_rollup@2.78.0 simple-git-hooks: 2.8.0 tsup: 6.2.2_typescript@4.7.4 typescript: 4.7.4 - vite: 3.0.4 + vite: 3.0.7 vitest: link:packages/vitest vue: 3.2.37 @@ -120,10 +120,10 @@ importers: fast-glob: 3.2.11 https-localhost: 4.7.1 unocss: 0.45.5_vite@2.9.14 - unplugin-vue-components: 0.22.0_hfe7rwlgfuobhbdqbst7nf7r3q + unplugin-vue-components: 0.22.0_vite@2.9.14+vue@3.2.37 vite: 2.9.14 vite-plugin-pwa: 0.12.3_vite@2.9.14 - vitepress: 1.0.0-alpha.4_jbvntnid6ohjelon6ccj5dhg2u + vitepress: 1.0.0-alpha.4 workbox-window: 6.5.4 examples/basic: @@ -144,7 +144,7 @@ importers: vite: ^2.9.9 vitest: workspace:* dependencies: - '@rollup/plugin-graphql': 1.1.0_s3zxt72eu6kq2kqrwq7o2rr7pq + '@rollup/plugin-graphql': 1.1.0_graphql@16.5.0 graphql: 16.5.0 devDependencies: '@vitest/ui': link:../../packages/ui @@ -159,7 +159,7 @@ importers: vitest: workspace:* devDependencies: '@vitest/ui': link:../../packages/ui - jest-image-snapshot: 4.5.1_jest@27.5.1 + jest-image-snapshot: 4.5.1 vite: 2.9.14 vitest: link:../../packages/vitest @@ -188,14 +188,14 @@ importers: vitest: workspace:* zustand: 4.0.0-rc.1 dependencies: - '@vueuse/integrations': 8.5.0_axios@0.26.1+vue@3.2.37 + '@vueuse/integrations': 8.5.0_axios@0.26.1 axios: 0.26.1 tinyspy: 0.3.2 devDependencies: '@vitest/ui': link:../../packages/ui vite: 2.9.14 vitest: link:../../packages/vitest - zustand: 4.0.0-rc.1_react@18.2.0 + zustand: 4.0.0-rc.1 examples/nextjs: specifiers: @@ -210,7 +210,7 @@ importers: typescript: 4.6.3 vitest: workspace:* dependencies: - next: 12.1.5_hbavo5rcrxpva3rqoclkpvthlq + next: 12.1.5_zpnidt7m3osuk7shl3s4oenomq react: 18.0.0 react-dom: 18.0.0_react@18.0.0 devDependencies: @@ -320,21 +320,21 @@ importers: vite: ^2.9.9 vitest: workspace:* dependencies: - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy - '@mui/x-date-pickers': 5.0.0-beta.0_rucrrzx7cwvijf52oha4jx7jty + '@mui/x-date-pickers': 5.0.0-beta.0_64phnjnnuwiaqiwvc5sv42ae6e history: 5.3.0 notistack: 2.0.5_y2bq4i2wkpl4o4et5gznek6pbu react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y - recharts: 2.1.12_v2m5e27vhdewzwhryxwfaorcca + recharts: 2.1.12_biqbaboplfbrettd7655fr4n2y swr: 1.3.0_react@18.2.0 devDependencies: '@testing-library/jest-dom': 5.16.4 '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y - '@testing-library/user-event': 14.2.3_tlwynutqiyp5mns3woioasuxnq + '@testing-library/user-event': 14.2.3 '@vitest/ui': link:../../packages/ui date-fns: 2.28.0 jsdom: 20.0.0 @@ -376,19 +376,19 @@ importers: devDependencies: '@babel/core': 7.18.2 '@storybook/addon-actions': 6.5.5_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-essentials': 6.5.5_hsrlj427md5pp3pvjdg47ksxsm + '@storybook/addon-essentials': 6.5.5_kx7jpip5ur2hkx2gir5aq6f4la '@storybook/addon-links': 6.5.5_sfoxds7t5ydpegc3knd667wn6m - '@storybook/builder-vite': 0.1.35_mkq3gktqjcl4rw4ogwklz4s7ku - '@storybook/react': 6.5.8_oocfzwtuyqxgsjuquyuluqp3ji + '@storybook/builder-vite': 0.1.35_uv5nccmgt75gnjbpwcxclhqryi + '@storybook/react': 6.5.8_kx7jpip5ur2hkx2gir5aq6f4la '@storybook/testing-library': 0.0.11_sfoxds7t5ydpegc3knd667wn6m - '@storybook/testing-react': 1.3.0_arewo4uagrgfv3hckbnzjw6rsy + '@storybook/testing-react': 1.3.0_zzdumcyc6vw44t4stcualatcq4 '@testing-library/jest-dom': 5.16.4 '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m '@types/react': 17.0.45 '@types/react-dom': 17.0.17 '@vitejs/plugin-react': 1.3.2 '@vitest/ui': link:../../packages/ui - babel-loader: 8.2.5_lzsemofhph6vepnub4bnemnm6m + babel-loader: 8.2.5_@babel+core@7.18.2 jsdom: 19.0.0 msw: 0.39.2 msw-storybook-addon: 1.6.3_ssm5z5kjlefxgbmyszjdm3lzke @@ -418,7 +418,7 @@ importers: '@testing-library/jest-dom': 5.16.4 '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m '@testing-library/react-hooks': 8.0.0_k2mvpji5i2ojml6m4ftklg47pa - '@testing-library/user-event': 13.5.0_tlwynutqiyp5mns3woioasuxnq + '@testing-library/user-event': 13.5.0 '@types/react': 17.0.45 '@types/react-dom': 17.0.17 '@vitejs/plugin-react': 1.3.2 @@ -444,12 +444,12 @@ importers: vite: ^2.9.9 vitest: workspace:* dependencies: - '@apollo/client': 3.6.6_mnlteiidv5se4zpyvopwg4rohq + '@apollo/client': 3.6.6_react@17.0.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 devDependencies: '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m - '@testing-library/user-event': 13.5.0_tlwynutqiyp5mns3woioasuxnq + '@testing-library/user-event': 13.5.0 '@types/react': 17.0.45 '@types/react-dom': 17.0.17 '@vitejs/plugin-react': 1.3.2 @@ -469,10 +469,10 @@ importers: vitest: workspace:* vue: ^3.2.36 devDependencies: - '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.36 + '@vitejs/plugin-vue': 2.3.3_vue@3.2.36 '@vue/test-utils': 2.0.0_vue@3.2.36 jsdom: 20.0.0 - vite-plugin-ruby: 3.0.12_vite@2.9.14 + vite-plugin-ruby: 3.0.12 vitest: link:../../packages/vitest vue: 3.2.36 @@ -500,7 +500,7 @@ importers: svelte: ^3.48.0 vitest: workspace:* devDependencies: - '@sveltejs/vite-plugin-svelte': 1.0.0-next.45_svelte@3.48.0+vite@2.9.14 + '@sveltejs/vite-plugin-svelte': 1.0.0-next.45_svelte@3.48.0 '@testing-library/svelte': 3.1.1_svelte@3.48.0 '@vitest/ui': link:../../packages/ui jsdom: 20.0.0 @@ -519,11 +519,11 @@ importers: dependencies: vue: 3.2.36 devDependencies: - '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.36 + '@vitejs/plugin-vue': 2.3.3_vue@3.2.36 '@vue/test-utils': 2.0.0_vue@3.2.36 jsdom: 19.0.0 - unplugin-auto-import: 0.8.5_vite@2.9.14 - unplugin-vue-components: 0.19.6_vite@2.9.14+vue@3.2.36 + unplugin-auto-import: 0.8.5 + unplugin-vue-components: 0.19.6_vue@3.2.36 vitest: link:../../packages/vitest examples/vue: @@ -536,7 +536,7 @@ importers: dependencies: vue: 3.2.36 devDependencies: - '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.36 + '@vitejs/plugin-vue': 2.3.3_vue@3.2.36 '@vue/test-utils': 2.0.0_vue@3.2.36 jsdom: 20.0.0 vitest: link:../../packages/vitest @@ -743,10 +743,8 @@ importers: '@types/node': '*' '@types/prompts': ^2.4.0 '@types/sinonjs__fake-timers': ^8.1.2 - '@vitest/browser': '*' '@vitest/ui': workspace:* birpc: ^0.2.3 - c8: '*' cac: ^6.7.12 chai: ^4.3.6 chai-subset: ^1.6.0 @@ -784,7 +782,6 @@ importers: '@types/chai': 4.3.3 '@types/chai-subset': 1.3.3 '@types/node': 17.0.35 - '@vitest/browser': link:../browser chai: 4.3.6 debug: 4.3.4 local-pkg: 0.4.2 @@ -803,7 +800,6 @@ importers: '@types/sinonjs__fake-timers': 8.1.2 '@vitest/ui': link:../ui birpc: 0.2.3 - c8: 7.12.0 cac: 6.7.12 chai-subset: 1.6.0 cli-truncate: 3.1.0 @@ -836,10 +832,8 @@ importers: specifiers: rollup: ^2.77.2 vite-node: workspace:* - vitest: '*' dependencies: vite-node: link:../vite-node - vitest: link:../vitest devDependencies: rollup: 2.77.2 @@ -911,8 +905,8 @@ importers: happy-dom: ^6.0.4 vitest: workspace:* devDependencies: - '@vitejs/plugin-vue': 3.0.1_vite@3.0.7+vue@3.2.37 - '@vue/test-utils': 2.0.0_vue@3.2.37 + '@vitejs/plugin-vue': 3.0.1 + '@vue/test-utils': 2.0.0 happy-dom: 6.0.4 vitest: link:../../packages/vitest @@ -1154,24 +1148,24 @@ packages: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.13 - /@antfu/eslint-config-basic/0.25.2_hna427qgodgvnyijeryyxjzjii: + /@antfu/eslint-config-basic/0.25.2_yy5c4q6zhpajzhorvwhnwvctfe: resolution: {integrity: sha512-D81jE90B7cujMmU2mKEaUcRsKRAfVX4PniEoaD0c3HiqprqghfBjuv3B6p1+tG9uJQAgLBVsK+G92Y+AAgFaOA==} peerDependencies: eslint: '>=7.4.0' dependencies: - eslint: 8.21.0 - eslint-plugin-antfu: 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq - eslint-plugin-eslint-comments: 3.2.0_eslint@8.21.0 + eslint: 8.22.0 + eslint-plugin-antfu: 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq + eslint-plugin-eslint-comments: 3.2.0_eslint@8.22.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_zsb72iklpc2oilknnuagayaomq - eslint-plugin-jsonc: 2.3.0_eslint@8.21.0 - eslint-plugin-markdown: 2.2.1_eslint@8.21.0 - eslint-plugin-n: 15.2.1_eslint@8.21.0 - eslint-plugin-promise: 6.0.0_eslint@8.21.0 - eslint-plugin-unicorn: 42.0.0_eslint@8.21.0 - eslint-plugin-yml: 1.0.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_rg72qmk2p6ydk3qleqiccuhffm + eslint-plugin-jsonc: 2.3.1_eslint@8.22.0 + eslint-plugin-markdown: 2.2.1_eslint@8.22.0 + eslint-plugin-n: 15.2.4_eslint@8.22.0 + eslint-plugin-promise: 6.0.0_eslint@8.22.0 + eslint-plugin-unicorn: 42.0.0_eslint@8.22.0 + eslint-plugin-yml: 1.1.0_eslint@8.22.0 jsonc-eslint-parser: 2.1.0 - yaml-eslint-parser: 1.0.1 + yaml-eslint-parser: 1.1.0 transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript @@ -1180,14 +1174,14 @@ packages: - typescript dev: true - /@antfu/eslint-config-react/0.25.2_qugx7qdu5zevzvxaiqyxfiwquq: + /@antfu/eslint-config-react/0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq: resolution: {integrity: sha512-jGol7/UTUa9z55p4Oy/K5yGgY179fj1kl0kdo3bRnFjzUZQuDGuxw5HiZdYx333pjBdizkPl6cMJ8M6sc3PzFg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq - eslint: 8.21.0 - eslint-plugin-react: 7.30.0_eslint@8.21.0 + '@antfu/eslint-config-ts': 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq + eslint: 8.22.0 + eslint-plugin-react: 7.30.1_eslint@8.22.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -1195,16 +1189,16 @@ packages: - typescript dev: true - /@antfu/eslint-config-ts/0.25.2_qugx7qdu5zevzvxaiqyxfiwquq: + /@antfu/eslint-config-ts/0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq: resolution: {integrity: sha512-Dpp4r3CaDZVh73lMxhW0sVGsPwUf1YTpYV5JefmBtgEZKOAc+QqYbLjFZ6QGRUpdPLldRvD+xTFpax6t8NKgyA==} peerDependencies: eslint: '>=7.4.0' typescript: '>=3.9' dependencies: - '@antfu/eslint-config-basic': 0.25.2_hna427qgodgvnyijeryyxjzjii - '@typescript-eslint/eslint-plugin': 5.27.1_hna427qgodgvnyijeryyxjzjii - '@typescript-eslint/parser': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq - eslint: 8.21.0 + '@antfu/eslint-config-basic': 0.25.2_yy5c4q6zhpajzhorvwhnwvctfe + '@typescript-eslint/eslint-plugin': 5.33.0_yy5c4q6zhpajzhorvwhnwvctfe + '@typescript-eslint/parser': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq + eslint: 8.22.0 typescript: 4.7.4 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -1212,14 +1206,14 @@ packages: - supports-color dev: true - /@antfu/eslint-config-vue/0.25.2_qugx7qdu5zevzvxaiqyxfiwquq: + /@antfu/eslint-config-vue/0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq: resolution: {integrity: sha512-ObZOzvQvLe/qETq5miVmFWRgjNwWAE/P1I2YhKyDFK7KHquM7bKysfnmkoPpm2HkOpseMILoc+5UKo/w3L7GHg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq - eslint: 8.21.0 - eslint-plugin-vue: 9.1.0_eslint@8.21.0 + '@antfu/eslint-config-ts': 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq + eslint: 8.22.0 + eslint-plugin-vue: 9.3.0_eslint@8.22.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -1227,27 +1221,27 @@ packages: - typescript dev: true - /@antfu/eslint-config/0.25.2_qugx7qdu5zevzvxaiqyxfiwquq: + /@antfu/eslint-config/0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq: resolution: {integrity: sha512-dIqxqBa6ALqaBQyErMnYLpyn4xpwp1YefbYxDMgNFM8MzY/ShJgaBWAGlywFeDwyAR44jaaVY8wRwDxODF8bPg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-react': 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq - '@antfu/eslint-config-vue': 0.25.2_qugx7qdu5zevzvxaiqyxfiwquq - '@typescript-eslint/eslint-plugin': 5.27.1_hna427qgodgvnyijeryyxjzjii - '@typescript-eslint/parser': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq - eslint: 8.21.0 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.21.0 + '@antfu/eslint-config-react': 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq + '@antfu/eslint-config-vue': 0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq + '@typescript-eslint/eslint-plugin': 5.33.0_yy5c4q6zhpajzhorvwhnwvctfe + '@typescript-eslint/parser': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq + eslint: 8.22.0 + eslint-plugin-eslint-comments: 3.2.0_eslint@8.22.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_zsb72iklpc2oilknnuagayaomq - eslint-plugin-jsonc: 2.3.0_eslint@8.21.0 - eslint-plugin-n: 15.2.1_eslint@8.21.0 - eslint-plugin-promise: 6.0.0_eslint@8.21.0 - eslint-plugin-unicorn: 42.0.0_eslint@8.21.0 - eslint-plugin-vue: 9.1.0_eslint@8.21.0 - eslint-plugin-yml: 1.0.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_rg72qmk2p6ydk3qleqiccuhffm + eslint-plugin-jsonc: 2.3.1_eslint@8.22.0 + eslint-plugin-n: 15.2.4_eslint@8.22.0 + eslint-plugin-promise: 6.0.0_eslint@8.22.0 + eslint-plugin-unicorn: 42.0.0_eslint@8.22.0 + eslint-plugin-vue: 9.3.0_eslint@8.22.0 + eslint-plugin-yml: 1.1.0_eslint@8.22.0 jsonc-eslint-parser: 2.1.0 - yaml-eslint-parser: 1.0.1 + yaml-eslint-parser: 1.1.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -1283,7 +1277,7 @@ packages: leven: 3.1.0 dev: true - /@apollo/client/3.6.6_mnlteiidv5se4zpyvopwg4rohq: + /@apollo/client/3.6.6_react@17.0.2: resolution: {integrity: sha512-AzNLN043wy0bDTTR9wzKYSu+I1IT2Ox3+vWckxgIt88Jfw5jHBvumf3lXE1JlgvbFCTiKS/Sa66AadQXWMVBRQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1298,12 +1292,11 @@ packages: subscriptions-transport-ws: optional: true dependencies: - '@graphql-typed-document-node/core': 3.1.1_graphql@16.5.0 + '@graphql-typed-document-node/core': 3.1.1 '@wry/context': 0.6.1 '@wry/equality': 0.5.2 '@wry/trie': 0.3.1 - graphql: 16.5.0 - graphql-tag: 2.12.6_graphql@16.5.0 + graphql-tag: 2.12.6 hoist-non-react-statics: 3.3.2 optimism: 0.16.1 prop-types: 15.8.1 @@ -1406,6 +1399,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/core/7.18.2: resolution: {integrity: sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==} @@ -1554,6 +1548,7 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.20.3 semver: 6.3.0 + dev: true /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.2: resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} @@ -2513,15 +2508,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.10: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.2: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2540,24 +2526,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.10: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.2: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -2662,15 +2630,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.10: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.9: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -2680,15 +2639,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2716,25 +2666,24 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.9: + /@babel/plugin-syntax-jsx/7.16.7: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 '@babel/helper-plugin-utils': 7.16.7 - dev: true + dev: false - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.10: + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.9: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.17.9 '@babel/helper-plugin-utils': 7.16.7 - dev: false + dev: true /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.2: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} @@ -2766,15 +2715,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.10: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.2: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -2793,15 +2733,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -2820,15 +2751,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.10: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.2: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2856,15 +2778,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2883,15 +2796,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2910,15 +2814,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.10: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.2: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2957,16 +2852,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.10: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.2: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2997,16 +2882,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.10: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: true - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.9: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} @@ -4476,10 +4351,10 @@ packages: resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} dev: true - /@docsearch/js/3.1.0_jbvntnid6ohjelon6ccj5dhg2u: + /@docsearch/js/3.1.0: resolution: {integrity: sha512-5XSK+xbP0hcTIp54MECqxkWLs6kf7Ug4nWdxWNtx8cUpLiFNFnKXDxCb35wnyNpjukmrx7Q9DkO5tFFsmNVxng==} dependencies: - '@docsearch/react': 3.1.0_jbvntnid6ohjelon6ccj5dhg2u + '@docsearch/react': 3.1.0 preact: 10.7.2 transitivePeerDependencies: - '@types/react' @@ -4487,7 +4362,7 @@ packages: - react-dom dev: true - /@docsearch/react/3.1.0_jbvntnid6ohjelon6ccj5dhg2u: + /@docsearch/react/3.1.0: resolution: {integrity: sha512-bjB6ExnZzf++5B7Tfoi6UXgNwoUnNOfZ1NyvnvPhWgCMy5V/biAtLL4o7owmZSYdAKeFSvZ5Lxm0is4su/dBWg==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4496,10 +4371,7 @@ packages: dependencies: '@algolia/autocomplete-core': 1.6.3 '@docsearch/css': 3.1.0 - '@types/react': 18.0.9 algoliasearch: 4.13.1 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 dev: true /@edge-runtime/primitives/1.1.0-beta.10: @@ -4522,14 +4394,13 @@ packages: '@edge-runtime/primitives': 1.1.0-beta.26 dev: true - /@emotion/babel-plugin/11.9.2_@babel+core@7.18.10: + /@emotion/babel-plugin/11.9.2: resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 '@babel/helper-module-imports': 7.16.7 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.18.10 + '@babel/plugin-syntax-jsx': 7.16.7 '@babel/runtime': 7.17.9 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.5 @@ -4606,7 +4477,7 @@ packages: resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} dev: false - /@emotion/react/11.9.3_byq7oc57qftat37gkdlgphtura: + /@emotion/react/11.9.3_react@18.2.0: resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -4618,9 +4489,8 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.18.10 '@babel/runtime': 7.17.9 - '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.10 + '@emotion/babel-plugin': 11.9.2 '@emotion/cache': 11.9.3 '@emotion/serialize': 1.0.4 '@emotion/utils': 1.1.0 @@ -4683,7 +4553,7 @@ packages: react: 17.0.2 dev: true - /@emotion/styled/11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy: + /@emotion/styled/11.9.3_jhgplt4fmhans76oq3ok5iox2u: resolution: {integrity: sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==} peerDependencies: '@babel/core': ^7.0.0 @@ -4696,11 +4566,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.18.10 '@babel/runtime': 7.17.9 - '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.10 + '@emotion/babel-plugin': 11.9.2 '@emotion/is-prop-valid': 1.1.3 - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura + '@emotion/react': 11.9.3_react@18.2.0 '@emotion/serialize': 1.0.4 '@emotion/utils': 1.1.0 react: 18.2.0 @@ -4724,6 +4593,15 @@ packages: /@emotion/weak-memoize/0.2.5: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@eslint/eslintrc/1.3.0: resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4731,7 +4609,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.3.3 - globals: 13.15.0 + globals: 13.17.0 ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -4760,12 +4638,10 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@graphql-typed-document-node/core/3.1.1_graphql@16.5.0: + /@graphql-typed-document-node/core/3.1.1: resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - graphql: 16.5.0 dev: false /@humanwhocodes/config-array/0.10.4: @@ -4825,163 +4701,6 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - /@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': 18.0.4 - 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: - 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': 18.0.4 - 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 - 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': 18.0.4 - 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': 18.0.4 - 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': 18.0.4 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - 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.5 - 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/26.6.2: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} @@ -5005,29 +4724,6 @@ packages: - 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.18.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/26.6.2: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} @@ -5039,17 +4735,6 @@ packages: chalk: 4.1.2 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': 18.0.4 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - /@joshwooding/vite-plugin-react-docgen-typescript/0.0.4_ryq3tp36khmtukzmr4nenehwsq: resolution: {integrity: sha512-ezL7SU//1OV4Oyt/zQ3CsX8uLujVEYUHuULkqgcW6wOuQfRnvgkn99HZtLWwS257GmZVwszGQzhL7VE3PbMAYw==} peerDependencies: @@ -5092,6 +4777,10 @@ packages: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + /@jridgewell/set-array/1.1.0: resolution: {integrity: sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==} engines: {node: '>=6.0.0'} @@ -5099,12 +4788,21 @@ packages: /@jridgewell/sourcemap-codec/1.4.13: resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/trace-mapping/0.3.13: resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} dependencies: '@jridgewell/resolve-uri': 3.0.7 '@jridgewell/sourcemap-codec': 1.4.13 + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + /@jsdevtools/ez-spawn/3.0.4: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} @@ -5232,8 +4930,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.9 - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u '@mui/base': 5.0.0-alpha.89_biqbaboplfbrettd7655fr4n2y '@mui/system': 5.9.0_fdnqutfacy7v3gmlcm66flps3q '@mui/types': 7.1.4 @@ -5279,8 +4977,8 @@ packages: dependencies: '@babel/runtime': 7.17.9 '@emotion/cache': 11.9.3 - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -5303,8 +5001,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.9 - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u '@mui/private-theming': 5.9.0_react@18.2.0 '@mui/styled-engine': 5.8.7_fdnqutfacy7v3gmlcm66flps3q '@mui/types': 7.1.4 @@ -5338,7 +5036,7 @@ packages: react-is: 18.2.0 dev: false - /@mui/x-date-pickers/5.0.0-beta.0_rucrrzx7cwvijf52oha4jx7jty: + /@mui/x-date-pickers/5.0.0-beta.0_64phnjnnuwiaqiwvc5sv42ae6e: resolution: {integrity: sha512-WfcYe+5j3xbGO9d+uMFem06b9q+9yIcFj0dP3PKCa1zb6m3Tbkigig6vlCuHLKLSXe1P6IQCt+BNVVbU1rfh7A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5371,10 +5069,9 @@ packages: '@date-io/dayjs': 2.14.0 '@date-io/luxon': 2.14.0 '@date-io/moment': 2.14.0 - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy - '@mui/system': 5.9.0_fdnqutfacy7v3gmlcm66flps3q '@mui/utils': 5.9.0_react@18.2.0 '@types/react-transition-group': 4.4.4 clsx: 1.2.1 @@ -5599,13 +5296,13 @@ packages: resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} dev: false - /@rollup/plugin-alias/3.1.9_rollup@2.77.2: + /@rollup/plugin-alias/3.1.9_rollup@2.78.0: resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - rollup: 2.77.2 + rollup: 2.78.0 slash: 3.0.0 dev: true @@ -5626,23 +5323,23 @@ packages: rollup: 2.77.2 dev: true - /@rollup/plugin-commonjs/22.0.2_rollup@2.77.2: + /@rollup/plugin-commonjs/22.0.2_rollup@2.78.0: resolution: {integrity: sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==} engines: {node: '>= 12.0.0'} peerDependencies: rollup: ^2.68.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.2 + '@rollup/pluginutils': 3.1.0_rollup@2.78.0 commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.1 - rollup: 2.77.2 + rollup: 2.78.0 dev: true - /@rollup/plugin-graphql/1.1.0_s3zxt72eu6kq2kqrwq7o2rr7pq: + /@rollup/plugin-graphql/1.1.0_graphql@16.5.0: resolution: {integrity: sha512-X+H6oFlprDlnO3D0UiEytdW97AMphPXO0C7KunS7i/rBXIGQRQVDU5WKTXnBu2tfyYbjCTtfhXMSGI0i885PNg==} peerDependencies: graphql: '>=0.9.0' @@ -5651,7 +5348,6 @@ packages: '@rollup/pluginutils': 4.2.1 graphql: 16.5.0 graphql-tag: 2.12.6_graphql@16.5.0 - rollup: 2.77.2 dev: false /@rollup/plugin-inject/4.0.4_rollup@2.77.2: @@ -5665,13 +5361,13 @@ packages: rollup: 2.77.2 dev: false - /@rollup/plugin-json/4.1.0_rollup@2.77.2: + /@rollup/plugin-json/4.1.0_rollup@2.78.0: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.2 - rollup: 2.77.2 + '@rollup/pluginutils': 3.1.0_rollup@2.78.0 + rollup: 2.78.0 dev: true /@rollup/plugin-node-resolve/11.2.1_rollup@2.77.2: @@ -5689,19 +5385,19 @@ packages: rollup: 2.77.2 dev: true - /@rollup/plugin-node-resolve/13.3.0_rollup@2.77.2: + /@rollup/plugin-node-resolve/13.3.0_rollup@2.78.0: resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.2 + '@rollup/pluginutils': 3.1.0_rollup@2.78.0 '@types/resolve': 1.17.1 deepmerge: 4.2.2 - is-builtin-module: 3.1.0 + is-builtin-module: 3.2.0 is-module: 1.0.0 resolve: 1.22.1 - rollup: 2.77.2 + rollup: 2.78.0 dev: true /@rollup/plugin-replace/2.4.2_rollup@2.77.2: @@ -5725,6 +5421,18 @@ packages: picomatch: 2.3.1 rollup: 2.77.2 + /@rollup/pluginutils/3.1.0_rollup@2.78.0: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.78.0 + dev: true + /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -5738,12 +5446,6 @@ packages: 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 - /@sinonjs/fake-timers/9.1.2: resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: @@ -5846,7 +5548,7 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.5.5_hsrlj427md5pp3pvjdg47ksxsm: + /@storybook/addon-docs/6.5.5_kx7jpip5ur2hkx2gir5aq6f4la: resolution: {integrity: sha512-84Hmi3v/ccLBsiK69Qr8EQTlGfnV8VBaT/2IbHCtqgqMPfxD7Z6aoC65sBSbJWF9utJku17O9v+0qRG9lOJnWA==} peerDependencies: '@storybook/mdx2-csf': ^0.0.3 @@ -5878,7 +5580,7 @@ packages: '@storybook/source-loader': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/store': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/theming': 6.5.5_sfoxds7t5ydpegc3knd667wn6m - babel-loader: 8.2.5_lzsemofhph6vepnub4bnemnm6m + babel-loader: 8.2.5_@babel+core@7.18.2 core-js: 3.22.2 fast-deep-equal: 3.1.3 global: 4.4.0 @@ -5901,7 +5603,7 @@ packages: - webpack-command dev: true - /@storybook/addon-essentials/6.5.5_hsrlj427md5pp3pvjdg47ksxsm: + /@storybook/addon-essentials/6.5.5_kx7jpip5ur2hkx2gir5aq6f4la: resolution: {integrity: sha512-2w8jAIDbrc4/X9/HgVMh1ODsDHbXG7QFFF186UPPDIcCHoNb/3HZk9YSi0Rv7O3VcY4PyKWbTsbmmTzbT8QSbA==} peerDependencies: '@babel/core': ^7.9.6 @@ -5962,7 +5664,7 @@ packages: '@storybook/addon-actions': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-backgrounds': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-controls': 6.5.5_k26rfrdk2uh2ao3d3jcmn6wejm - '@storybook/addon-docs': 6.5.5_hsrlj427md5pp3pvjdg47ksxsm + '@storybook/addon-docs': 6.5.5_kx7jpip5ur2hkx2gir5aq6f4la '@storybook/addon-measure': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-outline': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@storybook/addon-toolbars': 6.5.5_sfoxds7t5ydpegc3knd667wn6m @@ -5976,7 +5678,6 @@ packages: react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - webpack: 4.46.0 transitivePeerDependencies: - '@storybook/mdx2-csf' - eslint @@ -6254,7 +5955,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/builder-vite/0.1.35_mkq3gktqjcl4rw4ogwklz4s7ku: + /@storybook/builder-vite/0.1.35_uv5nccmgt75gnjbpwcxclhqryi: resolution: {integrity: sha512-QEVbfEH/wXHSh1i/Nz8Ox+YDn6Y2OOpHrOa+GsuJG/Oej+WErYDVnBxN8HrfNyc02bzksH8NsML8yZDBLQPccA==} peerDependencies: '@storybook/core-common': '>=6.4.3 || >=6.5.0-alpha.0' @@ -6263,9 +5964,7 @@ packages: dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.0.4_ryq3tp36khmtukzmr4nenehwsq '@mdx-js/mdx': 1.6.22 - '@storybook/core-common': 6.5.8_k26rfrdk2uh2ao3d3jcmn6wejm '@storybook/csf-tools': 6.4.22 - '@storybook/node-logger': 6.5.8 '@storybook/source-loader': 6.5.5_sfoxds7t5ydpegc3knd667wn6m '@vitejs/plugin-react': 1.3.2 ast-types: 0.14.2 @@ -7090,7 +6789,7 @@ packages: - supports-color dev: true - /@storybook/react/6.5.8_oocfzwtuyqxgsjuquyuluqp3ji: + /@storybook/react/6.5.8_kx7jpip5ur2hkx2gir5aq6f4la: resolution: {integrity: sha512-LdObfhhPb9gAFBtRNb3awYJe1qMiYeda1ppkj0ZvccbV04YrmbW5bzYvfOCvU6D34ugbQJhJyWuvraO/0EJK6w==} engines: {node: '>=10.13.0'} hasBin: true @@ -7153,7 +6852,6 @@ packages: react-refresh: 0.11.0 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 - require-from-string: 2.0.2 ts-dedent: 2.2.0 typescript: 4.7.2 util-deprecate: 1.0.2 @@ -7343,7 +7041,7 @@ packages: - react-dom dev: true - /@storybook/testing-react/1.3.0_arewo4uagrgfv3hckbnzjw6rsy: + /@storybook/testing-react/1.3.0_zzdumcyc6vw44t4stcualatcq4: resolution: {integrity: sha512-TfxzflxwBHSPhetWKuYt239t+1iN8gnnUN8OKo5UGtwwirghKQlApjH23QXW6j8YBqFhmq+yP29Oqf8HgKCFLw==} engines: {node: '>=10'} peerDependencies: @@ -7353,11 +7051,8 @@ packages: '@storybook/react': '>=6.4.0' react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.8_sfoxds7t5ydpegc3knd667wn6m - '@storybook/client-api': 6.5.8_sfoxds7t5ydpegc3knd667wn6m '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.5.8_sfoxds7t5ydpegc3knd667wn6m - '@storybook/react': 6.5.8_oocfzwtuyqxgsjuquyuluqp3ji + '@storybook/react': 6.5.8_kx7jpip5ur2hkx2gir5aq6f4la react: 17.0.2 dev: true @@ -7440,7 +7135,7 @@ packages: string.prototype.matchall: 4.0.7 dev: true - /@sveltejs/vite-plugin-svelte/1.0.0-next.45_svelte@3.48.0+vite@2.9.14: + /@sveltejs/vite-plugin-svelte/1.0.0-next.45_svelte@3.48.0: resolution: {integrity: sha512-WLschM2qpa4lSpKR4zTVDJ2AW48u3Gjs3BX5s6aZvLRC3bjBjKcOcGmOG9pLu07C869wdMwZFZ+GroVcx7ZKpw==} engines: {node: ^14.13.1 || >= 16} peerDependencies: @@ -7458,7 +7153,6 @@ packages: magic-string: 0.26.2 svelte: 3.48.0 svelte-hmr: 0.14.11_svelte@3.48.0 - vite: 2.9.14 transitivePeerDependencies: - supports-color dev: true @@ -7592,28 +7286,30 @@ packages: svelte: 3.48.0 dev: true - /@testing-library/user-event/13.5.0_tlwynutqiyp5mns3woioasuxnq: + /@testing-library/user-event/13.5.0: resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: '@babel/runtime': 7.17.9 - '@testing-library/dom': 8.13.0 dev: true - /@testing-library/user-event/14.2.3_tlwynutqiyp5mns3woioasuxnq: - resolution: {integrity: sha512-07Ly+NsFDTvjNdvl5bLBA5oHeGIIHCKc7CniGuKnHrjvqcTPVqPEo4z6a8iYydZ0WvDA6ZA0fnhYrqCLbsm0+A==} - engines: {node: '>=12', npm: '>=6'} + /@testing-library/user-event/13.5.0_tlwynutqiyp5mns3woioasuxnq: + resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} + engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: + '@babel/runtime': 7.17.9 '@testing-library/dom': 8.13.0 dev: true - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} + /@testing-library/user-event/14.2.3: + resolution: {integrity: sha512-07Ly+NsFDTvjNdvl5bLBA5oHeGIIHCKc7CniGuKnHrjvqcTPVqPEo4z6a8iYydZ0WvDA6ZA0fnhYrqCLbsm0+A==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' dev: true /@tootallnate/once/2.0.0: @@ -7629,35 +7325,6 @@ packages: resolution: {integrity: sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==} dev: true - /@types/babel__core/7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} - dependencies: - '@babel/parser': 7.18.11 - '@babel/types': 7.18.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.18.10 - dev: true - - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - dev: true - - /@types/babel__traverse/7.17.1: - resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} - dependencies: - '@babel/types': 7.18.10 - dev: true - /@types/braces/3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true @@ -7726,6 +7393,10 @@ packages: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + /@types/form-data/0.0.33: resolution: {integrity: sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=} dependencies: @@ -7735,7 +7406,7 @@ packages: /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 17.0.40 + '@types/node': 18.7.3 dev: true /@types/glob/7.2.0: @@ -7880,6 +7551,10 @@ packages: resolution: {integrity: sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==} dev: true + /@types/node/18.7.3: + resolution: {integrity: sha512-LJgzOEwWuMTBxHzgBR/fhhBOWrvBjvO+zPteUgbbuQi80rYIZHrk1mNbRUqPZqSLP2H7Rwt1EFLL/tNLD1Xx/w==} + dev: true + /@types/node/8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true @@ -8000,7 +7675,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.0.4 + '@types/node': 18.7.3 dev: true /@types/scheduler/0.16.2: @@ -8028,10 +7703,6 @@ packages: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} dev: true - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - /@types/tapable/1.0.8: resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} dev: true @@ -8098,7 +7769,7 @@ packages: /@types/ws/8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 17.0.40 + '@types/node': 18.7.3 dev: true /@types/yargs-parser/21.0.0: @@ -8111,12 +7782,6 @@ packages: '@types/yargs-parser': 21.0.0 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 @@ -8125,8 +7790,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin/5.27.1_hna427qgodgvnyijeryyxjzjii: - resolution: {integrity: sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==} + /@typescript-eslint/eslint-plugin/5.33.0_yy5c4q6zhpajzhorvwhnwvctfe: + resolution: {integrity: sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -8136,12 +7801,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/type-utils': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq - '@typescript-eslint/utils': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/parser': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/type-utils': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq + '@typescript-eslint/utils': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq debug: 4.3.4 - eslint: 8.21.0 + eslint: 8.22.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 @@ -8152,8 +7817,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.27.1_qugx7qdu5zevzvxaiqyxfiwquq: - resolution: {integrity: sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==} + /@typescript-eslint/parser/5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq: + resolution: {integrity: sha512-cgM5cJrWmrDV2KpvlcSkelTBASAs1mgqq+IUGKJvFxWrapHpaRy5EXPQz9YaKF3nZ8KY18ILTiVpUtbIac86/w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -8162,26 +7827,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4 debug: 4.3.4 - eslint: 8.21.0 + eslint: 8.22.0 typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.27.1: - resolution: {integrity: sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==} + /@typescript-eslint/scope-manager/5.33.0: + resolution: {integrity: sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/visitor-keys': 5.27.1 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/visitor-keys': 5.33.0 dev: true - /@typescript-eslint/type-utils/5.27.1_qugx7qdu5zevzvxaiqyxfiwquq: - resolution: {integrity: sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==} + /@typescript-eslint/type-utils/5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq: + resolution: {integrity: sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -8190,22 +7855,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/utils': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq debug: 4.3.4 - eslint: 8.21.0 + eslint: 8.22.0 tsutils: 3.21.0_typescript@4.7.4 typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.27.1: - resolution: {integrity: sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==} + /@typescript-eslint/types/5.33.0: + resolution: {integrity: sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.27.1_typescript@4.7.4: - resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==} + /@typescript-eslint/typescript-estree/5.33.0_typescript@4.7.4: + resolution: {integrity: sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -8213,8 +7878,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/visitor-keys': 5.27.1 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/visitor-keys': 5.33.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -8225,29 +7890,29 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.27.1_qugx7qdu5zevzvxaiqyxfiwquq: - resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==} + /@typescript-eslint/utils/5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq: + resolution: {integrity: sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.4 - eslint: 8.21.0 + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4 + eslint: 8.22.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint-utils: 3.0.0_eslint@8.22.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.27.1: - resolution: {integrity: sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==} + /@typescript-eslint/visitor-keys/5.33.0: + resolution: {integrity: sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/types': 5.33.0 eslint-visitor-keys: 3.3.0 dev: true @@ -8492,7 +8157,7 @@ packages: - supports-color dev: true - /@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.36: + /@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.37: resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -8500,54 +8165,50 @@ packages: vue: ^3.2.25 dependencies: vite: 2.9.14 - vue: 3.2.36 + vue: 3.2.37 dev: true - /@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.37: + /@vitejs/plugin-vue/2.3.3_vue@3.2.36: resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} engines: {node: '>=12.0.0'} peerDependencies: vite: ^2.5.10 vue: ^3.2.25 dependencies: - vite: 2.9.14 - vue: 3.2.37 + vue: 3.2.36 dev: true - /@vitejs/plugin-vue/3.0.1_vite@2.9.14+vue@3.2.37: + /@vitejs/plugin-vue/3.0.1: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 vue: ^3.2.25 - dependencies: - vite: 2.9.14 - vue: 3.2.37 dev: true - /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.37: + /@vitejs/plugin-vue/3.0.1_vite@2.9.14+vue@3.2.37: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 vue: ^3.2.25 dependencies: - vite: 3.0.4 + vite: 2.9.14 vue: 3.2.37 dev: true - /@vitejs/plugin-vue/3.0.1_vite@3.0.7+vue@3.2.36: + /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.37: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 vue: ^3.2.25 dependencies: - vite: 3.0.7 - vue: 3.2.36 + vite: 3.0.4 + vue: 3.2.37 dev: true - /@vitejs/plugin-vue/3.0.1_vite@3.0.7+vue@3.2.37: + /@vitejs/plugin-vue/3.0.1_vite@3.0.7+vue@3.2.36: resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8555,7 +8216,7 @@ packages: vue: ^3.2.25 dependencies: vite: 3.0.7 - vue: 3.2.37 + vue: 3.2.36 dev: true /@vitejs/plugin-vue2/1.1.2_vite@3.0.7+vue@2.7.8: @@ -8601,7 +8262,7 @@ packages: /@vue/compiler-core/3.2.37: resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} dependencies: - '@babel/parser': 7.18.9 + '@babel/parser': 7.18.11 '@vue/shared': 3.2.37 estree-walker: 2.0.2 source-map: 0.6.1 @@ -8642,7 +8303,7 @@ packages: /@vue/compiler-sfc/3.2.37: resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==} dependencies: - '@babel/parser': 7.18.9 + '@babel/parser': 7.18.11 '@vue/compiler-core': 3.2.37 '@vue/compiler-dom': 3.2.37 '@vue/compiler-ssr': 3.2.37 @@ -8650,7 +8311,7 @@ packages: '@vue/shared': 3.2.37 estree-walker: 2.0.2 magic-string: 0.25.9 - postcss: 8.4.14 + postcss: 8.4.16 source-map: 0.6.1 /@vue/compiler-ssr/3.2.36: @@ -8681,7 +8342,7 @@ packages: /@vue/reactivity-transform/3.2.37: resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: - '@babel/parser': 7.18.9 + '@babel/parser': 7.18.11 '@vue/compiler-core': 3.2.37 '@vue/shared': 3.2.37 estree-walker: 2.0.2 @@ -8760,23 +8421,21 @@ packages: vue-template-compiler: 2.7.8 dev: true - /@vue/test-utils/2.0.0_vue@3.2.36: + /@vue/test-utils/2.0.0: resolution: {integrity: sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==} peerDependencies: vue: ^3.0.1 - dependencies: - vue: 3.2.36 dev: true - /@vue/test-utils/2.0.0_vue@3.2.37: + /@vue/test-utils/2.0.0_vue@3.2.36: resolution: {integrity: sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==} peerDependencies: vue: ^3.0.1 dependencies: - vue: 3.2.37 + vue: 3.2.36 dev: true - /@vueuse/core/8.5.0_vue@3.2.37: + /@vueuse/core/8.5.0: resolution: {integrity: sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==} peerDependencies: '@vue/composition-api': ^1.1.0 @@ -8788,9 +8447,8 @@ packages: optional: true dependencies: '@vueuse/metadata': 8.5.0 - '@vueuse/shared': 8.5.0_vue@3.2.37 - vue: 3.2.37 - vue-demi: 0.12.5_vue@3.2.37 + '@vueuse/shared': 8.5.0 + vue-demi: 0.12.5 dev: false /@vueuse/core/8.9.4_vue@3.2.37: @@ -8822,7 +8480,7 @@ packages: - '@vue/composition-api' - vue - /@vueuse/integrations/8.5.0_axios@0.26.1+vue@3.2.37: + /@vueuse/integrations/8.5.0_axios@0.26.1: resolution: {integrity: sha512-tZNYg5T07OacF1x4evGoRZK1BMU0ge7MqF4tzR3eJLD0EPiq4jd6+HUzCloPtMZ14wNPwaP1B8xYUyYxucPJ3w==} peerDependencies: axios: '*' @@ -8854,10 +8512,10 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 8.5.0_vue@3.2.37 - '@vueuse/shared': 8.5.0_vue@3.2.37 + '@vueuse/core': 8.5.0 + '@vueuse/shared': 8.5.0 axios: 0.26.1 - vue-demi: 0.12.5_vue@3.2.37 + vue-demi: 0.12.5 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -8874,7 +8532,7 @@ packages: /@vueuse/metadata/9.1.0: resolution: {integrity: sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==} - /@vueuse/shared/8.5.0_vue@3.2.37: + /@vueuse/shared/8.5.0: resolution: {integrity: sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==} peerDependencies: '@vue/composition-api': ^1.1.0 @@ -8885,8 +8543,7 @@ packages: vue: optional: true dependencies: - vue: 3.2.37 - vue-demi: 0.12.5_vue@3.2.37 + vue-demi: 0.12.5 dev: false /@vueuse/shared/8.9.4_vue@3.2.37: @@ -9467,7 +9124,7 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.1 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 is-string: 1.0.7 dev: true @@ -9650,23 +9307,18 @@ packages: - debug dev: false - /babel-jest/27.5.1_@babel+core@7.18.10: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-loader/8.2.5_@babel+core@7.18.2: + resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} + engines: {node: '>= 8.9'} peerDependencies: - '@babel/core': ^7.8.0 + '@babel/core': ^7.0.0 + webpack: '>=2' dependencies: - '@babel/core': 7.18.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.18.10 - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.18.2 + find-cache-dir: 3.3.2 + loader-utils: 2.0.2 + make-dir: 3.1.0 + schema-utils: 2.7.1 dev: true /babel-loader/8.2.5_lzsemofhph6vepnub4bnemnm6m: @@ -9738,16 +9390,6 @@ packages: - 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.18.10 - '@babel/types': 7.18.10 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.17.1 - dev: true - /babel-plugin-jsx-dom-expressions/0.32.17_@babel+core@7.18.2: resolution: {integrity: sha512-S3VLVh4zBsyWqNhMQq/Kof/sxULKZXaIhiNEy8Iy7XlpMXY4rpJ6XYtRVFtN/2+OnH+tyGDpZRWflvwqbuZxmA==} dependencies: @@ -9873,37 +9515,6 @@ packages: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.10: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.10 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.10 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.10 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.10 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.10 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.10 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.10 - dev: true - - /babel-preset-jest/27.5.1_@babel+core@7.18.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.18.10 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.10 - dev: true - /babel-preset-solid/1.3.17_@babel+core@7.18.2: resolution: {integrity: sha512-3lBNUtDj9SkEuO+sJCUlSkW7s8U/yhPJIxmRlXauSMOcGHgeOMu3omx//C9Fnz0DajG3fgSBeQLl7nhy5tS+dA==} dependencies: @@ -10236,18 +9847,18 @@ packages: '@jsdevtools/ez-spawn': 3.0.4 cac: 6.7.12 fast-glob: 3.2.11 - kleur: 4.1.4 + kleur: 4.1.5 prompts: 2.4.2 semver: 7.3.7 dev: true - /bundle-require/3.0.4_esbuild@0.14.47: + /bundle-require/3.0.4_esbuild@0.14.54: resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.13' dependencies: - esbuild: 0.14.47 + esbuild: 0.14.54 load-tsconfig: 0.2.3 dev: true @@ -10294,7 +9905,7 @@ packages: istanbul-reports: 3.1.5 rimraf: 3.0.2 test-exclude: 6.0.0 - v8-to-istanbul: 9.0.0 + v8-to-istanbul: 9.0.1 yargs: 16.2.0 yargs-parser: 20.2.9 @@ -10373,7 +9984,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 dev: true /call-me-maybe/1.0.1: @@ -10505,11 +10116,6 @@ packages: supports-color: 7.2.0 dev: true - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - /character-entities-legacy/1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: true @@ -10622,6 +10228,10 @@ packages: resolution: {integrity: sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==} dev: true + /ci-info/3.3.2: + resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} + dev: true + /cipher-base/1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -10629,10 +10239,6 @@ packages: safe-buffer: 5.2.1 dev: true - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - /class-utils/0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -10751,11 +10357,6 @@ packages: engines: {node: '>=6'} dev: false - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - /codemirror-theme-vars/0.1.1: resolution: {integrity: sha512-Au0Ysn6tUMZB/1Jd5S8g4Or1kZxTuTnNx6MVs9H46Ad7w8IEjkHusH+4oyia/FBcVuAJO4DIlkDnPM8Qnnf1rg==} dev: true @@ -10768,10 +10369,6 @@ packages: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: true - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - /collection-visit/1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -10802,10 +10399,6 @@ packages: hasBin: true dev: true - /colorette/2.0.17: - resolution: {integrity: sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==} - dev: true - /colorette/2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true @@ -10840,8 +10433,8 @@ packages: engines: {node: '>= 6'} dev: true - /commander/9.3.0: - resolution: {integrity: sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==} + /commander/9.4.0: + resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==} engines: {node: ^12.20.0 || >=14} dev: true @@ -11217,10 +10810,6 @@ packages: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - /cssom/0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true @@ -11454,15 +11043,6 @@ packages: assert-plus: 1.0.0 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 - /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -11697,11 +11277,6 @@ packages: repeat-string: 1.6.1 dev: true - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /detect-node/2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -11825,13 +11400,6 @@ packages: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /domexception/4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -11931,11 +11499,6 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: true - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - dev: true - /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -12070,7 +11633,7 @@ packages: es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 get-symbol-description: 1.0.0 has: 1.0.3 has-property-descriptors: 1.0.0 @@ -12084,7 +11647,7 @@ packages: is-weakref: 1.0.2 object-inspect: 1.12.2 object-keys: 1.1.1 - object.assign: 4.1.2 + object.assign: 4.1.3 regexp.prototype.flags: 1.4.3 string.prototype.trimend: 1.0.5 string.prototype.trimstart: 1.0.5 @@ -12144,6 +11707,15 @@ packages: requiresBuild: true optional: true + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-android-arm64/0.14.47: resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} engines: {node: '>=12'} @@ -12152,6 +11724,15 @@ packages: requiresBuild: true optional: true + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-64/0.14.47: resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} engines: {node: '>=12'} @@ -12160,6 +11741,15 @@ packages: requiresBuild: true optional: true + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-arm64/0.14.47: resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} engines: {node: '>=12'} @@ -12168,6 +11758,15 @@ packages: requiresBuild: true optional: true + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-64/0.14.47: resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} engines: {node: '>=12'} @@ -12176,6 +11775,15 @@ packages: requiresBuild: true optional: true + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-arm64/0.14.47: resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} engines: {node: '>=12'} @@ -12184,6 +11792,15 @@ packages: requiresBuild: true optional: true + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-32/0.14.47: resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} engines: {node: '>=12'} @@ -12192,6 +11809,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-64/0.14.47: resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} engines: {node: '>=12'} @@ -12200,6 +11826,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm/0.14.47: resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} engines: {node: '>=12'} @@ -12208,6 +11843,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm64/0.14.47: resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} engines: {node: '>=12'} @@ -12216,14 +11860,32 @@ packages: requiresBuild: true optional: true - /esbuild-linux-mips64le/0.14.47: - resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.47: + resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} + engines: {node: '>=12'} + cpu: [mips64el] os: [linux] requiresBuild: true optional: true + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-ppc64le/0.14.47: resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} engines: {node: '>=12'} @@ -12232,6 +11894,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-riscv64/0.14.47: resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} engines: {node: '>=12'} @@ -12240,6 +11911,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-s390x/0.14.47: resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} engines: {node: '>=12'} @@ -12248,6 +11928,15 @@ packages: requiresBuild: true optional: true + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-netbsd-64/0.14.47: resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} engines: {node: '>=12'} @@ -12256,10 +11945,19 @@ packages: requiresBuild: true optional: true + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-node-loader/0.6.5: resolution: {integrity: sha512-uPP+dllWm38cFvDysdocutN3lfe5pTIbddAHp1ENyLzpHYqE2r+3Wo+pfg9X3p8DFWwzIisft5YkeBIthIcixw==} dependencies: - esbuild: 0.14.47 + esbuild: 0.14.54 dev: true /esbuild-openbsd-64/0.14.47: @@ -12270,12 +11968,21 @@ packages: requiresBuild: true optional: true - /esbuild-register/3.3.3_esbuild@0.14.47: + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-register/3.3.3_esbuild@0.14.54: resolution: {integrity: sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==} peerDependencies: esbuild: '>=0.12 <1' dependencies: - esbuild: 0.14.47 + esbuild: 0.14.54 dev: true /esbuild-sunos-64/0.14.47: @@ -12286,6 +11993,15 @@ packages: requiresBuild: true optional: true + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-32/0.14.47: resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} engines: {node: '>=12'} @@ -12294,6 +12010,15 @@ packages: requiresBuild: true optional: true + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-64/0.14.47: resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} engines: {node: '>=12'} @@ -12302,6 +12027,15 @@ packages: requiresBuild: true optional: true + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-arm64/0.14.47: resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} engines: {node: '>=12'} @@ -12310,6 +12044,15 @@ packages: requiresBuild: true optional: true + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild/0.14.47: resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} engines: {node: '>=12'} @@ -12337,6 +12080,35 @@ packages: esbuild-windows-64: 0.14.47 esbuild-windows-arm64: 0.14.47 + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -12349,11 +12121,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -12385,17 +12152,20 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_5uhabtgzo3akfzi73a5jap3i6a: - resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + /eslint-module-utils/2.7.4_u6jmwotzwvrkpxsonwgtu35deq: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' + eslint: '*' eslint-import-resolver-node: '*' eslint-import-resolver-typescript: '*' eslint-import-resolver-webpack: '*' peerDependenciesMeta: '@typescript-eslint/parser': optional: true + eslint: + optional: true eslint-import-resolver-node: optional: true eslint-import-resolver-typescript: @@ -12403,43 +12173,43 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/parser': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq debug: 3.2.7 + eslint: 8.22.0 eslint-import-resolver-node: 0.3.6 - find-up: 2.1.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-antfu/0.25.2_qugx7qdu5zevzvxaiqyxfiwquq: + /eslint-plugin-antfu/0.25.2_4rv7y5c6xz3vfxwhbrcxxi73bq: resolution: {integrity: sha512-yRhuFMwUKhSYm8BWTZsW4ymYnFPCJWZb2LzjG+mQb7JbKflk73JIFMCREPOaV4nWwc4YJEPhym75QsC7AFbqSw==} dependencies: - '@typescript-eslint/utils': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/utils': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq transitivePeerDependencies: - eslint - supports-color - typescript dev: true - /eslint-plugin-es/4.1.0_eslint@8.21.0: + /eslint-plugin-es/4.1.0_eslint@8.22.0: resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.21.0 + eslint: 8.22.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-eslint-comments/3.2.0_eslint@8.21.0: + /eslint-plugin-eslint-comments/3.2.0_eslint@8.22.0: resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.21.0 + eslint: 8.22.0 ignore: 5.2.0 dev: true @@ -12449,7 +12219,7 @@ packages: htmlparser2: 7.2.0 dev: true - /eslint-plugin-import/2.26.0_zsb72iklpc2oilknnuagayaomq: + /eslint-plugin-import/2.26.0_rg72qmk2p6ydk3qleqiccuhffm: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -12459,16 +12229,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.27.1_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/parser': 5.33.0_4rv7y5c6xz3vfxwhbrcxxi73bq array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.21.0 + eslint: 8.22.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_5uhabtgzo3akfzi73a5jap3i6a + eslint-module-utils: 2.7.4_u6jmwotzwvrkpxsonwgtu35deq has: 1.0.3 - is-core-module: 2.9.0 + is-core-module: 2.10.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.5 @@ -12480,58 +12250,58 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc/2.3.0_eslint@8.21.0: - resolution: {integrity: sha512-QqHj7Chw8vsALsCOhFxecRIepxpbcpmMon9yA1+GaYk1Am0GanHAwnTkeVX+/ysAb4QTkeGMZ+ZPK4TKrZ/VSw==} + /eslint-plugin-jsonc/2.3.1_eslint@8.22.0: + resolution: {integrity: sha512-8sgWGWiVRMFL6xGawRymrE4RjZJgiU0rXYgFFb71wvdwuUkPgWSvfFtc8jfwcgjjqFjis8vzCUFsg7SciMEDWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.21.0 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint: 8.22.0 + eslint-utils: 3.0.0_eslint@8.22.0 jsonc-eslint-parser: 2.1.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown/2.2.1_eslint@8.21.0: + /eslint-plugin-markdown/2.2.1_eslint@8.22.0: resolution: {integrity: sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==} engines: {node: ^8.10.0 || ^10.12.0 || >= 12.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.21.0 + eslint: 8.22.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n/15.2.1_eslint@8.21.0: - resolution: {integrity: sha512-uMG50pvKqXK9ab163bSI5OpyZR0F5yIB0pEC4ciGpBLrXVjVDOlx5oTq8GQULWzbelJt7wL5Rw4T+FfAff5Cxg==} + /eslint-plugin-n/15.2.4_eslint@8.22.0: + resolution: {integrity: sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==} engines: {node: '>=12.22.0'} peerDependencies: eslint: '>=7.0.0' dependencies: builtins: 5.0.1 - eslint: 8.21.0 - eslint-plugin-es: 4.1.0_eslint@8.21.0 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint: 8.22.0 + eslint-plugin-es: 4.1.0_eslint@8.22.0 + eslint-utils: 3.0.0_eslint@8.22.0 ignore: 5.2.0 - is-core-module: 2.9.0 + is-core-module: 2.10.0 minimatch: 3.1.2 resolve: 1.22.1 semver: 7.3.7 dev: true - /eslint-plugin-promise/6.0.0_eslint@8.21.0: + /eslint-plugin-promise/6.0.0_eslint@8.22.0: resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.21.0 + eslint: 8.22.0 dev: true - /eslint-plugin-react/7.30.0_eslint@8.21.0: - resolution: {integrity: sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==} + /eslint-plugin-react/7.30.1_eslint@8.22.0: + resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -12539,34 +12309,34 @@ packages: array-includes: 3.1.5 array.prototype.flatmap: 1.3.0 doctrine: 2.1.0 - eslint: 8.21.0 + eslint: 8.22.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.0 + jsx-ast-utils: 3.3.3 minimatch: 3.1.2 object.entries: 1.1.5 object.fromentries: 2.0.5 object.hasown: 1.1.1 object.values: 1.1.5 prop-types: 15.8.1 - resolve: 2.0.0-next.3 + resolve: 2.0.0-next.4 semver: 6.3.0 string.prototype.matchall: 4.0.7 dev: true - /eslint-plugin-unicorn/42.0.0_eslint@8.21.0: + /eslint-plugin-unicorn/42.0.0_eslint@8.22.0: resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==} engines: {node: '>=12'} peerDependencies: eslint: '>=8.8.0' dependencies: '@babel/helper-validator-identifier': 7.18.6 - ci-info: 3.3.1 + ci-info: 3.3.2 clean-regexp: 1.0.0 - eslint: 8.21.0 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint: 8.22.0 + eslint-utils: 3.0.0_eslint@8.22.0 esquery: 1.4.0 indent-string: 4.0.0 - is-builtin-module: 3.1.0 + is-builtin-module: 3.2.0 lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 @@ -12576,35 +12346,35 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-vue/9.1.0_eslint@8.21.0: - resolution: {integrity: sha512-EPCeInPicQ/YyfOWJDr1yfEeSNoFCMzUus107lZyYi37xejdOolNzS5MXGXp8+9bkoKZMdv/1AcZzQebME6r+g==} + /eslint-plugin-vue/9.3.0_eslint@8.22.0: + resolution: {integrity: sha512-iscKKkBZgm6fGZwFt6poRoWC0Wy2dQOlwUPW++CiPoQiw1enctV2Hj5DBzzjJZfyqs+FAXhgzL4q0Ww03AgSmQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.21.0 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint: 8.22.0 + eslint-utils: 3.0.0_eslint@8.22.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.10 semver: 7.3.7 - vue-eslint-parser: 9.0.2_eslint@8.21.0 + vue-eslint-parser: 9.0.3_eslint@8.22.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml/1.0.0_eslint@8.21.0: - resolution: {integrity: sha512-0RVoUFh5vpznE2DIP5agSpWO/nU8GgAWwoTAHWopU2X+1SCB5ykHU6DwS0GrZ5Hvejtk6CcADQllpQQJB4C5QA==} + /eslint-plugin-yml/1.1.0_eslint@8.22.0: + resolution: {integrity: sha512-64g3vWwolk9d+FykuqxXGLn3oGEK2ZecIAyfIEsyuSHBQkR8utp5h8e75R6tGph1IRggoGl27QQ2oi2M1IF1Vw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.21.0 + eslint: 8.22.0 lodash: 4.17.21 natural-compare: 1.4.0 - yaml-eslint-parser: 1.0.1 + yaml-eslint-parser: 1.1.0 transitivePeerDependencies: - supports-color dev: true @@ -12640,13 +12410,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.21.0: + /eslint-utils/3.0.0_eslint@8.22.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.21.0 + eslint: 8.22.0 eslint-visitor-keys: 2.1.0 dev: true @@ -12665,8 +12435,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.21.0: - resolution: {integrity: sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==} + /eslint/8.22.0: + resolution: {integrity: sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: @@ -12680,7 +12450,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.21.0 + eslint-utils: 3.0.0_eslint@8.22.0 eslint-visitor-keys: 3.3.0 espree: 9.3.3 esquery: 1.4.0 @@ -12690,7 +12460,7 @@ packages: find-up: 5.0.0 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.15.0 + globals: 13.17.0 globby: 11.1.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -12718,9 +12488,9 @@ packages: hasBin: true dependencies: cross-spawn: 7.0.3 - esbuild: 0.14.47 + esbuild: 0.14.54 esbuild-node-loader: 0.6.5 - esbuild-register: 3.3.3_esbuild@0.14.47 + esbuild-register: 3.3.3_esbuild@0.14.54 import-meta-resolve: 1.1.1 dev: true @@ -12890,11 +12660,6 @@ packages: pify: 2.3.0 dev: true - /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - /expand-brackets/2.1.4: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} @@ -12910,16 +12675,6 @@ packages: - supports-color 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.17.3: resolution: {integrity: sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==} engines: {node: '>= 0.10.0'} @@ -13227,13 +12982,6 @@ packages: dev: true optional: true - /find-up/2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: true - /find-up/3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -13576,6 +13324,14 @@ packages: has-symbols: 1.0.3 dev: true + /get-intrinsic/1.1.2: + resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + /get-own-enumerable-property-symbols/3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} dev: true @@ -13625,7 +13381,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 dev: true /get-value/2.0.6: @@ -13741,8 +13497,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals/13.15.0: - resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -13795,6 +13551,15 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /graphql-tag/2.12.6: + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + tslib: 2.4.0 + dev: false + /graphql-tag/2.12.6_graphql@16.5.0: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -13890,7 +13655,7 @@ packages: /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 dev: true /has-symbols/1.0.3: @@ -14081,13 +13846,6 @@ packages: call-bind: 1.0.2 dev: true - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - /html-encoding-sniffer/3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -14190,17 +13948,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-agent/5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -14339,15 +14086,6 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /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 - /import-meta-resolve/1.1.1: resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==} dependencies: @@ -14430,7 +14168,7 @@ packages: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -14532,8 +14270,8 @@ packages: engines: {node: '>=4'} dev: true - /is-builtin-module/3.1.0: - resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 @@ -14558,10 +14296,16 @@ packages: ci-info: 3.3.1 dev: true + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + dependencies: + has: 1.0.3 + /is-core-module/2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 + dev: true /is-data-descriptor/0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} @@ -14655,11 +14399,6 @@ packages: resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} dev: true - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-glob/3.1.0: resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} engines: {node: '>=0.10.0'} @@ -14765,7 +14504,7 @@ packages: /is-reference/1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 0.0.51 + '@types/estree': 1.0.0 dev: true /is-regex/1.1.4: @@ -14979,6 +14718,7 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: false /istanbul-reports/3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} @@ -15009,112 +14749,6 @@ packages: minimatch: 3.1.2 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': 18.0.4 - 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: - 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 - '@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 - 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: - 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.18.10 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.18.10 - chalk: 4.1.2 - ci-info: 3.3.1 - deepmerge: 4.2.2 - glob: 7.2.3 - 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 - 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} @@ -15125,54 +14759,6 @@ packages: 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': 18.0.4 - 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': 18.0.4 - 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} @@ -15201,27 +14787,7 @@ packages: - supports-color 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': 18.0.4 - 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-image-snapshot/4.5.1_jest@27.5.1: + /jest-image-snapshot/4.5.1: resolution: {integrity: sha512-0YkgupgkkCx0wIZkxvqs/oNiUT0X0d2WTpUhaAp+Dy6CpqBUZMRTIZo4KR1f+dqmx6WXrLCvecjnHLIsLkI+gQ==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -15230,7 +14796,6 @@ packages: chalk: 1.1.3 get-stdin: 5.0.1 glur: 1.1.2 - jest: 27.5.1 lodash: 4.17.21 mkdirp: 0.5.6 pixelmatch: 5.3.0 @@ -15239,39 +14804,6 @@ packages: ssim.js: 3.5.0 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': 18.0.4 - 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} @@ -15282,184 +14814,17 @@ packages: 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.18.6 - '@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': 18.0.4 - 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/26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} 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.1 - 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': 18.0.4 - 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 - 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} - 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.3 - 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 - dev: true - /jest-serializer/26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/node': 17.0.40 - graceful-fs: 4.2.10 - 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} - dependencies: - '@types/node': 18.0.4 - graceful-fs: 4.2.10 - 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} - dependencies: - '@babel/core': 7.18.10 - '@babel/generator': 7.18.12 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.17.1 - '@types/prettier': 2.6.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.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 + resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/node': 17.0.40 + graceful-fs: 4.2.10 dev: true /jest-util/26.6.2: @@ -15474,43 +14839,6 @@ packages: micromatch: 4.0.5 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} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.0.4 - chalk: 4.1.2 - ci-info: 3.3.1 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - 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 - 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} - dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.0.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.5.1 - string-length: 4.0.2 - dev: true - /jest-worker/26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} @@ -15520,36 +14848,6 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.0.4 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest/27.5.1: - 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 - import-local: 3.1.0 - jest-cli: 27.5.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /jiti/1.14.0: resolution: {integrity: sha512-4IwstlaKQc9vCTC+qUXLM1hajy2ImiL9KnLvVYiaHOtS/v3wRjhLlGl121AmgDgx/O43uKmxownJghS5XMya2A==} hasBin: true @@ -15607,48 +14905,6 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} 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.8.0 - 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.9 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsdom/19.0.0: resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} engines: {node: '>=12'} @@ -15795,6 +15051,10 @@ packages: /jsonc-parser/3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} + /jsonc-parser/3.1.0: + resolution: {integrity: sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==} + dev: true + /jsonfile/2.4.0: resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} optionalDependencies: @@ -15824,12 +15084,12 @@ packages: verror: 1.10.0 dev: true - /jsx-ast-utils/3.3.0: - resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==} + /jsx-ast-utils/3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.5 - object.assign: 4.1.2 + object.assign: 4.1.3 dev: true /junk/3.1.0: @@ -15877,6 +15137,11 @@ packages: engines: {node: '>=6'} dev: true + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + /klona/2.0.5: resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} engines: {node: '>= 8'} @@ -15928,6 +15193,11 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -15937,8 +15207,8 @@ packages: hasBin: true dependencies: cli-truncate: 3.1.0 - colorette: 2.0.17 - commander: 9.3.0 + colorette: 2.0.19 + commander: 9.4.0 debug: 4.3.4 execa: 6.1.0 lilconfig: 2.0.5 @@ -15984,11 +15254,11 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 - colorette: 2.0.17 + colorette: 2.0.19 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.5 + rxjs: 7.5.6 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -16073,14 +15343,6 @@ packages: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} engines: {node: '>=14'} - /locate-path/2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: true - /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -16675,8 +15937,8 @@ packages: rollup: 2.77.2 dev: false - /moment/2.29.3: - resolution: {integrity: sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==} + /moment/2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: true /moo/0.5.1: @@ -16837,7 +16099,7 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next/12.1.5_hbavo5rcrxpva3rqoclkpvthlq: + /next/12.1.5_zpnidt7m3osuk7shl3s4oenomq: resolution: {integrity: sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ==} engines: {node: '>=12.22.0'} hasBin: true @@ -16860,7 +16122,7 @@ packages: postcss: 8.4.5 react: 18.0.0 react-dom: 18.0.0_react@18.0.0 - styled-jsx: 5.0.1_k6xwmnqmgysg6weibx66ue6pyi + styled-jsx: 5.0.1_react@18.0.0 optionalDependencies: '@next/swc-android-arm-eabi': 12.1.5 '@next/swc-android-arm64': 12.1.5 @@ -16995,8 +16257,8 @@ packages: '@emotion/styled': optional: true dependencies: - '@emotion/react': 11.9.3_byq7oc57qftat37gkdlgphtura - '@emotion/styled': 11.9.3_l2b3bk2wvdxduhtwvnfg5dtkfy + '@emotion/react': 11.9.3_react@18.2.0 + '@emotion/styled': 11.9.3_jhgplt4fmhans76oq3ok5iox2u '@mui/material': 5.9.0_qsuhhlyfbpdicstla2jcf7xfmy clsx: 1.1.1 hoist-non-react-statics: 3.3.2 @@ -17111,6 +16373,16 @@ packages: object-keys: 1.1.1 dev: true + /object.assign/4.1.3: + resolution: {integrity: sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + /object.entries/1.1.5: resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} engines: {node: '>= 0.4'} @@ -17178,8 +16450,8 @@ packages: dependencies: destr: 1.1.1 node-fetch-native: 0.1.4 - ufo: 0.8.4 - undici: 5.4.0 + ufo: 0.8.5 + undici: 5.8.2 dev: true /on-finished/2.3.0: @@ -17325,13 +16597,6 @@ packages: engines: {node: '>=4'} dev: true - /p-limit/1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: true - /p-limit/2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -17352,13 +16617,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate/2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: true - /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -17412,11 +16670,6 @@ packages: p-finally: 1.0.0 dev: true - /p-try/1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - dev: true - /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -17835,7 +17088,7 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.5 + lilconfig: 2.0.6 yaml: 1.10.2 dev: true @@ -17926,7 +17179,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /postcss/8.4.5: resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} @@ -18531,7 +17783,7 @@ packages: react-is: 17.0.2 dev: true - /react-smooth/2.0.1_v2m5e27vhdewzwhryxwfaorcca: + /react-smooth/2.0.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-Own9TA0GPPf3as4vSwFhDouVfXP15ie/wIHklhyKBH5AN6NFtdk0UpHBnonV11BtqDkAWlt40MOUc+5srmW7NA==} peerDependencies: prop-types: ^15.6.0 @@ -18539,7 +17791,6 @@ packages: react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: fast-equals: 2.0.4 - prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-transition-group: 2.9.0_biqbaboplfbrettd7655fr4n2y @@ -18710,7 +17961,7 @@ packages: decimal.js-light: 2.5.1 dev: false - /recharts/2.1.12_v2m5e27vhdewzwhryxwfaorcca: + /recharts/2.1.12_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-dAzEuc9AjM+IF0A33QzEdBEUnyGKJcGUPa0MYm0vd38P3WouQjrj2egBrCNInE7ZcQwN+z3MoT7Rw03u8nP9HA==} engines: {node: '>=12'} peerDependencies: @@ -18727,7 +17978,7 @@ packages: react-dom: 18.2.0_react@18.2.0 react-is: 16.13.1 react-resize-detector: 7.1.2_biqbaboplfbrettd7655fr4n2y - react-smooth: 2.0.1_v2m5e27vhdewzwhryxwfaorcca + react-smooth: 2.0.1_biqbaboplfbrettd7655fr4n2y recharts-scale: 0.4.5 reduce-css-calc: 2.1.8 transitivePeerDependencies: @@ -18956,13 +18207,6 @@ packages: engines: {node: '>=0.10.0'} 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'} @@ -18977,11 +18221,6 @@ packages: deprecated: https://github.com/lydell/resolve-url#deprecated dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} - engines: {node: '>=10'} - dev: true - /resolve/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true @@ -18995,15 +18234,17 @@ packages: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.9.0 + is-core-module: 2.10.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve/2.0.0-next.3: - resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} + /resolve/2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true dependencies: - is-core-module: 2.9.0 + is-core-module: 2.10.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /restore-cursor/3.1.0: @@ -19064,7 +18305,7 @@ packages: inherits: 2.0.4 dev: true - /rollup-plugin-dts/4.2.2_oo3i3f3qmqiztdz5qgxrrjmd5e: + /rollup-plugin-dts/4.2.2_nm5mlcuxlwr6samvke7b2fz27i: resolution: {integrity: sha512-A3g6Rogyko/PXeKoUlkjxkP++8UDVpgA7C+Tdl77Xj4fgEaIjPSnxRmR53EzvoYy97VMVwLAOcWJudaVAuxneQ==} engines: {node: '>=v12.22.11'} peerDependencies: @@ -19072,14 +18313,14 @@ packages: typescript: ^4.1 dependencies: magic-string: 0.26.2 - rollup: 2.77.2 + rollup: 2.78.0 typescript: 4.7.4 optionalDependencies: '@babel/code-frame': 7.18.6 dev: true - /rollup-plugin-esbuild/4.9.1_pemzyxl4ergeow3755j2gtd5cm: - resolution: {integrity: sha512-qn/x7Wz9p3Xnva99qcb+nopH0d2VJwVnsxJTGEg+Sh2Z3tqQl33MhOwzekVo1YTKgv+yAmosjcBRJygMfGrtLw==} + /rollup-plugin-esbuild/4.9.3_2yhceorlees6ev364fcurqi67q: + resolution: {integrity: sha512-bxfUNYTa9Tw/4kdFfT9gtidDtqXyRdCW11ctZM7D8houCCVqp5qHzQF7hhIr31rqMA0APbG47fgVbbCGXgM49Q==} engines: {node: '>=12'} peerDependencies: esbuild: '>=0.10.1' @@ -19088,10 +18329,10 @@ packages: '@rollup/pluginutils': 4.2.1 debug: 4.3.4 es-module-lexer: 0.9.3 - esbuild: 0.14.47 + esbuild: 0.14.54 joycon: 3.1.1 - jsonc-parser: 3.0.0 - rollup: 2.77.2 + jsonc-parser: 3.1.0 + rollup: 2.78.0 transitivePeerDependencies: - supports-color dev: true @@ -19105,7 +18346,7 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-license/2.8.1_rollup@2.77.2: + /rollup-plugin-license/2.8.1_rollup@2.78.0: resolution: {integrity: sha512-VYd9pzaNL7NN6xQp93XiiCV2UoduXgSmTcz6rl9bHPdiifT6yH3Zw/omEr73Rq8TIyN4nqJACBbKIT/2eE66wg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -19116,9 +18357,9 @@ packages: lodash: 4.17.21 magic-string: 0.26.2 mkdirp: 1.0.4 - moment: 2.29.3 + moment: 2.29.4 package-name-regex: 2.0.6 - rollup: 2.77.2 + rollup: 2.78.0 spdx-expression-validate: 2.0.0 spdx-satisfies: 5.0.1 dev: true @@ -19154,6 +18395,22 @@ packages: optionalDependencies: fsevents: 2.3.2 + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /rollup/2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /rst-selector-parser/2.2.3: resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} dependencies: @@ -19189,6 +18446,12 @@ packages: tslib: 2.4.0 dev: true + /rxjs/7.5.6: + resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + dependencies: + tslib: 2.4.0 + dev: true + /safe-buffer/5.1.1: resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} dev: true @@ -19470,7 +18733,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 object-inspect: 1.12.2 dev: true @@ -19784,13 +19047,6 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} dev: true - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /stackframe/1.2.1: resolution: {integrity: sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==} dev: true @@ -19860,14 +19116,6 @@ packages: engines: {node: '>=0.6.19'} 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'} @@ -19891,7 +19139,7 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.1 - get-intrinsic: 1.1.1 + get-intrinsic: 1.1.2 has-symbols: 1.0.3 internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 @@ -19995,11 +19243,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-comments/2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} @@ -20064,7 +19307,7 @@ packages: inline-style-parser: 0.1.1 dev: true - /styled-jsx/5.0.1_k6xwmnqmgysg6weibx66ue6pyi: + /styled-jsx/5.0.1_react@18.0.0: resolution: {integrity: sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -20077,7 +19320,6 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.18.10 react: 18.0.0 dev: false @@ -20122,14 +19364,6 @@ packages: has-flag: 4.0.0 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'} @@ -20276,14 +19510,6 @@ packages: unique-string: 2.0.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-webpack-plugin/1.4.5_webpack@4.46.0: resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} engines: {node: '>= 6.9.0'} @@ -20386,10 +19612,6 @@ packages: any-promise: 1.3.0 dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /throttleit/1.0.0: resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} dev: true @@ -20520,13 +19742,6 @@ packages: punycode: 2.1.1 dev: true - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.1.1 - dev: true - /tr46/3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -20625,17 +19840,17 @@ packages: typescript: optional: true dependencies: - bundle-require: 3.0.4_esbuild@0.14.47 + bundle-require: 3.0.4_esbuild@0.14.54 cac: 6.7.12 chokidar: 3.5.3 debug: 4.3.4 - esbuild: 0.14.47 + esbuild: 0.14.54 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 3.1.4 resolve-from: 5.0.0 - rollup: 2.77.2 + rollup: 2.78.0 source-map: 0.8.0-beta.0 sucrase: 3.25.0 tree-kill: 1.2.2 @@ -20753,8 +19968,8 @@ packages: hasBin: true dev: true - /ufo/0.8.4: - resolution: {integrity: sha512-/+BmBDe8GvlB2nIflWasLLAInjYG0bC9HRnfEpNi4sw77J2AJNnEVnTDReVrehoh825+Q/evF3THXTAweyam2g==} + /ufo/0.8.5: + resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==} dev: true /uglify-js/3.15.4: @@ -20787,8 +20002,8 @@ packages: jiti: 1.14.0 dev: true - /undici/5.4.0: - resolution: {integrity: sha512-A1SRXysDg7J+mVP46jF+9cKANw0kptqSFZ8tGyL+HBiv0K1spjxPX8Z4EGu+Eu6pjClJUBdnUPlxrOafR668/g==} + /undici/5.8.2: + resolution: {integrity: sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==} engines: {node: '>=12.18'} dev: true @@ -20848,7 +20063,7 @@ packages: vfile: 4.2.1 dev: true - /unimport/0.2.4_vite@2.9.14: + /unimport/0.2.4: resolution: {integrity: sha512-7OEUIlZMS1s1h1uFAGkCPylMtE8hnlJ/cFurJQHdzKAqIyuGiOREFKaCLbkNtFloZicCpRAlqC0Ny2yMoz6mFg==} dependencies: '@rollup/pluginutils': 4.2.1 @@ -20859,7 +20074,7 @@ packages: mlly: 0.5.2 pathe: 0.3.0 scule: 0.2.1 - unplugin: 0.6.3_vite@2.9.14 + unplugin: 0.6.3 transitivePeerDependencies: - esbuild - rollup @@ -21070,7 +20285,7 @@ packages: - webpack dev: true - /unplugin-auto-import/0.8.5_vite@2.9.14: + /unplugin-auto-import/0.8.5: resolution: {integrity: sha512-JT43zA89fMjxtdqz+sTSkTsL9J0PNdnGmMOvcwbkpDi45yL5SU0aDCZgj0E8+qWLyQSIvvBaDBW3VuBrcc2MXg==} engines: {node: '>=14'} peerDependencies: @@ -21083,8 +20298,8 @@ packages: '@rollup/pluginutils': 4.2.1 local-pkg: 0.4.1 magic-string: 0.26.2 - unimport: 0.2.4_vite@2.9.14 - unplugin: 0.6.3_vite@2.9.14 + unimport: 0.2.4 + unplugin: 0.6.3 transitivePeerDependencies: - esbuild - rollup @@ -21092,7 +20307,7 @@ packages: - webpack dev: true - /unplugin-vue-components/0.19.6_vite@2.9.14+vue@3.2.36: + /unplugin-vue-components/0.19.6_vue@3.2.36: resolution: {integrity: sha512-APvrJ9Hpid1MLT0G4PWerMJgARhNw6dzz0pcCwCxaO2DR7VyvDacMqjOQNC6ukq7FSw3wzD8VH+9i3EFXwkGmw==} engines: {node: '>=14'} peerDependencies: @@ -21114,7 +20329,7 @@ packages: magic-string: 0.26.2 minimatch: 5.0.1 resolve: 1.22.0 - unplugin: 0.6.3_vite@2.9.14 + unplugin: 0.6.3 vue: 3.2.36 transitivePeerDependencies: - esbuild @@ -21124,7 +20339,7 @@ packages: - webpack dev: true - /unplugin-vue-components/0.22.0_hfe7rwlgfuobhbdqbst7nf7r3q: + /unplugin-vue-components/0.22.0_t6vv62h5jee3sc5tmhqnozb26u: resolution: {integrity: sha512-MpGcrnHgFLUK94Jf46UuiMOPQ4hVAijriR6bPbCGSBygiEDJbPXqy2C1d1k6PkixESFacKkipeuPhme+8F7gHQ==} engines: {node: '>=14'} peerDependencies: @@ -21143,7 +20358,7 @@ packages: magic-string: 0.26.2 minimatch: 5.1.0 resolve: 1.22.1 - unplugin: 0.8.1_j3dciifbmvtgkfngiivqd7lh74 + unplugin: 0.8.1_rollup@2.77.2+vite@3.0.4 vue: 3.2.37 transitivePeerDependencies: - esbuild @@ -21153,7 +20368,7 @@ packages: - webpack dev: true - /unplugin-vue-components/0.22.0_t6vv62h5jee3sc5tmhqnozb26u: + /unplugin-vue-components/0.22.0_vite@2.9.14+vue@3.2.37: resolution: {integrity: sha512-MpGcrnHgFLUK94Jf46UuiMOPQ4hVAijriR6bPbCGSBygiEDJbPXqy2C1d1k6PkixESFacKkipeuPhme+8F7gHQ==} engines: {node: '>=14'} peerDependencies: @@ -21172,7 +20387,7 @@ packages: magic-string: 0.26.2 minimatch: 5.1.0 resolve: 1.22.1 - unplugin: 0.8.1_rollup@2.77.2+vite@3.0.4 + unplugin: 0.8.1_vite@2.9.14 vue: 3.2.37 transitivePeerDependencies: - esbuild @@ -21182,7 +20397,7 @@ packages: - webpack dev: true - /unplugin/0.6.3_vite@2.9.14: + /unplugin/0.6.3: resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==} peerDependencies: esbuild: '>=0.13' @@ -21200,12 +20415,11 @@ packages: optional: true dependencies: chokidar: 3.5.3 - vite: 2.9.14 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.3 dev: true - /unplugin/0.8.1_j3dciifbmvtgkfngiivqd7lh74: + /unplugin/0.8.1_rollup@2.77.2+vite@3.0.4: resolution: {integrity: sha512-o7rUZoPLG1fH4LKinWgb77gDtTE6mw/iry0Pq0Z5UPvZ9+HZ1/4+7fic7t58s8/CGkPrDpGq+RltO+DmswcR4g==} peerDependencies: esbuild: '>=0.13' @@ -21224,14 +20438,13 @@ packages: dependencies: acorn: 8.8.0 chokidar: 3.5.3 - esbuild: 0.14.47 rollup: 2.77.2 - vite: 2.9.14 + vite: 3.0.4 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.4 dev: true - /unplugin/0.8.1_rollup@2.77.2+vite@3.0.4: + /unplugin/0.8.1_vite@2.9.14: resolution: {integrity: sha512-o7rUZoPLG1fH4LKinWgb77gDtTE6mw/iry0Pq0Z5UPvZ9+HZ1/4+7fic7t58s8/CGkPrDpGq+RltO+DmswcR4g==} peerDependencies: esbuild: '>=0.13' @@ -21250,8 +20463,7 @@ packages: dependencies: acorn: 8.8.0 chokidar: 3.5.3 - rollup: 2.77.2 - vite: 3.0.4 + vite: 2.9.14 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.4 dev: true @@ -21342,12 +20554,10 @@ packages: querystring: 0.2.0 dev: true - /use-sync-external-store/1.1.0_react@18.2.0: + /use-sync-external-store/1.1.0: resolution: {integrity: sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 dev: true /use/3.1.1: @@ -21406,20 +20616,20 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.1: - resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + /v8-to-istanbul/9.0.0: + resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} engines: {node: '>=10.12.0'} dependencies: + '@jridgewell/trace-mapping': 0.3.13 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - source-map: 0.7.3 dev: true - /v8-to-istanbul/9.0.0: - resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.15 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 @@ -21522,14 +20732,13 @@ packages: - supports-color dev: true - /vite-plugin-ruby/3.0.12_vite@2.9.14: + /vite-plugin-ruby/3.0.12: resolution: {integrity: sha512-QosYDK6qOV1UeeFXlcH+A4pyoIs2lU9R2gWm+AJZ6gZ2yiiiLShYF6juYV8GeDsaXcOfVbPetkuPfnQCzE4mPQ==} peerDependencies: vite: '>=2.5.0' dependencies: debug: 4.3.4 fast-glob: 3.2.11 - vite: 2.9.14 transitivePeerDependencies: - supports-color dev: true @@ -21620,21 +20829,21 @@ packages: terser: optional: true dependencies: - esbuild: 0.14.47 + esbuild: 0.14.54 postcss: 8.4.16 resolve: 1.22.1 - rollup: 2.77.2 + rollup: 2.77.3 optionalDependencies: fsevents: 2.3.2 dev: true - /vitepress/1.0.0-alpha.4_jbvntnid6ohjelon6ccj5dhg2u: + /vitepress/1.0.0-alpha.4: resolution: {integrity: sha512-bOAA4KW6vYGlkbcrPLZLTKWTgXVroObU+o9xj9EENyEl6yg26WWvfN7DGA4BftjdM5O8nR93Z5khPQ3W/tFE7Q==} engines: {node: '>=14.6.0'} hasBin: true dependencies: '@docsearch/css': 3.1.0 - '@docsearch/js': 3.1.0_jbvntnid6ohjelon6ccj5dhg2u + '@docsearch/js': 3.1.0 '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.37 '@vue/devtools-api': 6.1.4 '@vueuse/core': 8.9.4_vue@3.2.37 @@ -21664,6 +20873,19 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: true + /vue-demi/0.12.5: + resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dev: false + /vue-demi/0.12.5_vue@3.2.37: resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} engines: {node: '>=12'} @@ -21678,14 +20900,14 @@ packages: dependencies: vue: 3.2.37 - /vue-eslint-parser/9.0.2_eslint@8.21.0: - resolution: {integrity: sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==} + /vue-eslint-parser/9.0.3_eslint@8.22.0: + resolution: {integrity: sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.21.0 + eslint: 8.22.0 eslint-scope: 7.1.1 eslint-visitor-keys: 3.3.0 espree: 9.3.3 @@ -21751,13 +20973,6 @@ packages: 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 - /w3c-xmlserializer/3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} @@ -21824,16 +21039,6 @@ 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 - /webidl-conversions/7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -21947,12 +21152,6 @@ packages: - supports-color dev: true - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - /whatwg-encoding/2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -21960,10 +21159,6 @@ packages: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - /whatwg-mimetype/3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -21999,15 +21194,6 @@ packages: webidl-conversions: 4.0.2 dev: true - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -22282,19 +21468,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /ws/7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws/8.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} engines: {node: '>=10.0.0'} @@ -22340,10 +21513,6 @@ packages: default-browser-id: 1.0.4 dev: true - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - /xml-name-validator/4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -22378,8 +21547,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml-eslint-parser/1.0.1: - resolution: {integrity: sha512-acQYWneSXwnJgPQbTyJvDxWx9zlJ/rq267p/zzQMSCE7ljJxQ8elefsQase1gEIJMo+pIqmLRczoo7fPt6VbKQ==} + /yaml-eslint-parser/1.1.0: + resolution: {integrity: sha512-b464Q1fYiX1oYx2kE8k4mEp6S9Prk+tfDsY/IPxQ0FCjEuj3AKko5Skf3/yQJeYTTDyjDE+aWIJemnv29HvEWQ==} engines: {node: ^14.17.0 || >=16.0.0} dependencies: eslint-visitor-keys: 3.3.0 @@ -22456,7 +21625,7 @@ packages: resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} dev: false - /zustand/4.0.0-rc.1_react@18.2.0: + /zustand/4.0.0-rc.1: resolution: {integrity: sha512-qgcs7zLqBdHu0PuT3GW4WCIY5SgXdsv30GQMu9Qpp1BA2aS+sNS8l4x0hWuyEhjXkN+701aGWawhKDv6oWJAcw==} engines: {node: '>=12.7.0'} peerDependencies: @@ -22468,8 +21637,7 @@ packages: react: optional: true dependencies: - react: 18.2.0 - use-sync-external-store: 1.1.0_react@18.2.0 + use-sync-external-store: 1.1.0 dev: true /zwitch/1.0.5: From 04d4cc4c8d127d2c6bc169a56eb69c60dd476d59 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 13:59:28 +0800 Subject: [PATCH 17/27] chore: cli docs --- docs/guide/cli.md | 2 +- packages/vitest/package.json | 1 - packages/vitest/src/node/cli.ts | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/guide/cli.md b/docs/guide/cli.md index a6bc946c311a..cf180e3e7d9f 100644 --- a/docs/guide/cli.md +++ b/docs/guide/cli.md @@ -61,7 +61,7 @@ vitest related /src/index.ts /src/hello-world.js | `--outputTruncateLength ` | Truncate output diff lines up to `` number of characters. | | `--outputDiffLines ` | Limit number of output diff lines up to ``. | | `--outputFile ` | Write test results to a file when the `--reporter=json` or `--reporter=junit` option is also specified
Via [cac's dot notation] you can specify individual outputs for multiple reporters | -| `--coverage` | Use c8 for coverage | +| `--coverage` | Enable coverage report | | `--run` | Do not watch | | `--mode` | Override Vite mode (default: `test`) | | `--mode ` | Override Vite mode (default: `test`) | diff --git a/packages/vitest/package.json b/packages/vitest/package.json index 6444e2a2ea0e..5e559d4c247d 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -71,7 +71,6 @@ "@edge-runtime/vm": "*", "@vitest/browser": "*", "@vitest/ui": "*", - "c8": "*", "happy-dom": "*", "jsdom": "*" }, diff --git a/packages/vitest/src/node/cli.ts b/packages/vitest/src/node/cli.ts index 74d3bafbde9e..ba4650382e2b 100644 --- a/packages/vitest/src/node/cli.ts +++ b/packages/vitest/src/node/cli.ts @@ -25,7 +25,7 @@ cli .option('--outputTruncateLength ', 'diff output length (default: 80)') .option('--outputDiffLines ', 'number of diff output lines (default: 15)') .option('--outputFile ', 'write test results to a file when the --reporter=json or --reporter=junit option is also specified, use cac\'s dot notation for individual outputs of mutliple reporters') - .option('--coverage', 'use c8 for coverage') + .option('--coverage', 'enable coverage report') .option('--run', 'do not watch') .option('--mode ', 'override Vite mode (default: test)') .option('--globals', 'inject apis globally') From dd3887723a2e62c6fd5b4c52ec0810cc518ed2de Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 14:12:27 +0800 Subject: [PATCH 18/27] chore: fix types --- packages/vitest/src/node/cli-api.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/vitest/src/node/cli-api.ts b/packages/vitest/src/node/cli-api.ts index 0b8453c6911d..6106cdb609f8 100644 --- a/packages/vitest/src/node/cli-api.ts +++ b/packages/vitest/src/node/cli-api.ts @@ -39,11 +39,13 @@ export async function startVitest(cliFilters: string[], options: CliOptions, vit if (ctx.config.coverage.enabled) { const provider = ctx.config.coverage.provider || 'c8' - const requiredPackages = CoverageProviderMap[provider] + if (typeof provider === 'string') { + const requiredPackages = CoverageProviderMap[provider] - if (!await ensurePackageInstalled(requiredPackages, root)) { - process.exitCode = 1 - return false + if (!await ensurePackageInstalled(requiredPackages, root)) { + process.exitCode = 1 + return false + } } } From ce302004929c61d5c62fc7fd8c09e064782f783d Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 16:54:06 +0800 Subject: [PATCH 19/27] chore: fix build --- packages/coverage-istanbul/src/provider.ts | 4 +--- packages/vitest/src/types/coverage.ts | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/coverage-istanbul/src/provider.ts b/packages/coverage-istanbul/src/provider.ts index e4411ef4da5a..285a0fc108b4 100644 --- a/packages/coverage-istanbul/src/provider.ts +++ b/packages/coverage-istanbul/src/provider.ts @@ -30,7 +30,7 @@ export class IstanbulCoverageProvider implements CoverageProvider { name = 'istanbul' ctx!: Vitest - options!: ResolvedCoverageOptions & { provider: 'istanbul' } + options!: ResolvedCoverageOptions & CoverageIstanbulOptions & { provider: 'istanbul' } instrumenter!: Instrumenter testExclude!: InstanceType @@ -61,8 +61,6 @@ export class IstanbulCoverageProvider implements CoverageProvider { cwd: ctx.config.root, exclude: [...defaultExclude, ...defaultInclude, ...this.options.exclude], excludeNodeModules: true, - - // @ts-expect-error -- extension is not typed in configDefaults for some reason extension: configDefaults.coverage.extension, }) } diff --git a/packages/vitest/src/types/coverage.ts b/packages/vitest/src/types/coverage.ts index c868e1e1d8e9..d2c14d7e66b7 100644 --- a/packages/vitest/src/types/coverage.ts +++ b/packages/vitest/src/types/coverage.ts @@ -127,6 +127,11 @@ export interface BaseCoverageOptions { * Threshold for statements */ statements?: number + + /** + * Extensions for files to be included in coverage + */ + extension?: string | string[] } export interface CoverageIstanbulOptions extends BaseCoverageOptions { @@ -156,7 +161,6 @@ export interface CoverageC8Options extends BaseCoverageOptions { */ excludeNodeModules?: boolean include?: string[] - extension?: string | string[] all?: boolean src?: string[] From cd927b93b5a99b6f4ae80eedd676052966e280e6 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 17:13:58 +0800 Subject: [PATCH 20/27] chore: update deps --- packages/coverage-c8/package.json | 1 + packages/coverage-istanbul/package.json | 1 + pnpm-lock.yaml | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index 68153ed6aabb..38cea14285f6 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -45,6 +45,7 @@ "vitest": "workspace:*" }, "devDependencies": { + "@types/node": "^18.7.3", "vite-node": "workspace:*" } } diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 5e79c3c91200..1f80ceacba48 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -50,6 +50,7 @@ "vitest": "workspace:*" }, "devDependencies": { + "@types/node": "^18.7.3", "@types/istanbul-lib-coverage": "^2.0.4", "@types/istanbul-lib-instrument": "^1.7.4", "@types/istanbul-lib-report": "^3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5071aed8a1cc..d191f6a4c8b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -614,6 +614,7 @@ importers: packages/coverage-c8: specifiers: + '@types/node': ^18.7.3 c8: ^7.12.0 vite-node: workspace:* vitest: workspace:* @@ -621,6 +622,7 @@ importers: c8: 7.12.0 vitest: link:../vitest devDependencies: + '@types/node': 18.7.3 vite-node: link:../vite-node packages/coverage-istanbul: @@ -630,6 +632,7 @@ importers: '@types/istanbul-lib-report': ^3.0.0 '@types/istanbul-lib-source-maps': ^4.0.1 '@types/istanbul-reports': ^3.0.1 + '@types/node': ^18.7.3 istanbul-lib-coverage: ^3.2.0 istanbul-lib-instrument: ^5.2.0 istanbul-lib-report: ^3.0.0 @@ -651,6 +654,7 @@ importers: '@types/istanbul-lib-report': 3.0.0 '@types/istanbul-lib-source-maps': 4.0.1 '@types/istanbul-reports': 3.0.1 + '@types/node': 18.7.3 packages/ui: specifiers: From 380c210c5280855e0ce74a5d0107edb91a42f781 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 17:16:47 +0800 Subject: [PATCH 21/27] chore: lint --- packages/coverage-istanbul/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 1f80ceacba48..8625f1e2984d 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -50,11 +50,11 @@ "vitest": "workspace:*" }, "devDependencies": { - "@types/node": "^18.7.3", "@types/istanbul-lib-coverage": "^2.0.4", "@types/istanbul-lib-instrument": "^1.7.4", "@types/istanbul-lib-report": "^3.0.0", "@types/istanbul-lib-source-maps": "^4.0.1", - "@types/istanbul-reports": "^3.0.1" + "@types/istanbul-reports": "^3.0.1", + "@types/node": "^18.7.3" } } From 246e146dc2cb2d34e563c25c3eb7e59cbe121d56 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 17:31:28 +0800 Subject: [PATCH 22/27] chore: upgrade esno --- .tazerc.json | 1 - bench/package.json | 6 +- .../scripts/{build-pwa.ts => build-pwa.mjs} | 9 +- docs/package.json | 8 +- package.json | 6 +- packages/browser/package.json | 2 +- pnpm-lock.yaml | 83 ++++++++++--------- 7 files changed, 61 insertions(+), 54 deletions(-) rename docs/.vitepress/scripts/{build-pwa.ts => build-pwa.mjs} (57%) diff --git a/.tazerc.json b/.tazerc.json index d4b6b7747366..b954ab698a0e 100644 --- a/.tazerc.json +++ b/.tazerc.json @@ -6,7 +6,6 @@ "pretty-format", "pathe", "codemirror", - "esno", "rollup" ] } diff --git a/bench/package.json b/bench/package.json index 0d3fae922492..5f2ef9a2fcc7 100644 --- a/bench/package.json +++ b/bench/package.json @@ -2,8 +2,8 @@ "type": "module", "private": true, "scripts": { - "bench": "esmo src/index.ts", - "bench:ci": "esmo src/github.ts" + "bench": "esno src/index.ts", + "bench:ci": "esno src/github.ts" }, "devDependencies": { "@actions/core": "^1.9.0", @@ -12,7 +12,7 @@ "@happy-dom/jest-environment": "^6.0.4", "@types/benchmark": "^2.1.1", "benchmark": "^2.1.4", - "esno": "^0.14.1", + "esno": "^0.16.3", "execa": "^6.1.0", "fs-extra": "^10.1.0", "markdown-table": "^3.0.2", diff --git a/docs/.vitepress/scripts/build-pwa.ts b/docs/.vitepress/scripts/build-pwa.mjs similarity index 57% rename from docs/.vitepress/scripts/build-pwa.ts rename to docs/.vitepress/scripts/build-pwa.mjs index 0a0fc34d649e..d62453b1590f 100644 --- a/docs/.vitepress/scripts/build-pwa.ts +++ b/docs/.vitepress/scripts/build-pwa.mjs @@ -1,13 +1,14 @@ +import { fileURLToPath } from 'url' import { resolveConfig } from 'vite' -import type { VitePluginPWAAPI } from 'vite-plugin-pwa' -import { optimizePages } from './assets' +import jiti from 'jiti' const rebuildPwa = async () => { const config = await resolveConfig({}, 'build', 'production') // when `vite-plugin-pwa` is presented, use it to regenerate SW after rendering - const pwaPlugin: VitePluginPWAAPI = config.plugins.find(i => i.name === 'vite-plugin-pwa')?.api + const pwaPlugin = config.plugins.find(i => i.name === 'vite-plugin-pwa')?.api const pwa = pwaPlugin && !pwaPlugin.disabled - await optimizePages(pwa) + const assets = jiti(fileURLToPath(import.meta.url))('./assets.ts') + await assets.optimizePages(pwa) if (pwa) await pwaPlugin.generateSW() } diff --git a/docs/package.json b/docs/package.json index dd2808a404fc..c1e952eadcf0 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,22 +3,22 @@ "private": true, "scripts": { "dev": "vitepress --port 3333 --open", - "build": "nr prefetch && vitepress build && esno .vitepress/scripts/build-pwa.ts", - "build-no-prefetch": "vitepress build && esno .vitepress/scripts/build-pwa.ts", + "build": "nr prefetch && vitepress build && node .vitepress/scripts/build-pwa.mjs", + "build-no-prefetch": "vitepress build && node .vitepress/scripts/build-pwa.mjs", "serve": "vitepress serve", "preview-https": "pnpm run build && serve .vitepress/dist", - "preview-https-no-prefetch": "pnpm run build-no-prefetch && serve .vitepress/dist", "prefetch": "esno .vitepress/scripts/fetch-avatars.ts" }, "dependencies": { "@vueuse/core": "^9.1.0", + "jiti": "^1.14.0", "vue": "latest" }, "devDependencies": { "@iconify-json/carbon": "^1.1.7", "@unocss/reset": "^0.45.6", "@vitejs/plugin-vue": "latest", - "esno": "^0.14.1", + "esno": "^0.16.3", "fast-glob": "^3.2.11", "https-localhost": "^4.7.1", "unocss": "^0.45.6", diff --git a/package.json b/package.json index 5e4e42bfa29b..dc0f612eff65 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "docs:serve": "pnpm -C docs run serve", "docs:https": "pnpm -C docs run preview-https", "docs:https-no-prefetch": "pnpm -C docs run preview-https-no-prefetch", - "docs:examples": "esmo scripts/update-examples.ts", - "docs:contributors": "esmo scripts/update-contributors.ts", + "docs:examples": "esno scripts/update-examples.ts", + "docs:contributors": "esno scripts/update-contributors.ts", "lint": "eslint .", "lint:fix": "nr lint --fix", "release": "bumpp package.json packages/*/package.json --commit --push --tag && pnpm -r publish --access public", @@ -50,7 +50,7 @@ "cross-env": "^7.0.3", "esbuild": "~0.14.54", "eslint": "^8.22.0", - "esno": "^0.14.1", + "esno": "^0.16.3", "fast-glob": "^3.2.11", "if-node-version": "^1.1.1", "lint-staged": "^13.0.3", diff --git a/packages/browser/package.json b/packages/browser/package.json index baf59e17d488..fadfd3a2bc4a 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -30,7 +30,7 @@ "dev:client": "vite build --watch", "dev:node": "rollup -c --watch --watch.include=node/**", "dev": "rimraf dist && run-p dev:node dev:client", - "copy": "esmo scripts/copy-ui-to-browser.ts" + "copy": "esno scripts/copy-ui-to-browser.ts" }, "dependencies": { "local-pkg": "^0.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d191f6a4c8b7..c02daa73e780 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,7 +29,7 @@ importers: cross-env: ^7.0.3 esbuild: ^0.14.47 eslint: ^8.22.0 - esno: ^0.14.1 + esno: ^0.16.3 fast-glob: ^3.2.11 if-node-version: ^1.1.1 lint-staged: ^13.0.3 @@ -70,7 +70,7 @@ importers: cross-env: 7.0.3 esbuild: 0.14.47 eslint: 8.22.0 - esno: 0.14.1 + esno: 0.16.3 fast-glob: 3.2.11 if-node-version: 1.1.1 lint-staged: 13.0.3 @@ -98,9 +98,10 @@ importers: '@unocss/reset': ^0.45.6 '@vitejs/plugin-vue': latest '@vueuse/core': ^9.1.0 - esno: ^0.14.1 + esno: ^0.16.3 fast-glob: ^3.2.11 https-localhost: ^4.7.1 + jiti: ^1.14.0 unocss: ^0.45.6 unplugin-vue-components: ^0.22.4 vite: ^3.0.7 @@ -110,12 +111,13 @@ importers: workbox-window: ^6.5.4 dependencies: '@vueuse/core': 9.1.0_vue@3.2.37 + jiti: 1.14.0 vue: 3.2.37 devDependencies: '@iconify-json/carbon': 1.1.7 '@unocss/reset': 0.45.6 '@vitejs/plugin-vue': 3.0.3_vite@3.0.7+vue@3.2.37 - esno: 0.14.1 + esno: 0.16.3 fast-glob: 3.2.11 https-localhost: 4.7.1 unocss: 0.45.6_vite@3.0.7 @@ -4382,6 +4384,27 @@ packages: /@emotion/weak-memoize/0.2.5: resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + /@esbuild-kit/cjs-loader/2.3.3: + resolution: {integrity: sha512-Rt4O1mXlPEDVxvjsHLgbtHVdUXYK9C1/6ThpQnt7FaXIjUOsI6qhHYMgALhNnlIMZffag44lXd6Dqgx3xALbpQ==} + dependencies: + '@esbuild-kit/core-utils': 2.1.0 + get-tsconfig: 4.2.0 + dev: true + + /@esbuild-kit/core-utils/2.1.0: + resolution: {integrity: sha512-fZirrc2KjeTumVjE4bpleWOk2gD83b7WuGeQqOceKFQL+heNKKkNB5G5pekOUTLzfSBc0hP7hCSBoD9TuR0hLw==} + dependencies: + esbuild: 0.14.47 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader/2.4.2: + resolution: {integrity: sha512-N9dPKAj8WOx6djVnStgILWXip4fjDcBk9L7azO0/uQDpu8Ee0eaL78mkN4Acid9BzvNAKWwdYXFJZnsVahNEew==} + dependencies: + '@esbuild-kit/core-utils': 2.1.0 + get-tsconfig: 4.2.0 + dev: true + /@eslint/eslintrc/1.3.0: resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9425,12 +9448,6 @@ packages: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: true - /builtins/4.1.0: - resolution: {integrity: sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==} - dependencies: - semver: 7.3.7 - dev: true - /builtins/5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: @@ -11439,12 +11456,6 @@ packages: requiresBuild: true optional: true - /esbuild-node-loader/0.6.5: - resolution: {integrity: sha512-uPP+dllWm38cFvDysdocutN3lfe5pTIbddAHp1ENyLzpHYqE2r+3Wo+pfg9X3p8DFWwzIisft5YkeBIthIcixw==} - dependencies: - esbuild: 0.14.47 - dev: true - /esbuild-openbsd-64/0.14.47: resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} engines: {node: '>=12'} @@ -11453,14 +11464,6 @@ packages: requiresBuild: true optional: true - /esbuild-register/3.3.3_esbuild@0.14.47: - resolution: {integrity: sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==} - peerDependencies: - esbuild: '>=0.12 <1' - dependencies: - esbuild: 0.14.47 - dev: true - /esbuild-sunos-64/0.14.47: resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} engines: {node: '>=12'} @@ -11891,15 +11894,11 @@ packages: - supports-color dev: true - /esno/0.14.1: - resolution: {integrity: sha512-yDFYw6dGUjCT1qKsdG7WOc/RzIh/qwxUEVZ+ohCltaxBxEFMNqeqbQL9xjRl6Yvdwrfc5OCjUA9JbFmuu/8BKg==} + /esno/0.16.3: + resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} hasBin: true dependencies: - cross-spawn: 7.0.3 - esbuild: 0.14.47 - esbuild-node-loader: 0.6.5 - esbuild-register: 3.3.3_esbuild@0.14.47 - import-meta-resolve: 1.1.1 + tsx: 3.8.2 dev: true /espree/9.3.3: @@ -12791,6 +12790,10 @@ packages: get-intrinsic: 1.1.1 dev: true + /get-tsconfig/4.2.0: + resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + dev: true + /get-value/2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -13479,12 +13482,6 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-meta-resolve/1.1.1: - resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==} - dependencies: - builtins: 4.1.0 - dev: true - /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -14246,7 +14243,6 @@ packages: /jiti/1.14.0: resolution: {integrity: sha512-4IwstlaKQc9vCTC+qUXLM1hajy2ImiL9KnLvVYiaHOtS/v3wRjhLlGl121AmgDgx/O43uKmxownJghS5XMya2A==} hasBin: true - dev: true /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} @@ -19175,6 +19171,17 @@ packages: typescript: 4.7.4 dev: true + /tsx/3.8.2: + resolution: {integrity: sha512-Jf9izq3Youry5aEarspf6Gm+v/IE2A2xP7YVhtNH1VSCpM0jjACg7C3oD5rIoLBfXWGJSZj4KKC2bwE0TgLb2Q==} + hasBin: true + dependencies: + '@esbuild-kit/cjs-loader': 2.3.3 + '@esbuild-kit/core-utils': 2.1.0 + '@esbuild-kit/esm-loader': 2.4.2 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /tty-browserify/0.0.0: resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} dev: true From 016030dc29b16be6641be0c38b13e59a8efb3f8f Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 15 Aug 2022 23:53:52 +0800 Subject: [PATCH 23/27] chore: update --- packages/coverage-c8/package.json | 1 - packages/coverage-istanbul/package.json | 3 +-- packages/vitest/LICENSE.md | 8 ++++---- pnpm-lock.yaml | 14 +++++++------- tsconfig.json | 1 + 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index 38cea14285f6..68153ed6aabb 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -45,7 +45,6 @@ "vitest": "workspace:*" }, "devDependencies": { - "@types/node": "^18.7.3", "vite-node": "workspace:*" } } diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 8625f1e2984d..5e79c3c91200 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -54,7 +54,6 @@ "@types/istanbul-lib-instrument": "^1.7.4", "@types/istanbul-lib-report": "^3.0.0", "@types/istanbul-lib-source-maps": "^4.0.1", - "@types/istanbul-reports": "^3.0.1", - "@types/node": "^18.7.3" + "@types/istanbul-reports": "^3.0.1" } } diff --git a/packages/vitest/LICENSE.md b/packages/vitest/LICENSE.md index bb9148d8ade8..f4efaa8ab7a6 100644 --- a/packages/vitest/LICENSE.md +++ b/packages/vitest/LICENSE.md @@ -898,7 +898,7 @@ Repository: ehmicky/human-signals > same "printed page" as the copyright notice for easier > identification within third-party archives. > -> Copyright 2019 ehmicky +> Copyright 2021 ehmicky > > Licensed under the Apache License, Version 2.0 (the "License"); > you may not use this file except in compliance with the License. @@ -1310,7 +1310,7 @@ Repository: sindresorhus/npm-run-path > MIT License > -> Copyright (c) Sindre Sorhus (sindresorhus.com) +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: > @@ -1395,7 +1395,7 @@ Repository: sindresorhus/path-key > MIT License > -> Copyright (c) Sindre Sorhus (sindresorhus.com) +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: > @@ -1911,7 +1911,7 @@ Repository: sindresorhus/strip-final-newline > MIT License > -> Copyright (c) Sindre Sorhus (sindresorhus.com) +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: > diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c02daa73e780..0d3fa16d580d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,7 +216,7 @@ importers: react-dom: 18.0.0_react@18.0.0 devDependencies: '@testing-library/react': 13.2.0_zpnidt7m3osuk7shl3s4oenomq - '@types/node': 18.7.3 + '@types/node': 18.7.4 '@types/react': 18.0.17 '@vitejs/plugin-react': 2.0.1 jsdom: 20.0.0 @@ -616,7 +616,6 @@ importers: packages/coverage-c8: specifiers: - '@types/node': ^18.7.3 c8: ^7.12.0 vite-node: workspace:* vitest: workspace:* @@ -624,7 +623,6 @@ importers: c8: 7.12.0 vitest: link:../vitest devDependencies: - '@types/node': 18.7.3 vite-node: link:../vite-node packages/coverage-istanbul: @@ -634,7 +632,6 @@ importers: '@types/istanbul-lib-report': ^3.0.0 '@types/istanbul-lib-source-maps': ^4.0.1 '@types/istanbul-reports': ^3.0.1 - '@types/node': ^18.7.3 istanbul-lib-coverage: ^3.2.0 istanbul-lib-instrument: ^5.2.0 istanbul-lib-report: ^3.0.0 @@ -656,7 +653,6 @@ importers: '@types/istanbul-lib-report': 3.0.0 '@types/istanbul-lib-source-maps': 4.0.1 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.7.3 packages/ui: specifiers: @@ -7133,7 +7129,7 @@ packages: /@types/concat-stream/1.6.1: resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} dependencies: - '@types/node': 18.7.3 + '@types/node': 18.7.4 dev: true /@types/cookie/0.4.1: @@ -7175,7 +7171,7 @@ packages: /@types/form-data/0.0.33: resolution: {integrity: sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=} dependencies: - '@types/node': 18.7.3 + '@types/node': 18.7.4 dev: true /@types/fs-extra/9.0.13: @@ -7327,6 +7323,10 @@ packages: resolution: {integrity: sha512-LJgzOEwWuMTBxHzgBR/fhhBOWrvBjvO+zPteUgbbuQi80rYIZHrk1mNbRUqPZqSLP2H7Rwt1EFLL/tNLD1Xx/w==} dev: true + /@types/node/18.7.4: + resolution: {integrity: sha512-RzRcw8c0B8LzryWOR4Wj7YOTFXvdYKwvrb6xQQyuDfnlTxwYXGCV5RZ/TEbq5L5kn+w3rliHAUyRcG1RtbmTFg==} + dev: true + /@types/node/8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true diff --git a/tsconfig.json b/tsconfig.json index d301f57e8fbf..972ba657fdbd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,6 +30,7 @@ "vite-node/utils": ["./packages/vite-node/src/utils.ts"] }, "types": [ + "node", "vite/client" ] }, From 43dd177a8df925131a0d7f1cccbdf702856753ed Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 16 Aug 2022 00:02:02 +0800 Subject: [PATCH 24/27] chore: update --- packages/vitest/src/node/cli-wrapper.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/vitest/src/node/cli-wrapper.ts b/packages/vitest/src/node/cli-wrapper.ts index 276c7b5a5557..0776eda0bfdc 100644 --- a/packages/vitest/src/node/cli-wrapper.ts +++ b/packages/vitest/src/node/cli-wrapper.ts @@ -71,13 +71,12 @@ main() async function start(args: string[]) { const child = execa('node', [fileURLToPath(ENTRY), ...args], { reject: false, - all: true, stderr: 'pipe', stdout: 'inherit', stdin: 'inherit', }) child.stderr?.pipe(process.stderr) - const { all: output = '' } = await child + const { stderr: output = '' } = await child for (const error of ERRORS) { if (output.includes(error.trigger)) { From bc1551679fd047cc0060df6aefef8b3d76bfc202 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 16 Aug 2022 00:24:21 +0800 Subject: [PATCH 25/27] chore: fix tsconfig --- packages/coverage-c8/tsconfig.json | 6 ------ packages/coverage-c8/tsup.config.ts | 1 + packages/coverage-istanbul/tsconfig.json | 6 ------ packages/coverage-istanbul/tsup.config.ts | 1 + 4 files changed, 2 insertions(+), 12 deletions(-) delete mode 100644 packages/coverage-c8/tsconfig.json delete mode 100644 packages/coverage-istanbul/tsconfig.json diff --git a/packages/coverage-c8/tsconfig.json b/packages/coverage-c8/tsconfig.json deleted file mode 100644 index 6bb61453c99e..000000000000 --- a/packages/coverage-c8/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "src/**/*.ts" - ] -} diff --git a/packages/coverage-c8/tsup.config.ts b/packages/coverage-c8/tsup.config.ts index 60ece0ed062f..d6374d8213ae 100644 --- a/packages/coverage-c8/tsup.config.ts +++ b/packages/coverage-c8/tsup.config.ts @@ -7,4 +7,5 @@ export const tsup: Options = { entryPoints: [ 'src/index.ts', ], + tsconfig: '../../tsconfig.json', } diff --git a/packages/coverage-istanbul/tsconfig.json b/packages/coverage-istanbul/tsconfig.json deleted file mode 100644 index 6bb61453c99e..000000000000 --- a/packages/coverage-istanbul/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "src/**/*.ts" - ] -} diff --git a/packages/coverage-istanbul/tsup.config.ts b/packages/coverage-istanbul/tsup.config.ts index 60ece0ed062f..d6374d8213ae 100644 --- a/packages/coverage-istanbul/tsup.config.ts +++ b/packages/coverage-istanbul/tsup.config.ts @@ -7,4 +7,5 @@ export const tsup: Options = { entryPoints: [ 'src/index.ts', ], + tsconfig: '../../tsconfig.json', } From 4b4b0a633f0d5819ab2a3f1c62fdd9c50127a09c Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 16 Aug 2022 00:42:34 +0800 Subject: [PATCH 26/27] chore: use rollup --- packages/coverage-c8/package.json | 4 +- packages/coverage-c8/rollup.config.js | 60 +++++++++++++++++++++ packages/coverage-c8/tsup.config.ts | 11 ---- packages/coverage-istanbul/package.json | 7 +-- packages/coverage-istanbul/rollup.config.js | 60 +++++++++++++++++++++ packages/coverage-istanbul/tsup.config.ts | 11 ---- pnpm-lock.yaml | 2 + 7 files changed, 128 insertions(+), 27 deletions(-) create mode 100644 packages/coverage-c8/rollup.config.js delete mode 100644 packages/coverage-c8/tsup.config.ts create mode 100644 packages/coverage-istanbul/rollup.config.js delete mode 100644 packages/coverage-istanbul/tsup.config.ts diff --git a/packages/coverage-c8/package.json b/packages/coverage-c8/package.json index 68153ed6aabb..d1ebaeb23f48 100644 --- a/packages/coverage-c8/package.json +++ b/packages/coverage-c8/package.json @@ -37,8 +37,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch=src" + "build": "rimraf dist && rollup -c", + "dev": "rollup -c --watch --watch.include=src/**" }, "dependencies": { "c8": "^7.12.0", diff --git a/packages/coverage-c8/rollup.config.js b/packages/coverage-c8/rollup.config.js new file mode 100644 index 000000000000..66fbbd080629 --- /dev/null +++ b/packages/coverage-c8/rollup.config.js @@ -0,0 +1,60 @@ +import { builtinModules } from 'module' +import esbuild from 'rollup-plugin-esbuild' +import dts from 'rollup-plugin-dts' +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import alias from '@rollup/plugin-alias' +import nodeResolve from '@rollup/plugin-node-resolve' +import { join } from 'pathe' +import pkg from './package.json' + +const entries = { + index: 'src/index.ts', +} + +const external = [ + ...builtinModules, + ...Object.keys(pkg.dependencies || {}), + ...Object.keys(pkg.peerDependencies || {}), + 'vitest', + 'vitest/node', + 'vitest/config', +] + +const plugins = [ + alias({ + entries: [ + { find: /^node:(.+)$/, replacement: '$1' }, + ], + }), + nodeResolve(), + json(), + commonjs(), + esbuild({ + target: 'node14', + }), +] + +export default () => [ + { + input: entries, + output: { + dir: 'dist', + format: 'esm', + }, + external, + plugins, + }, + { + input: entries, + output: { + dir: join(process.cwd(), 'dist'), + entryFileNames: '[name].d.ts', + format: 'esm', + }, + external, + plugins: [ + dts({ respectExternal: true }), + ], + }, +] diff --git a/packages/coverage-c8/tsup.config.ts b/packages/coverage-c8/tsup.config.ts deleted file mode 100644 index d6374d8213ae..000000000000 --- a/packages/coverage-c8/tsup.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Options } from 'tsup' - -export const tsup: Options = { - clean: true, - format: ['esm'], - dts: true, - entryPoints: [ - 'src/index.ts', - ], - tsconfig: '../../tsconfig.json', -} diff --git a/packages/coverage-istanbul/package.json b/packages/coverage-istanbul/package.json index 5e79c3c91200..1c6e0d2e8c1d 100644 --- a/packages/coverage-istanbul/package.json +++ b/packages/coverage-istanbul/package.json @@ -37,8 +37,8 @@ "dist" ], "scripts": { - "build": "tsup", - "dev": "tsup --watch=src" + "build": "rimraf dist && rollup -c", + "dev": "rollup -c --watch --watch.include=src/**" }, "dependencies": { "istanbul-lib-coverage": "^3.2.0", @@ -54,6 +54,7 @@ "@types/istanbul-lib-instrument": "^1.7.4", "@types/istanbul-lib-report": "^3.0.0", "@types/istanbul-lib-source-maps": "^4.0.1", - "@types/istanbul-reports": "^3.0.1" + "@types/istanbul-reports": "^3.0.1", + "pathe": "^0.2.0" } } diff --git a/packages/coverage-istanbul/rollup.config.js b/packages/coverage-istanbul/rollup.config.js new file mode 100644 index 000000000000..66fbbd080629 --- /dev/null +++ b/packages/coverage-istanbul/rollup.config.js @@ -0,0 +1,60 @@ +import { builtinModules } from 'module' +import esbuild from 'rollup-plugin-esbuild' +import dts from 'rollup-plugin-dts' +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import alias from '@rollup/plugin-alias' +import nodeResolve from '@rollup/plugin-node-resolve' +import { join } from 'pathe' +import pkg from './package.json' + +const entries = { + index: 'src/index.ts', +} + +const external = [ + ...builtinModules, + ...Object.keys(pkg.dependencies || {}), + ...Object.keys(pkg.peerDependencies || {}), + 'vitest', + 'vitest/node', + 'vitest/config', +] + +const plugins = [ + alias({ + entries: [ + { find: /^node:(.+)$/, replacement: '$1' }, + ], + }), + nodeResolve(), + json(), + commonjs(), + esbuild({ + target: 'node14', + }), +] + +export default () => [ + { + input: entries, + output: { + dir: 'dist', + format: 'esm', + }, + external, + plugins, + }, + { + input: entries, + output: { + dir: join(process.cwd(), 'dist'), + entryFileNames: '[name].d.ts', + format: 'esm', + }, + external, + plugins: [ + dts({ respectExternal: true }), + ], + }, +] diff --git a/packages/coverage-istanbul/tsup.config.ts b/packages/coverage-istanbul/tsup.config.ts deleted file mode 100644 index d6374d8213ae..000000000000 --- a/packages/coverage-istanbul/tsup.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Options } from 'tsup' - -export const tsup: Options = { - clean: true, - format: ['esm'], - dts: true, - entryPoints: [ - 'src/index.ts', - ], - tsconfig: '../../tsconfig.json', -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d3fa16d580d..3a1a76c486e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -637,6 +637,7 @@ importers: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.1 istanbul-reports: ^3.1.5 + pathe: ^0.2.0 test-exclude: ^6.0.0 vitest: workspace:* dependencies: @@ -653,6 +654,7 @@ importers: '@types/istanbul-lib-report': 3.0.0 '@types/istanbul-lib-source-maps': 4.0.1 '@types/istanbul-reports': 3.0.1 + pathe: 0.2.0 packages/ui: specifiers: From 4ff81ae86fce7c27e49d678d4a8f70407952742f Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 16 Aug 2022 00:51:27 +0800 Subject: [PATCH 27/27] chore: update --- packages/coverage-c8/rollup.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/coverage-c8/rollup.config.js b/packages/coverage-c8/rollup.config.js index 66fbbd080629..50cfe07d43f2 100644 --- a/packages/coverage-c8/rollup.config.js +++ b/packages/coverage-c8/rollup.config.js @@ -16,6 +16,8 @@ const external = [ ...builtinModules, ...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {}), + 'c8/lib/report.js', + 'c8/lib/commands/check-coverage.js', 'vitest', 'vitest/node', 'vitest/config',