diff --git a/eslint.config.mjs b/eslint.config.js similarity index 100% rename from eslint.config.mjs rename to eslint.config.js diff --git a/package.json b/package.json index 8c065b5..810367a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "repository": "git@github.com:JoseLion/lynxts.git", "homepage": "https://joselion.gitbook.io/lynx.ts/", "author": "Jose Luis Leon ", + "type": "module", + "sideEffects": false, "engines": { "node": ">=18" }, @@ -41,7 +43,6 @@ "eslint-plugin-sonarjs": "^1.0.3", "globals": "^15.8.0", "semantic-release": "^24.0.0", - "ts-node": "^10.9.2", "tslib": "^2.6.3", "turbo": "^2.0.6", "typedoc": "^0.26.3", diff --git a/packages/core/package.json b/packages/core/package.json index 64ab1d1..2afa1d2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -14,22 +14,36 @@ "yup", "zod" ], - "main": "./dist/main.js", + "type": "module", + "sideEffects": false, + "source": "./src/main.ts", + "main": "./dist/main.cjs", + "module": "./dist/main.js", "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.js", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "./package.json": "./package.json" + }, "files": [ - "dist/", - "src/" + "./dist/", + "./src/", + "./package.json" ], "engines": { "node": ">=18" }, "scripts": { - "build": "tsc -p tsconfig.prod.json", - "check": "yarn compile && yarn test", + "build": "vite build", + "check": "yarn compile && yarn test --run", "compile": "tsc -p tsconfig.json", "docs": "typedoc", "release": "semantic-release", - "test": "NODE_ENV=test mocha", + "test": "vitest", "test:silent": "DEBUG_PRINT_LIMIT=0 yarn test", "test:verbose": "DEBUG_PRINT_LIMIT=1000000 yarn test" }, @@ -42,24 +56,24 @@ }, "devDependencies": { "@assertive-ts/core": "^2.1.0", + "@assertive-ts/sinon": "^1.0.0", "@testing-library/dom": "^10.3.1", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", - "@types/mocha": "^10.0.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@types/sinon": "^17.0.3", - "expect-type": "^0.19.0", - "jsdom": "^24.1.0", - "jsdom-global": "^3.0.2", - "mocha": "^10.6.0", + "happy-dom": "^14.12.3", "react": "^18.3.1", "react-dom": "^18.3.1", "semantic-release": "^24.0.0", "semantic-release-yarn": "^3.0.2", "sinon": "^18.0.0", "tslib": "^2.6.3", - "typescript": "^5.5.3" + "typescript": "^5.5.3", + "vite": "^5.3.3", + "vite-plugin-dts": "^3.9.1", + "vitest": "^1.6.0" }, "optionalDependencies": { "yup": "^1.4.0", diff --git a/packages/core/test/hooks.ts b/packages/core/test/hooks.ts deleted file mode 100644 index d61d09a..0000000 --- a/packages/core/test/hooks.ts +++ /dev/null @@ -1,9 +0,0 @@ -import Sinon from "sinon"; - -export const mochaHooks: () => Mocha.RootHookObject = () => { - return { - afterEach: () => { - Sinon.restore(); - }, - }; -}; diff --git a/packages/core/test/integration/lib/Form.context.test.ts b/packages/core/test/integration/lib/Form.context.test.ts index 4b50947..227380f 100644 --- a/packages/core/test/integration/lib/Form.context.test.ts +++ b/packages/core/test/integration/lib/Form.context.test.ts @@ -1,11 +1,12 @@ import { expect } from "@assertive-ts/core"; import { renderHook } from "@testing-library/react"; +import { describe, it, suite } from "vitest"; import { useForm, useFormSelector } from "../../../src/lib/Form.context"; -describe("[Integration] Form.context.test.ts", () => { +suite("[Integration] Form.context.test.ts", () => { describe(".useForm", () => { - context("when the hook is rendered", () => { + describe("when the hook is rendered", () => { it("returns the complete Form context", () => { const { result } = renderHook(() => useForm()); const { current } = result; @@ -24,7 +25,7 @@ describe("[Integration] Form.context.test.ts", () => { }); describe(".useFormSelector", () => { - context("when the hook is rendered", () => { + describe("when the hook is rendered", () => { it("returns only the selected value from the Form context", () => { const { result } = renderHook(() => useFormSelector(ctxt => ctxt.values)); diff --git a/packages/core/test/integration/lib/Form.provider.test.tsx b/packages/core/test/integration/lib/Form.provider.test.tsx index 8db674d..b71e043 100644 --- a/packages/core/test/integration/lib/Form.provider.test.tsx +++ b/packages/core/test/integration/lib/Form.provider.test.tsx @@ -1,8 +1,9 @@ import { expect } from "@assertive-ts/core"; import { render, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; +import { userEvent } from "@testing-library/user-event"; import { type ReactElement, useCallback, useState } from "react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, boolean, isSchema, number, object, string } from "yup"; import { z } from "zod"; @@ -94,8 +95,8 @@ function WasSubmitted(): ReactElement { ); } -describe("[Integration] Form.provider.test.tsx", () => { - context("when the provider children is a function", () => { +suite("[Integration] Form.provider.test.tsx", () => { + describe("when the provider children is a function", () => { it("renders the result passing context as parameters", async () => { const { getByText } = render( @@ -121,7 +122,7 @@ describe("[Integration] Form.provider.test.tsx", () => { }); }); - context("when the provider children is not a function", () => { + describe("when the provider children is not a function", () => { it("renders the children elements", async () => { const { getByText } = render( @@ -137,7 +138,7 @@ describe("[Integration] Form.provider.test.tsx", () => { }); }); - context("when the values prop changes", () => { + describe("when the values prop changes", () => { it("updates the from values in the context", async () => { const { getByText, findByRole } = render(); @@ -159,12 +160,12 @@ describe("[Integration] Form.provider.test.tsx", () => { }); }); - context("when the submit function is called from the context", () => { + describe("when the submit function is called from the context", () => { it("calls the onSubmit callback once", async () => { - const spySubmit = Sinon.spy<(v: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(v: Foo) => void>(() => undefined); const { findByRole } = render( - onSubmit={spySubmit} + onSubmit={submitSpy} validation={yupSchema} values={{ x: 1, y: "foo", z: true }} > @@ -180,19 +181,23 @@ describe("[Integration] Form.provider.test.tsx", () => { await userEvent.click(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { x: 1, y: "foo", z: true }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ x: 1, y: "foo", z: true }); + }); }); }); [yupSchema, zodSchema].forEach(schema => { const schemaName = isSchema(schema) ? "Yup" : "Zod"; - context("when the validation fails", () => { + describe("when the validation fails", () => { it("sets all the violations, does not call the onSubmit callback, sets the form as submitted", async () => { - const spySubmit = Sinon.spy<(v: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(v: Foo) => void>(() => undefined); const { findByRole, getByText } = render( , ); @@ -205,19 +210,19 @@ describe("[Integration] Form.provider.test.tsx", () => { await waitFor(() => getByText("Errors: x, y, z")); - Sinon.assert.notCalled(spySubmit); + expect(submitSpy).toNeverBeCalled(); await waitFor(() => getByText("Submitted? true")); }); }); describe(`[${schemaName}] validate`, () => { - context("when the validation success", () => { + describe("when the validation success", () => { it("clears the errors, calls the onSubmit callback once, and sets the form as submitted", async () => { - const spySubmit = Sinon.spy<(v: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(v: Foo) => void>(() => undefined); const { findByRole, getByText, queryByText } = render( , ); @@ -244,11 +249,12 @@ describe("[Integration] Form.provider.test.tsx", () => { await waitFor(() => { expect(queryByText("Errors: x, y, z")).toBeNull(); + getByText("Submitted? true"); }); - Sinon.assert.calledWithExactly(spySubmit, { x: 5, y: "foo", z: true }); - - await waitFor(() => getByText("Submitted? true")); + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ x: 5, y: "foo", z: true }); }); }); }); diff --git a/packages/core/test/integration/lib/components/ArrayField.component.test.tsx b/packages/core/test/integration/lib/components/ArrayField.component.test.tsx index 2007f73..5836625 100644 --- a/packages/core/test/integration/lib/components/ArrayField.component.test.tsx +++ b/packages/core/test/integration/lib/components/ArrayField.component.test.tsx @@ -1,5 +1,6 @@ import { render, waitFor } from "@testing-library/react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, array, number, object, string } from "yup"; import { FormProvider } from "../../../../src/lib/Form.provider"; @@ -17,8 +18,8 @@ const schema: ObjectSchema = object({ name: string().required(), }); -describe("[Integration] ArrayField.component.test.tsx", () => { - context("when the array field is rendered", () => { +suite("[Integration] ArrayField.component.test.tsx", () => { + describe("when the array field is rendered", () => { it("renders the result of the function in the children", async () => { const { getByRole } = render( diff --git a/packages/core/test/integration/lib/components/Field.component.test.tsx b/packages/core/test/integration/lib/components/Field.component.test.tsx index 601b3cb..d25ff73 100644 --- a/packages/core/test/integration/lib/components/Field.component.test.tsx +++ b/packages/core/test/integration/lib/components/Field.component.test.tsx @@ -1,5 +1,6 @@ import { render, waitFor } from "@testing-library/react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, boolean, object, string } from "yup"; import { FormProvider } from "../../../../src/lib/Form.provider"; @@ -17,8 +18,8 @@ const schema: ObjectSchema = object({ other: boolean().required(), }); -describe("[Integration] Field.component.test.tsx", () => { - context("when the field is rendered", () => { +suite("[Integration] Field.component.test.tsx", () => { + describe("when the field is rendered", () => { it("renders the result of the function in the children", async () => { const { getByDisplayValue } = render( diff --git a/packages/core/test/integration/lib/hooks/useArrayField.test.tsx b/packages/core/test/integration/lib/hooks/useArrayField.test.tsx index da1271f..3eb2c1c 100644 --- a/packages/core/test/integration/lib/hooks/useArrayField.test.tsx +++ b/packages/core/test/integration/lib/hooks/useArrayField.test.tsx @@ -1,6 +1,7 @@ import { expect } from "@assertive-ts/core"; import { type RenderHookResult, renderHook } from "@testing-library/react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, array, object, string } from "yup"; import { FormProvider } from "../../../../src/lib/Form.provider"; @@ -28,8 +29,8 @@ function renderWith(...roles: string[]): RenderHookResult, }); } -describe("[Integration] useArrayField.test.tsx", () => { - context("when the hook is rendered", () => { +suite("[Integration] useArrayField.test.tsx", () => { + describe("when the hook is rendered", () => { it("returns the array items and helpers", () => { const { result } = renderWith("foo", "bar", "baz"); const { current } = result; @@ -89,7 +90,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); describe(".insert", () => { - context("when the index in inbounds", () => { + describe("when the index in inbounds", () => { it("insters the item at the index", () => { const { result, rerender } = renderWith("foo", "baz"); @@ -103,7 +104,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); }); - context("when the index is greater than the array size", () => { + describe("when the index is greater than the array size", () => { it("insert the item at the end of the array", () => { const { result, rerender } = renderWith("foo", "bar"); @@ -117,7 +118,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); }); - context("when the index is negative", () => { + describe("when the index is negative", () => { it("treats the index as an offset", () => { const { result, rerender } = renderWith("foo", "baz"); @@ -133,7 +134,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); describe(".keygen", () => { - context("when a key is not provided", () => { + describe("when a key is not provided", () => { it("returns a generated uuid", () => { const pattern = /[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}/i; const { result } = renderWith("foo", "bar"); @@ -147,7 +148,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); }); - context("when the key is provided", () => { + describe("when the key is provided", () => { it("prefers the key over the generated uuid", () => { const today = new Date(); const { result } = renderWith("foo", "bar"); @@ -190,7 +191,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); describe(".replace", () => { - context("when the index is inbounds", () => { + describe("when the index is inbounds", () => { it("replaces the item at the index", () => { const { result, rerender } = renderWith("foo", "bar", "baz"); @@ -204,7 +205,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); }); - context("when the index is greater than the array size", () => { + describe("when the index is greater than the array size", () => { it("insert the item at the end of the array", () => { const { result, rerender } = renderWith("foo", "bar", "baz"); @@ -218,7 +219,7 @@ describe("[Integration] useArrayField.test.tsx", () => { }); }); - context("when the index is negative", () => { + describe("when the index is negative", () => { it("treats the index as na offset", () => { const { result, rerender } = renderWith("foo", "bar", "baz"); diff --git a/packages/core/test/integration/lib/hooks/useField.test.tsx b/packages/core/test/integration/lib/hooks/useField.test.tsx index 873e6cb..3dca913 100644 --- a/packages/core/test/integration/lib/hooks/useField.test.tsx +++ b/packages/core/test/integration/lib/hooks/useField.test.tsx @@ -1,8 +1,9 @@ import { expect } from "@assertive-ts/core"; import { type RenderHookResult, fireEvent, render, renderHook, waitFor } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; +import { userEvent } from "@testing-library/user-event"; import { type ChangeEvent, type ReactElement, useCallback } from "react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, isSchema, number, object, string } from "yup"; import { z } from "zod"; @@ -86,8 +87,8 @@ function Field(): ReactElement { ); } -describe("[Integration] useField.test.tsx", () => { - context("when the hook is rendered", () => { +suite("[Integration] useField.test.tsx", () => { + describe("when the hook is rendered", () => { it("returns the field value and state setters", () => { const { result } = renderWith({ path: "name", values: { name: "Alice" } }); const { current } = result; @@ -99,7 +100,7 @@ describe("[Integration] useField.test.tsx", () => { }); describe("fallback", () => { - context("when the fallback is not provided", () => { + describe("when the fallback is not provided", () => { it("starts the value as undefined and can change it back to undefined", () => { const { result, rerender } = renderWith({ path: "name" }); @@ -119,7 +120,7 @@ describe("[Integration] useField.test.tsx", () => { }); }); - context("when the fallback is defined", () => { + describe("when the fallback is defined", () => { it("starts the value with a default and falls back if changed to undefined", () => { const { result, rerender } = renderWith({ fallback: 0, path: "age" }); @@ -159,8 +160,8 @@ describe("[Integration] useField.test.tsx", () => { const schemaName = isSchema(schema) ? "Yup" : "Zod"; describe(`[${schemaName}] validation`, () => { - context("when the field is valid", () => { - context("and the field is untouched", () => { + describe("when the field is valid", () => { + describe("and the field is untouched", () => { it("does not show any error", async () => { const { findByRole, getByText } = render(); @@ -180,7 +181,7 @@ describe("[Integration] useField.test.tsx", () => { }); }); - context("and the field is touched", () => { + describe("and the field is touched", () => { it("does not show any error", async () => { const { findByRole, getByText } = render(); @@ -208,8 +209,8 @@ describe("[Integration] useField.test.tsx", () => { }); }); - context("when the field is invalid", () => { - context("and the field is untouched", () => { + describe("when the field is invalid", () => { + describe("and the field is untouched", () => { it("does not show the error", async () => { const { findByRole, getByText } = render(); @@ -236,7 +237,7 @@ describe("[Integration] useField.test.tsx", () => { }); }); - context("and the field is touched", () => { + describe("and the field is touched", () => { it("shows the error", async () => { const { findByRole, getByText } = render(); diff --git a/packages/core/test/integration/lib/hooks/useFieldValidation.test.tsx b/packages/core/test/integration/lib/hooks/useFieldValidation.test.tsx index 6c1f4a3..0f64633 100644 --- a/packages/core/test/integration/lib/hooks/useFieldValidation.test.tsx +++ b/packages/core/test/integration/lib/hooks/useFieldValidation.test.tsx @@ -1,6 +1,7 @@ import { expect } from "@assertive-ts/core"; import { type RenderHookResult, renderHook, waitFor } from "@testing-library/react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, isSchema, number, object, string } from "yup"; import { z } from "zod"; @@ -43,12 +44,12 @@ function renderWith(options: RenderOptions): RenderHookResult { +suite("[Integration] useFieldValidation.test.tsx", () => { [yupSchema, zodSchema].forEach(schema => { const schemaName = isSchema(schema) ? "Yup" : "Zod"; describe(`[${schemaName}] when the validation is a schema`, () => { - context("and the hook is rendered", () => { + describe("and the hook is rendered", () => { it("returns the error and required states", async () => { const { result } = renderWith({ path: "name", schema }); const { current } = result; @@ -60,7 +61,7 @@ describe("[Integration] useFieldValidation.test.tsx", () => { }); }); - context("and the field is required", () => { + describe("and the field is required", () => { it("sets the required state to true", async () => { const { result } = renderWith({ path: "name", schema }); @@ -70,7 +71,7 @@ describe("[Integration] useFieldValidation.test.tsx", () => { }); }); - context("and the field is not required", () => { + describe("and the field is not required", () => { it("sets the required state to false", async () => { const { result } = renderWith({ path: "age", schema }); diff --git a/packages/core/test/integration/main.test.ts b/packages/core/test/integration/main.test.ts index 1d59fc6..2ec4b01 100644 --- a/packages/core/test/integration/main.test.ts +++ b/packages/core/test/integration/main.test.ts @@ -1,8 +1,9 @@ import { expect } from "@assertive-ts/core"; +import { it, suite } from "vitest"; -describe("[Integration] main.test.tsx", () => { +suite("[Integration] main.test.tsx", () => { it("re-exports the library exports", async () => { - const core = await expect(import("../../src/main")).toBeResolved(); + const core = await import("../../src/main"); expect(core).toHaveKeys( "ArrayField", diff --git a/packages/core/test/setup.ts b/packages/core/test/setup.ts new file mode 100644 index 0000000..e2a4ea9 --- /dev/null +++ b/packages/core/test/setup.ts @@ -0,0 +1,29 @@ +import { usePlugin } from "@assertive-ts/core"; +import { SinonPlugin } from "@assertive-ts/sinon"; +import { cleanup } from "@testing-library/react"; +import { userEvent } from "@testing-library/user-event"; +import Sinon from "sinon"; +import { afterEach, beforeEach } from "vitest"; + +process.env.RNTL_SKIP_AUTO_DETECT_FAKE_TIMERS = "true"; + +const newUserEvent = userEvent.setup({ + advanceTimers: delay => Sinon.clock.tickAsync(delay).then(), + delay: 0, +}); + +Object.assign(userEvent, newUserEvent); + +usePlugin(SinonPlugin); + +beforeEach(() => { + Sinon.useFakeTimers({ + advanceTimeDelta: 0, + shouldAdvanceTime: true, + }); +}); + +afterEach(() => { + cleanup(); + Sinon.restore(); +}); diff --git a/packages/core/test/types/lib/Form.context.typetest.ts b/packages/core/test/types/lib/Form.context.typetest.ts deleted file mode 100644 index f6d0e14..0000000 --- a/packages/core/test/types/lib/Form.context.typetest.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { expectTypeOf } from "expect-type"; - -import type { Path, ValueByPath } from "../../../src/lib/Form.context"; - -interface Foo { - x: number; - y: Array<{ a: boolean; b: string; c: number[]; }>; - z: { - m: Date; - n: { end: "foo"; }; - }; -} - -expectTypeOf>().toEqualTypeOf< - | "x" - | "y" - | `y.${number}` - | `y.${number}.a` - | `y.${number}.b` - | `y.${number}.c` - | `y.${number}.c.${number}` - | "z" - | "z.m" - | "z.n" - | "z.n.end" ->(); -expectTypeOf>().toEqualTypeOf<"x">(); -expectTypeOf>().toEqualTypeOf<"y" | `y.${number}.c`>(); -expectTypeOf>().toEqualTypeOf<`y.${number}.c`>(); -expectTypeOf>().toEqualTypeOf<`y.${number}.b` | "z.n.end">(); -expectTypeOf>().toEqualTypeOf<"z.n.end">(); - -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf<"foo">(); diff --git a/packages/core/test/types/lib/components/ArrayField.component.typetest.ts b/packages/core/test/types/lib/components/ArrayField.component.typetest.ts deleted file mode 100644 index 6f11190..0000000 --- a/packages/core/test/types/lib/components/ArrayField.component.typetest.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { expectTypeOf } from "expect-type"; - -import type { ArrayFieldOf, ArrayFieldProps, ArrayValue } from "../../../../src/lib/components/ArrayField.component"; -import type { ReactNode } from "react"; - -interface Foo { - x: number; - y: Array<{ a: boolean; b: string; c: string[]; }>; - z: { - m: Date; - n: number[]; - }; -} - -expectTypeOf>().toBeNever(); -expectTypeOf>().toEqualTypeOf<{ a: boolean; b: string; c: string[]; }>(); -expectTypeOf>().toEqualTypeOf(); -expectTypeOf>().toEqualTypeOf(); - -expectTypeOf>().toMatchTypeOf< - (props: ArrayFieldProps) => ReactNode ->(); diff --git a/packages/core/test/types/lib/components/Field.component.typetest.ts b/packages/core/test/types/lib/components/Field.component.typetest.ts deleted file mode 100644 index 5ecccf0..0000000 --- a/packages/core/test/types/lib/components/Field.component.typetest.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { expectTypeOf } from "expect-type"; - -import type { Optional, Path, ValueByPath } from "../../../../src/lib/Form.context"; -import type { FieldOf, FieldProps } from "../../../../src/lib/components/Field.component"; -import type { ReactNode } from "react"; - -interface Foo { - x: number; - y: Array<{ a: boolean; b: string; c: number[]; }>; - z: { - m: Date; - n: { end: "foo"; }; - }; -} - -expectTypeOf>().toMatchTypeOf< - (props: FieldProps, Optional>>>) => ReactNode ->(); diff --git a/packages/core/test/unit/lib/Form.context.test.ts b/packages/core/test/unit/lib/Form.context.test.ts new file mode 100644 index 0000000..4d96fe0 --- /dev/null +++ b/packages/core/test/unit/lib/Form.context.test.ts @@ -0,0 +1,46 @@ +import { describe, expectTypeOf, it, suite } from "vitest"; + +import type { Path, ValueByPath } from "../../../src/lib/Form.context"; + +interface Foo { + x: number; + y: Array<{ a: boolean; b: string; c: number[]; }>; + z: { + m: Date; + n: { end: "foo"; }; + }; +} + +suite("[Unit] Form.context.test.ts", () => { + describe("types definitions", () => { + it("defines the types of Path", () => { + expectTypeOf>().toEqualTypeOf< + | "x" + | "y" + | `y.${number}` + | `y.${number}.a` + | `y.${number}.b` + | `y.${number}.c` + | `y.${number}.c.${number}` + | "z" + | "z.m" + | "z.n" + | "z.n.end" + >(); + expectTypeOf>().toEqualTypeOf<"x">(); + expectTypeOf>().toEqualTypeOf<"y" | `y.${number}.c`>(); + expectTypeOf>().toEqualTypeOf<`y.${number}.c`>(); + expectTypeOf>().toEqualTypeOf<`y.${number}.b` | "z.n.end">(); + expectTypeOf>().toEqualTypeOf<"z.n.end">(); + }); + + it("defines the types of ValueByPath", () => { + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf<"foo">(); + }); + }); +}); diff --git a/packages/core/test/unit/lib/components/ArrayField.component.test.ts b/packages/core/test/unit/lib/components/ArrayField.component.test.ts new file mode 100644 index 0000000..92c7aac --- /dev/null +++ b/packages/core/test/unit/lib/components/ArrayField.component.test.ts @@ -0,0 +1,30 @@ +import { describe, expectTypeOf, it, suite } from "vitest"; + +import type { ArrayFieldOf, ArrayFieldProps, ArrayValue } from "../../../../src/lib/components/ArrayField.component"; +import type { ReactNode } from "react"; + +interface Foo { + x: number; + y: Array<{ a: boolean; b: string; c: string[]; }>; + z: { + m: Date; + n: number[]; + }; +} + +suite("[Unit] ArrayField.component.test.ts", () => { + describe("types definitions", () => { + it("defines the types of ArrayValue", () => { + expectTypeOf>().toBeNever(); + expectTypeOf>().toEqualTypeOf<{ a: boolean; b: string; c: string[]; }>(); + expectTypeOf>().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf(); + }); + + it("defines the types of ArrayFieldOf", () => { + expectTypeOf>().toMatchTypeOf< + (props: ArrayFieldProps) => ReactNode + >(); + }); + }); +}); diff --git a/packages/core/test/unit/lib/components/Field.component.test.ts b/packages/core/test/unit/lib/components/Field.component.test.ts new file mode 100644 index 0000000..5d6e344 --- /dev/null +++ b/packages/core/test/unit/lib/components/Field.component.test.ts @@ -0,0 +1,24 @@ +import { describe, expectTypeOf, it, suite } from "vitest"; + +import type { Optional, Path, ValueByPath } from "../../../../src/lib/Form.context"; +import type { FieldOf, FieldProps } from "../../../../src/lib/components/Field.component"; +import type { ReactNode } from "react"; + +interface Foo { + x: number; + y: Array<{ a: boolean; b: string; c: number[]; }>; + z: { + m: Date; + n: { end: "foo"; }; + }; +} + +suite("[Unit] Field.component.test.ts", () => { + describe("types definitions", () => { + it("defines the types of FieldOf", () => { + expectTypeOf>().toMatchTypeOf< + (props: FieldProps, Optional>>>) => ReactNode + >(); + }); + }); +}); diff --git a/packages/core/test/unit/lib/helpers/commons.test.ts b/packages/core/test/unit/lib/helpers/commons.test.ts index 209a6a0..f15d052 100644 --- a/packages/core/test/unit/lib/helpers/commons.test.ts +++ b/packages/core/test/unit/lib/helpers/commons.test.ts @@ -1,8 +1,9 @@ import { expect } from "@assertive-ts/core"; +import { describe, it, suite } from "vitest"; import { noop } from "../../../../src/lib/helpers/commons"; -describe("[Unit] commons.test.ts", () => { +suite("[Unit] commons.test.ts", () => { describe(".noop", () => { it("does nothing", () => { expect(noop).not.toThrow(); diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 2d41472..91a1db8 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -2,14 +2,13 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./build", - "incremental": false, "typeRoots": [ - "../../node_modules/@types/", - "./typings/" + "../../node_modules/@types", + "./typings" ] }, "exclude": [ - "build/*", - "dist/*" + "build/**", + "dist/**" ] } diff --git a/packages/core/tsconfig.prod.json b/packages/core/tsconfig.prod.json deleted file mode 100644 index b79d8a1..0000000 --- a/packages/core/tsconfig.prod.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "incremental": false, - "outDir": "./dist" - }, - "include": [ - "src/**/*", - "typings/**/*" - ] -} diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts new file mode 100644 index 0000000..2560f22 --- /dev/null +++ b/packages/core/vite.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +export default defineConfig({ + build: { + lib: { + entry: "./src/main.ts", + fileName: "main", + formats: ["cjs", "es"], + }, + rollupOptions: { + output: { + exports: "named", + preserveModules: true, + }, + }, + sourcemap: true, + ssr: true, + }, + plugins: [ + dts({ + compilerOptions: { + emitDeclarationOnly: true, + incremental: false, + }, + include: ["src/**", "typings/**"], + }), + ], +}); diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts new file mode 100644 index 0000000..bc634c9 --- /dev/null +++ b/packages/core/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "happy-dom", + include: ["test/**/*.test.ts?(x)"], + setupFiles: "./test/setup.ts", + }, +}); diff --git a/packages/native/babel.config.js b/packages/native/babel.config.js deleted file mode 100644 index 4dcd7b9..0000000 --- a/packages/native/babel.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @type {import('@babel/core').TransformOptions} - */ -module.exports = { - presets: ["module:@react-native/babel-preset"], -}; diff --git a/packages/native/docs/interfaces/TextFiedProps.md b/packages/native/docs/interfaces/TextFiedProps.md index f184f5f..e8c8885 100644 --- a/packages/native/docs/interfaces/TextFiedProps.md +++ b/packages/native/docs/interfaces/TextFiedProps.md @@ -1108,7 +1108,7 @@ node\_modules/react-native/Libraries/Components/View/ViewPropTypes.d.ts:68 ### keyboardAppearance? -> `optional` **keyboardAppearance**: `"light"` \| `"default"` \| `"dark"` +> `optional` **keyboardAppearance**: `"default"` \| `"light"` \| `"dark"` Determines the color of the keyboard. @@ -2983,7 +2983,7 @@ node\_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts:880 ### textAlignVertical? -> `optional` **textAlignVertical**: `"center"` \| `"auto"` \| `"top"` \| `"bottom"` +> `optional` **textAlignVertical**: `"auto"` \| `"center"` \| `"top"` \| `"bottom"` Vertically align text when `multiline` is set to true diff --git a/packages/native/jest.config.ts b/packages/native/jest.config.ts deleted file mode 100644 index 260433a..0000000 --- a/packages/native/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - preset: "react-native", - setupFilesAfterEnv: ["/test/setup.ts"], - testRegex: "test/.*\\.test\\.(tsx?)$", - testTimeout: 30000, // https://github.com/jestjs/jest/issues/11234 -}; - -export default jestConfig; diff --git a/packages/native/metro.config.cjs b/packages/native/metro.config.cjs deleted file mode 100644 index 7659699..0000000 --- a/packages/native/metro.config.cjs +++ /dev/null @@ -1,11 +0,0 @@ -const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config"); - -/** - * Metro configuration - * https://facebook.github.io/metro/docs/configuration - * - * @type {import('metro-config').MetroConfig} - */ -const metroConfig = { }; - -module.exports = mergeConfig(getDefaultConfig(__dirname), metroConfig); diff --git a/packages/native/package.json b/packages/native/package.json index e7d2e57..d844597 100644 --- a/packages/native/package.json +++ b/packages/native/package.json @@ -15,23 +15,38 @@ "yup", "zod" ], - "main": "./dist/main.js", + "type": "module", + "sideEffects": false, + "source": "./src/main.ts", + "main": "./dist/main.cjs", + "module": "./dist/main.js", "types": "./dist/main.d.ts", - "react-native": "./src/main.ts", + "react-native": "./dist/main.js", + "exports": { + ".": { + "import": "./dist/main.js", + "require": "./dist/main.cjs", + "react-native": "./dist/main.js", + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "./package.json": "./package.json" + }, "files": [ - "dist/", - "src/" + "./dist/", + "./src/", + "./package.json" ], "engines": { "node": ">=18" }, "scripts": { - "build": "tsc -p tsconfig.prod.json", - "check": "yarn compile && yarn test", + "build": "vite build", + "check": "yarn compile && yarn test --run", "compile": "tsc -p tsconfig.json", "docs": "typedoc", "release": "semantic-release", - "test": "NODE_ENV=test jest", + "test": "vitest", "test:silent": "DEBUG_PRINT_LIMIT=0 yarn test", "test:verbose": "DEBUG_PRINT_LIMIT=1000000 yarn test" }, @@ -41,21 +56,20 @@ }, "devDependencies": { "@assertive-ts/core": "^2.1.0", + "@assertive-ts/sinon": "^1.0.0", "@babel/core": "^7.24.7", "@babel/preset-env": "^7.24.7", "@babel/runtime": "^7.24.7", "@lynxts/core": "workspace:^", "@react-native/babel-preset": "^0.74.85", - "@react-native/metro-config": "^0.74.85", "@testing-library/react-native": "^12.5.1", "@types/node": "^20.14.10", "@types/react": "^18.3.3", "@types/react-test-renderer": "^18.3.0", "@types/sinon": "^17.0.3", - "babel-jest": "^29.7.0", - "jest": "^29.7.0", "react": "^18.3.1", "react-native": "^0.74.3", + "react-native-testing-mocks": "^1.4.1", "react-test-renderer": "^18.3.1", "semantic-release": "^24.0.0", "semantic-release-yarn": "^3.0.2", @@ -63,6 +77,9 @@ "ts-node": "^10.9.2", "tslib": "^2.6.3", "typescript": "^5.5.3", + "vite": "^5.3.3", + "vite-plugin-dts": "^3.9.1", + "vitest": "^1.6.0", "yup": "^1.4.0" }, "peerDependencies": { diff --git a/packages/native/test/integration/lib/SubmitButton.component.test.tsx b/packages/native/test/integration/lib/SubmitButton.component.test.tsx index da2a5c0..d9d9606 100644 --- a/packages/native/test/integration/lib/SubmitButton.component.test.tsx +++ b/packages/native/test/integration/lib/SubmitButton.component.test.tsx @@ -1,45 +1,55 @@ +import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { render, userEvent, waitFor } from "@testing-library/react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { SubmitButton } from "../../../src/lib/SubmitButton.component"; import { type Foo, foo, schema } from "../../helpers/testSchema"; -describe("[Integration] SubmitButton.component.test.tsx", () => { - context("when the button is pressed", () => { - context("and the onPress callback is not set", () => { +suite("[Integration] SubmitButton.component.test.tsx", () => { + describe("when the button is pressed", () => { + describe("and the onPress callback is not set", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByText } = render( - + , ); const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); - context("and the onPress callback is set", () => { + describe("and the onPress callback is set", () => { it("submits the form and calls the onPress callback", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const spyOnPress = Sinon.spy<() => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const onPressSpy = Sinon.spy<() => void>(() => undefined); const { findByText } = render( - - + + , ); const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); - Sinon.assert.calledOnce(spyOnPress); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + expect(onPressSpy).toBeCalledOnce(); + }); }); }); }); diff --git a/packages/native/test/integration/lib/SubmitHighlight.component.test.tsx b/packages/native/test/integration/lib/SubmitHighlight.component.test.tsx index 6a62406..404453c 100644 --- a/packages/native/test/integration/lib/SubmitHighlight.component.test.tsx +++ b/packages/native/test/integration/lib/SubmitHighlight.component.test.tsx @@ -1,18 +1,20 @@ +import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { render, userEvent, waitFor } from "@testing-library/react-native"; import { Text } from "react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { SubmitHighlight } from "../../../src/lib/SubmitHighlight.component"; import { type Foo, foo, schema } from "../../helpers/testSchema"; -describe("[Integration] SubmitHighlight.component.test.tsx", () => { - context("when the button is pressed", () => { - context("and the onPress callback is not set", () => { +suite("[Integration] SubmitHighlight.component.test.tsx", () => { + describe("when the button is pressed", () => { + describe("and the onPress callback is not set", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByText } = render( - + {"Submit!"} @@ -21,19 +23,23 @@ describe("[Integration] SubmitHighlight.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); - context("and the onPress callback is set", () => { + describe("and the onPress callback is set", () => { it("submits the form and calls the onPress callback", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const spyOnPress = Sinon.spy<() => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const onPressSpy = Sinon.spy<() => void>(() => undefined); const { findByText } = render( - - + + {"Submit!"} , @@ -41,10 +47,14 @@ describe("[Integration] SubmitHighlight.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); - Sinon.assert.calledOnce(spyOnPress); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + expect(onPressSpy).toBeCalledOnce(); + }); }); }); }); diff --git a/packages/native/test/integration/lib/SubmitNativeFeedback.component.test.tsx b/packages/native/test/integration/lib/SubmitNativeFeedback.component.test.tsx index 7df1896..4d7c004 100644 --- a/packages/native/test/integration/lib/SubmitNativeFeedback.component.test.tsx +++ b/packages/native/test/integration/lib/SubmitNativeFeedback.component.test.tsx @@ -1,18 +1,20 @@ +import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { render, userEvent, waitFor } from "@testing-library/react-native"; import { Text } from "react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { SubmitNativeFeedback } from "../../../src/lib/SubmitNativeFeedback.component"; import { type Foo, foo, schema } from "../../helpers/testSchema"; -describe("[Integration] SubmitNativeFeedback.component.test.tsx", () => { - context("when the button is pressed", () => { - context("and the onPress callback is not set", () => { +suite("[Integration] SubmitNativeFeedback.component.test.tsx", () => { + describe("when the button is pressed", () => { + describe("and the onPress callback is not set", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByText } = render( - + {"Submit!"} @@ -21,19 +23,23 @@ describe("[Integration] SubmitNativeFeedback.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); - context("and the onPress callback is set", () => { + describe("and the onPress callback is set", () => { it("submits the form and calls the onPress callback", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const spyOnPress = Sinon.spy<() => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const onPressSpy = Sinon.spy<() => void>(() => undefined); const { findByText } = render( - - + + {"Submit!"} , @@ -41,10 +47,14 @@ describe("[Integration] SubmitNativeFeedback.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); - Sinon.assert.calledOnce(spyOnPress); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + expect(onPressSpy).toBeCalledOnce(); + }); }); }); }); diff --git a/packages/native/test/integration/lib/SubmitOpacity.component.test.tsx b/packages/native/test/integration/lib/SubmitOpacity.component.test.tsx index 43307b8..0842659 100644 --- a/packages/native/test/integration/lib/SubmitOpacity.component.test.tsx +++ b/packages/native/test/integration/lib/SubmitOpacity.component.test.tsx @@ -1,18 +1,20 @@ +import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { render, userEvent, waitFor } from "@testing-library/react-native"; import { Text } from "react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { SubmitOpacity } from "../../../src/lib/SubmitOpacity.component"; import { type Foo, foo, schema } from "../../helpers/testSchema"; -describe("[Integration] SubmitOpacity.component.test.tsx", () => { - context("when the button is pressed", () => { - context("and the onPress callback is not set", () => { +suite("[Integration] SubmitOpacity.component.test.tsx", () => { + describe("when the button is pressed", () => { + describe("and the onPress callback is not set", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByText } = render( - + {"Submit!"} @@ -21,19 +23,23 @@ describe("[Integration] SubmitOpacity.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); - context("and the onPress callback is set", () => { + describe("and the onPress callback is set", () => { it("submits the form and calls the onPress callback", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const spyOnPress = Sinon.spy<() => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const onPressSpy = Sinon.spy<() => void>(() => undefined); const { findByText } = render( - - + + {"Submit!"} , @@ -41,10 +47,14 @@ describe("[Integration] SubmitOpacity.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); - Sinon.assert.calledOnce(spyOnPress); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + expect(onPressSpy).toBeCalledOnce(); + }); }); }); }); diff --git a/packages/native/test/integration/lib/SubmitWithoutFeedback.component.test.tsx b/packages/native/test/integration/lib/SubmitWithoutFeedback.component.test.tsx index eee7707..c8b2704 100644 --- a/packages/native/test/integration/lib/SubmitWithoutFeedback.component.test.tsx +++ b/packages/native/test/integration/lib/SubmitWithoutFeedback.component.test.tsx @@ -1,18 +1,20 @@ +import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { render, userEvent, waitFor } from "@testing-library/react-native"; import { Text } from "react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { SubmitWithoutFeedback } from "../../../src/lib/SubmitWithoutFeedback.component"; import { type Foo, foo, schema } from "../../helpers/testSchema"; -describe("[Integration] SubmitWithoutFeedback.component.test.tsx", () => { - context("when the button is pressed", () => { - context("and the onPress callback is not set", () => { +suite("[Integration] SubmitWithoutFeedback.component.test.tsx", () => { + describe("when the button is pressed", () => { + describe("and the onPress callback is not set", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByText } = render( - + {"Submit!"} @@ -21,19 +23,23 @@ describe("[Integration] SubmitWithoutFeedback.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); - context("and the onPress callback is set", () => { + describe("and the onPress callback is set", () => { it("submits the form and calls the onPress callback", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const spyOnPress = Sinon.spy<() => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const onPressSpy = Sinon.spy<() => void>(() => undefined); const { findByText } = render( - - + + {"Submit!"} , @@ -41,10 +47,14 @@ describe("[Integration] SubmitWithoutFeedback.component.test.tsx", () => { const submit = await findByText("Submit!"); - await waitFor(() => fireEvent.press(submit)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); - Sinon.assert.calledOnce(spyOnPress); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + expect(onPressSpy).toBeCalledOnce(); + }); }); }); }); diff --git a/packages/native/test/integration/lib/fields/TextField.component.test.tsx b/packages/native/test/integration/lib/fields/TextField.component.test.tsx index e4d8301..de03d69 100644 --- a/packages/native/test/integration/lib/fields/TextField.component.test.tsx +++ b/packages/native/test/integration/lib/fields/TextField.component.test.tsx @@ -1,9 +1,10 @@ import { expect } from "@assertive-ts/core"; import { FormProvider } from "@lynxts/core"; -import { fireEvent, render, waitFor } from "@testing-library/react-native"; +import { fireEvent, render, userEvent, waitFor } from "@testing-library/react-native"; import { type ReactElement, useCallback, useState } from "react"; import { Button } from "react-native"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, object, string } from "yup"; import { SubmitButton } from "../../../../src/lib/SubmitButton.component"; @@ -42,27 +43,31 @@ function TestForm({ onSubmit = Sinon.fake }: TestFormProps): ReactElement { ); } -describe("[Integration] TextField.component.test.tsx", () => { - context("when the text field changes", () => { +suite("[Integration] TextField.component.test.tsx", () => { + describe("when the text field changes", () => { it("sets the new value in the form context", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const { findByLabelText, getByDisplayValue, findByRole } = render(); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const { findByLabelText, getByDisplayValue, findByRole } = render(); const nameField = await findByLabelText("Name: *"); - await waitFor(() => fireEvent.changeText(nameField, "bar")); + await userEvent.type(nameField, "bar"); await waitFor(() => getByDisplayValue("bar")); const submitButton = await findByRole("button", { name: "Submit!" }); - await waitFor(() => fireEvent.press(submitButton)); + await userEvent.press(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "bar", other: "5" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "bar", other: "5" }); + }); }); }); - context("when the field looses focus", () => { + describe("when the field looses focus", () => { it("sets the field as touched", async () => { const { findByLabelText, queryByText, getByText } = render(); @@ -76,10 +81,10 @@ describe("[Integration] TextField.component.test.tsx", () => { }); }); - context("when the form context value changes", () => { + describe("when the form context value changes", () => { it("changes the text field value", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const { queryByDisplayValue, findByRole, getByDisplayValue } = render(); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const { queryByDisplayValue, findByRole, getByDisplayValue } = render(); await waitFor(() => { expect(queryByDisplayValue("foo")).toBeNull(); @@ -87,19 +92,23 @@ describe("[Integration] TextField.component.test.tsx", () => { const updateButton = await findByRole("button", { name: "Update!" }); - await waitFor(() => fireEvent.press(updateButton)); + await userEvent.press(updateButton); await waitFor(() => getByDisplayValue("foo")); - const submitButton = await findByRole("button", { name: "Submit!" }); + const submit = await findByRole("button", { name: "Submit!" }); - await waitFor(() => fireEvent.press(submitButton)); + await userEvent.press(submit); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: "10" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: "10" }); + }); }); }); - context("when the label prop is omitted", () => { + describe("when the label prop is omitted", () => { it("does not render a label on the field", async () => { const { getByPlaceholderText, queryByText } = render( onSubmit={Sinon.fake} validation={schema}> @@ -113,8 +122,8 @@ describe("[Integration] TextField.component.test.tsx", () => { }); }); - context("when the requiredText prop is changed", () => { - context("and the required text is not empty", () => { + describe("when the requiredText prop is changed", () => { + describe("and the required text is not empty", () => { it("uses the text instead of the asterisk", async () => { const { getByLabelText } = render( onSubmit={Sinon.fake} validation={schema}> @@ -130,7 +139,7 @@ describe("[Integration] TextField.component.test.tsx", () => { }); }); - context("and the required text is empty", () => { + describe("and the required text is empty", () => { it("does not show the required text", async () => { const { getByLabelText } = render( onSubmit={Sinon.fake} validation={schema}> @@ -147,24 +156,28 @@ describe("[Integration] TextField.component.test.tsx", () => { }); }); - context("when the keyboard submit is pressed", () => { + describe("when the keyboard submit is pressed", () => { it("submits the form", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { findByLabelText, getByDisplayValue } = render( - onSubmit={spySubmit} validation={schema}> + onSubmit={submitSpy} validation={schema}> , ); const textField = await findByLabelText("Name: *"); - await waitFor(() => fireEvent.changeText(textField, "foo")); + await userEvent.type(textField, "foo"); await waitFor(() => getByDisplayValue("foo")); await waitFor(() => fireEvent(textField, "submitEditing")); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo" }); + }); }); }); }); diff --git a/packages/native/test/integration/main.test.ts b/packages/native/test/integration/main.test.ts index 08c8cf0..be9f2e4 100644 --- a/packages/native/test/integration/main.test.ts +++ b/packages/native/test/integration/main.test.ts @@ -1,9 +1,10 @@ import { expect } from "@assertive-ts/core"; +import { it, suite } from "vitest"; // eslint-disable-next-line import/no-namespace import * as native from "../../src/main"; -describe("[Integration] main.test.ts", () => { +suite("[Integration] main.test.ts", () => { it("re-exports the library exports", () => { expect(native).toHaveKeys( "SubmitButton", diff --git a/packages/native/test/setup.ts b/packages/native/test/setup.ts index 1e08efb..e1b6e03 100644 --- a/packages/native/test/setup.ts +++ b/packages/native/test/setup.ts @@ -1,10 +1,28 @@ -import { afterEach, describe, it } from "@jest/globals"; +import { usePlugin } from "@assertive-ts/core"; +import { SinonPlugin } from "@assertive-ts/sinon"; +import { cleanup, userEvent } from "@testing-library/react-native"; import Sinon from "sinon"; +import { afterEach, beforeEach } from "vitest"; -global.context = describe; -global.describe = describe; -global.it = it; +process.env.RNTL_SKIP_AUTO_DETECT_FAKE_TIMERS = "true"; + +const newUserEvent = userEvent.setup({ + advanceTimers: delay => Sinon.clock.tickAsync(delay).then(), + delay: 0, +}); + +Object.assign(userEvent, newUserEvent); + +usePlugin(SinonPlugin); + +beforeEach(() => { + Sinon.useFakeTimers({ + advanceTimeDelta: 0, + shouldAdvanceTime: true, + }); +}); afterEach(() => { + cleanup(); Sinon.restore(); }); diff --git a/packages/native/tsconfig.json b/packages/native/tsconfig.json index 6061e35..91a1db8 100644 --- a/packages/native/tsconfig.json +++ b/packages/native/tsconfig.json @@ -3,21 +3,12 @@ "compilerOptions": { "outDir": "./build", "typeRoots": [ - "../../node_modules/@types/", - "./typings/" - ], - "target": "ESNext", - // Jest and Mocha types conflict with eachother. - // Check: https://github.com/microsoft/TypeScript/issues/18588#issuecomment-704482601 - "types": [ - "node", - "react", - "react-test-renderer", - "sinon" + "../../node_modules/@types", + "./typings" ] }, "exclude": [ - "build/*", - "dist/*" + "build/**", + "dist/**" ] } diff --git a/packages/native/tsconfig.prod.json b/packages/native/tsconfig.prod.json deleted file mode 100644 index b79d8a1..0000000 --- a/packages/native/tsconfig.prod.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "incremental": false, - "outDir": "./dist" - }, - "include": [ - "src/**/*", - "typings/**/*" - ] -} diff --git a/packages/native/vite.config.ts b/packages/native/vite.config.ts new file mode 100644 index 0000000..2560f22 --- /dev/null +++ b/packages/native/vite.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +export default defineConfig({ + build: { + lib: { + entry: "./src/main.ts", + fileName: "main", + formats: ["cjs", "es"], + }, + rollupOptions: { + output: { + exports: "named", + preserveModules: true, + }, + }, + sourcemap: true, + ssr: true, + }, + plugins: [ + dts({ + compilerOptions: { + emitDeclarationOnly: true, + incremental: false, + }, + include: ["src/**", "typings/**"], + }), + ], +}); diff --git a/packages/native/vitest.config.ts b/packages/native/vitest.config.ts new file mode 100644 index 0000000..0fd10e9 --- /dev/null +++ b/packages/native/vitest.config.ts @@ -0,0 +1,10 @@ +import { reactNativeVitestPlugin } from "react-native-testing-mocks/vitest"; +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + plugins: [reactNativeVitestPlugin()], + test: { + include: ["test/**/*.test.ts?(x)"], + setupFiles: "./test/setup.ts", + }, +}); diff --git a/packages/web/docs/interfaces/FormProps.md b/packages/web/docs/interfaces/FormProps.md index 45d5f5f..890327a 100644 --- a/packages/web/docs/interfaces/FormProps.md +++ b/packages/web/docs/interfaces/FormProps.md @@ -110,7 +110,7 @@ node\_modules/@types/react/index.d.ts:2595 ### aria-autocomplete? -> `optional` **aria-autocomplete**: `"list"` \| `"none"` \| `"inline"` \| `"both"` +> `optional` **aria-autocomplete**: `"inline"` \| `"none"` \| `"list"` \| `"both"` Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. @@ -401,7 +401,7 @@ node\_modules/@types/react/index.d.ts:2664 ### ~~aria-dropeffect?~~ -> `optional` **aria-dropeffect**: `"link"` \| `"none"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` +> `optional` **aria-dropeffect**: `"none"` \| `"link"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` Indicates what functions can be performed when a dragged object is released on the drop target. @@ -1143,7 +1143,7 @@ returns a React.js node. #### Defined in -packages/core/dist/lib/Form.provider.d.ts:87 +packages/core/dist/lib/Form.provider.d.ts:88 *** @@ -1363,7 +1363,7 @@ node\_modules/@types/react/index.d.ts:2923 ### inputMode? -> `optional` **inputMode**: `"search"` \| `"text"` \| `"none"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` +> `optional` **inputMode**: `"none"` \| `"search"` \| `"text"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` Hints at the type of data that might be entered by the user while editing the element or its contents @@ -3513,7 +3513,7 @@ the validated values `T` of the form #### Defined in -packages/core/dist/lib/Form.provider.d.ts:93 +packages/core/dist/lib/Form.provider.d.ts:94 *** @@ -4130,7 +4130,7 @@ tells the form and the hooks how to handle the validation. #### Defined in -packages/core/dist/lib/Form.provider.d.ts:102 +packages/core/dist/lib/Form.provider.d.ts:103 *** @@ -4147,7 +4147,7 @@ the field values as well. #### Defined in -packages/core/dist/lib/Form.provider.d.ts:107 +packages/core/dist/lib/Form.provider.d.ts:108 *** diff --git a/packages/web/docs/interfaces/InputProps.md b/packages/web/docs/interfaces/InputProps.md index 212544f..a6d2402 100644 --- a/packages/web/docs/interfaces/InputProps.md +++ b/packages/web/docs/interfaces/InputProps.md @@ -111,7 +111,7 @@ node\_modules/@types/react/index.d.ts:2595 ### aria-autocomplete? -> `optional` **aria-autocomplete**: `"list"` \| `"none"` \| `"inline"` \| `"both"` +> `optional` **aria-autocomplete**: `"inline"` \| `"none"` \| `"list"` \| `"both"` Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. @@ -402,7 +402,7 @@ node\_modules/@types/react/index.d.ts:2664 ### ~~aria-dropeffect?~~ -> `optional` **aria-dropeffect**: `"link"` \| `"none"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` +> `optional` **aria-dropeffect**: `"none"` \| `"link"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` Indicates what functions can be performed when a dragged object is released on the drop target. @@ -1132,7 +1132,7 @@ node\_modules/@types/react/index.d.ts:2935 ### capture? -> `optional` **capture**: `boolean` \| `"user"` \| `"environment"` +> `optional` **capture**: `boolean` \| `"environment"` \| `"user"` #### Inherited from @@ -1518,7 +1518,7 @@ node\_modules/@types/react/index.d.ts:2923 ### inputMode? -> `optional` **inputMode**: `"search"` \| `"text"` \| `"none"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` +> `optional` **inputMode**: `"none"` \| `"search"` \| `"text"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` Hints at the type of data that might be entered by the user while editing the element or its contents diff --git a/packages/web/docs/interfaces/SelectProps.md b/packages/web/docs/interfaces/SelectProps.md index 612132f..6a7398e 100644 --- a/packages/web/docs/interfaces/SelectProps.md +++ b/packages/web/docs/interfaces/SelectProps.md @@ -87,7 +87,7 @@ node\_modules/@types/react/index.d.ts:2595 ### aria-autocomplete? -> `optional` **aria-autocomplete**: `"list"` \| `"none"` \| `"inline"` \| `"both"` +> `optional` **aria-autocomplete**: `"inline"` \| `"none"` \| `"list"` \| `"both"` Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. @@ -378,7 +378,7 @@ node\_modules/@types/react/index.d.ts:2664 ### ~~aria-dropeffect?~~ -> `optional` **aria-dropeffect**: `"link"` \| `"none"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` +> `optional` **aria-dropeffect**: `"none"` \| `"link"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` Indicates what functions can be performed when a dragged object is released on the drop target. @@ -1327,7 +1327,7 @@ node\_modules/@types/react/index.d.ts:2923 ### inputMode? -> `optional` **inputMode**: `"search"` \| `"text"` \| `"none"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` +> `optional` **inputMode**: `"none"` \| `"search"` \| `"text"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` Hints at the type of data that might be entered by the user while editing the element or its contents diff --git a/packages/web/docs/interfaces/TextareaProps.md b/packages/web/docs/interfaces/TextareaProps.md index 6d81f65..952a191 100644 --- a/packages/web/docs/interfaces/TextareaProps.md +++ b/packages/web/docs/interfaces/TextareaProps.md @@ -83,7 +83,7 @@ node\_modules/@types/react/index.d.ts:2595 ### aria-autocomplete? -> `optional` **aria-autocomplete**: `"list"` \| `"none"` \| `"inline"` \| `"both"` +> `optional` **aria-autocomplete**: `"inline"` \| `"none"` \| `"list"` \| `"both"` Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. @@ -374,7 +374,7 @@ node\_modules/@types/react/index.d.ts:2664 ### ~~aria-dropeffect?~~ -> `optional` **aria-dropeffect**: `"link"` \| `"none"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` +> `optional` **aria-dropeffect**: `"none"` \| `"link"` \| `"copy"` \| `"execute"` \| `"move"` \| `"popup"` Indicates what functions can be performed when a dragged object is released on the drop target. @@ -1393,7 +1393,7 @@ node\_modules/@types/react/index.d.ts:2923 ### inputMode? -> `optional` **inputMode**: `"search"` \| `"text"` \| `"none"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` +> `optional` **inputMode**: `"none"` \| `"search"` \| `"text"` \| `"tel"` \| `"url"` \| `"email"` \| `"numeric"` \| `"decimal"` Hints at the type of data that might be entered by the user while editing the element or its contents diff --git a/packages/web/package.json b/packages/web/package.json index 045ba06..413c8ff 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -15,22 +15,36 @@ "yup", "zod" ], - "main": "./dist/main.js", + "type": "module", + "sideEffects": false, + "source": "./src/main.ts", + "main": "./dist/main.cjs", + "module": "./dist/main.js", "types": "./dist/main.d.ts", + "exports": { + ".": { + "import": "./dist/main.js", + "require": "./dist/main.cjs", + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "./package.json": "./package.json" + }, "files": [ - "dist/", - "src/" + "./dist/", + "./src/", + "./package.json" ], "engines": { "node": ">=18" }, "scripts": { - "build": "tsc -p tsconfig.prod.json", - "check": "yarn compile && yarn test", + "build": "vite build", + "check": "yarn compile && yarn test --run", "compile": "tsc -p tsconfig.json", "docs": "typedoc", "release": "semantic-release", - "test": "NODE_ENV=test mocha", + "test": "vitest", "test:silent": "DEBUG_PRINT_LIMIT=0 yarn test", "test:verbose": "DEBUG_PRINT_LIMIT=1000000 yarn test" }, @@ -40,17 +54,15 @@ }, "devDependencies": { "@assertive-ts/core": "^2.1.0", + "@assertive-ts/sinon": "^1.0.0", "@lynxts/core": "workspace:^", "@testing-library/dom": "^10.3.1", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", - "@types/mocha": "^10.0.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@types/sinon": "^17.0.3", - "jsdom": "^24.1.0", - "jsdom-global": "^3.0.2", - "mocha": "^10.6.0", + "happy-dom": "^14.12.3", "react": "^18.3.1", "react-dom": "^18.3.1", "semantic-release": "^24.0.0", @@ -58,6 +70,9 @@ "sinon": "^18.0.0", "tslib": "^2.6.3", "typescript": "^5.5.3", + "vite": "^5.3.3", + "vite-plugin-dts": "^3.9.1", + "vitest": "^1.6.0", "yup": "^1.4.0" }, "peerDependencies": { diff --git a/packages/web/test/hooks.ts b/packages/web/test/hooks.ts deleted file mode 100644 index d61d09a..0000000 --- a/packages/web/test/hooks.ts +++ /dev/null @@ -1,9 +0,0 @@ -import Sinon from "sinon"; - -export const mochaHooks: () => Mocha.RootHookObject = () => { - return { - afterEach: () => { - Sinon.restore(); - }, - }; -}; diff --git a/packages/web/test/integration/lib/Form.component.test.tsx b/packages/web/test/integration/lib/Form.component.test.tsx index f5f731a..690bd6b 100644 --- a/packages/web/test/integration/lib/Form.component.test.tsx +++ b/packages/web/test/integration/lib/Form.component.test.tsx @@ -1,6 +1,8 @@ +import { expect } from "@assertive-ts/core"; import { render, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, number, object, string } from "yup"; import { Form } from "../../../src/lib/Form.component"; @@ -15,14 +17,14 @@ const schema: ObjectSchema = object({ other: number().required(), }); -describe("[Integration] Form.component.test.tsx", () => { - context("when the From component is rendered", () => { +suite("[Integration] Form.component.test.tsx", () => { + describe("when the From component is rendered", () => { it("renders a FormProvider children wrapped around a
element", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); const { getByText, findByRole } = render( @@ -47,7 +49,11 @@ describe("[Integration] Form.component.test.tsx", () => { await userEvent.click(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo", other: 5 }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo", other: 5 }); + }); }); }); }); diff --git a/packages/web/test/integration/lib/fields/Input.component.test.tsx b/packages/web/test/integration/lib/fields/Input.component.test.tsx index 5785e26..d3df741 100644 --- a/packages/web/test/integration/lib/fields/Input.component.test.tsx +++ b/packages/web/test/integration/lib/fields/Input.component.test.tsx @@ -3,6 +3,7 @@ import { fireEvent, render, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { type ReactElement, useCallback, useState } from "react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, object, string } from "yup"; import { Form } from "../../../../src/lib/Form.component"; @@ -42,11 +43,11 @@ function TestForm({ onSubmit = Sinon.fake }: TestFormProps): ReactElement { ); } -describe("[Integration] Input.component.test.tsx", () => { - context("when the input changes", () => { +suite("[Integration] Input.component.test.tsx", () => { + describe("when the input changes", () => { it("sets the new value in the form context", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const { findByRole } = render(); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const { findByRole } = render(); const nameInput = await findByRole("textbox", { name: "Name: *" }); @@ -56,11 +57,15 @@ describe("[Integration] Input.component.test.tsx", () => { await userEvent.click(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo" }); + }); }); }); - context("when the field looses focus", () => { + describe("when the field looses focus", () => { it("sets the field as touched", async () => { const { findByRole, queryByText, getByText } = render(); @@ -74,7 +79,7 @@ describe("[Integration] Input.component.test.tsx", () => { }); }); - context("when the form context value changes", () => { + describe("when the form context value changes", () => { it("changes the input value", async () => { const { queryByDisplayValue, findByRole, getByDisplayValue } = render(); @@ -94,7 +99,7 @@ describe("[Integration] Input.component.test.tsx", () => { }); }); - context("when the label prop is omitted", () => { + describe("when the label prop is omitted", () => { it("does not render a label on the field", async () => { const { getByRole, queryByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -108,8 +113,8 @@ describe("[Integration] Input.component.test.tsx", () => { }); }); - context("when the requiredText prop is changed", () => { - context("and the required text is not empty", () => { + describe("when the requiredText prop is changed", () => { + describe("and the required text is not empty", () => { it("uses the text instead of the asterisk", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -125,7 +130,7 @@ describe("[Integration] Input.component.test.tsx", () => { }); }); - context("and the required text is empty", () => { + describe("and the required text is empty", () => { it("does not show the required text", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> diff --git a/packages/web/test/integration/lib/fields/Select.component.test.tsx b/packages/web/test/integration/lib/fields/Select.component.test.tsx index f96279b..324e55b 100644 --- a/packages/web/test/integration/lib/fields/Select.component.test.tsx +++ b/packages/web/test/integration/lib/fields/Select.component.test.tsx @@ -3,6 +3,7 @@ import { fireEvent, render, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { type ReactElement, useCallback, useState } from "react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, object, string } from "yup"; import { Form } from "../../../../src/lib/Form.component"; @@ -63,11 +64,11 @@ function TestForm({ onSubmit = Sinon.fake }: TestFormProps): ReactElement { ); } -describe("[Integration] Select.component.test.tsx", () => { - context("when the select option changes", () => { +suite("[Integration] Select.component.test.tsx", () => { + describe("when the select option changes", () => { it("sets the new value in the form context", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const { findByRole } = render(); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const { findByRole } = render(); const osSelect = await findByRole("combobox", { name: "OS: *" }); @@ -77,11 +78,15 @@ describe("[Integration] Select.component.test.tsx", () => { await userEvent.click(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { os: "win" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ os: "win" }); + }); }); }); - context("when the field looses focus", () => { + describe("when the field looses focus", () => { it("sets the field as touched", async () => { const { findByRole, queryByText, getByText } = render(); @@ -95,7 +100,7 @@ describe("[Integration] Select.component.test.tsx", () => { }); }); - context("when the form context value changes", () => { + describe("when the form context value changes", () => { it("changes the input value", async () => { const { getAllByDisplayValue, queryByDisplayValue, findByRole, getByDisplayValue } = render(); @@ -116,7 +121,7 @@ describe("[Integration] Select.component.test.tsx", () => { }); }); - context("when the label prop is omitted", () => { + describe("when the label prop is omitted", () => { it("does not render a label on the field", async () => { const { getByRole, queryByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -130,8 +135,8 @@ describe("[Integration] Select.component.test.tsx", () => { }); }); - context("when the requiredText prop is changed", () => { - context("and the required text is not empty", () => { + describe("when the requiredText prop is changed", () => { + describe("and the required text is not empty", () => { it("uses the text instead of the asterisk", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -147,7 +152,7 @@ describe("[Integration] Select.component.test.tsx", () => { }); }); - context("and the reuired text is empty", () => { + describe("and the reuired text is empty", () => { it("does not show the required superscript", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> diff --git a/packages/web/test/integration/lib/fields/Textarea.component.test.tsx b/packages/web/test/integration/lib/fields/Textarea.component.test.tsx index ce5f86f..8f8c58d 100644 --- a/packages/web/test/integration/lib/fields/Textarea.component.test.tsx +++ b/packages/web/test/integration/lib/fields/Textarea.component.test.tsx @@ -3,6 +3,7 @@ import { fireEvent, render, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { type ReactElement, useCallback, useState } from "react"; import Sinon from "sinon"; +import { describe, it, suite } from "vitest"; import { type ObjectSchema, object, string } from "yup"; import { Form } from "../../../../src/lib/Form.component"; @@ -45,11 +46,11 @@ function TestForm({ onSubmit = Sinon.fake }: TestFormProps): ReactElement { ); } -describe("[Integration] Textarea.component.test.tsx", () => { - context("when the textarea changes", () => { +suite("[Integration] Textarea.component.test.tsx", () => { + describe("when the textarea changes", () => { it("sets the new value in the form context", async () => { - const spySubmit = Sinon.spy<(values: Foo) => void>(() => undefined); - const { findByRole } = render(); + const submitSpy = Sinon.spy<(values: Foo) => void>(() => undefined); + const { findByRole } = render(); const nameTextarea = await findByRole("textbox", { name: "Name: *" }); @@ -59,11 +60,15 @@ describe("[Integration] Textarea.component.test.tsx", () => { await userEvent.click(submitButton); - Sinon.assert.calledOnceWithExactly(spySubmit, { name: "foo" }); + await waitFor(() => { + expect(submitSpy) + .toBeCalledOnce() + .toHaveArgs({ name: "foo" }); + }); }); }); - context("when the field looses focus", () => { + describe("when the field looses focus", () => { it("sets the field as touched", async () => { const { findByRole, queryByText, getByText } = render(); @@ -77,7 +82,7 @@ describe("[Integration] Textarea.component.test.tsx", () => { }); }); - context("when the form context value changes", () => { + describe("when the form context value changes", () => { it("changes the textarea value", async () => { const { queryByDisplayValue, findByRole, getByDisplayValue } = render(); @@ -97,7 +102,7 @@ describe("[Integration] Textarea.component.test.tsx", () => { }); }); - context("when the label prop is omitted", () => { + describe("when the label prop is omitted", () => { it("does not render a label on the field", async () => { const { getByRole, queryByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -111,8 +116,8 @@ describe("[Integration] Textarea.component.test.tsx", () => { }); }); - context("when the requiredText prop is changed", () => { - context("and the required text is not empty", () => { + describe("when the requiredText prop is changed", () => { + describe("and the required text is not empty", () => { it("uses the text instead of the asterisk", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> @@ -128,7 +133,7 @@ describe("[Integration] Textarea.component.test.tsx", () => { }); }); - context("and the reuired text is empty", () => { + describe("and the reuired text is empty", () => { it("does not show the required superscript", async () => { const { getByRole } = render( onSubmit={Sinon.fake} validation={schema}> diff --git a/packages/web/test/integration/main.test.ts b/packages/web/test/integration/main.test.ts index bc90f59..1d808dd 100644 --- a/packages/web/test/integration/main.test.ts +++ b/packages/web/test/integration/main.test.ts @@ -1,6 +1,7 @@ import { expect } from "@assertive-ts/core"; +import { it, suite } from "vitest"; -describe("[Integration] main.test.ts", () => { +suite("[Integration] main.test.ts", () => { it("re-exports the library exports", async () => { const web = await expect(import("../../src/main")).toBeResolved(); diff --git a/packages/web/test/setup.ts b/packages/web/test/setup.ts new file mode 100644 index 0000000..e2a4ea9 --- /dev/null +++ b/packages/web/test/setup.ts @@ -0,0 +1,29 @@ +import { usePlugin } from "@assertive-ts/core"; +import { SinonPlugin } from "@assertive-ts/sinon"; +import { cleanup } from "@testing-library/react"; +import { userEvent } from "@testing-library/user-event"; +import Sinon from "sinon"; +import { afterEach, beforeEach } from "vitest"; + +process.env.RNTL_SKIP_AUTO_DETECT_FAKE_TIMERS = "true"; + +const newUserEvent = userEvent.setup({ + advanceTimers: delay => Sinon.clock.tickAsync(delay).then(), + delay: 0, +}); + +Object.assign(userEvent, newUserEvent); + +usePlugin(SinonPlugin); + +beforeEach(() => { + Sinon.useFakeTimers({ + advanceTimeDelta: 0, + shouldAdvanceTime: true, + }); +}); + +afterEach(() => { + cleanup(); + Sinon.restore(); +}); diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index 0329369..91a1db8 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -3,12 +3,12 @@ "compilerOptions": { "outDir": "./build", "typeRoots": [ - "../../node_modules/@types/", - "./typings/" + "../../node_modules/@types", + "./typings" ] }, "exclude": [ - "build/*", - "dist/*" + "build/**", + "dist/**" ] } diff --git a/packages/web/tsconfig.prod.json b/packages/web/tsconfig.prod.json deleted file mode 100644 index b79d8a1..0000000 --- a/packages/web/tsconfig.prod.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "incremental": false, - "outDir": "./dist" - }, - "include": [ - "src/**/*", - "typings/**/*" - ] -} diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts new file mode 100644 index 0000000..2560f22 --- /dev/null +++ b/packages/web/vite.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +export default defineConfig({ + build: { + lib: { + entry: "./src/main.ts", + fileName: "main", + formats: ["cjs", "es"], + }, + rollupOptions: { + output: { + exports: "named", + preserveModules: true, + }, + }, + sourcemap: true, + ssr: true, + }, + plugins: [ + dts({ + compilerOptions: { + emitDeclarationOnly: true, + incremental: false, + }, + include: ["src/**", "typings/**"], + }), + ], +}); diff --git a/packages/web/vitest.config.ts b/packages/web/vitest.config.ts new file mode 100644 index 0000000..bc634c9 --- /dev/null +++ b/packages/web/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "happy-dom", + include: ["test/**/*.test.ts?(x)"], + setupFiles: "./test/setup.ts", + }, +}); diff --git a/tsconfig.json b/tsconfig.json index 45d8b80..51b6940 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,10 +6,11 @@ "esModuleInterop": true, "importHelpers": true, "incremental": true, + "isolatedModules": true, "jsx": "react-jsx", "lib": ["DOM", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023"], - "module": "CommonJS", - "moduleResolution": "Node", + "module": "ES2022", + "moduleResolution": "Bundler", "noImplicitReturns": true, "noUncheckedIndexedAccess": true, "noUnusedLocals": true, @@ -20,17 +21,15 @@ "skipLibCheck": true, "sourceMap": true, "strict": true, - "target": "ES6", - "typeRoots" : [ - "./node_modules/@types/" - ], + "target": "ES2022", + "useDefineForClassFields": true, + "useUnknownInCatchVariables": true, + "verbatimModuleSyntax": true }, "exclude": [ - ".yarn/*", - "node_modules/*", - ], - "ts-node": { - "transpileOnly": true, - "files": true - } + ".yarn/**", + "build/**", + "dist/**", + "node_modules/**", + ] } diff --git a/yarn.lock b/yarn.lock index ac61aa0..e10dcaa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,6 +25,23 @@ __metadata: languageName: node linkType: hard +"@assertive-ts/sinon@npm:^1.0.0": + version: 1.0.0 + resolution: "@assertive-ts/sinon@npm:1.0.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + "@assertive-ts/core": ">=2.0.0" + sinon: ">=15.2.0" + peerDependenciesMeta: + "@assertive-ts/core": + optional: false + sinon: + optional: true + checksum: 10/89279083bde7fc4aec2708c71bf18d25430c8a39b5eb48dcc8a3ffb358c7145ae5e26b1f08e08ac033350de2c56abaa88a51f3991849dd36016c3c33e36f5c0d + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.24.7": version: 7.24.7 resolution: "@babel/code-frame@npm:7.24.7" @@ -42,7 +59,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.7": +"@babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0, @babel/core@npm:^7.24.7": version: 7.24.7 resolution: "@babel/core@npm:7.24.7" dependencies: @@ -65,7 +82,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.24.7, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/generator@npm:7.24.7" dependencies: @@ -345,7 +362,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.7": +"@babel/parser@npm:^7.13.16, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.24.7": version: 7.24.7 resolution: "@babel/parser@npm:7.24.7" bin: @@ -536,18 +553,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -635,7 +641,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -657,7 +663,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.24.7, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" dependencies: @@ -668,7 +674,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -690,7 +696,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -745,7 +751,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: @@ -756,7 +762,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" dependencies: @@ -1580,7 +1586,7 @@ __metadata: languageName: node linkType: hard -"@babel/register@npm:^7.13.16": +"@babel/register@npm:^7.13.16, @babel/register@npm:^7.24.6": version: 7.24.6 resolution: "@babel/register@npm:7.24.6" dependencies: @@ -1611,7 +1617,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.0.0, @babel/template@npm:^7.24.7, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.0.0, @babel/template@npm:^7.24.7": version: 7.24.7 resolution: "@babel/template@npm:7.24.7" dependencies: @@ -1640,7 +1646,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": +"@babel/types@npm:^7.20.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.24.7 resolution: "@babel/types@npm:7.24.7" dependencies: @@ -1651,13 +1657,6 @@ __metadata: languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d - languageName: node - linkType: hard - "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -1688,6 +1687,167 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -1813,81 +1973,6 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 10/b000a5acd8d4fe6e34e25c399c8bdbb5d3a202b4e10416e17bfc25e12bab90bb56d33db6089ae30569b52686f4b35ff28ef26e88e21e69821d2b85884bd055b8 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b - languageName: node - linkType: hard - -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/reporters": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.7.0" - jest-config: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-resolve-dependencies: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e - languageName: node - linkType: hard - "@jest/create-cache-key-function@npm:^29.6.3": version: 29.7.0 resolution: "@jest/create-cache-key-function@npm:29.7.0" @@ -1909,25 +1994,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 10/ef8d379778ef574a17bde2801a6f4469f8022a46a5f9e385191dc73bb1fc318996beaed4513fbd7055c2847227a1bed2469977821866534593a6e52a281499ee - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 - languageName: node - linkType: hard - "@jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -1942,55 +2008,6 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -2000,64 +2017,6 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^4.0.2" - checksum: 10/30f42293545ab037d5799c81d3e12515790bb58513d37f788ce32d53326d0d72ebf5b40f989e6896739aa50a5f77be44686e510966370d58511d5ad2637c68c1 - languageName: node - linkType: hard - "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -2120,7 +2079,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 @@ -2137,7 +2096,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2168,19 +2127,16 @@ __metadata: resolution: "@lynxts/core@workspace:packages/core" dependencies: "@assertive-ts/core": "npm:^2.1.0" + "@assertive-ts/sinon": "npm:^1.0.0" "@lukeed/uuid": "npm:^2.0.1" "@testing-library/dom": "npm:^10.3.1" "@testing-library/react": "npm:^16.0.0" "@testing-library/user-event": "npm:^14.5.2" - "@types/mocha": "npm:^10.0.7" "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" "@types/sinon": "npm:^17.0.3" dot-prop-immutable: "npm:^2.1.1" - expect-type: "npm:^0.19.0" - jsdom: "npm:^24.1.0" - jsdom-global: "npm:^3.0.2" - mocha: "npm:^10.6.0" + happy-dom: "npm:^14.12.3" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" scheduler: "npm:^0.23.2" @@ -2190,6 +2146,9 @@ __metadata: tslib: "npm:^2.6.3" typescript: "npm:^5.5.3" use-context-selector: "npm:^2.0.0" + vite: "npm:^5.3.3" + vite-plugin-dts: "npm:^3.9.1" + vitest: "npm:^1.6.0" yup: "npm:^1.4.0" zod: "npm:^3.23.8" peerDependencies: @@ -2216,22 +2175,21 @@ __metadata: resolution: "@lynxts/native@workspace:packages/native" dependencies: "@assertive-ts/core": "npm:^2.1.0" + "@assertive-ts/sinon": "npm:^1.0.0" "@babel/core": "npm:^7.24.7" "@babel/preset-env": "npm:^7.24.7" "@babel/runtime": "npm:^7.24.7" "@lynxts/core": "workspace:^" "@react-native/babel-preset": "npm:^0.74.85" - "@react-native/metro-config": "npm:^0.74.85" "@testing-library/react-native": "npm:^12.5.1" "@types/node": "npm:^20.14.10" "@types/react": "npm:^18.3.3" "@types/react-test-renderer": "npm:^18.3.0" "@types/sinon": "npm:^17.0.3" - babel-jest: "npm:^29.7.0" - jest: "npm:^29.7.0" react: "npm:^18.3.1" react-fast-compare: "npm:^3.2.2" react-native: "npm:^0.74.3" + react-native-testing-mocks: "npm:^1.4.1" react-test-renderer: "npm:^18.3.1" semantic-release: "npm:^24.0.0" semantic-release-yarn: "npm:^3.0.2" @@ -2239,6 +2197,9 @@ __metadata: ts-node: "npm:^10.9.2" tslib: "npm:^2.6.3" typescript: "npm:^5.5.3" + vite: "npm:^5.3.3" + vite-plugin-dts: "npm:^3.9.1" + vitest: "npm:^1.6.0" yup: "npm:^1.4.0" peerDependencies: "@lynxts/core": ">=1.0.0" @@ -2259,17 +2220,15 @@ __metadata: resolution: "@lynxts/web@workspace:packages/web" dependencies: "@assertive-ts/core": "npm:^2.1.0" + "@assertive-ts/sinon": "npm:^1.0.0" "@lynxts/core": "workspace:^" "@testing-library/dom": "npm:^10.3.1" "@testing-library/react": "npm:^16.0.0" "@testing-library/user-event": "npm:^14.5.2" - "@types/mocha": "npm:^10.0.7" "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" "@types/sinon": "npm:^17.0.3" - jsdom: "npm:^24.1.0" - jsdom-global: "npm:^3.0.2" - mocha: "npm:^10.6.0" + happy-dom: "npm:^14.12.3" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" react-fast-compare: "npm:^3.2.2" @@ -2278,6 +2237,9 @@ __metadata: sinon: "npm:^18.0.0" tslib: "npm:^2.6.3" typescript: "npm:^5.5.3" + vite: "npm:^5.3.3" + vite-plugin-dts: "npm:^3.9.1" + vitest: "npm:^1.6.0" yup: "npm:^1.4.0" peerDependencies: "@lynxts/core": ">=1.0.0" @@ -2293,6 +2255,59 @@ __metadata: languageName: unknown linkType: soft +"@microsoft/api-extractor-model@npm:7.28.13": + version: 7.28.13 + resolution: "@microsoft/api-extractor-model@npm:7.28.13" + dependencies: + "@microsoft/tsdoc": "npm:0.14.2" + "@microsoft/tsdoc-config": "npm:~0.16.1" + "@rushstack/node-core-library": "npm:4.0.2" + checksum: 10/af1d0457d76b909ac870c7c895caf773a3348312d8c308f73bf160c8b85ab6c0be6ed6c5568a5ee5ccedf29ee1b6826af0bb241264b02ed9f5f5bba49981e631 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:7.43.0": + version: 7.43.0 + resolution: "@microsoft/api-extractor@npm:7.43.0" + dependencies: + "@microsoft/api-extractor-model": "npm:7.28.13" + "@microsoft/tsdoc": "npm:0.14.2" + "@microsoft/tsdoc-config": "npm:~0.16.1" + "@rushstack/node-core-library": "npm:4.0.2" + "@rushstack/rig-package": "npm:0.5.2" + "@rushstack/terminal": "npm:0.10.0" + "@rushstack/ts-command-line": "npm:4.19.1" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.4.2" + bin: + api-extractor: bin/api-extractor + checksum: 10/302a4050de2625ded2eb3af6b047fb99b25f0c5e1f0d51d1f28d79e6336ba1602267bb618e34d447abfbfd6e34b46062a41f659e50a6f646b2aa9545ddbba7ab + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:~0.16.1": + version: 0.16.2 + resolution: "@microsoft/tsdoc-config@npm:0.16.2" + dependencies: + "@microsoft/tsdoc": "npm:0.14.2" + ajv: "npm:~6.12.6" + jju: "npm:~1.4.0" + resolve: "npm:~1.19.0" + checksum: 10/37fc35d83dab66771502165fad6a8380ec6d47e0fdaadcb60c09792e5b8172feea42f327ebf4e6026c3b22448e5e73d9ee53948a2d877ee00257679b162f3490 + languageName: node + linkType: hard + +"@microsoft/tsdoc@npm:0.14.2": + version: 0.14.2 + resolution: "@microsoft/tsdoc@npm:0.14.2" + checksum: 10/00c3d4fc184e8e09e17aef57e4a990402bd9752607a5d50bd62a9e85bc4b8791c985a51e238affa6b9a2d23110f24d373becbfc84e1e6e9a84cf977822e3b00a + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -3035,18 +3050,6 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-config@npm:^0.74.85": - version: 0.74.85 - resolution: "@react-native/metro-config@npm:0.74.85" - dependencies: - "@react-native/js-polyfills": "npm:0.74.85" - "@react-native/metro-babel-transformer": "npm:0.74.85" - metro-config: "npm:^0.80.3" - metro-runtime: "npm:^0.80.3" - checksum: 10/381363a706e2c8d866342a61b95cd1cfe3cc1dceda47238dcbe44329e784d698127f8d017ee8d17940bff1330d55fea39390ce8611e35116cf5e485328fde5b4 - languageName: node - linkType: hard - "@react-native/normalize-colors@npm:0.74.85": version: 0.74.85 resolution: "@react-native/normalize-colors@npm:0.74.85" @@ -3085,6 +3088,190 @@ __metadata: languageName: node linkType: hard +"@rollup/pluginutils@npm:^5.1.0": + version: 5.1.0 + resolution: "@rollup/pluginutils@npm:5.1.0" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^2.3.1" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/abb15eaec5b36f159ec351b48578401bedcefdfa371d24a914cfdbb1e27d0ebfbf895299ec18ccc343d247e71f2502cba21202bc1362d7ef27d5ded699e5c2b2 + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.18.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-android-arm64@npm:4.18.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.18.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.18.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.18.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.18.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.18.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.18.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.18.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.18.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.18.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.18.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.18.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.18.0": + version: 4.18.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.18.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rushstack/node-core-library@npm:4.0.2": + version: 4.0.2 + resolution: "@rushstack/node-core-library@npm:4.0.2" + dependencies: + fs-extra: "npm:~7.0.1" + import-lazy: "npm:~4.0.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + z-schema: "npm:~5.0.2" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/d28ba48e4cb755f39ccc9050f0bbc2cdabe7e706b2e7ee2f7dd2c851129f2198e024c2b1f3b5932a0689c9b86d07ae72e58a6bd62f9349f398dbbcf85d399b85 + languageName: node + linkType: hard + +"@rushstack/rig-package@npm:0.5.2": + version: 0.5.2 + resolution: "@rushstack/rig-package@npm:0.5.2" + dependencies: + resolve: "npm:~1.22.1" + strip-json-comments: "npm:~3.1.1" + checksum: 10/2fd178a46c1662f110d06bcc7771898cc4316db62735f9b76281995b86263c1b248c60aead5c2f7ac6be023eb23f7ed28cff78ef813df7fb2b68a945e416814d + languageName: node + linkType: hard + +"@rushstack/terminal@npm:0.10.0": + version: 0.10.0 + resolution: "@rushstack/terminal@npm:0.10.0" + dependencies: + "@rushstack/node-core-library": "npm:4.0.2" + supports-color: "npm:~8.1.1" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/4fb496558f4bf03235a6716fac3bbdefa92209c8ba05838b34b8986eaec59961938cb7b3ae5e7dfa4d96b692696291894b0cb7090d76ff29753e8c54624e5343 + languageName: node + linkType: hard + +"@rushstack/ts-command-line@npm:4.19.1": + version: 4.19.1 + resolution: "@rushstack/ts-command-line@npm:4.19.1" + dependencies: + "@rushstack/terminal": "npm:0.10.0" + "@types/argparse": "npm:1.0.38" + argparse: "npm:~1.0.9" + string-argv: "npm:~0.3.1" + checksum: 10/b529e5ea287369d837066a40689ac501b768c07fcb2af0e291d804d1ba885707742d674be34ec2b77173b8ac3b2e69d9296015412dcf582dbec6d9c5abd49ff8 + languageName: node + linkType: hard + "@sec-ant/readable-stream@npm:^0.4.1": version: 0.4.1 resolution: "@sec-ant/readable-stream@npm:0.4.1" @@ -3535,6 +3722,13 @@ __metadata: languageName: node linkType: hard +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 10/26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 resolution: "@types/aria-query@npm:5.0.4" @@ -3542,47 +3736,6 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10/c32838d280b5ab59d62557f9e331d3831f8e547ee10b4f85cb78753d97d521270cebfc73ce501e9fb27fe71884d1ba75e18658692c2f4117543f0fc4e3e118b3 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10/b53c215e9074c69d212402990b0ca8fa57595d09e10d94bda3130aa22b55d796e50449199867879e4ea0ee968f3a2099e009cfb21a726a53324483abbf25cd30 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10/d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" - dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10/63d13a3789aa1e783b87a8b03d9fb2c2c90078de7782422feff1631b8c2a25db626e63a63ac5a1465d47359201c73069dacb4b52149d17c568187625da3064ae - languageName: node - linkType: hard - "@types/eslint@npm:*, @types/eslint@npm:^8.56.10, @types/eslint@npm:^8.56.5": version: 8.56.10 resolution: "@types/eslint@npm:8.56.10" @@ -3611,22 +3764,13 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.5": +"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "npm:*" - checksum: 10/79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 - languageName: node - linkType: hard - "@types/hast@npm:^3.0.4": version: 3.0.4 resolution: "@types/hast@npm:3.0.4" @@ -3636,7 +3780,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10/3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 @@ -3675,13 +3819,6 @@ __metadata: languageName: node linkType: hard -"@types/mocha@npm:^10.0.7": - version: 10.0.7 - resolution: "@types/mocha@npm:10.0.7" - checksum: 10/4494871e8a867633d818b00d6f29d47379f9e23655b89ca728166ff2f0a406b97d376fcc3e7a570a3840f72abb03c886c5e66f50ae0f018376e4dc10ed179564 - languageName: node - linkType: hard - "@types/node-forge@npm:^1.3.0": version: 1.3.11 resolution: "@types/node-forge@npm:1.3.11" @@ -4005,6 +4142,140 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:1.6.0": + version: 1.6.0 + resolution: "@vitest/expect@npm:1.6.0" + dependencies: + "@vitest/spy": "npm:1.6.0" + "@vitest/utils": "npm:1.6.0" + chai: "npm:^4.3.10" + checksum: 10/e82304a12e22b98c1ccea81e8f33c838561deb878588eac463164cc4f8fc0c401ace3a9e6758d9e3a6bcc01313e845e8478aaefb7548eaded04b8de12c1928f6 + languageName: node + linkType: hard + +"@vitest/runner@npm:1.6.0": + version: 1.6.0 + resolution: "@vitest/runner@npm:1.6.0" + dependencies: + "@vitest/utils": "npm:1.6.0" + p-limit: "npm:^5.0.0" + pathe: "npm:^1.1.1" + checksum: 10/d83a608be36dace77f91a9d15ab7753f9c5923281188a8d9cb5ccec770df9cc9ba80e5e1e3465328c7605977be0f0708610855abf5f4af037a4ede5f51a83e47 + languageName: node + linkType: hard + +"@vitest/snapshot@npm:1.6.0": + version: 1.6.0 + resolution: "@vitest/snapshot@npm:1.6.0" + dependencies: + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + checksum: 10/0bfc26a48b45814604ff0f7276d73a047b79f3618e0b620ff54ea2de548e9603a9770963ba6ebb19f7ea1ed51001cbca58d74aa0271651d4f8e88c6233885eba + languageName: node + linkType: hard + +"@vitest/spy@npm:1.6.0": + version: 1.6.0 + resolution: "@vitest/spy@npm:1.6.0" + dependencies: + tinyspy: "npm:^2.2.0" + checksum: 10/1c9698272a58aa47708bb8a1672d655fcec3285b02067cc3f70bfe76f4eda7a756eb379f8c945ccbe61677f5189aeb5ba93c2737a9d7db2de8c4e7bbdffcd372 + languageName: node + linkType: hard + +"@vitest/utils@npm:1.6.0": + version: 1.6.0 + resolution: "@vitest/utils@npm:1.6.0" + dependencies: + diff-sequences: "npm:^29.6.3" + estree-walker: "npm:^3.0.3" + loupe: "npm:^2.3.7" + pretty-format: "npm:^29.7.0" + checksum: 10/5c5d7295ac13fcea1da039232bcc7c3fc6f070070fe12ba2ad152456af6e216e48a3ae169016cfcd5055706a00dc567b8f62e4a9b1914f069f52b8f0a3c25e60 + languageName: node + linkType: hard + +"@volar/language-core@npm:1.11.1, @volar/language-core@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/language-core@npm:1.11.1" + dependencies: + "@volar/source-map": "npm:1.11.1" + checksum: 10/2fef58727bb3058b7bbd350fea6c38ded6608c65f7f672ffd825f0ba48307e4c5eded634e0c3b37d2ebbdd2e7ab32bc974eeb54f455c0390f85971ebeef3a6ca + languageName: node + linkType: hard + +"@volar/source-map@npm:1.11.1, @volar/source-map@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/source-map@npm:1.11.1" + dependencies: + muggle-string: "npm:^0.3.1" + checksum: 10/b90c32b23bbb86a3c47a20a9f7e6293c01b2e65390973e0c849c80ee0ff740ffa76b4d547fdb9b76b2b91a7bdeb2d8d0b1772d4f4d70e2a85784abe0385672f1 + languageName: node + linkType: hard + +"@volar/typescript@npm:~1.11.1": + version: 1.11.1 + resolution: "@volar/typescript@npm:1.11.1" + dependencies: + "@volar/language-core": "npm:1.11.1" + path-browserify: "npm:^1.0.1" + checksum: 10/714eeb3472902617555b9b4959722a215b391160fe4fdf2f8f4abcb075edbd24a5a633db0c36acd175daeddac5f1b35c33f5fc8788e1e251d91385aad27deda9 + languageName: node + linkType: hard + +"@vue/compiler-core@npm:3.4.31": + version: 3.4.31 + resolution: "@vue/compiler-core@npm:3.4.31" + dependencies: + "@babel/parser": "npm:^7.24.7" + "@vue/shared": "npm:3.4.31" + entities: "npm:^4.5.0" + estree-walker: "npm:^2.0.2" + source-map-js: "npm:^1.2.0" + checksum: 10/1d83dd8c995984a0e7d80faaaa68956bbaadf01bb7cc07f29c5ebcf6aa5eeb2fa88db9d1a4aeb47f8b0b78eda7cc49688108b7fb5ac581eb5584ab59115dc99c + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:^3.3.0": + version: 3.4.31 + resolution: "@vue/compiler-dom@npm:3.4.31" + dependencies: + "@vue/compiler-core": "npm:3.4.31" + "@vue/shared": "npm:3.4.31" + checksum: 10/5f58557222a8fd9c043e7bf3e00a273691c6e070ac5c87874a628387ece0dec5ed950070d538852264cdb2ecc4d7fb9e7d79d37bf2db05e0474c44e2083c2fbe + languageName: node + linkType: hard + +"@vue/language-core@npm:1.8.27, @vue/language-core@npm:^1.8.27": + version: 1.8.27 + resolution: "@vue/language-core@npm:1.8.27" + dependencies: + "@volar/language-core": "npm:~1.11.1" + "@volar/source-map": "npm:~1.11.1" + "@vue/compiler-dom": "npm:^3.3.0" + "@vue/shared": "npm:^3.3.0" + computeds: "npm:^0.0.1" + minimatch: "npm:^9.0.3" + muggle-string: "npm:^0.3.1" + path-browserify: "npm:^1.0.1" + vue-template-compiler: "npm:^2.7.14" + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/8ad4e129a334dd78b3ffc161615e4c303105f3e5f2478458eaea8db71d3b2b8081120d913464532d5b6c4f2c0611b2c5cb2a0f9a5f46ba6d5e9422d5d63ae71b + languageName: node + linkType: hard + +"@vue/shared@npm:3.4.31, @vue/shared@npm:^3.3.0": + version: 3.4.31 + resolution: "@vue/shared@npm:3.4.31" + checksum: 10/ec11ba892b6f6f078fd620e5a2c16d57935f69e7a3dbae20c18e79c70e1bc89fa6d463d5fcbb220f54e9e4122dbc0bb04024059afecd6acf6b182d3c071e3c3a + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -4049,7 +4320,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": +"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2": version: 8.3.3 resolution: "acorn-walk@npm:8.3.3" dependencies: @@ -4105,7 +4376,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4": +"ajv@npm:^6.12.4, ajv@npm:~6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -4124,22 +4395,6 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2 - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 - languageName: node - linkType: hard - "ansi-escapes@npm:^7.0.0": version: 7.0.0 resolution: "ansi-escapes@npm:7.0.0" @@ -4220,7 +4475,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -4265,7 +4520,7 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": +"argparse@npm:^1.0.7, argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: @@ -4435,6 +4690,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10/fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + languageName: node + linkType: hard + "ast-types@npm:0.15.2": version: 0.15.2 resolution: "ast-types@npm:0.15.2" @@ -4458,13 +4720,6 @@ __metadata: languageName: node linkType: hard -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 - languageName: node - linkType: hard - "available-typed-arrays@npm:^1.0.7": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" @@ -4483,45 +4738,12 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": "npm:^29.7.0" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.6.3" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^5.0.4" - test-exclude: "npm:^6.0.0" - checksum: 10/ffd436bb2a77bbe1942a33245d770506ab2262d9c1b3c1f1da7f0592f78ee7445a95bc2efafe619dd9c1b6ee52c10033d6c7d29ddefe6f5383568e60f31dfe8d - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" +"babel-plugin-extension-resolver@npm:^1.0.12": + version: 1.0.12 + resolution: "babel-plugin-extension-resolver@npm:1.0.12" dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.1.14" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 + resolve: "npm:1.17.0" + checksum: 10/08c84f43b01dcedddf08d556aa69b6a6641cde41fbb21e711cfe080d066bc7ed506a463c1f4bd65f35284571dba55c398e846a299fd164f234d447661a4e7a6b languageName: node linkType: hard @@ -4570,40 +4792,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/94561959cb12bfa80867c9eeeace7c3d48d61707d33e55b4c3fdbe82fc745913eb2dbfafca62aef297421b38aadcb58550e5943f50fbcebbeefd70ce2bed4b74 - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb - languageName: node - linkType: hard - "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -4637,7 +4825,7 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.0.0, binary-extensions@npm:^2.3.0": +"binary-extensions@npm:^2.3.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" checksum: 10/bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 @@ -4681,7 +4869,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3, braces@npm:~3.0.2": +"braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -4690,13 +4878,6 @@ __metadata: languageName: node linkType: hard -"browser-stdout@npm:^1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: 10/ac70a84e346bb7afc5045ec6f22f6a681b15a4057447d4cc1c48a25c6dedb302a49a46dd4ddfb5cdd9c96e0c905a8539be1b98ae7bc440512152967009ec7015 - languageName: node - linkType: hard - "browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": version: 4.23.1 resolution: "browserslist@npm:4.23.1" @@ -4744,6 +4925,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 10/002769a0fbfc51c062acd2a59df465a2a947916b02ac50b56c69ec6c018ee99ac3e7f4dd7366334ea847f1ecacf4defaa61bcd2ac283db50156ce1f1d8c8ad42 + languageName: node + linkType: hard + "cacache@npm:^18.0.0, cacache@npm:^18.0.3": version: 18.0.3 resolution: "cacache@npm:18.0.3" @@ -4809,14 +4997,14 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": +"camelcase@npm:^5.0.0": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -4830,6 +5018,21 @@ __metadata: languageName: node linkType: hard +"chai@npm:^4.3.10": + version: 4.4.1 + resolution: "chai@npm:4.4.1" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.8" + checksum: 10/c6d7aba913a67529c68dbec3673f94eb9c586c5474cc5142bd0b587c9c9ec9e5fbaa937e038ecaa6475aea31433752d5fabdd033b9248bde6ae53befcde774ae + languageName: node + linkType: hard + "chalk@npm:^2.3.2, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -4865,22 +5068,12 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/c327fb07704443f8d15f7b4a7ce93b2f0bc0e6cea07ec28a7570aa22cd51fcf0379df589403976ea956c369f25aa82d84561947e227cd925902e1751371658df + get-func-name: "npm:^2.0.2" + checksum: 10/e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 languageName: node linkType: hard @@ -4935,13 +5128,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.3.1 - resolution: "cjs-module-lexer@npm:1.3.1" - checksum: 10/6629188d5ce74b57e5dce2222db851b5496a8d65b533a05957fb24089a3cec8d769378013c375a954c5a0f7522cde6a36d5a65bfd88f5575cb2de3176046fa8e - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -5071,20 +5257,6 @@ __metadata: languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: 10/30ea7d5c9ee51f2fdba4901d4186c5b7114a088ef98fd53eda3979da77eed96758a2cae81cc6d97e239aaea6065868cf908b24980663f7b7e96aa291b3e12fa4 - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -5124,15 +5296,6 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 - languageName: node - linkType: hard - "command-exists@npm:^1.2.8": version: 1.2.9 resolution: "command-exists@npm:1.2.9" @@ -5209,6 +5372,13 @@ __metadata: languageName: node linkType: hard +"computeds@npm:^0.0.1": + version: 0.0.1 + resolution: "computeds@npm:0.0.1" + checksum: 10/738625ccec6e483124d0ac79ec5474ab5c9df103ea05afc1fd840eed7d9004e3d6009b7bc806df564d66ad915c1ee1fb017bd91b2b32606a252ea9870b6a4026 + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -5216,6 +5386,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: 10/3086687b9a2a70d44d4b40a2d376536fe7e1baec4a2a34261b21b8a836026b419cbf89ded6054216631823e7d63c415dad4b4d53591d6edbb202bb9820dfa6fa + languageName: node + linkType: hard + "config-chain@npm:^1.1.11": version: 1.1.13 resolution: "config-chain@npm:1.1.13" @@ -5363,23 +5540,6 @@ __metadata: languageName: node linkType: hard -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - prompts: "npm:^2.0.1" - bin: - create-jest: bin/create-jest.js - checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 - languageName: node - linkType: hard - "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -5416,15 +5576,6 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^4.0.1": - version: 4.0.1 - resolution: "cssstyle@npm:4.0.1" - dependencies: - rrweb-cssom: "npm:^0.6.0" - checksum: 10/180d4e6b406c30811e55a64add32a2111c9c5da4ed2dc67638ddb55c29b877ec1ed71e2e70a34f59c3523dbee35b0d35aa13b963db1ca8cb929d69c7ce81e3b0 - languageName: node - linkType: hard - "csstype@npm:^3.0.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -5432,16 +5583,6 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^5.0.0": - version: 5.0.0 - resolution: "data-urls@npm:5.0.0" - dependencies: - whatwg-mimetype: "npm:^4.0.0" - whatwg-url: "npm:^14.0.0" - checksum: 10/5c40568c31b02641a70204ff233bc4e42d33717485d074244a98661e5f2a1e80e38fe05a5755dfaf2ee549f2ab509d6a3af2a85f4b2ad2c984e5d176695eaf46 - languageName: node - linkType: hard - "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -5482,6 +5623,13 @@ __metadata: languageName: node linkType: hard +"de-indent@npm:^1.0.2": + version: 1.0.2 + resolution: "de-indent@npm:1.0.2" + checksum: 10/30bf43744dca005f9252dbb34ed95dcb3c30dfe52bfed84973b89c29eccff04e27769f222a34c61a93354acf47457785e9032e6184be390ed1d324fb9ab3f427 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -5519,21 +5667,7 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 10/b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 - languageName: node - linkType: hard - -"decimal.js@npm:^10.4.3": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 10/de663a7bc4d368e3877db95fcd5c87b965569b58d16cdc4258c063d231ca7118748738df17cd638f7e9dd0be8e34cec08d7234b20f1f2a756a52fc5a38b188d0 - languageName: node - linkType: hard - -"dedent@npm:^1.0.0, dedent@npm:^1.5.1": +"dedent@npm:^1.5.1": version: 1.5.3 resolution: "dedent@npm:1.5.3" peerDependencies: @@ -5545,6 +5679,15 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^4.1.3": + version: 4.1.4 + resolution: "deep-eql@npm:4.1.4" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10/f04f4d581f044a824a6322fe4f68fbee4d6780e93fc710cd9852cbc82bfc7010df00f0e05894b848abbe14dc3a25acac44f424e181ae64d12f2ab9d0a875a5ef + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -5559,7 +5702,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0": +"deepmerge@npm:^4.3.0": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10/058d9e1b0ff1a154468bf3837aea436abcfea1ba1d165ddaaf48ca93765fdd01a30d33c36173da8fbbed951dd0a267602bc782fe288b0fc4b7e1e7091afc4529 @@ -5597,13 +5740,6 @@ __metadata: languageName: node linkType: hard -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - "denodeify@npm:^1.2.1": version: 1.2.1 resolution: "denodeify@npm:1.2.1" @@ -5632,13 +5768,6 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -5731,13 +5860,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -5785,7 +5907,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.4.0": +"entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 10/ede2a35c9bce1aeccd055a1b445d41c75a14a2bb1cd22e242f20cf04d236cdcd7f9c859eb83f76885327bfae0c25bf03303665ee1ce3d47c5927b98b0e3e3d48 @@ -5999,6 +6121,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.21.5" + "@esbuild/android-arm": "npm:0.21.5" + "@esbuild/android-arm64": "npm:0.21.5" + "@esbuild/android-x64": "npm:0.21.5" + "@esbuild/darwin-arm64": "npm:0.21.5" + "@esbuild/darwin-x64": "npm:0.21.5" + "@esbuild/freebsd-arm64": "npm:0.21.5" + "@esbuild/freebsd-x64": "npm:0.21.5" + "@esbuild/linux-arm": "npm:0.21.5" + "@esbuild/linux-arm64": "npm:0.21.5" + "@esbuild/linux-ia32": "npm:0.21.5" + "@esbuild/linux-loong64": "npm:0.21.5" + "@esbuild/linux-mips64el": "npm:0.21.5" + "@esbuild/linux-ppc64": "npm:0.21.5" + "@esbuild/linux-riscv64": "npm:0.21.5" + "@esbuild/linux-s390x": "npm:0.21.5" + "@esbuild/linux-x64": "npm:0.21.5" + "@esbuild/netbsd-x64": "npm:0.21.5" + "@esbuild/openbsd-x64": "npm:0.21.5" + "@esbuild/sunos-x64": "npm:0.21.5" + "@esbuild/win32-arm64": "npm:0.21.5" + "@esbuild/win32-ia32": "npm:0.21.5" + "@esbuild/win32-x64": "npm:0.21.5" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@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: 10/d2ff2ca84d30cce8e871517374d6c2290835380dc7cd413b2d49189ed170d45e407be14de2cb4794cf76f75cf89955c4714726ebd3de7444b3046f5cab23ab6b + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.1.2 resolution: "escalade@npm:3.1.2" @@ -6366,6 +6568,22 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10/b02109c5d46bc2ed47de4990eef770f7457b1159a229f0999a09224d2b85ffeed2d7679cffcff90aeb4448e94b0168feb5265b209cdec29aad50a3d6e93d21e2 + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -6441,33 +6659,6 @@ __metadata: languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 - languageName: node - linkType: hard - -"expect-type@npm:^0.19.0": - version: 0.19.0 - resolution: "expect-type@npm:0.19.0" - checksum: 10/d1a389095eb082d81d3f4342caf360637c23867a52c63c46b582cd8dfc7c75458a78d9b53b770ed30d05698543c5c17390a58779d084436792e8c395384d61fe - languageName: node - linkType: hard - -"expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/63f97bc51f56a491950fb525f9ad94f1916e8a014947f8d8445d3847a665b5471b768522d659f5e865db20b6c2033d2ac10f35fcbd881a4d26407a4f6f18451a - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -6495,7 +6686,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e @@ -6632,7 +6823,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": +"find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -6672,15 +6863,6 @@ __metadata: languageName: node linkType: hard -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 - languageName: node - linkType: hard - "flatted@npm:^3.2.9": version: 3.3.1 resolution: "flatted@npm:3.3.1" @@ -6721,17 +6903,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 - languageName: node - linkType: hard - "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" @@ -6771,6 +6942,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:~7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10/3fc6e56ba2f07c00d452163f27f21a7076b72ef7da8a50fef004336d59ef4c34deda11d10ecd73fd8fbcf20e4f575f52857293090b3c9f8741d4e0598be30fea + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -6796,7 +6978,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -6806,7 +6988,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -6862,6 +7044,13 @@ __metadata: languageName: node linkType: hard +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" @@ -6875,13 +7064,6 @@ __metadata: languageName: node linkType: hard -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: 10/bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -6947,7 +7129,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -6981,7 +7163,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.1, glob@npm:^7.1.3": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -6995,19 +7177,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10/9aab1c75eb087c35dbc41d1f742e51d0507aa2b14c910d96fb8287107a10a22f4bbdce26fc0a3da4c69a20f7b26d62f1640b346a4f6e6becfff47f335bb1dc5e - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -7115,6 +7284,17 @@ __metadata: languageName: node linkType: hard +"happy-dom@npm:^14.12.3": + version: 14.12.3 + resolution: "happy-dom@npm:14.12.3" + dependencies: + entities: "npm:^4.5.0" + webidl-conversions: "npm:^7.0.0" + whatwg-mimetype: "npm:^3.0.0" + checksum: 10/3c254614d41807a7734637a75efd678d7cca41f330a13daec685bc5d4e4a298c687c8cdcbb826afa85f3b76489beacf22ae53e99a6a31181282600eecf7e924e + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -7250,22 +7430,6 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^4.0.0": - version: 4.0.0 - resolution: "html-encoding-sniffer@npm:4.0.0" - dependencies: - whatwg-encoding: "npm:^3.1.1" - checksum: 10/e86efd493293a5671b8239bd099d42128433bb3c7b0fdc7819282ef8e118a21f5dead0ad6f358e024a4e5c84f17ebb7a9b36075220fac0a6222b207248bede6f - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 - languageName: node - linkType: hard - "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -7286,7 +7450,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": +"http-proxy-agent@npm:^7.0.0": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" dependencies: @@ -7296,7 +7460,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.4": +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1": version: 7.0.5 resolution: "https-proxy-agent@npm:7.0.5" dependencies: @@ -7327,7 +7491,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -7400,15 +7564,10 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd +"import-lazy@npm:~4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 10/943309cc8eb01ada12700448c288b0384f77a1bc33c7e00fa4cb223c665f467a13ce9aaceb8d2e4cf586b07c1d2828040263dcc069873ce63cfc2ac6fd087971 languageName: node linkType: hard @@ -7575,15 +7734,6 @@ __metadata: languageName: node linkType: hard -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e - languageName: node - linkType: hard - "is-boolean-object@npm:^1.1.0": version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" @@ -7610,7 +7760,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": version: 2.14.0 resolution: "is-core-module@npm:2.14.0" dependencies: @@ -7683,13 +7833,6 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - "is-generator-function@npm:^1.0.10": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" @@ -7699,7 +7842,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -7766,13 +7909,6 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 10/cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - "is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -7789,13 +7925,6 @@ __metadata: languageName: node linkType: hard -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: 10/ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab - languageName: node - linkType: hard - "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -7974,71 +8103,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^6.3.0" - checksum: 10/bbc4496c2f304d799f8ec22202ab38c010ac265c441947f075c0f7d46bd440b45c00e46017cf9053453d42182d768b1d6ed0e70a142c95ab00df9843aa5ab80e - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10/aa5271c0008dfa71b6ecc9ba1e801bf77b49dc05524e8c30d58aaf5b9505e0cd12f25f93165464d4266a518c5c75284ecb598fbd89fec081ae77d2c9d3327695 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: 10/86a83421ca1cf2109a9f6d193c06c31ef04a45e72a74579b11060b1e7bb9b6337a4e6f04abfb8857e2d569c271273c65e855ee429376a0d7c91ad91db42accd1 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10/f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa - languageName: node - linkType: hard - "iterator.prototype@npm:^1.1.2": version: 1.1.2 resolution: "iterator.prototype@npm:1.1.2" @@ -8072,109 +8136,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: "npm:^5.0.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^1.0.0" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.7.0" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - pure-rand: "npm:^6.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - create-jest: "npm:^29.7.0" - exit: "npm:^0.1.2" - import-local: "npm:^3.0.2" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - yargs: "npm:^17.3.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-jest: "npm:^29.7.0" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b - languageName: node - linkType: hard - "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -8187,29 +8148,7 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - pretty-format: "npm:^29.7.0" - checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.6.3, jest-environment-node@npm:^29.7.0": +"jest-environment-node@npm:^29.6.3": version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" dependencies: @@ -8219,220 +8158,54 @@ __metadata: "@types/node": "npm:*" jest-mock: "npm:^29.7.0" jest-util: "npm:^29.7.0" - checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/graceful-fs": "npm:^4.1.3" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/8531b42003581cb18a69a2774e68c456fb5a5c3280b1b9b77475af9e346b6a457250f9d756bfeeae2fe6cbc9ef28434c205edab9390ee970a919baddfa08bb85 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 languageName: node linkType: hard -"jest-regex-util@npm:^29.6.3": +"jest-get-type@npm:^29.6.3": version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: "npm:^29.6.3" - jest-snapshot: "npm:^29.7.0" - checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-resolve@npm:^29.7.0": +"jest-matcher-utils@npm:^29.7.0": version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^2.0.0" - slash: "npm:^3.0.0" - checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 languageName: node linkType: hard -"jest-runner@npm:^29.7.0": +"jest-message-util@npm:^29.7.0": version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" + resolution: "jest-message-util@npm:29.7.0" dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/environment": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" + "@babel/code-frame": "npm:^7.12.13" "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" + "@types/stack-utils": "npm:^2.0.0" chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-leak-detector: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-resolve: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 languageName: node linkType: hard -"jest-runtime@npm:^29.7.0": +"jest-mock@npm:^29.7.0": version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/globals": "npm:^29.7.0" - "@jest/source-map": "npm:^29.6.3" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-jsx": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" jest-util: "npm:^29.7.0" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.7.0" - semver: "npm:^7.5.3" - checksum: 10/cb19a3948256de5f922d52f251821f99657339969bf86843bd26cf3332eae94883e8260e3d2fba46129a27c3971c1aa522490e460e16c7fad516e82d10bbf9f8 + checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c languageName: node linkType: hard @@ -8450,7 +8223,7 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.6.3, jest-validate@npm:^29.7.0": +"jest-validate@npm:^29.6.3": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" dependencies: @@ -8464,23 +8237,7 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.7.0" - string-length: "npm:^4.0.1" - checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 - languageName: node - linkType: hard - -"jest-worker@npm:^29.6.3, jest-worker@npm:^29.7.0": +"jest-worker@npm:^29.6.3": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" dependencies: @@ -8492,22 +8249,10 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^29.7.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 10/1067ff8ce02221faac5a842116ed0ec79a53312a111d0bf8342a80bd02c0a3fdf0b8449694a65947db0a3e8420e8b326dffb489c7dd5866efc380c0d1708a707 languageName: node linkType: hard @@ -8531,6 +8276,13 @@ __metadata: languageName: node linkType: hard +"js-tokens@npm:^9.0.0": + version: 9.0.0 + resolution: "js-tokens@npm:9.0.0" + checksum: 10/65e7a55a1a18d61f1cf94bfd7704da870b74337fa08d4c58118e69a8b10225b5ad887ff3ae595d720301b0924811a9b0594c679621a85ecbac6e3aac8533c53b + languageName: node + linkType: hard + "js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" @@ -8613,49 +8365,6 @@ __metadata: languageName: node linkType: hard -"jsdom-global@npm:^3.0.2": - version: 3.0.2 - resolution: "jsdom-global@npm:3.0.2" - peerDependencies: - jsdom: ">=10.0.0" - checksum: 10/5c665a412c244d8cfe541da784ff6888c0ed041da3f4c03d7d4ab514215b3f50a934f89c33b543b7848765d841029978a2592dc04b2e0a8734b4bb54809e67d7 - languageName: node - linkType: hard - -"jsdom@npm:^24.1.0": - version: 24.1.0 - resolution: "jsdom@npm:24.1.0" - dependencies: - cssstyle: "npm:^4.0.1" - data-urls: "npm:^5.0.0" - decimal.js: "npm:^10.4.3" - form-data: "npm:^4.0.0" - html-encoding-sniffer: "npm:^4.0.0" - http-proxy-agent: "npm:^7.0.2" - https-proxy-agent: "npm:^7.0.4" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.10" - parse5: "npm:^7.1.2" - rrweb-cssom: "npm:^0.7.0" - saxes: "npm:^6.0.0" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.1.4" - w3c-xmlserializer: "npm:^5.0.0" - webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^3.1.1" - whatwg-mimetype: "npm:^4.0.0" - whatwg-url: "npm:^14.0.0" - ws: "npm:^8.17.0" - xml-name-validator: "npm:^5.0.0" - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10/0821daf73ea4b486f93a51d304037e3864ef3ca515e4646afa997b4f7f6054e6a62aabf34e2e3f2d7e0e76d3ff3d70aa81df07e96145a37988e47318e976242d - languageName: node - linkType: hard - "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -8831,6 +8540,13 @@ __metadata: languageName: node linkType: hard +"kolorist@npm:^1.8.0": + version: 1.8.0 + resolution: "kolorist@npm:1.8.0" + checksum: 10/71d5d122951cc65f2f14c3e1d7f8fd91694b374647d4f6deec3816d018cd04a44edd9578d93e00c82c2053b925e5d30a0565746c4171f4ca9fce1a13bd5f3315 + languageName: node + linkType: hard + "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -9026,6 +8742,16 @@ __metadata: languageName: node linkType: hard +"local-pkg@npm:^0.5.0": + version: 0.5.0 + resolution: "local-pkg@npm:0.5.0" + dependencies: + mlly: "npm:^1.4.2" + pkg-types: "npm:^1.0.3" + checksum: 10/20f4caba50dc6fb00ffcc1a78bc94b5acb33995e0aadf4d4edcdeab257e891aa08f50afddf02f3240b2c3d02432bc2078f2a916a280ed716b64753a3d250db70 + languageName: node + linkType: hard + "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" @@ -9099,6 +8825,13 @@ __metadata: languageName: node linkType: hard +"lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10/82fc58a83a1555f8df34ca9a2cd300995ff94018ac12cc47c349655f0ae1d4d92ba346db4c19bbfc90510764e0c00ddcc985a358bdcd4b3b965abf8f2a48a214 + languageName: node + linkType: hard + "lodash.isplainobject@npm:^4.0.6": version: 4.0.6 resolution: "lodash.isplainobject@npm:4.0.6" @@ -9134,7 +8867,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21": +"lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -9175,6 +8908,15 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^2.3.6, loupe@npm:^2.3.7": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10/635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.2.2": version: 10.3.1 resolution: "lru-cache@npm:10.3.1" @@ -9191,6 +8933,15 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 + languageName: node + linkType: hard + "lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" @@ -9220,7 +8971,6 @@ __metadata: eslint-plugin-sonarjs: "npm:^1.0.3" globals: "npm:^15.8.0" semantic-release: "npm:^24.0.0" - ts-node: "npm:^10.9.2" tslib: "npm:^2.6.3" turbo: "npm:^2.0.6" typedoc: "npm:^0.26.3" @@ -9240,6 +8990,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.5, magic-string@npm:^0.30.8": + version: 0.30.10 + resolution: "magic-string@npm:0.30.10" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + checksum: 10/9f8bf6363a14c98a9d9f32ef833b194702a5c98fb931b05ac511b76f0b06fd30ed92beda6ca3261d2d52d21e39e891ef1136fbd032023f6cbb02d0b7d5767201 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -9250,15 +9009,6 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a - languageName: node - linkType: hard - "make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" @@ -9613,7 +9363,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.27, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -9670,7 +9420,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.2, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -9679,21 +9429,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10/126b36485b821daf96d33b5c821dac600cc1ab36c87e7a532594f9b1652b1fa89a1eebcaad4dff17c764dce1a7ac1531327f190fed5f97d8f6e5f889c116c429 + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" +"minimatch@npm:~3.0.3": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + brace-expansion: "npm:^1.1.7" + checksum: 10/6df5373cb1ea79020beb6887ff5576c58cfabcfd32c5a65c2cf58f326e4ee8eae84f129e5fa50b8a4347fa1d1e583f931285c9fb3040d984bdfb5109ef6607ec languageName: node linkType: hard @@ -9808,34 +9558,15 @@ __metadata: languageName: node linkType: hard -"mocha@npm:^10.6.0": - version: 10.6.0 - resolution: "mocha@npm:10.6.0" +"mlly@npm:^1.4.2, mlly@npm:^1.7.1": + version: 1.7.1 + resolution: "mlly@npm:1.7.1" dependencies: - ansi-colors: "npm:^4.1.3" - browser-stdout: "npm:^1.3.1" - chokidar: "npm:^3.5.3" - debug: "npm:^4.3.5" - diff: "npm:^5.2.0" - escape-string-regexp: "npm:^4.0.0" - find-up: "npm:^5.0.0" - glob: "npm:^8.1.0" - he: "npm:^1.2.0" - js-yaml: "npm:^4.1.0" - log-symbols: "npm:^4.1.0" - minimatch: "npm:^5.1.6" - ms: "npm:^2.1.3" - serialize-javascript: "npm:^6.0.2" - strip-json-comments: "npm:^3.1.1" - supports-color: "npm:^8.1.1" - workerpool: "npm:^6.5.1" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.9" - yargs-unparser: "npm:^2.0.0" - bin: - _mocha: bin/_mocha - mocha: bin/mocha.js - checksum: 10/8e9901f4c8a3299c3e1b65821778915622aa0b5758acbe6d5b96f142843e23562b6aa3c87c2baa8626640ecb7e6b956d7a6cdb622ac8422d43a13558cb748e42 + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.1.1" + ufo: "npm:^1.5.3" + checksum: 10/c1ef3989e95fb6c6c27a238330897b01f46507020501f45a681f2cae453f982e38dcb0e45aa65f672ea7280945d4a729d266f17a8acb187956f312b0cafddf61 languageName: node linkType: hard @@ -9853,13 +9584,20 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.2": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard +"muggle-string@npm:^0.3.1": + version: 0.3.1 + resolution: "muggle-string@npm:0.3.1" + checksum: 10/f2357f906e0160b7df0179c77838cf859f3ca23cb74eca7c043b9fc9e1e416d91497c80fbe2f3c9aeb003c14ad15857fc4e94f1631e8a6695b07e4135626d305 + languageName: node + linkType: hard + "mute-stream@npm:^1.0.0": version: 1.0.0 resolution: "mute-stream@npm:1.0.0" @@ -9878,6 +9616,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -10038,7 +9785,7 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": +"normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 @@ -10254,13 +10001,6 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.10": - version: 2.2.10 - resolution: "nwsapi@npm:2.2.10" - checksum: 10/b310e9dd0886da338cbbb1be9fec473a50269e2935d537f95a03d0038f7ea831ce12b4816d97f42e458e5273158aea2a6c86bc4bb60f79911226154aa66740f7 - languageName: node - linkType: hard - "ob1@npm:0.80.9": version: 0.80.9 resolution: "ob1@npm:0.80.9" @@ -10500,7 +10240,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -10509,6 +10249,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^5.0.0": + version: 5.0.0 + resolution: "p-limit@npm:5.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10/87bf5837dee6942f0dbeff318436179931d9a97848d1b07dbd86140a477a5d2e6b90d9701b210b4e21fe7beaea2979dfde366e4f576fa644a59bd4d6a6371da7 + languageName: node + linkType: hard + "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -10722,15 +10471,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" - dependencies: - entities: "npm:^4.4.0" - checksum: 10/3c86806bb0fb1e9a999ff3a4c883b1ca243d99f45a619a0898dbf021a95a0189ed955c31b07fe49d342b54e814f33f2c9d7489198e8630dacd5477d413ec5782 - languageName: node - linkType: hard - "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -10738,6 +10478,13 @@ __metadata: languageName: node linkType: hard +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10/7e7368a5207e7c6b9051ef045711d0dc3c2b6203e96057e408e6e74d09f383061010d2be95cb8593fe6258a767c3e9fc6b2bfc7ce8d48ae8c3d9f6994cca9ad8 + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -10773,7 +10520,7 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.7": +"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a @@ -10811,6 +10558,20 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10/f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80 + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10/b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6 + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.0.1 resolution: "picocolors@npm:1.0.1" @@ -10818,7 +10579,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc @@ -10846,7 +10607,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4, pirates@npm:^4.0.6": +"pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f @@ -10872,12 +10633,14 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" +"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.1": + version: 1.1.3 + resolution: "pkg-types@npm:1.1.3" dependencies: - find-up: "npm:^4.0.0" - checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + confbox: "npm:^0.1.7" + mlly: "npm:^1.7.1" + pathe: "npm:^1.1.2" + checksum: 10/06c03ca679ea8e3a1ea7cb74e92af1a486a6081401aac35f6aa51fb6f0855cd86bbfc713f9bfdaaa730815b5ae147b4d6a838710b550c1c4b3f54a6653ff04a3 languageName: node linkType: hard @@ -10898,6 +10661,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.39": + version: 8.4.39 + resolution: "postcss@npm:8.4.39" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.1" + source-map-js: "npm:^1.2.0" + checksum: 10/ad9c1add892c96433b9a5502878201ede4a20c4ce02d056251f61f8d9a3e5426dab3683fe5a086edfa78a1a19f2b4988c8cea02c5122136d29758cb5a17e2621 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -11016,7 +10790,7 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.4.2": +"prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -11060,13 +10834,6 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9 - languageName: node - linkType: hard - "punycode.js@npm:^2.3.1": version: 2.3.1 resolution: "punycode.js@npm:2.3.1" @@ -11074,20 +10841,13 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": +"punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 languageName: node linkType: hard -"pure-rand@npm:^6.0.0": - version: 6.1.0 - resolution: "pure-rand@npm:6.1.0" - checksum: 10/256aa4bcaf9297256f552914e03cbdb0039c8fe1db11fa1e6d3f80790e16e563eb0a859a1e61082a95e224fc0c608661839439f8ecc6a3db4e48d46d99216ee4 - languageName: node - linkType: hard - "qrcode-terminal@npm:^0.12.0": version: 0.12.0 resolution: "qrcode-terminal@npm:0.12.0" @@ -11104,13 +10864,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -11134,15 +10887,6 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc - languageName: node - linkType: hard - "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -11214,6 +10958,32 @@ __metadata: languageName: node linkType: hard +"react-native-testing-mocks@npm:^1.4.1": + version: 1.4.1 + resolution: "react-native-testing-mocks@npm:1.4.1" + dependencies: + "@babel/core": "npm:^7.24.7" + "@babel/register": "npm:^7.24.6" + babel-plugin-extension-resolver: "npm:^1.0.12" + debug: "npm:^4.3.5" + dot-prop-immutable: "npm:^2.1.1" + supports-color: "npm:^9.4.0" + ts-pattern: "npm:^5.2.0" + peerDependencies: + "@react-native/babel-preset": ">=0.73.18" + react: ">=18.2.0" + react-native: ">=0.73.2" + peerDependenciesMeta: + "@react-native/babel-preset": + optional: false + react: + optional: false + react-native: + optional: false + checksum: 10/341009111c6faf5249b8f76a6598dc5db8e08352b422e4b4cfd0e1a2e230bd95dd54036ca4d2af1405792ba94514673814651515e6259d82cd2f7d771aca3959 + languageName: node + linkType: hard + "react-native@npm:^0.74.3": version: 0.74.3 resolution: "react-native@npm:0.74.3" @@ -11396,15 +11166,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 - languageName: node - linkType: hard - "readline@npm:^1.3.0": version: 1.3.0 resolution: "readline@npm:1.3.0" @@ -11555,22 +11316,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20 - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - "resolve-from@npm:^3.0.0": version: 3.0.0 resolution: "resolve-from@npm:3.0.0" @@ -11599,14 +11344,16 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 +"resolve@npm:1.17.0": + version: 1.17.0 + resolution: "resolve@npm:1.17.0" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10/74141da8c56192fd46f6aa887864f8fd74c1755425174526610cb775177278bb414c6f6feb3051ccd73d774d2ae124c6c97e463e30d7ffd9a87f7da202b851dd languageName: node linkType: hard -"resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": +"resolve@npm:^1.14.2, resolve@npm:^1.22.4, resolve@npm:~1.22.1": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -11632,7 +11379,26 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@npm:~1.19.0": + version: 1.19.0 + resolution: "resolve@npm:1.19.0" + dependencies: + is-core-module: "npm:^2.1.0" + path-parse: "npm:^1.0.6" + checksum: 10/b0f326a85422ebc4db8524957990d49d89e028bd6c10f23f2e89db5ee923678c6c08eae596e594031a5cda20f1e19d4a371e22cd772907b0bcf3c932e2205753 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A1.17.0#optional!builtin": + version: 1.17.0 + resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10/02e87fe9233d169fdc5220572c7b8933c9e23323aaecfd5b8d0b106a7f09dc676dd4d380e66c72b1369489292bcb337b13aad28b480a1bde5a5c040ff16758ea + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -11658,6 +11424,16 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A~1.19.0#optional!builtin": + version: 1.19.0 + resolution: "resolve@patch:resolve@npm%3A1.19.0#optional!builtin::version=1.19.0&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.1.0" + path-parse: "npm:^1.0.6" + checksum: 10/eb8853b1b7b9ef25f0156304c7c21e2a0d2b2ce247169282542e76565f460986e10adbb770eeb2549c06197fb546b433906cbf3700a3232c567aaaaa53490b88 + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -11699,22 +11475,71 @@ __metadata: dependencies: glob: "npm:^7.1.3" bin: - rimraf: ./bin.js - checksum: 10/756419f2fa99aa119c46a9fc03e09d84ecf5421a80a72d1944c5088c9e4671e77128527a900a313ed9d3fdbdd37e2ae05486cd7e9116d5812d8c31f2399d7c86 - languageName: node - linkType: hard - -"rrweb-cssom@npm:^0.6.0": - version: 0.6.0 - resolution: "rrweb-cssom@npm:0.6.0" - checksum: 10/5411836a4a78d6b68480767b8312de291f32d5710a278343954a778e5b420eaf13c90d9d2a942acf4718ddf497baa75ce653a314b332a380b6eaae1dee72257e - languageName: node - linkType: hard - -"rrweb-cssom@npm:^0.7.0": - version: 0.7.1 - resolution: "rrweb-cssom@npm:0.7.1" - checksum: 10/e80cf25c223a823921d7ab57c0ce78f5b7ebceab857b400cce99dd4913420ce679834bc5707e8ada47d062e21ad368108a9534c314dc8d72c20aa4a4fa0ed16a + rimraf: ./bin.js + checksum: 10/756419f2fa99aa119c46a9fc03e09d84ecf5421a80a72d1944c5088c9e4671e77128527a900a313ed9d3fdbdd37e2ae05486cd7e9116d5812d8c31f2399d7c86 + languageName: node + linkType: hard + +"rollup@npm:^4.13.0": + version: 4.18.0 + resolution: "rollup@npm:4.18.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.18.0" + "@rollup/rollup-android-arm64": "npm:4.18.0" + "@rollup/rollup-darwin-arm64": "npm:4.18.0" + "@rollup/rollup-darwin-x64": "npm:4.18.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.18.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.18.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.18.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.18.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.18.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.18.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.18.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.18.0" + "@rollup/rollup-linux-x64-musl": "npm:4.18.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.18.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.18.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.18.0" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10/2320fe653cfd5e3d72ecab2f1d52d47e7b624a6ab02919f53c1ad1c5efa3b66e277c3ecfef03bb97651e79cef04bfefd34ad1f6e648f496572bf76c834f19599 languageName: node linkType: hard @@ -11746,7 +11571,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 @@ -11771,15 +11596,6 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^6.0.0": - version: 6.0.0 - resolution: "saxes@npm:6.0.0" - dependencies: - xmlchars: "npm:^2.2.0" - checksum: 10/97b50daf6ca3a153e89842efa18a862e446248296622b7473c169c84c823ee8a16e4a43bac2f73f11fc8cb9168c73fbb0d73340f26552bac17970e9052367aa9 - languageName: node - linkType: hard - "scheduler@npm:0.24.0-canary-efb381bbf-20230505": version: 0.24.0-canary-efb381bbf-20230505 resolution: "scheduler@npm:0.24.0-canary-efb381bbf-20230505" @@ -11892,7 +11708,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -11910,6 +11726,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:~7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10/985dec0d372370229a262c737063860fabd4a1c730662c1ea3200a2f649117761a42184c96df62a0e885e76fbd5dace41087d6c1ac0351b13c0df5d6bcb1b5ac + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -11938,15 +11765,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 - languageName: node - linkType: hard - "serve-static@npm:^1.13.1": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -12053,7 +11871,14 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 10/e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -12182,13 +12007,10 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 10/74f331cfd2d121c50790c8dd6d3c9de6be21926de80583b23b37029b0f37aefc3e019fa91f9a10a5e120c08135297e1ecf312d561459c45908cb1e0e365f49e5 languageName: node linkType: hard @@ -12315,6 +12137,13 @@ __metadata: languageName: node linkType: hard +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 10/2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + "stackframe@npm:^1.3.4": version: 1.3.4 resolution: "stackframe@npm:1.3.4" @@ -12345,6 +12174,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:^3.5.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10/6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12 + languageName: node + linkType: hard + "stream-combiner2@npm:~1.1.1": version: 1.1.1 resolution: "stream-combiner2@npm:1.1.1" @@ -12355,13 +12191,10 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 +"string-argv@npm:~0.3.1": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af languageName: node linkType: hard @@ -12493,13 +12326,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -12530,7 +12356,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -12544,6 +12370,15 @@ __metadata: languageName: node linkType: hard +"strip-literal@npm:^2.0.0": + version: 2.1.0 + resolution: "strip-literal@npm:2.1.0" + dependencies: + js-tokens: "npm:^9.0.0" + checksum: 10/21c813aa1e669944e7e2318c8c927939fb90b0c52f53f57282bfc3dd6e19d53f70004f1f1693e33e5e790ad5ef102b0fce2b243808229d1ce07ae71f326c0e82 + languageName: node + linkType: hard + "strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" @@ -12586,7 +12421,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.0.0, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -12619,13 +12454,6 @@ __metadata: languageName: node linkType: hard -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 10/c09a00aadf279d47d0c5c46ca3b6b2fbaeb45f0a184976d599637d412d3a70bbdc043ff33effe1206dea0e36e0ad226cb957112e7ce9a4bf2daedf7fa4f85c53 - languageName: node - linkType: hard - "synckit@npm:^0.9.0": version: 0.9.0 resolution: "synckit@npm:0.9.0" @@ -12706,17 +12534,6 @@ __metadata: languageName: node linkType: hard -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 10/8fccb2cb6c8fcb6bb4115394feb833f8b6cf4b9503ec2485c2c90febf435cac62abe882a0c5c51a37b9bbe70640cdd05acf5f45e486ac4583389f4b0855f69e5 - languageName: node - linkType: hard - "text-table@npm:^0.2.0, text-table@npm:~0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -12782,6 +12599,27 @@ __metadata: languageName: node linkType: hard +"tinybench@npm:^2.5.1": + version: 2.8.0 + resolution: "tinybench@npm:2.8.0" + checksum: 10/9731d070bedee6d44f3bb565862c284776e6adfd70d81a051a5c79b77479408509b448ad8d467d538d18bc0ae857b3ead8168d7e98d7f1355f8a0b01aa2f163b + languageName: node + linkType: hard + +"tinypool@npm:^0.8.3": + version: 0.8.4 + resolution: "tinypool@npm:0.8.4" + checksum: 10/7365944c2532f240111443e7012be31a634faf1a02db08a91db3aa07361c26a374d0be00a0f2ea052c4bee39c107ba67f1f814c108d9d51dfc725c559c1a9c03 + languageName: node + linkType: hard + +"tinyspy@npm:^2.2.0": + version: 2.2.1 + resolution: "tinyspy@npm:2.2.1" + checksum: 10/170d6232e87f9044f537b50b406a38fbfd6f79a261cd12b92879947bd340939a833a678632ce4f5c4a6feab4477e9c21cd43faac3b90b68b77dd0536c4149736 + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -12819,27 +12657,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.4": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" - dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 10/75663f4e2cd085f16af0b217e4218772adf0617fb3227171102618a54ce0187a164e505d61f773ed7d65988f8ff8a8f935d381f87da981752c1171b076b4afac - languageName: node - linkType: hard - -"tr46@npm:^5.0.0": - version: 5.0.0 - resolution: "tr46@npm:5.0.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10/29155adb167d048d3c95d181f7cb5ac71948b4e8f3070ec455986e1f34634acae50ae02a3c8d448121c3afe35b76951cd46ed4c128fd80264280ca9502237a3e - languageName: node - linkType: hard - "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -12908,6 +12725,13 @@ __metadata: languageName: node linkType: hard +"ts-pattern@npm:^5.2.0": + version: 5.2.0 + resolution: "ts-pattern@npm:5.2.0" + checksum: 10/d85607629a46d93a6245b3b17238648fda49d3ab01366df4d049dd5b293876de599f0a810c9a62de13adad38028ffb336539f612bc2686a1f879cd1f3f671a0c + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -13052,20 +12876,13 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8, type-detect@npm:^4.0.8": +"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f - languageName: node - linkType: hard - "type-fest@npm:^0.7.1": version: 0.7.1 resolution: "type-fest@npm:0.7.1" @@ -13204,6 +13021,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.4.2": + version: 5.4.2 + resolution: "typescript@npm:5.4.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/f8cfdc630ab1672f004e9561eb2916935b2d267792d07ce93e97fc601c7a65191af32033d5e9c0169b7dc37da7db9bf320f7432bc84527cb7697effaa4e4559d + languageName: node + linkType: hard + "typescript@npm:^5.5.3": version: 5.5.3 resolution: "typescript@npm:5.5.3" @@ -13214,6 +13041,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A5.4.2#optional!builtin": + version: 5.4.2 + resolution: "typescript@patch:typescript@npm%3A5.4.2#optional!builtin::version=5.4.2&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/f5f9a4133c2670761f0166eae5b3bafbc4a3fc24f0f42a93c9c893d9e9d6e66ea066969c5e7483fa66b4ae0e99125592553f3b92fd3599484de8be13b0615176 + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A^5.5.3#optional!builtin": version: 5.5.3 resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=379a07" @@ -13231,6 +13068,13 @@ __metadata: languageName: node linkType: hard +"ufo@npm:^1.5.3": + version: 1.5.3 + resolution: "ufo@npm:1.5.3" + checksum: 10/2b30dddd873c643efecdb58cfe457183cd4d95937ccdacca6942c697b87a2c578232c25a5149fda85436696bf0fdbc213bf2b220874712bc3e58c0fb00a2c950 + languageName: node + linkType: hard + "uglify-js@npm:^3.1.4": version: 3.18.0 resolution: "uglify-js@npm:3.18.0" @@ -13345,13 +13189,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -13396,16 +13233,6 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 10/c9e96bc8c5b34e9f05ddfeffc12f6aadecbb0d971b3cc26015b58d5b44676a99f50d5aeb1e5c9e61fa4d49961ae3ab1ae997369ed44da51b2f5ac010d188e6ad - languageName: node - linkType: hard - "use-context-selector@npm:^2.0.0": version: 2.0.0 resolution: "use-context-selector@npm:2.0.0" @@ -13437,17 +13264,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166 - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -13465,6 +13281,13 @@ __metadata: languageName: node linkType: hard +"validator@npm:^13.7.0": + version: 13.12.0 + resolution: "validator@npm:13.12.0" + checksum: 10/db6eb0725e2b67d60d30073ae8573982713b5903195d031dc3c7db7e82df8b74e8c13baef8e2106d146d979599fd61a06cde1fec5c148e4abd53d52817ff0fd9 + languageName: node + linkType: hard + "vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -13472,6 +13295,132 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:1.6.0": + version: 1.6.0 + resolution: "vite-node@npm:1.6.0" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.3.4" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + vite: "npm:^5.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10/40230598c3c285cf65f407ac50b1c7753ab2dfa960de76ec1a95a0ce0ff963919d065c29ba538d9fb2fba3e0703a051d49d1ad6486001ba2f90616cc706ddc3d + languageName: node + linkType: hard + +"vite-plugin-dts@npm:^3.9.1": + version: 3.9.1 + resolution: "vite-plugin-dts@npm:3.9.1" + dependencies: + "@microsoft/api-extractor": "npm:7.43.0" + "@rollup/pluginutils": "npm:^5.1.0" + "@vue/language-core": "npm:^1.8.27" + debug: "npm:^4.3.4" + kolorist: "npm:^1.8.0" + magic-string: "npm:^0.30.8" + vue-tsc: "npm:^1.8.27" + peerDependencies: + typescript: "*" + vite: "*" + peerDependenciesMeta: + vite: + optional: true + checksum: 10/3a0c65fb45dd5ce6e83e7525df2de3d7c27d92f39e7d363d27b6c2daf66feaf820c4bc014f326cb903dc816db8027845df7add47a8f33e80aa3927443299e812 + languageName: node + linkType: hard + +"vite@npm:^5.0.0, vite@npm:^5.3.3": + version: 5.3.3 + resolution: "vite@npm:5.3.3" + dependencies: + esbuild: "npm:^0.21.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.39" + rollup: "npm:^4.13.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10/e7a094cefedad9e204b715588502118e07d1b9c00c617f55b810169181907f55144f0a82f650995d6a74f12e3695fca65afc348b475b91a81dcbd0274d30a088 + languageName: node + linkType: hard + +"vitest@npm:^1.6.0": + version: 1.6.0 + resolution: "vitest@npm:1.6.0" + dependencies: + "@vitest/expect": "npm:1.6.0" + "@vitest/runner": "npm:1.6.0" + "@vitest/snapshot": "npm:1.6.0" + "@vitest/spy": "npm:1.6.0" + "@vitest/utils": "npm:1.6.0" + acorn-walk: "npm:^8.3.2" + chai: "npm:^4.3.10" + debug: "npm:^4.3.4" + execa: "npm:^8.0.1" + local-pkg: "npm:^0.5.0" + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + std-env: "npm:^3.5.0" + strip-literal: "npm:^2.0.0" + tinybench: "npm:^2.5.1" + tinypool: "npm:^0.8.3" + vite: "npm:^5.0.0" + vite-node: "npm:1.6.0" + why-is-node-running: "npm:^2.2.2" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 1.6.0 + "@vitest/ui": 1.6.0 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 10/ad921a723ac9438636d37111f0b2ea5afd0ba4a7813fb75382b9f75574e10d533cf950573ebb9332a595ce197cb83593737a6b55a3b6e6eb00bddbcd0920a03e + languageName: node + linkType: hard + "vlq@npm:^1.0.0": version: 1.0.1 resolution: "vlq@npm:1.0.1" @@ -13479,12 +13428,28 @@ __metadata: languageName: node linkType: hard -"w3c-xmlserializer@npm:^5.0.0": - version: 5.0.0 - resolution: "w3c-xmlserializer@npm:5.0.0" +"vue-template-compiler@npm:^2.7.14": + version: 2.7.16 + resolution: "vue-template-compiler@npm:2.7.16" dependencies: - xml-name-validator: "npm:^5.0.0" - checksum: 10/d78f59e6b4f924aa53b6dfc56949959229cae7fe05ea9374eb38d11edcec01398b7f5d7a12576bd5acc57ff446abb5c9115cd83b9d882555015437cf858d42f0 + de-indent: "npm:^1.0.2" + he: "npm:^1.2.0" + checksum: 10/8b05748dc64ee709a6077d576b4af234b229ecd36f7fda7cd2e17851403b66d168ad81c91636b5c28da6356d7723fd1ffe1202c73ffcdcc3ac9ad3ba748e42c7 + languageName: node + linkType: hard + +"vue-tsc@npm:^1.8.27": + version: 1.8.27 + resolution: "vue-tsc@npm:1.8.27" + dependencies: + "@volar/typescript": "npm:~1.11.1" + "@vue/language-core": "npm:1.8.27" + semver: "npm:^7.5.4" + peerDependencies: + typescript: "*" + bin: + vue-tsc: bin/vue-tsc.js + checksum: 10/fb84ff195de75e3529cf01b917f111bee561d15e1e437aa97a47e797f99f913783f24ec2d595271240240a21df08ba43b36aa7fc82a48a4c396a0f6d0e409376 languageName: node linkType: hard @@ -13495,7 +13460,7 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7, walker@npm:^1.0.8": +"walker@npm:^1.0.7": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -13527,15 +13492,6 @@ __metadata: languageName: node linkType: hard -"whatwg-encoding@npm:^3.1.1": - version: 3.1.1 - resolution: "whatwg-encoding@npm:3.1.1" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 10/bbef815eb67f91487c7f2ef96329743f5fd8357d7d62b1119237d25d41c7e452dff8197235b2d3c031365a17f61d3bb73ca49d0ed1582475aa4a670815e79534 - languageName: node - linkType: hard - "whatwg-fetch@npm:^3.0.0": version: 3.6.20 resolution: "whatwg-fetch@npm:3.6.20" @@ -13543,20 +13499,10 @@ __metadata: languageName: node linkType: hard -"whatwg-mimetype@npm:^4.0.0": - version: 4.0.0 - resolution: "whatwg-mimetype@npm:4.0.0" - checksum: 10/894a618e2d90bf444b6f309f3ceb6e58cf21b2beaa00c8b333696958c4076f0c7b30b9d33413c9ffff7c5832a0a0c8569e5bb347ef44beded72aeefd0acd62e8 - languageName: node - linkType: hard - -"whatwg-url@npm:^14.0.0": - version: 14.0.0 - resolution: "whatwg-url@npm:14.0.0" - dependencies: - tr46: "npm:^5.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10/67ea7a359a90663b28c816d76379b4be62d13446e9a4c0ae0b5ae0294b1c22577750fcdceb40827bb35a61777b7093056953c856604a28b37d6a209ba59ad062 +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10/96f9f628c663c2ae05412c185ca81b3df54bcb921ab52fe9ebc0081c1720f25d770665401eb2338ab7f48c71568133845638e18a81ed52ab5d4dcef7d22b40ef languageName: node linkType: hard @@ -13657,6 +13603,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: "npm:^2.0.0" + stackback: "npm:0.0.2" + bin: + why-is-node-running: cli.js + checksum: 10/f3582e0337f4b25537d492b1d40f00b978ce04b1d1eeea8f310bfa8aae8a7d11d118d672e2f0760c164ce3753a620a70aa29ff3620e340197624940cf9c08615 + languageName: node + linkType: hard + "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" @@ -13671,13 +13629,6 @@ __metadata: languageName: node linkType: hard -"workerpool@npm:^6.5.1": - version: 6.5.1 - resolution: "workerpool@npm:6.5.1" - checksum: 10/b1b00139fe62f2ebec556a2af8085bf6e7502ad26cf2a4dcb34fb4408b2e68aa12c88b0a50cb463b24f2806d60fa491fc0da933b56ec3b53646aeec0025d14cb - languageName: node - linkType: hard - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -13729,16 +13680,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.7" - checksum: 10/3be1f5508a46c190619d5386b1ac8f3af3dbe951ed0f7b0b4a0961eed6fc626bd84b50cf4be768dabc0a05b672f5d0c5ee7f42daa557b14415d18c3a13c7d246 - languageName: node - linkType: hard - "write-file-atomic@npm:^5.0.0, write-file-atomic@npm:^5.0.1": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" @@ -13773,35 +13714,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.17.0": - version: 8.18.0 - resolution: "ws@npm:8.18.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/70dfe53f23ff4368d46e4c0b1d4ca734db2c4149c6f68bc62cb16fc21f753c47b35fcc6e582f3bdfba0eaeb1c488cddab3c2255755a5c3eecb251431e42b3ff6 - languageName: node - linkType: hard - -"xml-name-validator@npm:^5.0.0": - version: 5.0.0 - resolution: "xml-name-validator@npm:5.0.0" - checksum: 10/43f30f3f6786e406dd665acf08cd742d5f8a46486bd72517edb04b27d1bcd1599664c2a4a99fc3f1e56a3194bff588b12f178b7972bc45c8047bdc4c3ac8d4a1 - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 10/4ad5924974efd004a47cce6acf5c0269aee0e62f9a805a426db3337af7bcbd331099df174b024ace4fb18971b8a56de386d2e73a1c4b020e3abd63a4a9b917f1 - languageName: node - linkType: hard - "xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -13856,7 +13768,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": +"yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 10/0188f430a0f496551d09df6719a9132a3469e47fe2747208b1dd0ab2bb0c512a95d0b081628bbca5400fb20dbf2fabe63d22badb346cecadffdd948b049f3fcc @@ -13870,18 +13782,6 @@ __metadata: languageName: node linkType: hard -"yargs-unparser@npm:^2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: "npm:^6.0.0" - decamelize: "npm:^4.0.0" - flat: "npm:^5.0.2" - is-plain-obj: "npm:^2.1.0" - checksum: 10/68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 - languageName: node - linkType: hard - "yargs@npm:^15.1.0": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -13901,7 +13801,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.0.0, yargs@npm:^16.2.0": +"yargs@npm:^16.0.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -13916,7 +13816,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2": +"yargs@npm:^17.0.0, yargs@npm:^17.5.1, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -13945,6 +13845,13 @@ __metadata: languageName: node linkType: hard +"yocto-queue@npm:^1.0.0": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: 10/f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c + languageName: node + linkType: hard + "yoctocolors@npm:^2.0.0": version: 2.1.1 resolution: "yoctocolors@npm:2.1.1" @@ -13964,6 +13871,23 @@ __metadata: languageName: node linkType: hard +"z-schema@npm:~5.0.2": + version: 5.0.5 + resolution: "z-schema@npm:5.0.5" + dependencies: + commander: "npm:^9.4.1" + lodash.get: "npm:^4.4.2" + lodash.isequal: "npm:^4.5.0" + validator: "npm:^13.7.0" + dependenciesMeta: + commander: + optional: true + bin: + z-schema: bin/z-schema + checksum: 10/8ac2fa445f5a00e790d1f91a48aeff0ccfc340f84626771853e03f4d97cdc2f5f798cdb2e38418f7815ffc3aac3952c45caabcf077bf4f83fedf0cdef43b885b + languageName: node + linkType: hard + "zod@npm:^3.23.8": version: 3.23.8 resolution: "zod@npm:3.23.8"