diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json
index b1d7520be..68667584b 100644
--- a/.codesandbox/ci.json
+++ b/.codesandbox/ci.json
@@ -7,6 +7,7 @@
"packages/jest",
"packages/packaged",
"packages/poisoning",
+ "packages/vitest",
"packages/worker"
],
"node": "14"
diff --git a/.github/workflows/build-status.yml b/.github/workflows/build-status.yml
index 566873b1b..eb8434b3c 100644
--- a/.github/workflows/build-status.yml
+++ b/.github/workflows/build-status.yml
@@ -532,6 +532,11 @@ jobs:
run: npm publish --access public packages/poisoning/package.tgz
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
+ - if: startsWith(github.ref, 'refs/tags/vitest/v')
+ name: Publish @fast-check/vitest
+ run: npm publish --access public packages/vitest/package.tgz
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- if: startsWith(github.ref, 'refs/tags/worker/v')
name: Publish @fast-check/worker
run: npm publish --access public packages/worker/package.tgz
diff --git a/.yarn/versions/9bd8f9e6.yml b/.yarn/versions/9bd8f9e6.yml
new file mode 100644
index 000000000..439893a0e
--- /dev/null
+++ b/.yarn/versions/9bd8f9e6.yml
@@ -0,0 +1,2 @@
+releases:
+ "@fast-check/vitest": patch
diff --git a/packages/vitest/LICENSE b/packages/vitest/LICENSE
new file mode 100644
index 000000000..e95f33f9d
--- /dev/null
+++ b/packages/vitest/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Nicolas DUBIEN
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/vitest/README.md b/packages/vitest/README.md
new file mode 100644
index 000000000..8fe4ae3a2
--- /dev/null
+++ b/packages/vitest/README.md
@@ -0,0 +1,71 @@
+# `@fast-check/vitest`
+
+
+
+Bring the power of property based testing framework `fast-check` into Vitest.
+`@fast-check/vitest` simplifies the integration of `fast-check` into Vitest.
+
+
+
+
+
+---
+
+## Getting Started
+
+Install `@fast-check/vitest`:
+
+```bash
+npm install --save-dev @fast-check/vitest
+```
+
+In order to work properly, `@fast-check/vitest` requires `vitest` to be installed.
+
+## Example
+
+```javascript
+import { test, fc } from '@fast-check/vitest';
+
+// for all a, b, c strings
+// b is a substring of a + b + c
+test.prop([fc.string(), fc.string(), fc.string()])('should detect the substring', (a, b, c) => {
+ return (a + b + c).includes(b);
+});
+
+// same property but using named values
+test.prop({ a: fc.string(), b: fc.string(), c: fc.string() })('should detect the substring', ({ a, b, c }) => {
+ return (a + b + c).includes(b);
+});
+```
+
+Please note that the properties accepted by `@fast-check/vitest` as input can either be synchronous or asynchronous (even just `PromiseLike` instances).
+
+## Advanced
+
+If you want to forward custom parameters to fast-check, `test.prop` accepts an optional `fc.Parameters` ([more](https://github.com/dubzzz/fast-check/blob/main/documentation/1-Guides/Runners.md#runners)).
+
+`@fast-check/vitest` also comes with `.only`, `.skip`, `.todo` and `.concurrent` from vitest. It also accepts more complex ones such as `.concurrent.skip`.
+
+```javascript
+import { it, test, fc } from '@fast-check/vitest';
+
+test.prop([fc.nat(), fc.nat()], { seed: 4242 })('should replay the test for the seed 4242', (a, b) => {
+ return a + b === b + a;
+});
+
+test.skip.prop([fc.fullUnicodeString()])('should be skipped', (text) => {
+ return text.length === [...text].length;
+});
+
+describe('with it', () => {
+ it.prop([fc.nat(), fc.nat()])('should run too', (a, b) => {
+ return a + b === b + a;
+ });
+});
+```
+
+## Minimal requirements
+
+| @fast-check/vitest | vitest | fast-check |
+| ------------------ | -------- | ---------- |
+| ^0.0.0 | >=0.28.1 | ^3.0.0 |
diff --git a/packages/vitest/package.esm-template.json b/packages/vitest/package.esm-template.json
new file mode 100644
index 000000000..3dbc1ca59
--- /dev/null
+++ b/packages/vitest/package.esm-template.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/packages/vitest/package.json b/packages/vitest/package.json
new file mode 100644
index 000000000..a5a9019b9
--- /dev/null
+++ b/packages/vitest/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "@fast-check/vitest",
+ "description": "Property based testing for Vitest based on fast-check",
+ "version": "0.0.0",
+ "type": "commonjs",
+ "main": "lib/vitest-fast-check.js",
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "require": "./lib/vitest-fast-check.js",
+ "import": "./lib/esm/vitest-fast-check.js",
+ "default": "./lib/esm/vitest-fast-check.js"
+ }
+ },
+ "module": "lib/esm/vitest-fast-check.js",
+ "types": "lib/vitest-fast-check.d.ts",
+ "files": [
+ "lib"
+ ],
+ "scripts": {
+ "build": "yarn build:publish-cjs && yarn build:publish-esm && yarn build:publish-types",
+ "build-ci": "yarn build",
+ "build:publish-types": "tsc -p tsconfig.publish.types.json",
+ "build:publish-cjs": "tsc -p tsconfig.publish.json",
+ "build:publish-esm": "tsc -p tsconfig.publish.json --module es2015 --moduleResolution node --outDir lib/esm && cp package.esm-template.json lib/esm/package.json",
+ "test-bundle": "vitest --config test-bundle/vitest.config.mjs",
+ "typecheck": "tsc --noEmit"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/dubzzz/fast-check.git",
+ "directory": "packages/vitest"
+ },
+ "author": "Nicolas DUBIEN ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/dubzzz/fast-check/issues"
+ },
+ "homepage": "https://github.com/dubzzz/fast-check/tree/main/packages/vitest#readme",
+ "dependencies": {
+ "fast-check": "^3.0.0"
+ },
+ "peerDependencies": {
+ "vitest": ">=0.28.1"
+ },
+ "devDependencies": {
+ "fast-check": "workspace:*",
+ "typescript": "^4.9.4",
+ "vitest": "^0.28.1"
+ },
+ "keywords": [
+ "vitest",
+ "generative",
+ "property-based testing",
+ "testing",
+ "quickcheck",
+ "fast-check"
+ ],
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
+}
diff --git a/packages/vitest/src/internals/TestBuilder.ts b/packages/vitest/src/internals/TestBuilder.ts
new file mode 100644
index 000000000..83073464c
--- /dev/null
+++ b/packages/vitest/src/internals/TestBuilder.ts
@@ -0,0 +1,156 @@
+import { record } from 'fast-check';
+import { buildTestWithPropRunner } from './TestWithPropRunnerBuilder.js';
+
+import type { Parameters as FcParameters, ExecutionTree, RunDetails, RunDetailsCommon } from 'fast-check';
+import type { ArbitraryTuple, Prop, ArbitraryRecord, PropRecord, It, FcExtra } from './types.js';
+
+/**
+ * Type used for any `{it,test}.*.prop` taking tuples
+ */
+type TestPropTuple = (
+ arbitraries: ArbitraryTuple,
+ params?: FcParameters
+) => (testName: string, prop: Prop, timeout?: number | undefined) => void;
+
+/**
+ * Type used for any `{it,test}.*.prop` taking records
+ */
+type TestPropRecord = (
+ arbitraries: ArbitraryRecord,
+ params?: FcParameters
+) => (testName: string, prop: PropRecord, timeout?: number | undefined) => void;
+
+/**
+ * prop has just been declared for typing reasons, ideally TestProp should be enough
+ * and should be used to replace `{ prop: typeof prop }` by `{ prop: TestProp??> }`
+ */
+declare const prop: (
+ arbitraries: Ts extends [any] | any[] ? ArbitraryTuple : ArbitraryRecord,
+ params?: FcParameters
+) => (
+ testName: string,
+ prop: Ts extends [any] | any[] ? Prop : PropRecord,
+ timeout?: number | undefined
+) => void;
+
+function adaptParametersForRecord(
+ parameters: FcParameters<[Ts]>,
+ originalParamaters: FcParameters
+): FcParameters {
+ return {
+ ...(parameters as Required>),
+ examples: parameters.examples !== undefined ? parameters.examples.map((example) => example[0]) : undefined,
+ reporter: originalParamaters.reporter,
+ asyncReporter: originalParamaters.asyncReporter,
+ };
+}
+
+function adaptExecutionTreeForRecord(executionSummary: ExecutionTree<[Ts]>[]): ExecutionTree[] {
+ return executionSummary.map((summary) => ({
+ ...summary,
+ value: summary.value[0],
+ children: adaptExecutionTreeForRecord(summary.children),
+ }));
+}
+
+function adaptRunDetailsForRecord(
+ runDetails: RunDetails<[Ts]>,
+ originalParamaters: FcParameters
+): RunDetails {
+ const adaptedRunDetailsCommon: RunDetailsCommon = {
+ ...(runDetails as Required>),
+ counterexample: runDetails.counterexample !== null ? runDetails.counterexample[0] : null,
+ failures: runDetails.failures.map((failure) => failure[0]),
+ executionSummary: adaptExecutionTreeForRecord(runDetails.executionSummary),
+ runConfiguration: adaptParametersForRecord(runDetails.runConfiguration, originalParamaters),
+ };
+ return adaptedRunDetailsCommon as RunDetails;
+}
+
+/**
+ * Build `{it,test}.*.prop` out of `{it,test}.*`
+ * @param testFn - The source `{it,test}.*`
+ */
+function buildTestProp(
+ testFn: It | It['only' | 'skip' | 'concurrent'] | It['concurrent']['only' | 'skip'],
+ fc: FcExtra
+): TestPropTuple;
+function buildTestProp(
+ testFn: It | It['only' | 'skip' | 'concurrent'] | It['concurrent']['only' | 'skip'],
+ fc: FcExtra
+): TestPropRecord;
+function buildTestProp(
+ testFn: It | It['only' | 'skip' | 'concurrent'] | It['concurrent']['only' | 'skip'],
+ fc: FcExtra
+): TestPropTuple | TestPropRecord {
+ return (arbitraries, params?: FcParameters) => {
+ if (Array.isArray(arbitraries)) {
+ return (testName: string, prop: Prop, timeout?: number | undefined) =>
+ buildTestWithPropRunner(testFn, testName, arbitraries, prop, params, timeout, fc);
+ }
+ return (testName: string, prop: Prop, timeout?: number | undefined) => {
+ const recordArb = record(arbitraries as ArbitraryRecord);
+ const recordParams: FcParameters<[TsParameters]> | undefined =
+ params !== undefined
+ ? {
+ // Spreading a "Required" makes us sure that we don't miss any parameters
+ ...(params as Required>),
+ // Following options needs to be converted to fit with the requirements
+ examples:
+ params.examples !== undefined ? params.examples.map((example): [TsParameters] => [example]) : undefined,
+ reporter:
+ params.reporter !== undefined
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ (runDetails) => params.reporter!(adaptRunDetailsForRecord(runDetails, params))
+ : undefined,
+ asyncReporter:
+ params.asyncReporter !== undefined
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ (runDetails) => params.asyncReporter!(adaptRunDetailsForRecord(runDetails, params))
+ : undefined,
+ }
+ : undefined;
+ buildTestWithPropRunner(
+ testFn,
+ testName,
+ [recordArb],
+ (value) => (prop as PropRecord)(value),
+ recordParams,
+ timeout,
+ fc
+ );
+ };
+ };
+}
+
+/**
+ * Revamped {it,test} with added `.prop`
+ */
+export type FastCheckItBuilder = T &
+ ('each' extends keyof T ? T & { prop: typeof prop } : T) & {
+ [K in keyof Omit]: FastCheckItBuilder;
+ };
+
+/**
+ * Build the enriched version of {it,test}, the one with added `.prop`
+ */
+function enrichWithTestProp any>(testFn: T, fc: FcExtra): FastCheckItBuilder {
+ let atLeastOneExtra = false;
+ const extraKeys: Partial> = {};
+ for (const key in testFn) {
+ if (typeof testFn[key] === 'function') {
+ atLeastOneExtra = true;
+ extraKeys[key] = key !== 'each' ? enrichWithTestProp(testFn[key] as any, fc) : testFn[key];
+ }
+ }
+ if (!atLeastOneExtra) {
+ return testFn as FastCheckItBuilder;
+ }
+ const enrichedTestFn = (...args: Parameters): ReturnType => testFn(...args);
+ if ('each' in testFn) {
+ extraKeys['prop' as keyof typeof extraKeys] = buildTestProp(testFn as any, fc) as any;
+ }
+ return Object.assign(enrichedTestFn, extraKeys) as FastCheckItBuilder;
+}
+
+export const buildTest = enrichWithTestProp;
diff --git a/packages/vitest/src/internals/TestWithPropRunnerBuilder.ts b/packages/vitest/src/internals/TestWithPropRunnerBuilder.ts
new file mode 100644
index 000000000..17cf986cd
--- /dev/null
+++ b/packages/vitest/src/internals/TestWithPropRunnerBuilder.ts
@@ -0,0 +1,46 @@
+import { readConfigureGlobal } from 'fast-check';
+
+import type { Parameters as FcParameters } from 'fast-check';
+import type { Prop, PromiseProp, It, ArbitraryTuple, FcExtra } from './types.js';
+
+function wrapProp(prop: Prop): PromiseProp {
+ return (...args: Ts) => Promise.resolve(prop(...args));
+}
+
+export function buildTestWithPropRunner(
+ testFn: It | It['only' | 'skip' | 'concurrent'] | It['concurrent']['only' | 'skip'],
+ label: string,
+ arbitraries: ArbitraryTuple,
+ prop: Prop,
+ params: FcParameters | undefined,
+ timeout: number | undefined,
+ fc: FcExtra
+): void {
+ const customParams: FcParameters = { ...params };
+ // Handle seed
+ if (customParams.seed === undefined) {
+ const seedFromGlobals = readConfigureGlobal().seed;
+ if (seedFromGlobals !== undefined) {
+ customParams.seed = seedFromGlobals;
+ } else {
+ customParams.seed = Date.now() ^ (Math.random() * 0x100000000);
+ }
+ }
+ // Handle timeout
+ if (customParams.interruptAfterTimeLimit === undefined) {
+ // Copy global configuration of interruptAfterTimeLimit as local one
+ customParams.interruptAfterTimeLimit = fc.readConfigureGlobal().interruptAfterTimeLimit;
+ }
+
+ const promiseProp = wrapProp(prop);
+
+ // Instantiate property outside of testFn for the needs of worker-based version
+ const propertyInstance = (fc.asyncProperty as any)(...(arbitraries as any), promiseProp);
+ testFn(
+ `${label} (with seed=${customParams.seed})`,
+ async () => {
+ await fc.assert(propertyInstance, customParams);
+ },
+ timeout
+ );
+}
diff --git a/packages/vitest/src/internals/types.ts b/packages/vitest/src/internals/types.ts
new file mode 100644
index 000000000..47663e10f
--- /dev/null
+++ b/packages/vitest/src/internals/types.ts
@@ -0,0 +1,24 @@
+import type { it as itVitest } from 'vitest';
+import type { Arbitrary, asyncProperty, assert, readConfigureGlobal } from 'fast-check';
+
+export type FcExtra = {
+ asyncProperty: typeof asyncProperty;
+ assert: typeof assert;
+ readConfigureGlobal: typeof readConfigureGlobal;
+};
+
+export type It = typeof itVitest;
+
+// Pre-requisite: https://github.com/Microsoft/TypeScript/pull/26063
+// Require TypeScript 3.1
+export type ArbitraryTuple = {
+ [P in keyof Ts]: Arbitrary;
+};
+export type ArbitraryRecord = {
+ [P in keyof Ts]: Arbitrary;
+};
+
+export type Prop = (...args: Ts) => boolean | void | PromiseLike;
+export type PropRecord = (arg: Ts) => boolean | void | PromiseLike;
+
+export type PromiseProp = (...args: Ts) => Promise;
diff --git a/packages/vitest/src/vitest-fast-check.ts b/packages/vitest/src/vitest-fast-check.ts
new file mode 100644
index 000000000..c317c95b1
--- /dev/null
+++ b/packages/vitest/src/vitest-fast-check.ts
@@ -0,0 +1,10 @@
+import { it as itVitest, test as testVitest } from 'vitest';
+import * as fc from 'fast-check';
+import { buildTest } from './internals/TestBuilder';
+
+import type { FastCheckItBuilder } from './internals/TestBuilder';
+import type { It } from './internals/types';
+
+export const test: FastCheckItBuilder = buildTest(testVitest, fc);
+export const it: FastCheckItBuilder = buildTest(itVitest, fc);
+export { fc };
diff --git a/packages/vitest/test-bundle/main.spec.mjs b/packages/vitest/test-bundle/main.spec.mjs
new file mode 100644
index 000000000..17e0c672f
--- /dev/null
+++ b/packages/vitest/test-bundle/main.spec.mjs
@@ -0,0 +1,6 @@
+import { expect } from 'vitest';
+import { test, fc } from '@fast-check/vitest';
+
+test.prop([fc.constant(null)])('should pass', (value) => {
+ expect(value).toBe(null);
+});
diff --git a/packages/vitest/test-bundle/vitest.config.mjs b/packages/vitest/test-bundle/vitest.config.mjs
new file mode 100644
index 000000000..42c5927bd
--- /dev/null
+++ b/packages/vitest/test-bundle/vitest.config.mjs
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+ test: {
+ include: ['test-bundle/main.spec.mjs'],
+ },
+});
diff --git a/packages/vitest/tsconfig.json b/packages/vitest/tsconfig.json
new file mode 100644
index 000000000..51bf44c34
--- /dev/null
+++ b/packages/vitest/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.common.json"
+}
diff --git a/packages/vitest/tsconfig.publish.json b/packages/vitest/tsconfig.publish.json
new file mode 100644
index 000000000..ed67654fe
--- /dev/null
+++ b/packages/vitest/tsconfig.publish.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.publish.json",
+ "compilerOptions": {
+ "outDir": "lib/"
+ },
+ "include": ["src/"]
+}
diff --git a/packages/vitest/tsconfig.publish.types.json b/packages/vitest/tsconfig.publish.types.json
new file mode 100644
index 000000000..e54be824c
--- /dev/null
+++ b/packages/vitest/tsconfig.publish.types.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.publish.types.json",
+ "compilerOptions": {
+ "outDir": "lib/"
+ },
+ "include": ["src/"]
+}
diff --git a/yarn.lock b/yarn.lock
index ae9b8b6de..45625b42f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -416,6 +416,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-arm64@npm:0.16.17"
+ conditions: os=android & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/android-arm64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/android-arm64@npm:0.17.4"
@@ -423,6 +430,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-arm@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-arm@npm:0.16.17"
+ conditions: os=android & cpu=arm
+ languageName: node
+ linkType: hard
+
"@esbuild/android-arm@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/android-arm@npm:0.17.4"
@@ -430,6 +444,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/android-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/android-x64@npm:0.16.17"
+ conditions: os=android & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/android-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/android-x64@npm:0.17.4"
@@ -437,6 +458,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/darwin-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/darwin-arm64@npm:0.16.17"
+ conditions: os=darwin & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/darwin-arm64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/darwin-arm64@npm:0.17.4"
@@ -444,6 +472,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/darwin-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/darwin-x64@npm:0.16.17"
+ conditions: os=darwin & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/darwin-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/darwin-x64@npm:0.17.4"
@@ -451,6 +486,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/freebsd-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/freebsd-arm64@npm:0.16.17"
+ conditions: os=freebsd & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/freebsd-arm64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/freebsd-arm64@npm:0.17.4"
@@ -458,6 +500,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/freebsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/freebsd-x64@npm:0.16.17"
+ conditions: os=freebsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/freebsd-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/freebsd-x64@npm:0.17.4"
@@ -465,6 +514,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-arm64@npm:0.16.17"
+ conditions: os=linux & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-arm64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-arm64@npm:0.17.4"
@@ -472,6 +528,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-arm@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-arm@npm:0.16.17"
+ conditions: os=linux & cpu=arm
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-arm@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-arm@npm:0.17.4"
@@ -479,6 +542,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-ia32@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-ia32@npm:0.16.17"
+ conditions: os=linux & cpu=ia32
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-ia32@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-ia32@npm:0.17.4"
@@ -486,6 +556,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-loong64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-loong64@npm:0.16.17"
+ conditions: os=linux & cpu=loong64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-loong64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-loong64@npm:0.17.4"
@@ -493,6 +570,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-mips64el@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-mips64el@npm:0.16.17"
+ conditions: os=linux & cpu=mips64el
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-mips64el@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-mips64el@npm:0.17.4"
@@ -500,6 +584,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-ppc64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-ppc64@npm:0.16.17"
+ conditions: os=linux & cpu=ppc64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-ppc64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-ppc64@npm:0.17.4"
@@ -507,6 +598,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-riscv64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-riscv64@npm:0.16.17"
+ conditions: os=linux & cpu=riscv64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-riscv64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-riscv64@npm:0.17.4"
@@ -514,6 +612,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-s390x@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-s390x@npm:0.16.17"
+ conditions: os=linux & cpu=s390x
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-s390x@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-s390x@npm:0.17.4"
@@ -521,6 +626,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/linux-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/linux-x64@npm:0.16.17"
+ conditions: os=linux & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/linux-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/linux-x64@npm:0.17.4"
@@ -528,6 +640,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/netbsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/netbsd-x64@npm:0.16.17"
+ conditions: os=netbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/netbsd-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/netbsd-x64@npm:0.17.4"
@@ -535,6 +654,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/openbsd-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/openbsd-x64@npm:0.16.17"
+ conditions: os=openbsd & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/openbsd-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/openbsd-x64@npm:0.17.4"
@@ -542,6 +668,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/sunos-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/sunos-x64@npm:0.16.17"
+ conditions: os=sunos & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/sunos-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/sunos-x64@npm:0.17.4"
@@ -549,6 +682,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-arm64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-arm64@npm:0.16.17"
+ conditions: os=win32 & cpu=arm64
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-arm64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/win32-arm64@npm:0.17.4"
@@ -556,6 +696,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-ia32@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-ia32@npm:0.16.17"
+ conditions: os=win32 & cpu=ia32
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-ia32@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/win32-ia32@npm:0.17.4"
@@ -563,6 +710,13 @@ __metadata:
languageName: node
linkType: hard
+"@esbuild/win32-x64@npm:0.16.17":
+ version: 0.16.17
+ resolution: "@esbuild/win32-x64@npm:0.16.17"
+ conditions: os=win32 & cpu=x64
+ languageName: node
+ linkType: hard
+
"@esbuild/win32-x64@npm:0.17.4":
version: 0.17.4
resolution: "@esbuild/win32-x64@npm:0.17.4"
@@ -816,6 +970,18 @@ __metadata:
languageName: unknown
linkType: soft
+"@fast-check/vitest@workspace:packages/vitest":
+ version: 0.0.0-use.local
+ resolution: "@fast-check/vitest@workspace:packages/vitest"
+ dependencies:
+ fast-check: "workspace:*"
+ typescript: ^4.9.4
+ vitest: ^0.28.1
+ peerDependencies:
+ vitest: ">=0.28.1"
+ languageName: unknown
+ linkType: soft
+
"@fast-check/worker@workspace:*, @fast-check/worker@workspace:packages/worker":
version: 0.0.0-use.local
resolution: "@fast-check/worker@workspace:packages/worker"
@@ -1968,6 +2134,22 @@ __metadata:
languageName: node
linkType: hard
+"@types/chai-subset@npm:^1.3.3":
+ version: 1.3.3
+ resolution: "@types/chai-subset@npm:1.3.3"
+ dependencies:
+ "@types/chai": "*"
+ checksum: 4481da7345022995f5a105e6683744f7203d2c3d19cfe88d8e17274d045722948abf55e0adfd97709e0f043dade37a4d4e98cd4c660e2e8a14f23e6ecf79418f
+ languageName: node
+ linkType: hard
+
+"@types/chai@npm:*, @types/chai@npm:^4.3.4":
+ version: 4.3.4
+ resolution: "@types/chai@npm:4.3.4"
+ checksum: 571184967beb03bf64c4392a13a7d44e72da9af5a1e83077ff81c39cf59c0fda2a5c78d2005084601cf8f3d11726608574d8b5b4a0e3e9736792807afd926cd0
+ languageName: node
+ linkType: hard
+
"@types/connect@npm:*":
version: 3.4.35
resolution: "@types/connect@npm:3.4.35"
@@ -2492,6 +2674,50 @@ __metadata:
languageName: node
linkType: hard
+"@vitest/expect@npm:0.28.1":
+ version: 0.28.1
+ resolution: "@vitest/expect@npm:0.28.1"
+ dependencies:
+ "@vitest/spy": 0.28.1
+ "@vitest/utils": 0.28.1
+ chai: ^4.3.7
+ checksum: d6b0e575f1b86796134354e99af35282c37dd038fc221fe3e22b4caddd4c9558fd163b0b64d8cf2102c442ed409f27e48c19b1deebd94911d7459d49060769cd
+ languageName: node
+ linkType: hard
+
+"@vitest/runner@npm:0.28.1":
+ version: 0.28.1
+ resolution: "@vitest/runner@npm:0.28.1"
+ dependencies:
+ "@vitest/utils": 0.28.1
+ p-limit: ^4.0.0
+ pathe: ^1.1.0
+ checksum: ce44c68ceaf025eba893f41f91514453ca19bb9511bc950f0598913960e1473e43138c4e01448c5856b40ffa85a0921b4863e2ed38b3753e34d1664b366de1eb
+ languageName: node
+ linkType: hard
+
+"@vitest/spy@npm:0.28.1":
+ version: 0.28.1
+ resolution: "@vitest/spy@npm:0.28.1"
+ dependencies:
+ tinyspy: ^1.0.2
+ checksum: b28dee4b4f2533fbe85acb0a40bf64667d1438b2bf8bff5773dc7814690ebff6ae8284724deab00769fdc199629332284e432d60dcdb7a4d9d64421c363dc11b
+ languageName: node
+ linkType: hard
+
+"@vitest/utils@npm:0.28.1":
+ version: 0.28.1
+ resolution: "@vitest/utils@npm:0.28.1"
+ dependencies:
+ cli-truncate: ^3.1.0
+ diff: ^5.1.0
+ loupe: ^2.3.6
+ picocolors: ^1.0.0
+ pretty-format: ^27.5.1
+ checksum: 8a583f009de8ffb9b6b83fd1f53f0794ba03b980e8d18e51713ed8b5ecfc2c2d3be27163565801e0c88c9bcf981be1063dc5cbebd3c36528aa12687c3bbd0b0f
+ languageName: node
+ linkType: hard
+
"@webassemblyjs/ast@npm:1.11.1":
version: 1.11.1
resolution: "@webassemblyjs/ast@npm:1.11.1"
@@ -3028,6 +3254,13 @@ __metadata:
languageName: node
linkType: hard
+"assertion-error@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "assertion-error@npm:1.1.0"
+ checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf
+ languageName: node
+ linkType: hard
+
"async@npm:^3.1.0":
version: 3.2.4
resolution: "async@npm:3.2.4"
@@ -3396,6 +3629,13 @@ __metadata:
languageName: node
linkType: hard
+"cac@npm:^6.7.14":
+ version: 6.7.14
+ resolution: "cac@npm:6.7.14"
+ checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a
+ languageName: node
+ linkType: hard
+
"cacache@npm:^16.1.0":
version: 16.1.3
resolution: "cacache@npm:16.1.3"
@@ -3497,6 +3737,21 @@ __metadata:
languageName: node
linkType: hard
+"chai@npm:^4.3.7":
+ version: 4.3.7
+ resolution: "chai@npm:4.3.7"
+ dependencies:
+ assertion-error: ^1.1.0
+ check-error: ^1.0.2
+ deep-eql: ^4.1.2
+ get-func-name: ^2.0.0
+ loupe: ^2.3.1
+ pathval: ^1.1.1
+ type-detect: ^4.0.5
+ checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c
+ languageName: node
+ linkType: hard
+
"chalk@npm:^2.0.0":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
@@ -3549,6 +3804,13 @@ __metadata:
languageName: node
linkType: hard
+"check-error@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "check-error@npm:1.0.2"
+ checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e
+ languageName: node
+ linkType: hard
+
"chokidar@npm:^3.5.3":
version: 3.5.3
resolution: "chokidar@npm:3.5.3"
@@ -4083,6 +4345,15 @@ __metadata:
languageName: node
linkType: hard
+"deep-eql@npm:^4.1.2":
+ version: 4.1.3
+ resolution: "deep-eql@npm:4.1.3"
+ dependencies:
+ type-detect: ^4.0.0
+ checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f
+ languageName: node
+ linkType: hard
+
"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3":
version: 0.1.4
resolution: "deep-is@npm:0.1.4"
@@ -4193,6 +4464,13 @@ __metadata:
languageName: node
linkType: hard
+"diff@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "diff@npm:5.1.0"
+ checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90
+ languageName: node
+ linkType: hard
+
"dir-glob@npm:^3.0.1":
version: 3.0.1
resolution: "dir-glob@npm:3.0.1"
@@ -4348,6 +4626,83 @@ __metadata:
languageName: node
linkType: hard
+"esbuild@npm:^0.16.3":
+ version: 0.16.17
+ resolution: "esbuild@npm:0.16.17"
+ dependencies:
+ "@esbuild/android-arm": 0.16.17
+ "@esbuild/android-arm64": 0.16.17
+ "@esbuild/android-x64": 0.16.17
+ "@esbuild/darwin-arm64": 0.16.17
+ "@esbuild/darwin-x64": 0.16.17
+ "@esbuild/freebsd-arm64": 0.16.17
+ "@esbuild/freebsd-x64": 0.16.17
+ "@esbuild/linux-arm": 0.16.17
+ "@esbuild/linux-arm64": 0.16.17
+ "@esbuild/linux-ia32": 0.16.17
+ "@esbuild/linux-loong64": 0.16.17
+ "@esbuild/linux-mips64el": 0.16.17
+ "@esbuild/linux-ppc64": 0.16.17
+ "@esbuild/linux-riscv64": 0.16.17
+ "@esbuild/linux-s390x": 0.16.17
+ "@esbuild/linux-x64": 0.16.17
+ "@esbuild/netbsd-x64": 0.16.17
+ "@esbuild/openbsd-x64": 0.16.17
+ "@esbuild/sunos-x64": 0.16.17
+ "@esbuild/win32-arm64": 0.16.17
+ "@esbuild/win32-ia32": 0.16.17
+ "@esbuild/win32-x64": 0.16.17
+ dependenciesMeta:
+ "@esbuild/android-arm":
+ optional: true
+ "@esbuild/android-arm64":
+ optional: true
+ "@esbuild/android-x64":
+ optional: true
+ "@esbuild/darwin-arm64":
+ optional: true
+ "@esbuild/darwin-x64":
+ optional: true
+ "@esbuild/freebsd-arm64":
+ optional: true
+ "@esbuild/freebsd-x64":
+ optional: true
+ "@esbuild/linux-arm":
+ optional: true
+ "@esbuild/linux-arm64":
+ optional: true
+ "@esbuild/linux-ia32":
+ optional: true
+ "@esbuild/linux-loong64":
+ optional: true
+ "@esbuild/linux-mips64el":
+ optional: true
+ "@esbuild/linux-ppc64":
+ optional: true
+ "@esbuild/linux-riscv64":
+ optional: true
+ "@esbuild/linux-s390x":
+ optional: true
+ "@esbuild/linux-x64":
+ optional: true
+ "@esbuild/netbsd-x64":
+ optional: true
+ "@esbuild/openbsd-x64":
+ optional: true
+ "@esbuild/sunos-x64":
+ optional: true
+ "@esbuild/win32-arm64":
+ optional: true
+ "@esbuild/win32-ia32":
+ optional: true
+ "@esbuild/win32-x64":
+ optional: true
+ bin:
+ esbuild: bin/esbuild
+ checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c
+ languageName: node
+ linkType: hard
+
"esbuild@npm:^0.17.4":
version: 0.17.4
resolution: "esbuild@npm:0.17.4"
@@ -5141,6 +5496,13 @@ __metadata:
languageName: node
linkType: hard
+"get-func-name@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "get-func-name@npm:2.0.0"
+ checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3
+ languageName: node
+ linkType: hard
+
"get-intrinsic@npm:^1.0.2":
version: 1.1.1
resolution: "get-intrinsic@npm:1.1.1"
@@ -7107,6 +7469,13 @@ __metadata:
languageName: node
linkType: hard
+"local-pkg@npm:^0.4.2":
+ version: 0.4.2
+ resolution: "local-pkg@npm:0.4.2"
+ checksum: 22be451353c25c4411b552bf01880ebc9e995b93574b2facc7757968d888356df59199cacada14162ab53bbc9da055bb692c907b4171f008dbce45a2afc777c1
+ languageName: node
+ linkType: hard
+
"locate-path@npm:^5.0.0":
version: 5.0.0
resolution: "locate-path@npm:5.0.0"
@@ -7180,6 +7549,15 @@ __metadata:
languageName: node
linkType: hard
+"loupe@npm:^2.3.1, loupe@npm:^2.3.6":
+ version: 2.3.6
+ resolution: "loupe@npm:2.3.6"
+ dependencies:
+ get-func-name: ^2.0.0
+ checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^6.0.0":
version: 6.0.0
resolution: "lru-cache@npm:6.0.0"
@@ -7571,6 +7949,18 @@ __metadata:
languageName: node
linkType: hard
+"mlly@npm:^1.0.0, mlly@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "mlly@npm:1.1.0"
+ dependencies:
+ acorn: ^8.8.1
+ pathe: ^1.0.0
+ pkg-types: ^1.0.1
+ ufo: ^1.0.1
+ checksum: d53147a2f5f83499589c47a00e00df30cbae2e630dfcfdfdeee2b70b49aff6612f2fa13195a1c6268b8f8ecd6064cb9a35febbdf895b2cbfeacdf9a9b3e31493
+ languageName: node
+ linkType: hard
+
"ms@npm:2.0.0":
version: 2.0.0
resolution: "ms@npm:2.0.0"
@@ -7599,6 +7989,15 @@ __metadata:
languageName: node
linkType: hard
+"nanoid@npm:^3.3.4":
+ version: 3.3.4
+ resolution: "nanoid@npm:3.3.4"
+ bin:
+ nanoid: bin/nanoid.cjs
+ checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c
+ languageName: node
+ linkType: hard
+
"natural-compare-lite@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare-lite@npm:1.4.0"
@@ -8174,6 +8573,20 @@ __metadata:
languageName: node
linkType: hard
+"pathe@npm:^1.0.0, pathe@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "pathe@npm:1.1.0"
+ checksum: 6b9be9968ea08a90c0824934799707a1c6a1ad22ac1f22080f377e3f75856d5e53a331b01d327329bfce538a14590587cfb250e8e7947f64408797c84c252056
+ languageName: node
+ linkType: hard
+
+"pathval@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "pathval@npm:1.1.1"
+ checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6
+ languageName: node
+ linkType: hard
+
"pegjs@npm:^0.10.0":
version: 0.10.0
resolution: "pegjs@npm:0.10.0"
@@ -8230,6 +8643,17 @@ __metadata:
languageName: node
linkType: hard
+"pkg-types@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "pkg-types@npm:1.0.1"
+ dependencies:
+ jsonc-parser: ^3.2.0
+ mlly: ^1.0.0
+ pathe: ^1.0.0
+ checksum: fe73cc22fb72ddb09227e2837a7b2ed1e0706a18e69a58a6ce13cde2b7eab122cb98de44d5c54fca5715d203ef3d2eb004b3ec84a3c05decb11e7c49a80fe2f9
+ languageName: node
+ linkType: hard
+
"plur@npm:^5.1.0":
version: 5.1.0
resolution: "plur@npm:5.1.0"
@@ -8249,6 +8673,17 @@ __metadata:
languageName: node
linkType: hard
+"postcss@npm:^8.4.20":
+ version: 8.4.21
+ resolution: "postcss@npm:8.4.21"
+ dependencies:
+ nanoid: ^3.3.4
+ picocolors: ^1.0.0
+ source-map-js: ^1.0.2
+ checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679
+ languageName: node
+ linkType: hard
+
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
@@ -8758,7 +9193,7 @@ __metadata:
languageName: node
linkType: hard
-"rollup@npm:^3.10.1":
+"rollup@npm:^3.10.1, rollup@npm:^3.7.0":
version: 3.10.1
resolution: "rollup@npm:3.10.1"
dependencies:
@@ -8979,6 +9414,13 @@ __metadata:
languageName: node
linkType: hard
+"siginfo@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "siginfo@npm:2.0.0"
+ checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01
+ languageName: node
+ linkType: hard
+
"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
version: 3.0.7
resolution: "signal-exit@npm:3.0.7"
@@ -9045,6 +9487,13 @@ __metadata:
languageName: node
linkType: hard
+"source-map-js@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "source-map-js@npm:1.0.2"
+ checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c
+ languageName: node
+ linkType: hard
+
"source-map-resolve@npm:^0.6.0":
version: 0.6.0
resolution: "source-map-resolve@npm:0.6.0"
@@ -9065,7 +9514,7 @@ __metadata:
languageName: node
linkType: hard
-"source-map-support@npm:~0.5.20":
+"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20":
version: 0.5.21
resolution: "source-map-support@npm:0.5.21"
dependencies:
@@ -9150,6 +9599,13 @@ __metadata:
languageName: node
linkType: hard
+"stackback@npm:0.0.2":
+ version: 0.0.2
+ resolution: "stackback@npm:0.0.2"
+ checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99
+ languageName: node
+ linkType: hard
+
"statuses@npm:2.0.1":
version: 2.0.1
resolution: "statuses@npm:2.0.1"
@@ -9157,6 +9613,13 @@ __metadata:
languageName: node
linkType: hard
+"std-env@npm:^3.3.1":
+ version: 3.3.1
+ resolution: "std-env@npm:3.3.1"
+ checksum: c4f59ecd2cb52041ce1785776d28a1aa56d346b6c4efcb8473e7e801eed1ac7612332dcee242d0b35948f35f745cceb6e226b5e825b59e588b262dca6be2b8aa
+ languageName: node
+ linkType: hard
+
"string-argv@npm:~0.3.1":
version: 0.3.1
resolution: "string-argv@npm:0.3.1"
@@ -9253,6 +9716,15 @@ __metadata:
languageName: node
linkType: hard
+"strip-literal@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "strip-literal@npm:1.0.0"
+ dependencies:
+ acorn: ^8.8.1
+ checksum: ada9b60f322ce3e3fd167b65a186ab77a8c76b8f9074dcdbad4c1a810b46f21c9dca30d4d807e98af580cbe99bfbccd6d8176f69183a454ae2868d8ddd6d4f88
+ languageName: node
+ linkType: hard
+
"superagent@npm:^7.1.3":
version: 7.1.6
resolution: "superagent@npm:7.1.6"
@@ -9458,6 +9930,27 @@ __metadata:
languageName: node
linkType: hard
+"tinybench@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "tinybench@npm:2.3.1"
+ checksum: 74d45fa546d964a8123f98847fc59550945ed7f0d3e5a4ce0f9596d836b51c1d340c2ae0277a8023c15dc9ea3d7cb948a79173bfc46338c9b367c6323ea1eaf3
+ languageName: node
+ linkType: hard
+
+"tinypool@npm:^0.3.0":
+ version: 0.3.0
+ resolution: "tinypool@npm:0.3.0"
+ checksum: 92291c309ed8d004c1ee1ef7f610cd90352383f12c52b0ec16abd9ebc665c03626e7afbc9993df97f63e67fea002b5cc18ba5e8f90260643867cbcac278a183c
+ languageName: node
+ linkType: hard
+
+"tinyspy@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "tinyspy@npm:1.0.2"
+ checksum: 32096121aa8d52bb625ad62c9314b3e4daba4ab9ac428217b12b1e1dfe9860e3c94d54a7affa279cc70dc6f10d88c6ba46b51de68896b318a06d02f05e87dcc3
+ languageName: node
+ linkType: hard
+
"tmp@npm:^0.0.33":
version: 0.0.33
resolution: "tmp@npm:0.0.33"
@@ -9642,7 +10135,7 @@ __metadata:
languageName: node
linkType: hard
-"type-detect@npm:4.0.8":
+"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5":
version: 4.0.8
resolution: "type-detect@npm:4.0.8"
checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15
@@ -9736,6 +10229,13 @@ __metadata:
languageName: node
linkType: hard
+"ufo@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "ufo@npm:1.0.1"
+ checksum: 63024876f21b7cc44267255a8043062046d3215e09212bd682787a13ccf1e0c5d23f7686a7f1bc7ac9f34c7e8a88100af234f42b509db50f17ce638af6ac87cc
+ languageName: node
+ linkType: hard
+
"unique-filename@npm:^2.0.0":
version: 2.0.1
resolution: "unique-filename@npm:2.0.1"
@@ -9853,6 +10353,113 @@ __metadata:
languageName: node
linkType: hard
+"vite-node@npm:0.28.1":
+ version: 0.28.1
+ resolution: "vite-node@npm:0.28.1"
+ dependencies:
+ cac: ^6.7.14
+ debug: ^4.3.4
+ mlly: ^1.1.0
+ pathe: ^1.1.0
+ picocolors: ^1.0.0
+ source-map: ^0.6.1
+ source-map-support: ^0.5.21
+ vite: ^3.0.0 || ^4.0.0
+ bin:
+ vite-node: vite-node.mjs
+ checksum: a3a3ec1492efc53258956c818625868755de04a2f0c15ab916513bfbf284c319966553079b3c9e05fb8af79858edceecbcae4887b305ea3f120c376382799513
+ languageName: node
+ linkType: hard
+
+"vite@npm:^3.0.0 || ^4.0.0":
+ version: 4.0.4
+ resolution: "vite@npm:4.0.4"
+ dependencies:
+ esbuild: ^0.16.3
+ fsevents: ~2.3.2
+ postcss: ^8.4.20
+ resolve: ^1.22.1
+ rollup: ^3.7.0
+ peerDependencies:
+ "@types/node": ">= 14"
+ less: "*"
+ sass: "*"
+ stylus: "*"
+ sugarss: "*"
+ terser: ^5.4.0
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ bin:
+ vite: bin/vite.js
+ checksum: eb86c8cdfe8dcb6644005486b31cb60bc596f2aa683cb194abb5c0afca7c2a5dfdb02bbc7f83f419ad170227ac9c3b898f4406a6d1433105fb61d79d78e47d52
+ languageName: node
+ linkType: hard
+
+"vitest@npm:^0.28.1":
+ version: 0.28.1
+ resolution: "vitest@npm:0.28.1"
+ dependencies:
+ "@types/chai": ^4.3.4
+ "@types/chai-subset": ^1.3.3
+ "@types/node": "*"
+ "@vitest/expect": 0.28.1
+ "@vitest/runner": 0.28.1
+ "@vitest/spy": 0.28.1
+ "@vitest/utils": 0.28.1
+ acorn: ^8.8.1
+ acorn-walk: ^8.2.0
+ cac: ^6.7.14
+ chai: ^4.3.7
+ debug: ^4.3.4
+ local-pkg: ^0.4.2
+ pathe: ^1.1.0
+ picocolors: ^1.0.0
+ source-map: ^0.6.1
+ std-env: ^3.3.1
+ strip-literal: ^1.0.0
+ tinybench: ^2.3.1
+ tinypool: ^0.3.0
+ tinyspy: ^1.0.2
+ vite: ^3.0.0 || ^4.0.0
+ vite-node: 0.28.1
+ why-is-node-running: ^2.2.2
+ peerDependencies:
+ "@edge-runtime/vm": "*"
+ "@vitest/browser": "*"
+ "@vitest/ui": "*"
+ happy-dom: "*"
+ jsdom: "*"
+ peerDependenciesMeta:
+ "@edge-runtime/vm":
+ optional: true
+ "@vitest/browser":
+ optional: true
+ "@vitest/ui":
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ bin:
+ vitest: vitest.mjs
+ checksum: 3ebbf4c897c54f253cafe8e62d911df63d5dda72e54946cab21bc8afdf57fd192cb5cebb29a94e33e23dd0364759a6449957e05b58fda10419eab275a5b52443
+ languageName: node
+ linkType: hard
+
"vscode-oniguruma@npm:^1.7.0":
version: 1.7.0
resolution: "vscode-oniguruma@npm:1.7.0"
@@ -10100,6 +10707,18 @@ __metadata:
languageName: node
linkType: hard
+"why-is-node-running@npm:^2.2.2":
+ version: 2.2.2
+ resolution: "why-is-node-running@npm:2.2.2"
+ dependencies:
+ siginfo: ^2.0.0
+ stackback: 0.0.2
+ bin:
+ why-is-node-running: cli.js
+ checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a
+ languageName: node
+ linkType: hard
+
"wide-align@npm:^1.1.5":
version: 1.1.5
resolution: "wide-align@npm:1.1.5"