From bd66d8456e3f02ce65f579f67b4354da8866fa83 Mon Sep 17 00:00:00 2001 From: adr Date: Sun, 9 Mar 2025 00:14:53 -0500 Subject: [PATCH 1/6] clean up typecheck --- src/scratch/two.ts | 6 +----- src/tests/parser/utils/test-infix-expression.ts | 1 - src/tests/vitest/eval/eval.test.ts | 8 ++++---- src/vite/App.tsx | 3 +-- src/vite/main.tsx | 2 +- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/scratch/two.ts b/src/scratch/two.ts index 430b91e..99c730c 100644 --- a/src/scratch/two.ts +++ b/src/scratch/two.ts @@ -3,11 +3,7 @@ import { Console, Effect } from "effect"; import { Schema } from "effect"; import { nativeToExp } from "src/schemas/nodes/exps/union"; import { ReturnStmt } from "src/schemas/nodes/stmts/return"; -import { - type Stmt, - isExpStmt, - Stmt, -} from "src/schemas/nodes/stmts/union"; +import { Stmt, isExpStmt } from "src/schemas/nodes/stmts/union"; const program = Effect.gen(function* () { const istmt = nativeToExp(6); diff --git a/src/tests/parser/utils/test-infix-expression.ts b/src/tests/parser/utils/test-infix-expression.ts index 3e35fa2..2ef8970 100644 --- a/src/tests/parser/utils/test-infix-expression.ts +++ b/src/tests/parser/utils/test-infix-expression.ts @@ -1,4 +1,3 @@ -import { ConstantExp } from "@/schemas/nodes/exps/unions/constant"; import { Effect, Schema } from "effect"; import { KennethParseError } from "src/errors/kenneth/parse"; import { InfixExp } from "src/schemas/nodes/exps/infix"; diff --git a/src/tests/vitest/eval/eval.test.ts b/src/tests/vitest/eval/eval.test.ts index 0538119..7a99ac5 100644 --- a/src/tests/vitest/eval/eval.test.ts +++ b/src/tests/vitest/eval/eval.test.ts @@ -10,7 +10,7 @@ import { expectStrObjEq, } from "@/services/expectations/obj/eq"; import { secSquared } from "@/services/math"; -import { testIntegerObject, testNullOject } from "@/tests/evaluator/utils"; +import { testNullOject } from "@/tests/evaluator/utils"; import { describe, expect, it } from "@effect/vitest"; import { Cause, Effect, Exit, Match, Schema } from "effect"; @@ -164,7 +164,7 @@ describe("eval", () => { ["foobar", "identifier not found: foobar"], ] as const; - for (const [input, expected] of tests) { + for (const [input] of tests) { it.effect(input, () => Effect.gen(function* () { const result = yield* Effect.exit(evalP(input)); @@ -271,7 +271,7 @@ describe("eval", () => { ['len("one", "two")', "wrong number of arguments. got=2, want=1"], ] as const; - for (const [input, expected] of tests) { + for (const [input] of tests) { it.effect(input, () => Effect.gen(function* () { const result = yield* Effect.exit(evalP(input)); @@ -489,7 +489,7 @@ describe("eval", () => { ["[1, 2, 3][3]", null], ["[1, 2, 3][-1]", null], ] as const; - for (const [input, expected] of tests) { + for (const [input] of tests) { it.effect(input, () => Effect.gen(function* () { const result = yield* Effect.exit(evalP(input)); diff --git a/src/vite/App.tsx b/src/vite/App.tsx index bf77ce1..f0affb5 100644 --- a/src/vite/App.tsx +++ b/src/vite/App.tsx @@ -8,10 +8,9 @@ import { examples } from "./examples"; const PROMPT = ">>"; function App() { - const [count, setCount] = useState(0); const [text, setText] = useState(PROMPT); const [instructions, setInstructions] = useState(""); - const [evaluations, setEvaluations] = useState([]); + const [_, setEvaluations] = useState([]); const handleKeyDown = (e: React.KeyboardEvent) => { if (e.ctrlKey && e.key === "c") { diff --git a/src/vite/main.tsx b/src/vite/main.tsx index b359c54..f371e13 100644 --- a/src/vite/main.tsx +++ b/src/vite/main.tsx @@ -2,7 +2,7 @@ import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import App from "./App"; -createRoot(document.getElementById("root")).render( +createRoot(document.getElementById("root")!).render( , From c5d34f2cb9b098bab2275ab7fcd6e2f871e9aed6 Mon Sep 17 00:00:00 2001 From: adr Date: Sun, 9 Mar 2025 00:23:36 -0500 Subject: [PATCH 2/6] property tests begin --- src/tests/vitest/eval/eval.test.ts | 9 +-------- src/tests/vitest/prop/prop.test.ts | 32 ++++++++++++++++++++++++++++++ src/tests/vitest/utils/eval.ts | 9 +++++++++ 3 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 src/tests/vitest/prop/prop.test.ts create mode 100644 src/tests/vitest/utils/eval.ts diff --git a/src/tests/vitest/eval/eval.test.ts b/src/tests/vitest/eval/eval.test.ts index 7a99ac5..6e680dc 100644 --- a/src/tests/vitest/eval/eval.test.ts +++ b/src/tests/vitest/eval/eval.test.ts @@ -1,9 +1,7 @@ import { KennethEvalError } from "@/errors/kenneth/eval"; -import { defaultLayer } from "@/layers/default"; import { nodeString } from "@/schemas/nodes/union"; import { ArrayObj } from "@/schemas/objs/array"; import { FunctionObj } from "@/schemas/objs/function"; -import { Evaluator } from "@/services/evaluator"; import { expectBooleanObjEq, expectIntObjEq, @@ -13,12 +11,7 @@ import { secSquared } from "@/services/math"; import { testNullOject } from "@/tests/evaluator/utils"; import { describe, expect, it } from "@effect/vitest"; import { Cause, Effect, Exit, Match, Schema } from "effect"; - -const evalP = (input: string) => - Effect.gen(function* () { - const evaluator = yield* Evaluator; - return yield* evaluator.run(input); - }).pipe(Effect.provide(defaultLayer)); +import { evalP } from "../utils/eval"; describe("eval", () => { describe("IntExp", () => { diff --git a/src/tests/vitest/prop/prop.test.ts b/src/tests/vitest/prop/prop.test.ts new file mode 100644 index 0000000..5eef270 --- /dev/null +++ b/src/tests/vitest/prop/prop.test.ts @@ -0,0 +1,32 @@ +import { BooleanObj } from "@/schemas/objs/bool"; +import { IntegerObj } from "@/schemas/objs/int"; +import { OPERATOR_TO_FUNCTION_MAP } from "@/services/evaluator/constants"; +import { it } from "@effect/vitest"; +import { Effect, Schema } from "effect"; +import { evalP } from "../utils/eval"; + +it.prop( + "prefix operator", + [ + Schema.Number.pipe(Schema.int()), + Schema.Literal("+"), + Schema.Number.pipe(Schema.int()), + ], + ([left, operator, right]) => + evalP(`${left} ${operator} ${right}`).pipe( + Effect.flatMap((evaluated) => + Effect.gen(function* () { + // const { value } = yield* Schema.decodeUnknown( + // Schema.Union(IntegerObj, BooleanObj), + // )(evaluated); + // yield* Effect.logDebug("value", value); + // const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); + // yield* Effect.logDebug("jsValue", jsValue); + return yield* Effect.succeed(true); + }), + ), + ), + { + fails: false, + }, +); diff --git a/src/tests/vitest/utils/eval.ts b/src/tests/vitest/utils/eval.ts new file mode 100644 index 0000000..e02d0bd --- /dev/null +++ b/src/tests/vitest/utils/eval.ts @@ -0,0 +1,9 @@ +import { defaultLayer } from "@/layers/default"; +import { Evaluator } from "@/services/evaluator"; +import { Effect } from "effect"; + +export const evalP = (input: string) => + Effect.gen(function* () { + const evaluator = yield* Evaluator; + return yield* evaluator.run(input); + }).pipe(Effect.provide(defaultLayer)); From b9f893bcfde2faa1c0e16567dbbc3adb27b93666 Mon Sep 17 00:00:00 2001 From: adr Date: Sun, 9 Mar 2025 18:46:19 -0400 Subject: [PATCH 3/6] update deps and first property test --- bun.lock | 454 +++++++++++++------------ package.json | 70 ++-- src/tests/prop/eg.test.ts | 43 +++ src/tests/prop/i.test.ts | 269 +++++++++++++++ src/tests/prop/prop.test.ts | 40 +++ src/tests/vitest/eval/eval.test.ts | 1 + src/tests/vitest/prop/prop.test.ts | 32 -- src/tests/vitest/property/prop.test.ts | 37 ++ 8 files changed, 663 insertions(+), 283 deletions(-) create mode 100644 src/tests/prop/eg.test.ts create mode 100644 src/tests/prop/i.test.ts create mode 100644 src/tests/prop/prop.test.ts delete mode 100644 src/tests/vitest/prop/prop.test.ts create mode 100644 src/tests/vitest/property/prop.test.ts diff --git a/bun.lock b/bun.lock index 76bfef0..dcb2dd0 100644 --- a/bun.lock +++ b/bun.lock @@ -4,63 +4,63 @@ "": { "name": "@a33/kenneth", "dependencies": { - "@biomejs/biome": "1.9.4", - "@effect/cli": "0.54.1", - "@effect/opentelemetry": "0.42.7", - "@effect/platform": "0.75.1", - "@effect/platform-bun": "0.55.1", - "@effect/platform-node": "0.71.1", - "@opentelemetry/exporter-trace-otlp-http": "0.57.1", - "@opentelemetry/sdk-metrics": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/sdk-trace-node": "1.30.1", - "@opentelemetry/sdk-trace-web": "1.30.1", - "@tailwindcss/vite": "^4.0.6", - "@types/react": "^19.0.9", - "@types/react-dom": "^19.0.3", - "@vitejs/plugin-react-swc": "^3.8.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "effect": "3.12.7", - "eval": "0.1.8", - "lucide-react": "^0.475.0", - "nerdamer-prime": "^1.2.4", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "tailwind-merge": "^3.0.1", - "tailwindcss-animate": "^1.0.7", + "@biomejs/biome": "latest", + "@effect/cli": "latest", + "@effect/opentelemetry": "latest", + "@effect/platform": "latest", + "@effect/platform-bun": "latest", + "@effect/platform-node": "latest", + "@opentelemetry/exporter-trace-otlp-http": "latest", + "@opentelemetry/sdk-metrics": "latest", + "@opentelemetry/sdk-trace-base": "latest", + "@opentelemetry/sdk-trace-node": "latest", + "@opentelemetry/sdk-trace-web": "latest", + "@tailwindcss/vite": "latest", + "@types/react": "latest", + "@types/react-dom": "latest", + "@vitejs/plugin-react-swc": "latest", + "class-variance-authority": "latest", + "clsx": "latest", + "effect": "latest", + "eval": "latest", + "lucide-react": "latest", + "nerdamer-prime": "latest", + "react": "latest", + "react-dom": "latest", + "tailwind-merge": "latest", + "tailwindcss-animate": "latest", }, "devDependencies": { - "@babel/cli": "7.26.4", - "@babel/core": "7.26.7", - "@babel/plugin-transform-export-namespace-from": "7.25.9", - "@babel/plugin-transform-modules-commonjs": "7.26.3", - "@effect/build-utils": "0.7.8", - "@effect/eslint-plugin": "0.2.0", - "@effect/language-service": "0.2.0", - "@effect/vitest": "0.17.3", - "@eslint/compat": "1.2.5", - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.19.0", - "@types/bun": "1.2.0", - "@types/node": "22.10.10", - "@typescript-eslint/eslint-plugin": "8.21.0", - "@typescript-eslint/parser": "8.21.0", - "@vitest/coverage-v8": "3.0.7", - "autoprefixer": "^10.4.20", - "babel-plugin-annotate-pure-calls": "0.5.0", - "eslint": "9.19.0", - "eslint-import-resolver-typescript": "3.7.0", - "eslint-plugin-codegen": "0.29.0", - "eslint-plugin-import": "2.31.0", - "eslint-plugin-simple-import-sort": "12.1.1", - "eslint-plugin-sort-destructure-keys": "2.0.0", - "postcss": "^8.5.2", - "tailwindcss": "^4.0.6", - "tsx": "4.19.2", - "typescript": "5.7.3", - "vite": "^6.1.0", - "vitest": "3.0.4", + "@babel/cli": "latest", + "@babel/core": "latest", + "@babel/plugin-transform-export-namespace-from": "latest", + "@babel/plugin-transform-modules-commonjs": "latest", + "@effect/build-utils": "latest", + "@effect/eslint-plugin": "latest", + "@effect/language-service": "latest", + "@effect/vitest": "latest", + "@eslint/compat": "latest", + "@eslint/eslintrc": "latest", + "@eslint/js": "latest", + "@types/bun": "latest", + "@types/node": "latest", + "@typescript-eslint/eslint-plugin": "latest", + "@typescript-eslint/parser": "latest", + "@vitest/coverage-v8": "latest", + "autoprefixer": "latest", + "babel-plugin-annotate-pure-calls": "latest", + "eslint": "latest", + "eslint-import-resolver-typescript": "latest", + "eslint-plugin-codegen": "latest", + "eslint-plugin-import": "latest", + "eslint-plugin-simple-import-sort": "latest", + "eslint-plugin-sort-destructure-keys": "latest", + "postcss": "latest", + "tailwindcss": "latest", + "tsx": "latest", + "typescript": "latest", + "vite": "latest", + "vitest": "latest", }, }, }, @@ -73,7 +73,7 @@ "@babel/compat-data": ["@babel/compat-data@7.26.8", "", {}, "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ=="], - "@babel/core": ["@babel/core@7.26.7", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.5", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.7", "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", "@babel/traverse": "^7.26.7", "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA=="], + "@babel/core": ["@babel/core@7.26.9", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/traverse": "^7.26.9", "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw=="], "@babel/generator": ["@babel/generator@7.26.9", "", { "dependencies": { "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg=="], @@ -129,23 +129,23 @@ "@dprint/typescript": ["@dprint/typescript@0.91.8", "", {}, "sha512-tuKn4leCPItox1O4uunHcQF0QllDCvPWklnNQIh2PiWWVtRAGltJJnM4Cwj5AciplosD1Hiz7vAY3ew3crLb3A=="], - "@effect/build-utils": ["@effect/build-utils@0.7.8", "", { "bin": { "build-utils": "main.js" } }, "sha512-ixcKsG6UnjIKqIbgCkTMJRcte+bW+p0ffHu/5QvDgVuzg3Nv0OUmgLOps49ExVE2VvoRddS4jVcjxlIzkPCKow=="], + "@effect/build-utils": ["@effect/build-utils@0.7.9", "", { "bin": { "build-utils": "main.js" } }, "sha512-I9tuSvKOnhF2NNsCzHulsUvEwJBQKqiZ1RtbJA+DfxqXZ9J1QSh4txnfnDC2D2bygMYuWqMJWg7TvAWun7cs6w=="], - "@effect/cli": ["@effect/cli@0.54.1", "", { "dependencies": { "ini": "^4.1.3", "toml": "^3.0.0", "yaml": "^2.5.0" }, "peerDependencies": { "@effect/platform": "^0.75.1", "@effect/printer": "^0.40.7", "@effect/printer-ansi": "^0.40.7", "effect": "^3.12.7" } }, "sha512-fmceFVhUPAB0cEV6TJAb7HNP6rWRIJa6EdsXJwNdf3RsyInqg8YrEPwJptQplsYDBP6Ujc9z0zUqmtIXcvZGeg=="], + "@effect/cli": ["@effect/cli@0.57.1", "", { "dependencies": { "ini": "^4.1.3", "toml": "^3.0.0", "yaml": "^2.5.0" }, "peerDependencies": { "@effect/platform": "^0.78.1", "@effect/printer": "^0.41.8", "@effect/printer-ansi": "^0.41.8", "effect": "^3.13.8" } }, "sha512-dAwHuFesSwXXRG3ll8ZdOzD0ZAkdNRejJvJgXx1Ql11Z45K4yAEemfAEy/FJxMHeneNsxYeoXdGqRO+/I2VXfg=="], - "@effect/eslint-plugin": ["@effect/eslint-plugin@0.2.0", "", { "dependencies": { "@dprint/formatter": "^0.4.1", "@dprint/typescript": "^0.91.3", "prettier-linter-helpers": "^1.0.0" } }, "sha512-PC/hEDGctYGYIjZyhM6kbD4FyHxLgoYNoQNjGkCXcFEzi71vQc3PJKe2JnCgzcUDvr/Nc2qgTVU4ONYwjHzQGA=="], + "@effect/eslint-plugin": ["@effect/eslint-plugin@0.3.0", "", { "dependencies": { "@dprint/formatter": "^0.4.1", "@dprint/typescript": "^0.91.3", "prettier-linter-helpers": "^1.0.0" } }, "sha512-feNIhQXE0SGkyIKUlTHY7m/AMOxwfpBs3QBwDX7qSl8sShyxWmGWzES4R0u/9hUmHj1o2+Ie49UkN/lOp6728A=="], - "@effect/language-service": ["@effect/language-service@0.2.0", "", {}, "sha512-DoK41yKGyQv79o0ca8gxEogMlt+IphXkdCXwgenbQjH1BXKD7tJAr0+VsDhblycQcvQ39f1l9NZN9CBqjM9ALA=="], + "@effect/language-service": ["@effect/language-service@0.4.0", "", {}, "sha512-J27e4KWkeACHI0jrvc656R/SOTuA+oUDLOOf5HYjRz3xb8dO+xlbDVujIFtgIc9K0rvXrpVGlG+qjuGGaGVsfg=="], - "@effect/opentelemetry": ["@effect/opentelemetry@0.42.7", "", { "peerDependencies": { "@opentelemetry/api": "^1.6", "@opentelemetry/resources": "^1.22", "@opentelemetry/sdk-metrics": "^1.22", "@opentelemetry/sdk-trace-base": "^1.22", "@opentelemetry/sdk-trace-node": "^1.22", "@opentelemetry/sdk-trace-web": "^1.22", "@opentelemetry/semantic-conventions": "^1.24.1", "effect": "^3.12.7" }, "optionalPeers": ["@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-xn5lS4Y/EVfMbMUiyQXGEUBI5Wtq1SUUHrqYt0cBJxV9QRaCVpKF+Xy7g9zEVrc3ZKgPR03yT4uLYaQUw8XC5w=="], + "@effect/opentelemetry": ["@effect/opentelemetry@0.44.8", "", { "peerDependencies": { "@opentelemetry/api": "^1.6", "@opentelemetry/resources": "^1.22", "@opentelemetry/sdk-metrics": "^1.22", "@opentelemetry/sdk-trace-base": "^1.22", "@opentelemetry/sdk-trace-node": "^1.22", "@opentelemetry/sdk-trace-web": "^1.22", "@opentelemetry/semantic-conventions": "^1.24.1", "effect": "^3.13.8" }, "optionalPeers": ["@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-4kyrjjNt8LvC/bVVEBl0SmZmIAMUclAFpQK8bsB+AKU/K5IAmOCXlXJYZh7mVoGq6gaT77EUR7Tn4k4RXAiizw=="], - "@effect/platform": ["@effect/platform@0.75.1", "", { "dependencies": { "find-my-way-ts": "^0.1.5", "multipasta": "^0.2.5" }, "peerDependencies": { "effect": "^3.12.7" } }, "sha512-YIrlMiRm4dGDaMtCwiLOwDK5AqtVIWGx4MkqBmYhQTqnthDdyg4j7rxbPvzaedsnn6EEaE7kIIKJVolBQsf3qw=="], + "@effect/platform": ["@effect/platform@0.78.1", "", { "dependencies": { "find-my-way-ts": "^0.1.5", "multipasta": "^0.2.5" }, "peerDependencies": { "effect": "^3.13.8" } }, "sha512-QJDGYLyYwH/K/LsCC0Ogx5bmjdC9NCzfrteT3GElQau6YK7TohcFmCxc4GVvukHEyuWWgHeWYAkl9LNMGyci0A=="], - "@effect/platform-bun": ["@effect/platform-bun@0.55.1", "", { "dependencies": { "@effect/platform-node-shared": "^0.25.1", "multipasta": "^0.2.5" }, "peerDependencies": { "@effect/platform": "^0.75.1", "effect": "^3.12.7" } }, "sha512-EyggYoeq15OT147oxRKvAwzHF2l/wL+o2GRqo1qlGZXhuMUS0F0WVQjLtzrAHQK9vakF9Ly2d1E6bFVjmDuzmQ=="], + "@effect/platform-bun": ["@effect/platform-bun@0.58.1", "", { "dependencies": { "@effect/platform-node-shared": "^0.28.1", "multipasta": "^0.2.5" }, "peerDependencies": { "@effect/platform": "^0.78.1", "effect": "^3.13.8" } }, "sha512-nzg0INbOfoSDgIzgyj4BCbKrVroEAp/BWwCb+8ncI4lHkXWXqrVGzxKL2oPjYFKyHlbdY1gqaWclACDQeF3A1A=="], - "@effect/platform-node": ["@effect/platform-node@0.71.1", "", { "dependencies": { "@effect/platform-node-shared": "^0.25.1", "mime": "^3.0.0", "undici": "^7.1.0", "ws": "^8.18.0" }, "peerDependencies": { "@effect/platform": "^0.75.1", "effect": "^3.12.7" } }, "sha512-O2HFAuU31lzKfWllIfCH7Kb+vbJjtQYskzHVUA8K2BovAAN/L1WwGVRCQQS0Ys+nqTk2BD9x6w7xrtxg9+PEhA=="], + "@effect/platform-node": ["@effect/platform-node@0.74.1", "", { "dependencies": { "@effect/platform-node-shared": "^0.28.1", "mime": "^3.0.0", "undici": "^7.1.0", "ws": "^8.18.0" }, "peerDependencies": { "@effect/platform": "^0.78.1", "effect": "^3.13.8" } }, "sha512-Zt6eHxLxVeja0mGQ0AUD/OZwjJJCK6FiLpvcFcIWZhiyjsPEZYGyLtBqwikgJAD8prteFdOo8rkhQTzzKS5saw=="], - "@effect/platform-node-shared": ["@effect/platform-node-shared@0.25.4", "", { "dependencies": { "@parcel/watcher": "^2.4.1", "multipasta": "^0.2.5" }, "peerDependencies": { "@effect/platform": "^0.75.4", "effect": "^3.12.10" } }, "sha512-HQEYnNV5iXoqbcZ8gmO4HcSSq/TuoDKQADFVfzDSkI50xUaPpq8kz0oIN/R4VfZoGjYZE4NbX+0D749pNtMxCQ=="], + "@effect/platform-node-shared": ["@effect/platform-node-shared@0.28.1", "", { "dependencies": { "@parcel/watcher": "^2.4.1", "multipasta": "^0.2.5" }, "peerDependencies": { "@effect/platform": "^0.78.1", "effect": "^3.13.8" } }, "sha512-5bPMbdvAcmBIE/fwojC7JYBl6xDlfLHYfS3maGyyC+4t1DCBaJ9NKchj0LA4+8BEglhWtmUtgOz6mq1b9cqaKg=="], "@effect/printer": ["@effect/printer@0.40.12", "", { "peerDependencies": { "@effect/typeclass": "^0.31.12", "effect": "^3.12.12" } }, "sha512-B5y/9pzdvN4ntlg74jhFE5nhgdTALdPDfaJ/e4JgIjzHAfcT3nKVyZj1CPoTFkNSFOPID5YBMPSzAG14vwSm5w=="], @@ -153,75 +153,77 @@ "@effect/typeclass": ["@effect/typeclass@0.31.12", "", { "peerDependencies": { "effect": "^3.12.12" } }, "sha512-iyg8EJgZ7PS4hFnkWFtyeaXIH4544tLprmerRYFjgGHMsqxoorTfHd2N01inXd3stUgcGiHoVy1DDAxWKLomkQ=="], - "@effect/vitest": ["@effect/vitest@0.17.3", "", { "peerDependencies": { "effect": "^3.12.7", "vitest": "^2.0.5" } }, "sha512-sRLJ5tl/i2hnNr9NOr1Xu+uOmOraRmUZyt8pOB/83NevcKk9dKeWcxVitg4sVgpcWWfC3vzIIaM6J9DMqaCYuw=="], + "@effect/vitest": ["@effect/vitest@0.19.6", "", { "peerDependencies": { "effect": "^3.13.8", "vitest": "^3.0.0" } }, "sha512-TrD+FOU+8oNeGOnrKwuZkgrsTXxBWdvnbKzesfjFoSbwJIRk18Q7ReoG96FEBa2IL5FJvleUEtBPS3VQgldYpw=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.23.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.23.1", "", { "os": "android", "cpu": "arm" }, "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.23.1", "", { "os": "android", "cpu": "arm64" }, "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.23.1", "", { "os": "android", "cpu": "x64" }, "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.23.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.23.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.23.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.23.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.23.1", "", { "os": "linux", "cpu": "arm" }, "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.23.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.23.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.23.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.23.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.23.1", "", { "os": "linux", "cpu": "x64" }, "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.23.1", "", { "os": "none", "cpu": "x64" }, "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.23.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.23.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.23.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.23.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.23.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.23.1", "", { "os": "win32", "cpu": "x64" }, "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], - "@eslint/compat": ["@eslint/compat@1.2.5", "", { "peerDependencies": { "eslint": "^9.10.0" }, "optionalPeers": ["eslint"] }, "sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg=="], + "@eslint/compat": ["@eslint/compat@1.2.7", "", { "peerDependencies": { "eslint": "^9.10.0" }, "optionalPeers": ["eslint"] }, "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg=="], "@eslint/config-array": ["@eslint/config-array@0.19.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w=="], - "@eslint/core": ["@eslint/core@0.10.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw=="], + "@eslint/config-helpers": ["@eslint/config-helpers@0.1.0", "", {}, "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA=="], - "@eslint/eslintrc": ["@eslint/eslintrc@3.2.0", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w=="], + "@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="], - "@eslint/js": ["@eslint/js@9.19.0", "", {}, "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ=="], + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.0", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ=="], + + "@eslint/js": ["@eslint/js@9.22.0", "", {}, "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.5", "", { "dependencies": { "@eslint/core": "^0.10.0", "levn": "^0.4.1" } }, "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A=="], + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.7", "", { "dependencies": { "@eslint/core": "^0.12.0", "levn": "^0.4.1" } }, "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g=="], "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], @@ -229,7 +231,7 @@ "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.1", "", {}, "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA=="], + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.2", "", {}, "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ=="], "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], @@ -263,17 +265,17 @@ "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], - "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.1", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-I4PHczeujhQAQv6ZBzqHYEUiggZL4IdSMixtVD3EYqbdrjujE7kRfI5QohjlPoJm8BvenoW5YaTMWRrbpot6tg=="], + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A=="], "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.30.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA=="], "@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], - "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.57.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.1", "@opentelemetry/otlp-transformer": "0.57.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-43dLEjlf6JGxpVt9RaRlJAvjHG1wGsbAuNd67RIDy/95zfKk2aNovtiGUgFdS/kcvgvS90upIUbgn0xUd9JjMg=="], + "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-sB/gkSYFu+0w2dVQ0PWY9fAMl172PKMZ/JrHkkW8dmjCL0CYkmXeE+ssqIL/yBUTPOvpLIpenX5T9RwXRBW/3g=="], - "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.57.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-transformer": "0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-GNBJAEYfeiYJQ3O2dvXgiNZ/qjWrBxSb1L1s7iV/jKBRGMN3Nv+miTk2SLeEobF5E5ZK4rVcHKlBZ71bPVIv/g=="], + "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-transformer": "0.57.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag=="], - "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.57.1", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-logs": "0.57.1", "@opentelemetry/sdk-metrics": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "protobufjs": "^7.3.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-EX67y+ukNNfFrOLyjYGw8AMy0JPIlEX1dW60SGUNZWW2hSQyyolX7EqFuHP5LtXLjJHNfzx5SMBVQ3owaQCNDw=="], + "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-logs": "0.57.2", "@opentelemetry/sdk-metrics": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "protobufjs": "^7.3.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig=="], "@opentelemetry/propagator-b3": ["@opentelemetry/propagator-b3@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ=="], @@ -281,7 +283,7 @@ "@opentelemetry/resources": ["@opentelemetry/resources@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA=="], - "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.57.1", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-jGdObb/BGWu6Peo3cL3skx/Rl1Ak/wDDO3vpPrrThGbqE7isvkCsX6uE+OAt8Ayjm9YC8UGkohWbLR09JmM0FA=="], + "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg=="], "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog=="], @@ -387,6 +389,8 @@ "@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], + "@swc/core": ["@swc/core@1.10.16", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.17" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.10.16", "@swc/core-darwin-x64": "1.10.16", "@swc/core-linux-arm-gnueabihf": "1.10.16", "@swc/core-linux-arm64-gnu": "1.10.16", "@swc/core-linux-arm64-musl": "1.10.16", "@swc/core-linux-x64-gnu": "1.10.16", "@swc/core-linux-x64-musl": "1.10.16", "@swc/core-win32-arm64-msvc": "1.10.16", "@swc/core-win32-ia32-msvc": "1.10.16", "@swc/core-win32-x64-msvc": "1.10.16" }, "peerDependencies": { "@swc/helpers": "*" }, "optionalPeers": ["@swc/helpers"] }, "sha512-nOINg/OUcZazCW7B55QV2/UB8QAqz9FYe4+z229+4RYboBTZ102K7ebOEjY5sKn59JgAkhjZTz+5BKmXpDFopw=="], "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.10.16", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iikIxwqCQ4Bvz79vJ4ELh26efPf1u5D9TFdmXSJUBs7C3mmMHvk5zyWD9A9cTowXiW6WHs2gE58U1R9HOTTIcg=="], @@ -413,35 +417,35 @@ "@swc/types": ["@swc/types@0.1.17", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ=="], - "@tailwindcss/node": ["@tailwindcss/node@4.0.6", "", { "dependencies": { "enhanced-resolve": "^5.18.0", "jiti": "^2.4.2", "tailwindcss": "4.0.6" } }, "sha512-jb6E0WeSq7OQbVYcIJ6LxnZTeC4HjMvbzFBMCrQff4R50HBlo/obmYNk6V2GCUXDeqiXtvtrQgcIbT+/boB03Q=="], + "@tailwindcss/node": ["@tailwindcss/node@4.0.12", "", { "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "tailwindcss": "4.0.12" } }, "sha512-a6J11K1Ztdln9OrGfoM75/hChYPcHYGNYimqciMrvKXRmmPaS8XZTHhdvb5a3glz4Kd4ZxE1MnuFE2c0fGGmtg=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.0.6", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.0.6", "@tailwindcss/oxide-darwin-arm64": "4.0.6", "@tailwindcss/oxide-darwin-x64": "4.0.6", "@tailwindcss/oxide-freebsd-x64": "4.0.6", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.6", "@tailwindcss/oxide-linux-arm64-gnu": "4.0.6", "@tailwindcss/oxide-linux-arm64-musl": "4.0.6", "@tailwindcss/oxide-linux-x64-gnu": "4.0.6", "@tailwindcss/oxide-linux-x64-musl": "4.0.6", "@tailwindcss/oxide-win32-arm64-msvc": "4.0.6", "@tailwindcss/oxide-win32-x64-msvc": "4.0.6" } }, "sha512-lVyKV2y58UE9CeKVcYykULe9QaE1dtKdxDEdrTPIdbzRgBk6bdxHNAoDqvcqXbIGXubn3VOl1O/CFF77v/EqSA=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.0.12", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.0.12", "@tailwindcss/oxide-darwin-arm64": "4.0.12", "@tailwindcss/oxide-darwin-x64": "4.0.12", "@tailwindcss/oxide-freebsd-x64": "4.0.12", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.12", "@tailwindcss/oxide-linux-arm64-gnu": "4.0.12", "@tailwindcss/oxide-linux-arm64-musl": "4.0.12", "@tailwindcss/oxide-linux-x64-gnu": "4.0.12", "@tailwindcss/oxide-linux-x64-musl": "4.0.12", "@tailwindcss/oxide-win32-arm64-msvc": "4.0.12", "@tailwindcss/oxide-win32-x64-msvc": "4.0.12" } }, "sha512-DWb+myvJB9xJwelwT9GHaMc1qJj6MDXRDR0CS+T8IdkejAtu8ctJAgV4r1drQJLPeS7mNwq2UHW2GWrudTf63A=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.0.6", "", { "os": "android", "cpu": "arm64" }, "sha512-xDbym6bDPW3D2XqQqX3PjqW3CKGe1KXH7Fdkc60sX5ZLVUbzPkFeunQaoP+BuYlLc2cC1FoClrIRYnRzof9Sow=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.0.12", "", { "os": "android", "cpu": "arm64" }, "sha512-dAXCaemu3mHLXcA5GwGlQynX8n7tTdvn5i1zAxRvZ5iC9fWLl5bGnjZnzrQqT7ttxCvRwdVf3IHUnMVdDBO/kQ=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.0.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-1f71/ju/tvyGl5c2bDkchZHy8p8EK/tDHCxlpYJ1hGNvsYihZNurxVpZ0DefpN7cNc9RTT8DjrRoV8xXZKKRjg=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.0.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-vPNI+TpJQ7sizselDXIJdYkx9Cu6JBdtmRWujw9pVIxW8uz3O2PjgGGzL/7A0sXI8XDjSyRChrUnEW9rQygmJQ=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.0.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-s/hg/ZPgxFIrGMb0kqyeaqZt505P891buUkSezmrDY6lxv2ixIELAlOcUVTkVh245SeaeEiUVUPiUN37cwoL2g=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.0.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-RL/9jM41Fdq4Efr35C5wgLx98BirnrfwuD+zgMFK6Ir68HeOSqBhW9jsEeC7Y/JcGyPd3MEoJVIU4fAb7YLg7A=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.0.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Z3Wo8FWZnmio8+xlcbb7JUo/hqRMSmhQw8IGIRoRJ7GmLR0C+25Wq+bEX/135xe/yEle2lFkhu9JBHd4wZYiig=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.0.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-7WzWiax+LguJcMEimY0Q4sBLlFXu1tYxVka3+G2M9KmU/3m84J3jAIV4KZWnockbHsbb2XgrEjtlJKVwHQCoRA=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6", "", { "os": "linux", "cpu": "arm" }, "sha512-SNSwkkim1myAgmnbHs4EjXsPL7rQbVGtjcok5EaIzkHkCAVK9QBQsWeP2Jm2/JJhq4wdx8tZB9Y7psMzHYWCkA=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.0.12", "", { "os": "linux", "cpu": "arm" }, "sha512-X9LRC7jjE1QlfIaBbXjY0PGeQP87lz5mEfLSVs2J1yRc9PSg1tEPS9NBqY4BU9v5toZgJgzKeaNltORyTs22TQ=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.0.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-tJ+mevtSDMQhKlwCCuhsFEFg058kBiSy4TkoeBG921EfrHKmexOaCyFKYhVXy4JtkaeeOcjJnCLasEeqml4i+Q=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.0.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-i24IFNq2402zfDdoWKypXz0ZNS2G4NKaA82tgBlE2OhHIE+4mg2JDb5wVfyP6R+MCm5grgXvurcIcKWvo44QiQ=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.0.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-IoArz1vfuTR4rALXMUXI/GWWfx2EaO4gFNtBNkDNOYhlTD4NVEwE45nbBoojYiTulajI4c2XH8UmVEVJTOJKxA=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.0.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-LmOdshJBfAGIBG0DdBWhI0n5LTMurnGGJCHcsm9F//ISfsHtCnnYIKgYQui5oOz1SUCkqsMGfkAzWyNKZqbGNw=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.0.6", "", { "os": "linux", "cpu": "x64" }, "sha512-QtsUfLkEAeWAC3Owx9Kg+7JdzE+k9drPhwTAXbXugYB9RZUnEWWx5x3q/au6TvUYcL+n0RBqDEO2gucZRvRFgQ=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.0.12", "", { "os": "linux", "cpu": "x64" }, "sha512-OSK667qZRH30ep8RiHbZDQfqkXjnzKxdn0oRwWzgCO8CoTxV+MvIkd0BWdQbYtYuM1wrakARV/Hwp0eA/qzdbw=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.0.6", "", { "os": "linux", "cpu": "x64" }, "sha512-QthvJqIji2KlGNwLcK/PPYo7w1Wsi/8NK0wAtRGbv4eOPdZHkQ9KUk+oCoP20oPO7i2a6X1aBAFQEL7i08nNMA=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.0.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uylhWq6OWQ8krV8Jk+v0H/3AZKJW6xYMgNMyNnUbbYXWi7hIVdxRKNUB5UvrlC3RxtgsK5EAV2i1CWTRsNcAnA=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.0.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-+oka+dYX8jy9iP00DJ9Y100XsqvbqR5s0yfMZJuPR1H/lDVtDfsZiSix1UFBQ3X1HWxoEEl6iXNJHWd56TocVw=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.0.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-XDLnhMoXZEEOir1LK43/gHHwK84V1GlV8+pAncUAIN2wloeD+nNciI9WRIY/BeFTqES22DhTIGoilSO39xDb2g=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.0.6", "", { "os": "win32", "cpu": "x64" }, "sha512-+o+juAkik4p8Ue/0LiflQXPmVatl6Av3LEZXpBTfg4qkMIbZdhCGWFzHdt2NjoMiLOJCFDddoV6GYaimvK1Olw=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.0.12", "", { "os": "win32", "cpu": "x64" }, "sha512-I/BbjCLpKDQucvtn6rFuYLst1nfFwSMYyPzkx/095RE+tuzk5+fwXuzQh7T3fIBTcbn82qH/sFka7yPGA50tLw=="], - "@tailwindcss/vite": ["@tailwindcss/vite@4.0.6", "", { "dependencies": { "@tailwindcss/node": "^4.0.6", "@tailwindcss/oxide": "^4.0.6", "lightningcss": "^1.29.1", "tailwindcss": "4.0.6" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-O25vZ/URWbZ2JHdk2o8wH7jOKqEGCsYmX3GwGmYS5DjE4X3mpf93a72Rn7VRnefldNauBzr5z2hfZptmBNtTUQ=="], + "@tailwindcss/vite": ["@tailwindcss/vite@4.0.12", "", { "dependencies": { "@tailwindcss/node": "4.0.12", "@tailwindcss/oxide": "4.0.12", "lightningcss": "^1.29.1", "tailwindcss": "4.0.12" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-JM3gp601UJiryIZ9R2bSqalzcOy15RCybQ1Q+BJqDEwVyo4LkWKeqQAcrpHapWXY31OJFTuOUVBFDWMhzHm2Bg=="], - "@types/bun": ["@types/bun@1.2.0", "", { "dependencies": { "bun-types": "1.2.0" } }, "sha512-5N1JqdahfpBlAv4wy6svEYcd/YfO2GNrbL95JOmFx8nkE6dbK4R0oSE5SpBA4vBRqgrOUAXF8Dpiz+gi7r80SA=="], + "@types/bun": ["@types/bun@1.2.4", "", { "dependencies": { "bun-types": "1.2.4" } }, "sha512-QtuV5OMR8/rdKJs213iwXDpfVvnskPXY/S0ZiFbsTjQZycuqPbMW8Gf/XhLfwE5njW8sxI2WjISURXPlHypMFA=="], "@types/dedent": ["@types/dedent@0.7.0", "", {}, "sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A=="], @@ -469,13 +473,13 @@ "@types/minimatch": ["@types/minimatch@5.1.2", "", {}, "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="], - "@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "@types/node": ["@types/node@22.13.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw=="], "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], - "@types/react": ["@types/react@19.0.9", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-FedNTYgmMwSZmD1Sru/W1gJKuiYCN/3SuBkmZkcxX+FpO5zL76B22A9YNfAKg4HQO3Neh/30AiynP6BELdU0qQ=="], + "@types/react": ["@types/react@19.0.10", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g=="], - "@types/react-dom": ["@types/react-dom@19.0.3", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA=="], + "@types/react-dom": ["@types/react-dom@19.0.4", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg=="], "@types/stack-utils": ["@types/stack-utils@2.0.3", "", {}, "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="], @@ -487,39 +491,39 @@ "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.21.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/type-utils": "8.21.0", "@typescript-eslint/utils": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.26.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/type-utils": "8.26.0", "@typescript-eslint/utils": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.21.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/types": "8.21.0", "@typescript-eslint/typescript-estree": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.26.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/types": "8.26.0", "@typescript-eslint/typescript-estree": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0" } }, "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0" } }, "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.21.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.21.0", "@typescript-eslint/utils": "8.21.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.26.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.26.0", "@typescript-eslint/utils": "8.26.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.21.0", "", {}, "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.26.0", "", {}, "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.8.0" } }, "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.21.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/types": "8.21.0", "@typescript-eslint/typescript-estree": "8.21.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.26.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/types": "8.26.0", "@typescript-eslint/typescript-estree": "8.26.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg=="], "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.8.0", "", { "dependencies": { "@swc/core": "^1.10.15" }, "peerDependencies": { "vite": "^4 || ^5 || ^6" } }, "sha512-T4sHPvS+DIqDP51ifPqa9XIRAz/kIvIi8oXcnOZZgHmMotgmmdxe/DD5tMFlt5nuIRzT0/QuiwmKlH0503Aapw=="], - "@vitest/coverage-v8": ["@vitest/coverage-v8@3.0.7", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", "debug": "^4.4.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.8.0", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, "peerDependencies": { "@vitest/browser": "3.0.7", "vitest": "3.0.7" }, "optionalPeers": ["@vitest/browser"] }, "sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ=="], + "@vitest/coverage-v8": ["@vitest/coverage-v8@3.0.8", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", "debug": "^4.4.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.8.0", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, "peerDependencies": { "@vitest/browser": "3.0.8", "vitest": "3.0.8" }, "optionalPeers": ["@vitest/browser"] }, "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw=="], - "@vitest/expect": ["@vitest/expect@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg=="], + "@vitest/expect": ["@vitest/expect@3.0.8", "", { "dependencies": { "@vitest/spy": "3.0.8", "@vitest/utils": "3.0.8", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ=="], - "@vitest/mocker": ["@vitest/mocker@3.0.4", "", { "dependencies": { "@vitest/spy": "3.0.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A=="], + "@vitest/mocker": ["@vitest/mocker@3.0.8", "", { "dependencies": { "@vitest/spy": "3.0.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow=="], - "@vitest/pretty-format": ["@vitest/pretty-format@3.0.5", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA=="], + "@vitest/pretty-format": ["@vitest/pretty-format@3.0.8", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg=="], - "@vitest/runner": ["@vitest/runner@3.0.4", "", { "dependencies": { "@vitest/utils": "3.0.4", "pathe": "^2.0.2" } }, "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw=="], + "@vitest/runner": ["@vitest/runner@3.0.8", "", { "dependencies": { "@vitest/utils": "3.0.8", "pathe": "^2.0.3" } }, "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w=="], - "@vitest/snapshot": ["@vitest/snapshot@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "magic-string": "^0.30.17", "pathe": "^2.0.2" } }, "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w=="], + "@vitest/snapshot": ["@vitest/snapshot@3.0.8", "", { "dependencies": { "@vitest/pretty-format": "3.0.8", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A=="], - "@vitest/spy": ["@vitest/spy@3.0.4", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q=="], + "@vitest/spy": ["@vitest/spy@3.0.8", "", { "dependencies": { "tinyspy": "^3.0.2" } }, "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q=="], - "@vitest/utils": ["@vitest/utils@3.0.4", "", { "dependencies": { "@vitest/pretty-format": "3.0.4", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" } }, "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ=="], + "@vitest/utils": ["@vitest/utils@3.0.8", "", { "dependencies": { "@vitest/pretty-format": "3.0.8", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" } }, "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q=="], "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], @@ -527,7 +531,7 @@ "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], - "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -551,7 +555,7 @@ "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], - "autoprefixer": ["autoprefixer@10.4.20", "", { "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g=="], + "autoprefixer": ["autoprefixer@10.4.21", "", { "dependencies": { "browserslist": "^4.24.4", "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ=="], "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], @@ -561,13 +565,15 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], - "bun-types": ["bun-types@1.2.0", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw=="], + "bun-types": ["bun-types@1.2.4", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-nDPymR207ZZEoWD4AavvEaa/KZe/qlrbMSchqpQwovPZCKc7pwMoENjEtHgMKaAjJhy+x6vfqSBA1QU3bJgs0Q=="], "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], @@ -579,7 +585,7 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001700", "", {}, "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ=="], + "caniuse-lite": ["caniuse-lite@1.0.30001703", "", {}, "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ=="], "chai": ["chai@5.2.0", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw=="], @@ -593,6 +599,10 @@ "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], + "cheerio": ["cheerio@1.0.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "encoding-sniffer": "^0.2.0", "htmlparser2": "^9.1.0", "parse5": "^7.1.2", "parse5-htmlparser2-tree-adapter": "^7.0.0", "parse5-parser-stream": "^7.1.2", "undici": "^6.19.5", "whatwg-mimetype": "^4.0.0" } }, "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww=="], + + "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], @@ -613,6 +623,10 @@ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "css-select": ["css-select@5.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="], + + "css-what": ["css-what@6.1.0", "", {}, "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], @@ -639,18 +653,30 @@ "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "effect": ["effect@3.12.7", "", { "dependencies": { "fast-check": "^3.23.1" } }, "sha512-BsDTgSjLbL12g0+vGn5xkOgOVhRSaR3VeHmjcUb0gLvpXACJ9OgmlfeH+/FaAZwM5+omIF3I/j1gC5KJrbK1Aw=="], + "effect": ["effect@3.13.8", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-v4659n0zzu9UEbbs7wrsQyrWl4yaqSPQDVVMCUVtiOp54zqzIw3HK4FUr7peOkmx63aXRHofiXpmY8GXDeez+g=="], "electron-to-chromium": ["electron-to-chromium@1.5.101", "", {}, "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA=="], "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "encoding-sniffer": ["encoding-sniffer@0.2.0", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg=="], + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], "es-abstract": ["es-abstract@1.23.9", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="], @@ -669,21 +695,21 @@ "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], - "esbuild": ["esbuild@0.23.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.23.1", "@esbuild/android-arm": "0.23.1", "@esbuild/android-arm64": "0.23.1", "@esbuild/android-x64": "0.23.1", "@esbuild/darwin-arm64": "0.23.1", "@esbuild/darwin-x64": "0.23.1", "@esbuild/freebsd-arm64": "0.23.1", "@esbuild/freebsd-x64": "0.23.1", "@esbuild/linux-arm": "0.23.1", "@esbuild/linux-arm64": "0.23.1", "@esbuild/linux-ia32": "0.23.1", "@esbuild/linux-loong64": "0.23.1", "@esbuild/linux-mips64el": "0.23.1", "@esbuild/linux-ppc64": "0.23.1", "@esbuild/linux-riscv64": "0.23.1", "@esbuild/linux-s390x": "0.23.1", "@esbuild/linux-x64": "0.23.1", "@esbuild/netbsd-x64": "0.23.1", "@esbuild/openbsd-arm64": "0.23.1", "@esbuild/openbsd-x64": "0.23.1", "@esbuild/sunos-x64": "0.23.1", "@esbuild/win32-arm64": "0.23.1", "@esbuild/win32-ia32": "0.23.1", "@esbuild/win32-x64": "0.23.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg=="], + "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.19.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA=="], + "eslint": ["eslint@9.22.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", "@eslint/config-helpers": "^0.1.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.0", "@eslint/js": "9.22.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ=="], "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], - "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.7.0", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", "fast-glob": "^3.3.2", "get-tsconfig": "^4.7.5", "is-bun-module": "^1.0.2", "is-glob": "^4.0.3", "stable-hash": "^0.0.4" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow=="], + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.8.3", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", "stable-hash": "^0.0.4", "tinyglobby": "^0.2.12" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ=="], "eslint-module-utils": ["eslint-module-utils@2.12.0", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg=="], - "eslint-plugin-codegen": ["eslint-plugin-codegen@0.29.0", "", { "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "~7.12.0", "@babel/parser": "^7.11.5", "@babel/traverse": "^7.11.5", "@pnpm/deps.graph-sequencer": "^1.0.0", "@types/dedent": "0.7.0", "@types/eslint": "^8.44.7", "@types/glob": "7.1.3", "@types/js-yaml": "3.12.5", "@types/lodash": "^4.14.202", "@types/node": "^20.0.0", "dedent": "^1.5.1", "eslint-plugin-markdown": "^4.0.1", "expect": "^29.7.0", "fp-ts": "^2.1.0", "glob": "^10.3.10", "io-ts": "^2.2.4", "io-ts-extra": "^0.11.6", "js-yaml": "^3.14.0", "lodash": "^4.17.15", "read-pkg-up": "^7.0.1" } }, "sha512-C5NqptnJgf5ngxAaPg125OodjYeDD1o79Q2QbRV4Ga8WGX70KyC9KgB5walRy037fl9/JFC8PKVB9lwLOBbVGw=="], + "eslint-plugin-codegen": ["eslint-plugin-codegen@0.30.0", "", { "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "~7.12.0", "@babel/parser": "^7.11.5", "@babel/traverse": "^7.11.5", "@pnpm/deps.graph-sequencer": "^1.0.0", "@types/dedent": "0.7.0", "@types/eslint": "^8.44.7", "@types/glob": "7.1.3", "@types/js-yaml": "3.12.5", "@types/lodash": "^4.14.202", "@types/node": "^20.0.0", "cheerio": "^1.0.0", "dedent": "^1.5.1", "eslint-plugin-markdown": "^4.0.1", "expect": "^29.7.0", "fp-ts": "^2.1.0", "glob": "^10.3.10", "io-ts": "^2.2.4", "io-ts-extra": "^0.11.6", "js-yaml": "^3.14.0", "lodash": "^4.17.15", "ms": "^2.1.3", "read-pkg-up": "^7.0.1", "safe-stringify": "^1.1.0", "strip-ansi": "6.0.1" } }, "sha512-oCItByzA7EjW3bEtxfZ9HKjWI1p1Iexgzc1S4K/62WIviV4gdOoHVrv63MpWblggshr4wsW/Ulb7SWrZKpz8AA=="], "eslint-plugin-import": ["eslint-plugin-import@2.31.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.0", "hasown": "^2.0.2", "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.0", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A=="], @@ -693,7 +719,7 @@ "eslint-plugin-sort-destructure-keys": ["eslint-plugin-sort-destructure-keys@2.0.0", "", { "dependencies": { "natural-compare-lite": "^1.4.0" }, "peerDependencies": { "eslint": "5 - 9" } }, "sha512-4w1UQCa3o/YdfWaLr9jY8LfGowwjwjmwClyFLxIsToiyIdZMq3x9Ti44nDn34DtTPP7PWg96tUONKVmATKhYGQ=="], - "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], + "eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="], "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], @@ -731,6 +757,8 @@ "fastq": ["fastq@1.19.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA=="], + "fdir": ["fdir@6.4.3", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw=="], + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], @@ -805,6 +833,10 @@ "html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="], + "htmlparser2": ["htmlparser2@9.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "entities": "^4.5.0" } }, "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], @@ -969,7 +1001,7 @@ "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - "lucide-react": ["lucide-react@0.475.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-NJzvVu1HwFVeZ+Gwq2q00KygM1aBhy/ZrhY9FsAgJtpB+E4R7uxRk9M2iKvHa6/vNxZydIB59htha4c2vvwvVg=="], + "lucide-react": ["lucide-react@0.479.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-aBhNnveRhorBOK7uA4gDjgaf+YlHMdMhQ/3cupk6exM10hWlEU+2QtWYOfhXhjAsmdb6LeKR+NZnow4UxRRiTQ=="], "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], @@ -1019,6 +1051,8 @@ "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], @@ -1051,6 +1085,12 @@ "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + "parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], + + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + + "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], @@ -1067,13 +1107,13 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.2", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA=="], + "postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], @@ -1127,6 +1167,10 @@ "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + "safe-stringify": ["safe-stringify@1.1.1", "", {}, "sha512-YSzQLuwp06fuvJD1h6+vVNFYZoXmDs5UUNPUbTvQK7Ap+L0qD4Vp+sN434C+pdS3prVVlUfQdNeiEIgxox/kUQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -1187,7 +1231,7 @@ "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -1199,9 +1243,9 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "tailwind-merge": ["tailwind-merge@3.0.1", "", {}, "sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g=="], + "tailwind-merge": ["tailwind-merge@3.0.2", "", {}, "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw=="], - "tailwindcss": ["tailwindcss@4.0.6", "", {}, "sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw=="], + "tailwindcss": ["tailwindcss@4.0.12", "", {}, "sha512-bT0hJo91FtncsAMSsMzUkoo/iEU0Xs5xgFgVC9XmdM9bw5MhZuQFjPNl6wxAE0SiQF/YTZJa+PndGWYSDtuxAg=="], "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], @@ -1213,6 +1257,8 @@ "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "tinyglobby": ["tinyglobby@0.2.12", "", { "dependencies": { "fdir": "^6.4.3", "picomatch": "^4.0.2" } }, "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww=="], + "tinypool": ["tinypool@1.0.2", "", {}, "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA=="], "tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], @@ -1227,7 +1273,7 @@ "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], - "tsx": ["tsx@4.19.2", "", { "dependencies": { "esbuild": "~0.23.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g=="], + "tsx": ["tsx@4.19.3", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], @@ -1241,7 +1287,7 @@ "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], + "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="], "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], @@ -1257,11 +1303,15 @@ "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], - "vite": ["vite@6.1.0", "", { "dependencies": { "esbuild": "^0.24.2", "postcss": "^8.5.1", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ=="], + "vite": ["vite@6.2.1", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q=="], + + "vite-node": ["vite-node@3.0.8", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg=="], + + "vitest": ["vitest@3.0.8", "", { "dependencies": { "@vitest/expect": "3.0.8", "@vitest/mocker": "3.0.8", "@vitest/pretty-format": "^3.0.8", "@vitest/runner": "3.0.8", "@vitest/snapshot": "3.0.8", "@vitest/spy": "3.0.8", "@vitest/utils": "3.0.8", "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", "pathe": "^2.0.3", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", "vite-node": "3.0.8", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.0.8", "@vitest/ui": "3.0.8", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA=="], - "vite-node": ["vite-node@3.0.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", "pathe": "^2.0.2", "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA=="], + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], - "vitest": ["vitest@3.0.4", "", { "dependencies": { "@vitest/expect": "3.0.4", "@vitest/mocker": "3.0.4", "@vitest/pretty-format": "^3.0.4", "@vitest/runner": "3.0.4", "@vitest/snapshot": "3.0.4", "@vitest/spy": "3.0.4", "@vitest/utils": "3.0.4", "chai": "^5.1.2", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", "pathe": "^2.0.2", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", "vite-node": "3.0.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.0.4", "@vitest/ui": "3.0.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw=="], + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -1297,15 +1347,25 @@ "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "@jest/types/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "@opentelemetry/sdk-trace-node/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], + "@types/glob/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + + "@types/ws/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@typescript-eslint/typescript-estree/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], - "@vitest/snapshot/@vitest/pretty-format": ["@vitest/pretty-format@3.0.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.0.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g=="], + "browserslist/caniuse-lite": ["caniuse-lite@1.0.30001700", "", {}, "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ=="], + + "cheerio/undici": ["undici@6.21.1", "", {}, "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ=="], "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], @@ -1323,6 +1383,8 @@ "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + "eval/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "is-bun-module/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], @@ -1331,25 +1393,33 @@ "jest-message-util/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + "jest-util/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + + "jest-util/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "make-dir/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "normalize-package-data/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + "protobufjs/@types/node": ["@types/node@22.10.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww=="], + "read-pkg/type-fest": ["type-fest@0.6.0", "", {}, "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="], "read-pkg-up/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - "stack-utils/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "stack-utils/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], - "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "test-exclude/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], @@ -1357,13 +1427,13 @@ "tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], - "vite/esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], @@ -1379,61 +1449,13 @@ "read-pkg-up/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "test-exclude/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], - "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], - - "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], - - "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], - - "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], - - "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], - - "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], - - "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], - - "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], - - "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], - - "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], - - "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], - - "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], - - "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], - - "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], - - "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], - - "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], - - "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], - - "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], - - "vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], - - "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], - - "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], - - "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], - - "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], - - "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "eslint-plugin-codegen/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], diff --git a/package.json b/package.json index 7689588..133dff2 100644 --- a/package.json +++ b/package.json @@ -20,62 +20,62 @@ }, "dependencies": { "@biomejs/biome": "1.9.4", - "@effect/cli": "0.54.1", - "@effect/opentelemetry": "0.42.7", - "@effect/platform": "0.75.1", - "@effect/platform-bun": "0.55.1", - "@effect/platform-node": "0.71.1", - "@opentelemetry/exporter-trace-otlp-http": "0.57.1", + "@effect/cli": "0.57.1", + "@effect/opentelemetry": "0.44.8", + "@effect/platform": "0.78.1", + "@effect/platform-bun": "0.58.1", + "@effect/platform-node": "0.74.1", + "@opentelemetry/exporter-trace-otlp-http": "0.57.2", "@opentelemetry/sdk-metrics": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "@opentelemetry/sdk-trace-node": "1.30.1", "@opentelemetry/sdk-trace-web": "1.30.1", - "@tailwindcss/vite": "^4.0.6", - "@types/react": "^19.0.9", - "@types/react-dom": "^19.0.3", + "@tailwindcss/vite": "^4.0.12", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", "@vitejs/plugin-react-swc": "^3.8.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "effect": "3.12.7", + "effect": "3.13.8", "eval": "0.1.8", - "lucide-react": "^0.475.0", + "lucide-react": "^0.479.0", "nerdamer-prime": "^1.2.4", "react": "^19.0.0", "react-dom": "^19.0.0", - "tailwind-merge": "^3.0.1", + "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@babel/cli": "7.26.4", - "@babel/core": "7.26.7", + "@babel/core": "7.26.9", "@babel/plugin-transform-export-namespace-from": "7.25.9", "@babel/plugin-transform-modules-commonjs": "7.26.3", - "@effect/build-utils": "0.7.8", - "@effect/eslint-plugin": "0.2.0", - "@effect/language-service": "0.2.0", - "@effect/vitest": "0.17.3", - "@eslint/compat": "1.2.5", - "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.19.0", - "@types/bun": "1.2.0", - "@types/node": "22.10.10", - "@typescript-eslint/eslint-plugin": "8.21.0", - "@typescript-eslint/parser": "8.21.0", - "@vitest/coverage-v8": "3.0.7", - "autoprefixer": "^10.4.20", + "@effect/build-utils": "0.7.9", + "@effect/eslint-plugin": "0.3.0", + "@effect/language-service": "0.4.0", + "@effect/vitest": "0.19.6", + "@eslint/compat": "1.2.7", + "@eslint/eslintrc": "3.3.0", + "@eslint/js": "9.22.0", + "@types/bun": "1.2.4", + "@types/node": "22.13.10", + "@typescript-eslint/eslint-plugin": "8.26.0", + "@typescript-eslint/parser": "8.26.0", + "@vitest/coverage-v8": "3.0.8", + "autoprefixer": "^10.4.21", "babel-plugin-annotate-pure-calls": "0.5.0", - "eslint": "9.19.0", - "eslint-import-resolver-typescript": "3.7.0", - "eslint-plugin-codegen": "0.29.0", + "eslint": "9.22.0", + "eslint-import-resolver-typescript": "3.8.3", + "eslint-plugin-codegen": "0.30.0", "eslint-plugin-import": "2.31.0", "eslint-plugin-simple-import-sort": "12.1.1", "eslint-plugin-sort-destructure-keys": "2.0.0", - "postcss": "^8.5.2", - "tailwindcss": "^4.0.6", - "tsx": "4.19.2", - "typescript": "5.7.3", - "vite": "^6.1.0", - "vitest": "3.0.4" + "postcss": "^8.5.3", + "tailwindcss": "^4.0.12", + "tsx": "4.19.3", + "typescript": "5.8.2", + "vite": "^6.2.1", + "vitest": "3.0.8" }, "effect": { "generateExports": { diff --git a/src/tests/prop/eg.test.ts b/src/tests/prop/eg.test.ts new file mode 100644 index 0000000..ce23335 --- /dev/null +++ b/src/tests/prop/eg.test.ts @@ -0,0 +1,43 @@ +import { expect, it } from "@effect/vitest"; +import { Context, Effect, FastCheck, Layer, Schema } from "effect"; + +// it.effect.prop( +// "day #1: should properly sort letters", +// [ +// Schema.Number.pipe(Schema.int()), +// Schema.Literal("+"), +// Schema.Number.pipe(Schema.int()), +// ], +// async ([left, operator, right]) => +// Effect.gen(function* () { +// yield* Effect.succeed(4); +// return `${left} ${operator} ${right}`; +// }), +// { fastCheck: { numrun: 200 } }, +// ); + +const realNumber = Schema.Finite.pipe(Schema.nonNaN()); + +it.effect.prop("symmetry", [realNumber, FastCheck.integer()], ([a, b]) => + Effect.gen(function* () { + yield* Effect.void; + + return a + b === b + a; + }), +); + +class Foo extends Context.Tag("Foo")() { + static Live = Layer.succeed(Foo, "foo"); +} + +it.effect.prop( + "adds context", + [realNumber], + ([num]) => + Effect.gen(function* () { + const foo = yield* Foo; + expect(foo).toEqual("foo"); + return num === num; + }), + { fastCheck: { numRuns: 200 } }, +); diff --git a/src/tests/prop/i.test.ts b/src/tests/prop/i.test.ts new file mode 100644 index 0000000..b5ee5e8 --- /dev/null +++ b/src/tests/prop/i.test.ts @@ -0,0 +1,269 @@ +import { afterAll, describe, expect, it, layer } from "@effect/vitest"; +import { + Context, + Duration, + Effect, + FastCheck, + Fiber, + Layer, + Schema, + TestClock, +} from "effect"; + +it.live("live %s", () => Effect.sync(() => expect(1).toEqual(1))); +it.effect("effect", () => Effect.sync(() => expect(1).toEqual(1))); +it.scoped("scoped", () => + Effect.acquireRelease( + Effect.sync(() => expect(1).toEqual(1)), + () => Effect.void, + ), +); +it.scopedLive("scopedLive", () => + Effect.acquireRelease( + Effect.sync(() => expect(1).toEqual(1)), + () => Effect.void, + ), +); + +// each + +it.live.each([1, 2, 3])("live each %s", (n) => + Effect.sync(() => expect(n).toEqual(n)), +); +it.effect.each([1, 2, 3])("effect each %s", (n) => + Effect.sync(() => expect(n).toEqual(n)), +); +it.scoped.each([1, 2, 3])("scoped each %s", (n) => + Effect.acquireRelease( + Effect.sync(() => expect(n).toEqual(n)), + () => Effect.void, + ), +); +it.scopedLive.each([1, 2, 3])("scopedLive each %s", (n) => + Effect.acquireRelease( + Effect.sync(() => expect(n).toEqual(n)), + () => Effect.void, + ), +); + +// skip + +it.live.skip("live skipped", () => Effect.die("skipped anyway")); +it.effect.skip("effect skipped", () => Effect.die("skipped anyway")); +it.scoped.skip("scoped skipped", () => + Effect.acquireRelease(Effect.die("skipped anyway"), () => Effect.void), +); +it.scopedLive.skip("scopedLive skipped", () => + Effect.acquireRelease(Effect.die("skipped anyway"), () => Effect.void), +); + +// skipIf + +it.effect.skipIf(true)("effect skipIf (true)", () => + Effect.die("skipped anyway"), +); +it.effect.skipIf(false)("effect skipIf (false)", () => + Effect.sync(() => expect(1).toEqual(1)), +); + +// runIf + +it.effect.runIf(true)("effect runIf (true)", () => + Effect.sync(() => expect(1).toEqual(1)), +); +it.effect.runIf(false)("effect runIf (false)", () => + Effect.die("not run anyway"), +); + +// The following test is expected to fail because it simulates a test timeout. +// Be aware that eventual "failure" of the test is only logged out. +it.scopedLive.fails( + "interrupts on timeout", + (ctx) => + Effect.gen(function* () { + let acquired = false; + + ctx.onTestFailed(() => { + if (acquired) { + // eslint-disable-next-line no-console + console.error( + "'effect is interrupted on timeout' @effect/vitest test failed", + ); + } + }); + + yield* Effect.acquireRelease( + Effect.sync(() => (acquired = true)), + () => Effect.sync(() => (acquired = false)), + ); + yield* Effect.sleep(1000); + }), + 1, +); + +class Foo extends Context.Tag("Foo")() { + static Live = Layer.succeed(Foo, "foo"); +} + +class Bar extends Context.Tag("Bar")() { + static Live = Layer.effect( + Bar, + Effect.map(Foo, () => "bar" as const), + ); +} + +class Sleeper extends Effect.Service()("Sleeper", { + effect: Effect.gen(function* () { + const clock = yield* Effect.clock; + + return { + sleep: (ms: number) => clock.sleep(Duration.millis(ms)), + } as const; + }), +}) {} + +describe("layer", () => { + layer(Foo.Live)((it) => { + it.effect("adds context", () => + Effect.gen(function* () { + const foo = yield* Foo; + expect(foo).toEqual("foo"); + }), + ); + + it.layer(Bar.Live)("nested", (it) => { + it.effect("adds context", () => + Effect.gen(function* () { + const foo = yield* Foo; + const bar = yield* Bar; + expect(foo).toEqual("foo"); + expect(bar).toEqual("bar"); + }), + ); + }); + + it.layer(Bar.Live)((it) => { + it.effect("without name", () => + Effect.gen(function* () { + const foo = yield* Foo; + const bar = yield* Bar; + expect(foo).toEqual("foo"); + expect(bar).toEqual("bar"); + }), + ); + }); + + describe("release", () => { + let released = false; + afterAll(() => { + expect(released).toEqual(true); + }); + + class Scoped extends Context.Tag("Scoped")() { + static Live = Layer.scoped( + Scoped, + Effect.acquireRelease(Effect.succeed("scoped" as const), () => + Effect.sync(() => (released = true)), + ), + ); + } + + it.layer(Scoped.Live)((it) => { + it.effect("adds context", () => + Effect.gen(function* () { + const foo = yield* Foo; + const scoped = yield* Scoped; + expect(foo).toEqual("foo"); + expect(scoped).toEqual("scoped"); + }), + ); + }); + + it.effect.prop( + "adds context", + [realNumber], + ([num]) => + Effect.gen(function* () { + const foo = yield* Foo; + expect(foo).toEqual("foo"); + return num === num; + }), + { fastCheck: { numRuns: 200 } }, + ); + }); + }); + + layer(Sleeper.Default)("test services", (it) => { + it.effect("TestClock", () => + Effect.gen(function* () { + const sleeper = yield* Sleeper; + const fiber = yield* Effect.fork(sleeper.sleep(100_000)); + yield* Effect.yieldNow(); + yield* TestClock.adjust(100_000); + yield* Fiber.join(fiber); + }), + ); + }); + + layer(Foo.Live)("with a name", (it) => { + describe("with a nested describe", () => { + it.effect("adds context", () => + Effect.gen(function* () { + const foo = yield* Foo; + expect(foo).toEqual("foo"); + }), + ); + }); + it.effect("adds context", () => + Effect.gen(function* () { + const foo = yield* Foo; + expect(foo).toEqual("foo"); + }), + ); + }); +}); + +// property testing + +const realNumber = Schema.Finite.pipe(Schema.nonNaN()); + +it.prop( + "symmetry", + [realNumber, FastCheck.integer()], + ([a, b]) => a + b === b + a, +); + +it.prop( + "symmetry with object", + { a: realNumber, b: FastCheck.integer() }, + ({ a, b }) => a + b === b + a, +); + +it.effect.prop("symmetry", [realNumber, FastCheck.integer()], ([a, b]) => + Effect.gen(function* () { + yield* Effect.void; + + return a + b === b + a; + }), +); + +it.effect.prop( + "symmetry with object", + { a: realNumber, b: FastCheck.integer() }, + ({ a, b }) => + Effect.gen(function* () { + yield* Effect.void; + + return a + b === b + a; + }), +); + +it.scoped.prop( + "should detect the substring", + { a: Schema.String, b: Schema.String, c: FastCheck.string() }, + ({ a, b, c }) => + Effect.gen(function* () { + yield* Effect.scope; + return (a + b + c).includes(b); + }), +); diff --git a/src/tests/prop/prop.test.ts b/src/tests/prop/prop.test.ts new file mode 100644 index 0000000..ffffd6e --- /dev/null +++ b/src/tests/prop/prop.test.ts @@ -0,0 +1,40 @@ +import { defaultLayer } from "@/layers/default"; +import { describe, it, layer } from "@effect/vitest"; +import { Effect, Schema } from "effect"; +import { evalP } from "../vitest/utils/eval"; + +describe("prefix operator", () => { + layer(defaultLayer)((it) => { + it.prop( + "prefix operator", + [ + Schema.Number.pipe(Schema.int()), + Schema.Literal("+"), + Schema.Number.pipe(Schema.int()), + ], + ([left, operator, right]) => + evalP(`${left} ${operator} ${right}`).pipe( + // Effect.succeed(4).pipe( + Effect.flatMap((evaluated) => + Effect.gen(function* () { + // const { value } = yield* Schema.decodeUnknown( + // Schema.Union(IntegerObj, BooleanObj), + // )(evaluated); + // yield* Effect.logDebug("value", value); + // const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); + // yield* Effect.logDebug("jsValue", jsValue); + return yield* Effect.succeed(true); + }), + ), + Effect.catchAll((error) => { + console.error( + `Failed with input [${left}, "${operator}", ${right}]:`, + error, + ); + return Effect.fail(error); + }), + ), + { fastCheck: { verbose: 2 } }, + ); + }); +}); diff --git a/src/tests/vitest/eval/eval.test.ts b/src/tests/vitest/eval/eval.test.ts index 6e680dc..299978e 100644 --- a/src/tests/vitest/eval/eval.test.ts +++ b/src/tests/vitest/eval/eval.test.ts @@ -32,6 +32,7 @@ describe("eval", () => { ["3 * (3 * 3) + 10", 37], ["(5 + 10 * 2 + 15 / 3) * 2 + -10", 50], ["2 ** 2", 4], + ["-523598121 + 1510219303", 986_621_182], ] as const; for (const [input, expected] of tests) { it.effect(input, () => diff --git a/src/tests/vitest/prop/prop.test.ts b/src/tests/vitest/prop/prop.test.ts deleted file mode 100644 index 5eef270..0000000 --- a/src/tests/vitest/prop/prop.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { BooleanObj } from "@/schemas/objs/bool"; -import { IntegerObj } from "@/schemas/objs/int"; -import { OPERATOR_TO_FUNCTION_MAP } from "@/services/evaluator/constants"; -import { it } from "@effect/vitest"; -import { Effect, Schema } from "effect"; -import { evalP } from "../utils/eval"; - -it.prop( - "prefix operator", - [ - Schema.Number.pipe(Schema.int()), - Schema.Literal("+"), - Schema.Number.pipe(Schema.int()), - ], - ([left, operator, right]) => - evalP(`${left} ${operator} ${right}`).pipe( - Effect.flatMap((evaluated) => - Effect.gen(function* () { - // const { value } = yield* Schema.decodeUnknown( - // Schema.Union(IntegerObj, BooleanObj), - // )(evaluated); - // yield* Effect.logDebug("value", value); - // const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); - // yield* Effect.logDebug("jsValue", jsValue); - return yield* Effect.succeed(true); - }), - ), - ), - { - fails: false, - }, -); diff --git a/src/tests/vitest/property/prop.test.ts b/src/tests/vitest/property/prop.test.ts new file mode 100644 index 0000000..3df28dd --- /dev/null +++ b/src/tests/vitest/property/prop.test.ts @@ -0,0 +1,37 @@ +import { defaultLayer } from "@/layers/default"; +import { infixOperatorSchema } from "@/schemas/infix-operator"; +import { BooleanObj } from "@/schemas/objs/bool"; +import { IntegerObj } from "@/schemas/objs/int"; +import { prefixOperatorSchema } from "@/schemas/prefix-operator"; +import { OPERATOR_TO_FUNCTION_MAP } from "@/services/evaluator/constants"; +import { describe, expect, it, layer } from "@effect/vitest"; +import { Effect, Schema } from "effect"; +import { evalP } from "../utils/eval"; + +describe("prefix operator", () => { + layer(defaultLayer)((it) => { + it.effect.prop( + "prefix operator", + [ + Schema.Number.pipe(Schema.int()), + infixOperatorSchema, + Schema.Number.pipe(Schema.int()), + ], + ([left, operator, right]) => + evalP(`${left} ${operator} ${right}`).pipe( + Effect.flatMap((evaluated) => + Effect.gen(function* () { + const { value } = yield* Schema.decodeUnknown( + Schema.Union(IntegerObj, BooleanObj), + )(evaluated); + yield* Effect.logDebug("value", value); + const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); + yield* Effect.logDebug("jsValue", jsValue); + expect(value).toBe(jsValue); + }), + ), + ), + { fastCheck: { numRuns: 200 } }, + ); + }); +}); From d0e715fc28c19c863995a5bf2d8902c490675bdd Mon Sep 17 00:00:00 2001 From: adr Date: Sun, 9 Mar 2025 19:02:38 -0400 Subject: [PATCH 4/6] new prop test --- src/services/evaluator/constants.ts | 11 ++++++--- src/tests/vitest/property/prop.test.ts | 32 ++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/services/evaluator/constants.ts b/src/services/evaluator/constants.ts index 18042a9..9a676c1 100644 --- a/src/services/evaluator/constants.ts +++ b/src/services/evaluator/constants.ts @@ -1,4 +1,4 @@ -import { TokenType } from '../../schemas/token-types/union' +import { TokenType } from "../../schemas/token-types/union"; export const OPERATOR_TO_FUNCTION_MAP = { [TokenType.PLUS]: (a: number, b: number) => a + b, @@ -10,8 +10,13 @@ export const OPERATOR_TO_FUNCTION_MAP = { [TokenType.GT]: (a: number, b: number) => a > b, [TokenType.EQ]: (a: T, b: T) => a === b, [TokenType.NOT_EQ]: (a: T, b: T) => a !== b, -} as const +} as const; + +export const PREFIX_OPERATOR_TO_FUNCTION_MAP = { + [TokenType.BANG]: (a: boolean) => !a, + [TokenType.MINUS]: (a: number) => -a, +} as const; export const STRING_OPERATOR_TO_FUNCTION_MAP = { [TokenType.PLUS]: (a: string, b: string) => a + b, -} as const +} as const; diff --git a/src/tests/vitest/property/prop.test.ts b/src/tests/vitest/property/prop.test.ts index 3df28dd..828bf3a 100644 --- a/src/tests/vitest/property/prop.test.ts +++ b/src/tests/vitest/property/prop.test.ts @@ -3,15 +3,20 @@ import { infixOperatorSchema } from "@/schemas/infix-operator"; import { BooleanObj } from "@/schemas/objs/bool"; import { IntegerObj } from "@/schemas/objs/int"; import { prefixOperatorSchema } from "@/schemas/prefix-operator"; -import { OPERATOR_TO_FUNCTION_MAP } from "@/services/evaluator/constants"; +import { + OPERATOR_TO_FUNCTION_MAP, + PREFIX_OPERATOR_TO_FUNCTION_MAP, +} from "@/services/evaluator/constants"; import { describe, expect, it, layer } from "@effect/vitest"; import { Effect, Schema } from "effect"; import { evalP } from "../utils/eval"; -describe("prefix operator", () => { +describe("property", () => { layer(defaultLayer)((it) => { + // TODO: cover non-integer cases + it.effect.prop( - "prefix operator", + "Integer InfixExp", [ Schema.Number.pipe(Schema.int()), infixOperatorSchema, @@ -24,9 +29,26 @@ describe("prefix operator", () => { const { value } = yield* Schema.decodeUnknown( Schema.Union(IntegerObj, BooleanObj), )(evaluated); - yield* Effect.logDebug("value", value); const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); - yield* Effect.logDebug("jsValue", jsValue); + expect(value).toBe(jsValue); + }), + ), + ), + { fastCheck: { numRuns: 200 } }, + ); + // TODO: should fail on trying to negate anything that is not an integer. + it.effect.prop( + "PrefixExp", + [prefixOperatorSchema, Schema.Number.pipe(Schema.int())], + ([operator, right]) => + evalP(`${operator}${right}`).pipe( + Effect.flatMap((evaluated) => + Effect.gen(function* () { + const { value } = yield* Schema.decodeUnknown( + Schema.Union(IntegerObj, BooleanObj), + )(evaluated); + + const jsValue = PREFIX_OPERATOR_TO_FUNCTION_MAP[operator](right); expect(value).toBe(jsValue); }), ), From ef5bb48c6ef1301704d492fa09391550fa1b4128 Mon Sep 17 00:00:00 2001 From: adr Date: Sun, 9 Mar 2025 23:56:19 -0400 Subject: [PATCH 5/6] save --- src/schemas/built-in/index.ts | 1 + src/schemas/diff/index.ts | 31 +++ src/services/diff/interpret.ts | 3 + src/services/diff/obj.ts | 2 +- src/services/evaluator/constants.ts | 2 +- src/services/object/builtins.ts | 37 +++- src/tests/prop/eg.test.ts | 43 ---- src/tests/prop/i.test.ts | 269 ------------------------- src/tests/prop/prop.test.ts | 40 ---- src/tests/vitest/property/prop.test.ts | 17 +- 10 files changed, 87 insertions(+), 358 deletions(-) create mode 100644 src/schemas/diff/index.ts create mode 100644 src/services/diff/interpret.ts delete mode 100644 src/tests/prop/eg.test.ts delete mode 100644 src/tests/prop/i.test.ts delete mode 100644 src/tests/prop/prop.test.ts diff --git a/src/schemas/built-in/index.ts b/src/schemas/built-in/index.ts index 471fa47..c2ff4d6 100644 --- a/src/schemas/built-in/index.ts +++ b/src/schemas/built-in/index.ts @@ -10,6 +10,7 @@ export const BuiltInFunc = Schema.Literal( "exp", "pi", "e", + "first", ); export type BuiltInFunc = typeof BuiltInFunc.Type; diff --git a/src/schemas/diff/index.ts b/src/schemas/diff/index.ts new file mode 100644 index 0000000..7205eff --- /dev/null +++ b/src/schemas/diff/index.ts @@ -0,0 +1,31 @@ +// primitive schema +// int +// x +// x ** int +// int * x ** int +// sin(x) +// cos(x) +// tan(x) +// ln(x) +// exp(x) + +import { Schema } from "effect"; +import { InfixExp } from "../nodes/exps/infix"; +import { IdentObj } from "../objs/ident"; +import { IntegerObj } from "../objs/int"; + +// I want to answer the question: +// is this a primitive form? + +// basically given obj and x. +// ask the questions: +// is obj the obj version of x +// is obj an infixObj with left x and right int +// is obj an infixobj with left int and right infix +// is obj a callobj with sin, cos, tan, ln, exp? + +const PrimitiveDiff = Schema.Union( + IntegerObj, + IdentObj, + InfixExp, // +); diff --git a/src/services/diff/interpret.ts b/src/services/diff/interpret.ts new file mode 100644 index 0000000..6bfd31e --- /dev/null +++ b/src/services/diff/interpret.ts @@ -0,0 +1,3 @@ +// I want to answer the question what is the function here? + +// if I see () ** diff --git a/src/services/diff/obj.ts b/src/services/diff/obj.ts index 8cdb525..8dc31c3 100644 --- a/src/services/diff/obj.ts +++ b/src/services/diff/obj.ts @@ -2,7 +2,7 @@ import { BuiltInDiffFunc } from "@/schemas/built-in/diff"; import { CallExp } from "@/schemas/nodes/exps/call"; import { OpInfixExp } from "@/schemas/nodes/exps/infix"; import { nativeToIntExp } from "@/schemas/nodes/exps/int"; -import { PrefixExp, opPrefixExp } from "@/schemas/nodes/exps/prefix"; +import { opPrefixExp } from "@/schemas/nodes/exps/prefix"; import { BuiltInObj } from "@/schemas/objs/built-in"; import { BuiltInCallObj, CallObj } from "@/schemas/objs/call"; import { IdentObj } from "@/schemas/objs/ident"; diff --git a/src/services/evaluator/constants.ts b/src/services/evaluator/constants.ts index 9a676c1..930b359 100644 --- a/src/services/evaluator/constants.ts +++ b/src/services/evaluator/constants.ts @@ -13,7 +13,7 @@ export const OPERATOR_TO_FUNCTION_MAP = { } as const; export const PREFIX_OPERATOR_TO_FUNCTION_MAP = { - [TokenType.BANG]: (a: boolean) => !a, + [TokenType.BANG]: (a: number) => !a, [TokenType.MINUS]: (a: number) => -a, } as const; diff --git a/src/services/object/builtins.ts b/src/services/object/builtins.ts index d76ebae..8fbe2a0 100644 --- a/src/services/object/builtins.ts +++ b/src/services/object/builtins.ts @@ -1,10 +1,10 @@ import { ArrayObj } from "@/schemas/objs/array"; import { BuiltInObj } from "@/schemas/objs/built-in"; -import { ErrorObj } from "@/schemas/objs/error"; import { FunctionObj } from "@/schemas/objs/function"; import { IntegerObj } from "@/schemas/objs/int"; +import { NULL, type NullObj } from "@/schemas/objs/null"; import { StringObj } from "@/schemas/objs/string"; -import type { Obj } from "@/schemas/objs/union"; +import { Obj } from "@/schemas/objs/union"; import { Effect, Match, Schema } from "effect"; import { DiffExp } from "src/schemas/nodes/exps/diff"; import { IdentExp } from "src/schemas/nodes/exps/ident"; @@ -100,6 +100,7 @@ export const builtins = { ln: BuiltInObj.make({ fn: "ln" }), pi: BuiltInObj.make({ fn: "pi" }), exp: BuiltInObj.make({ fn: "exp" }), + first: BuiltInObj.make({ fn: "first" }), } as const; export const builtInFnMap = { @@ -119,6 +120,38 @@ export const builtInFnMap = { ), ), ), + first: (...args: Obj[]) => + Schema.decodeUnknown(Schema.Tuple(ArrayObj))(args).pipe( + Effect.flatMap(([{ elements }]) => + elements.length > 0 + ? Effect.succeed(elements[0]) + : Effect.succeed(NULL), + ), + ), + last: (...args: Obj[]) => + Schema.decodeUnknown(Schema.Tuple(ArrayObj))(args).pipe( + Effect.flatMap(([{ elements }]) => + elements.length > 0 + ? Effect.succeed(elements[elements.length - 1]) + : Effect.succeed(NULL), + ), + ), + rest: (...args: Obj[]) => + Schema.decodeUnknown(Schema.Tuple(ArrayObj))(args).pipe( + Effect.flatMap(([{ elements }]) => + Effect.gen(function* () { + return yield* elements.length > 0 + ? Effect.succeed(ArrayObj.make({ elements: elements.slice(1) })) + : Effect.succeed(NULL); + }), + ), + ), + push: (...args: Obj[]) => + Schema.decodeUnknown(Schema.Tuple(ArrayObj, Obj))(args).pipe( + Effect.flatMap(([{ elements }, element]) => + Effect.succeed(ArrayObj.make({ elements: [...elements, element] })), + ), + ), diff, sin, cos, diff --git a/src/tests/prop/eg.test.ts b/src/tests/prop/eg.test.ts deleted file mode 100644 index ce23335..0000000 --- a/src/tests/prop/eg.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { expect, it } from "@effect/vitest"; -import { Context, Effect, FastCheck, Layer, Schema } from "effect"; - -// it.effect.prop( -// "day #1: should properly sort letters", -// [ -// Schema.Number.pipe(Schema.int()), -// Schema.Literal("+"), -// Schema.Number.pipe(Schema.int()), -// ], -// async ([left, operator, right]) => -// Effect.gen(function* () { -// yield* Effect.succeed(4); -// return `${left} ${operator} ${right}`; -// }), -// { fastCheck: { numrun: 200 } }, -// ); - -const realNumber = Schema.Finite.pipe(Schema.nonNaN()); - -it.effect.prop("symmetry", [realNumber, FastCheck.integer()], ([a, b]) => - Effect.gen(function* () { - yield* Effect.void; - - return a + b === b + a; - }), -); - -class Foo extends Context.Tag("Foo")() { - static Live = Layer.succeed(Foo, "foo"); -} - -it.effect.prop( - "adds context", - [realNumber], - ([num]) => - Effect.gen(function* () { - const foo = yield* Foo; - expect(foo).toEqual("foo"); - return num === num; - }), - { fastCheck: { numRuns: 200 } }, -); diff --git a/src/tests/prop/i.test.ts b/src/tests/prop/i.test.ts deleted file mode 100644 index b5ee5e8..0000000 --- a/src/tests/prop/i.test.ts +++ /dev/null @@ -1,269 +0,0 @@ -import { afterAll, describe, expect, it, layer } from "@effect/vitest"; -import { - Context, - Duration, - Effect, - FastCheck, - Fiber, - Layer, - Schema, - TestClock, -} from "effect"; - -it.live("live %s", () => Effect.sync(() => expect(1).toEqual(1))); -it.effect("effect", () => Effect.sync(() => expect(1).toEqual(1))); -it.scoped("scoped", () => - Effect.acquireRelease( - Effect.sync(() => expect(1).toEqual(1)), - () => Effect.void, - ), -); -it.scopedLive("scopedLive", () => - Effect.acquireRelease( - Effect.sync(() => expect(1).toEqual(1)), - () => Effect.void, - ), -); - -// each - -it.live.each([1, 2, 3])("live each %s", (n) => - Effect.sync(() => expect(n).toEqual(n)), -); -it.effect.each([1, 2, 3])("effect each %s", (n) => - Effect.sync(() => expect(n).toEqual(n)), -); -it.scoped.each([1, 2, 3])("scoped each %s", (n) => - Effect.acquireRelease( - Effect.sync(() => expect(n).toEqual(n)), - () => Effect.void, - ), -); -it.scopedLive.each([1, 2, 3])("scopedLive each %s", (n) => - Effect.acquireRelease( - Effect.sync(() => expect(n).toEqual(n)), - () => Effect.void, - ), -); - -// skip - -it.live.skip("live skipped", () => Effect.die("skipped anyway")); -it.effect.skip("effect skipped", () => Effect.die("skipped anyway")); -it.scoped.skip("scoped skipped", () => - Effect.acquireRelease(Effect.die("skipped anyway"), () => Effect.void), -); -it.scopedLive.skip("scopedLive skipped", () => - Effect.acquireRelease(Effect.die("skipped anyway"), () => Effect.void), -); - -// skipIf - -it.effect.skipIf(true)("effect skipIf (true)", () => - Effect.die("skipped anyway"), -); -it.effect.skipIf(false)("effect skipIf (false)", () => - Effect.sync(() => expect(1).toEqual(1)), -); - -// runIf - -it.effect.runIf(true)("effect runIf (true)", () => - Effect.sync(() => expect(1).toEqual(1)), -); -it.effect.runIf(false)("effect runIf (false)", () => - Effect.die("not run anyway"), -); - -// The following test is expected to fail because it simulates a test timeout. -// Be aware that eventual "failure" of the test is only logged out. -it.scopedLive.fails( - "interrupts on timeout", - (ctx) => - Effect.gen(function* () { - let acquired = false; - - ctx.onTestFailed(() => { - if (acquired) { - // eslint-disable-next-line no-console - console.error( - "'effect is interrupted on timeout' @effect/vitest test failed", - ); - } - }); - - yield* Effect.acquireRelease( - Effect.sync(() => (acquired = true)), - () => Effect.sync(() => (acquired = false)), - ); - yield* Effect.sleep(1000); - }), - 1, -); - -class Foo extends Context.Tag("Foo")() { - static Live = Layer.succeed(Foo, "foo"); -} - -class Bar extends Context.Tag("Bar")() { - static Live = Layer.effect( - Bar, - Effect.map(Foo, () => "bar" as const), - ); -} - -class Sleeper extends Effect.Service()("Sleeper", { - effect: Effect.gen(function* () { - const clock = yield* Effect.clock; - - return { - sleep: (ms: number) => clock.sleep(Duration.millis(ms)), - } as const; - }), -}) {} - -describe("layer", () => { - layer(Foo.Live)((it) => { - it.effect("adds context", () => - Effect.gen(function* () { - const foo = yield* Foo; - expect(foo).toEqual("foo"); - }), - ); - - it.layer(Bar.Live)("nested", (it) => { - it.effect("adds context", () => - Effect.gen(function* () { - const foo = yield* Foo; - const bar = yield* Bar; - expect(foo).toEqual("foo"); - expect(bar).toEqual("bar"); - }), - ); - }); - - it.layer(Bar.Live)((it) => { - it.effect("without name", () => - Effect.gen(function* () { - const foo = yield* Foo; - const bar = yield* Bar; - expect(foo).toEqual("foo"); - expect(bar).toEqual("bar"); - }), - ); - }); - - describe("release", () => { - let released = false; - afterAll(() => { - expect(released).toEqual(true); - }); - - class Scoped extends Context.Tag("Scoped")() { - static Live = Layer.scoped( - Scoped, - Effect.acquireRelease(Effect.succeed("scoped" as const), () => - Effect.sync(() => (released = true)), - ), - ); - } - - it.layer(Scoped.Live)((it) => { - it.effect("adds context", () => - Effect.gen(function* () { - const foo = yield* Foo; - const scoped = yield* Scoped; - expect(foo).toEqual("foo"); - expect(scoped).toEqual("scoped"); - }), - ); - }); - - it.effect.prop( - "adds context", - [realNumber], - ([num]) => - Effect.gen(function* () { - const foo = yield* Foo; - expect(foo).toEqual("foo"); - return num === num; - }), - { fastCheck: { numRuns: 200 } }, - ); - }); - }); - - layer(Sleeper.Default)("test services", (it) => { - it.effect("TestClock", () => - Effect.gen(function* () { - const sleeper = yield* Sleeper; - const fiber = yield* Effect.fork(sleeper.sleep(100_000)); - yield* Effect.yieldNow(); - yield* TestClock.adjust(100_000); - yield* Fiber.join(fiber); - }), - ); - }); - - layer(Foo.Live)("with a name", (it) => { - describe("with a nested describe", () => { - it.effect("adds context", () => - Effect.gen(function* () { - const foo = yield* Foo; - expect(foo).toEqual("foo"); - }), - ); - }); - it.effect("adds context", () => - Effect.gen(function* () { - const foo = yield* Foo; - expect(foo).toEqual("foo"); - }), - ); - }); -}); - -// property testing - -const realNumber = Schema.Finite.pipe(Schema.nonNaN()); - -it.prop( - "symmetry", - [realNumber, FastCheck.integer()], - ([a, b]) => a + b === b + a, -); - -it.prop( - "symmetry with object", - { a: realNumber, b: FastCheck.integer() }, - ({ a, b }) => a + b === b + a, -); - -it.effect.prop("symmetry", [realNumber, FastCheck.integer()], ([a, b]) => - Effect.gen(function* () { - yield* Effect.void; - - return a + b === b + a; - }), -); - -it.effect.prop( - "symmetry with object", - { a: realNumber, b: FastCheck.integer() }, - ({ a, b }) => - Effect.gen(function* () { - yield* Effect.void; - - return a + b === b + a; - }), -); - -it.scoped.prop( - "should detect the substring", - { a: Schema.String, b: Schema.String, c: FastCheck.string() }, - ({ a, b, c }) => - Effect.gen(function* () { - yield* Effect.scope; - return (a + b + c).includes(b); - }), -); diff --git a/src/tests/prop/prop.test.ts b/src/tests/prop/prop.test.ts deleted file mode 100644 index ffffd6e..0000000 --- a/src/tests/prop/prop.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { defaultLayer } from "@/layers/default"; -import { describe, it, layer } from "@effect/vitest"; -import { Effect, Schema } from "effect"; -import { evalP } from "../vitest/utils/eval"; - -describe("prefix operator", () => { - layer(defaultLayer)((it) => { - it.prop( - "prefix operator", - [ - Schema.Number.pipe(Schema.int()), - Schema.Literal("+"), - Schema.Number.pipe(Schema.int()), - ], - ([left, operator, right]) => - evalP(`${left} ${operator} ${right}`).pipe( - // Effect.succeed(4).pipe( - Effect.flatMap((evaluated) => - Effect.gen(function* () { - // const { value } = yield* Schema.decodeUnknown( - // Schema.Union(IntegerObj, BooleanObj), - // )(evaluated); - // yield* Effect.logDebug("value", value); - // const jsValue = OPERATOR_TO_FUNCTION_MAP[operator](left, right); - // yield* Effect.logDebug("jsValue", jsValue); - return yield* Effect.succeed(true); - }), - ), - Effect.catchAll((error) => { - console.error( - `Failed with input [${left}, "${operator}", ${right}]:`, - error, - ); - return Effect.fail(error); - }), - ), - { fastCheck: { verbose: 2 } }, - ); - }); -}); diff --git a/src/tests/vitest/property/prop.test.ts b/src/tests/vitest/property/prop.test.ts index 828bf3a..a28a4a1 100644 --- a/src/tests/vitest/property/prop.test.ts +++ b/src/tests/vitest/property/prop.test.ts @@ -1,20 +1,23 @@ import { defaultLayer } from "@/layers/default"; import { infixOperatorSchema } from "@/schemas/infix-operator"; +import { ArrayObj } from "@/schemas/objs/array"; import { BooleanObj } from "@/schemas/objs/bool"; import { IntegerObj } from "@/schemas/objs/int"; +import { Obj } from "@/schemas/objs/union"; import { prefixOperatorSchema } from "@/schemas/prefix-operator"; +import { TokenType } from "@/schemas/token-types/union"; import { OPERATOR_TO_FUNCTION_MAP, PREFIX_OPERATOR_TO_FUNCTION_MAP, } from "@/services/evaluator/constants"; +import { objInspect } from "@/services/object"; import { describe, expect, it, layer } from "@effect/vitest"; -import { Effect, Schema } from "effect"; +import { Effect, Match, Schema } from "effect"; import { evalP } from "../utils/eval"; describe("property", () => { layer(defaultLayer)((it) => { // TODO: cover non-integer cases - it.effect.prop( "Integer InfixExp", [ @@ -37,6 +40,7 @@ describe("property", () => { { fastCheck: { numRuns: 200 } }, ); // TODO: should fail on trying to negate anything that is not an integer. + // in monkey !int is always false. it.effect.prop( "PrefixExp", [prefixOperatorSchema, Schema.Number.pipe(Schema.int())], @@ -55,5 +59,14 @@ describe("property", () => { ), { fastCheck: { numRuns: 200 } }, ); + // describe("ArrayObj", () => { + // it.effect.prop("first", [ArrayObj], ([array]) => + // Effect.gen(function* () { + // const input = `first(${objInspect(array)})`; + // yield* Effect.log(input); + // const ev = yield* evalP(input); + // }), + // ); + // }); }); }); From 7ef3f8803aff5c4d6f6b46f27ae5fcec1af23b55 Mon Sep 17 00:00:00 2001 From: adr Date: Mon, 21 Jul 2025 12:16:20 -0400 Subject: [PATCH 6/6] save new-work --- bun.lock | 110 +++++++++--------- src/services/lexer/state.ts | 149 +++++++++++++------------ src/tests/vitest/property/prop.test.ts | 4 - 3 files changed, 130 insertions(+), 133 deletions(-) diff --git a/bun.lock b/bun.lock index dcb2dd0..6ddfa37 100644 --- a/bun.lock +++ b/bun.lock @@ -4,63 +4,63 @@ "": { "name": "@a33/kenneth", "dependencies": { - "@biomejs/biome": "latest", - "@effect/cli": "latest", - "@effect/opentelemetry": "latest", - "@effect/platform": "latest", - "@effect/platform-bun": "latest", - "@effect/platform-node": "latest", - "@opentelemetry/exporter-trace-otlp-http": "latest", - "@opentelemetry/sdk-metrics": "latest", - "@opentelemetry/sdk-trace-base": "latest", - "@opentelemetry/sdk-trace-node": "latest", - "@opentelemetry/sdk-trace-web": "latest", - "@tailwindcss/vite": "latest", - "@types/react": "latest", - "@types/react-dom": "latest", - "@vitejs/plugin-react-swc": "latest", - "class-variance-authority": "latest", - "clsx": "latest", - "effect": "latest", - "eval": "latest", - "lucide-react": "latest", - "nerdamer-prime": "latest", - "react": "latest", - "react-dom": "latest", - "tailwind-merge": "latest", - "tailwindcss-animate": "latest", + "@biomejs/biome": "1.9.4", + "@effect/cli": "0.57.1", + "@effect/opentelemetry": "0.44.8", + "@effect/platform": "0.78.1", + "@effect/platform-bun": "0.58.1", + "@effect/platform-node": "0.74.1", + "@opentelemetry/exporter-trace-otlp-http": "0.57.2", + "@opentelemetry/sdk-metrics": "1.30.1", + "@opentelemetry/sdk-trace-base": "1.30.1", + "@opentelemetry/sdk-trace-node": "1.30.1", + "@opentelemetry/sdk-trace-web": "1.30.1", + "@tailwindcss/vite": "^4.0.12", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react-swc": "^3.8.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "effect": "3.13.8", + "eval": "0.1.8", + "lucide-react": "^0.479.0", + "nerdamer-prime": "^1.2.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.0.2", + "tailwindcss-animate": "^1.0.7", }, "devDependencies": { - "@babel/cli": "latest", - "@babel/core": "latest", - "@babel/plugin-transform-export-namespace-from": "latest", - "@babel/plugin-transform-modules-commonjs": "latest", - "@effect/build-utils": "latest", - "@effect/eslint-plugin": "latest", - "@effect/language-service": "latest", - "@effect/vitest": "latest", - "@eslint/compat": "latest", - "@eslint/eslintrc": "latest", - "@eslint/js": "latest", - "@types/bun": "latest", - "@types/node": "latest", - "@typescript-eslint/eslint-plugin": "latest", - "@typescript-eslint/parser": "latest", - "@vitest/coverage-v8": "latest", - "autoprefixer": "latest", - "babel-plugin-annotate-pure-calls": "latest", - "eslint": "latest", - "eslint-import-resolver-typescript": "latest", - "eslint-plugin-codegen": "latest", - "eslint-plugin-import": "latest", - "eslint-plugin-simple-import-sort": "latest", - "eslint-plugin-sort-destructure-keys": "latest", - "postcss": "latest", - "tailwindcss": "latest", - "tsx": "latest", - "typescript": "latest", - "vite": "latest", - "vitest": "latest", + "@babel/cli": "7.26.4", + "@babel/core": "7.26.9", + "@babel/plugin-transform-export-namespace-from": "7.25.9", + "@babel/plugin-transform-modules-commonjs": "7.26.3", + "@effect/build-utils": "0.7.9", + "@effect/eslint-plugin": "0.3.0", + "@effect/language-service": "0.4.0", + "@effect/vitest": "0.19.6", + "@eslint/compat": "1.2.7", + "@eslint/eslintrc": "3.3.0", + "@eslint/js": "9.22.0", + "@types/bun": "1.2.4", + "@types/node": "22.13.10", + "@typescript-eslint/eslint-plugin": "8.26.0", + "@typescript-eslint/parser": "8.26.0", + "@vitest/coverage-v8": "3.0.8", + "autoprefixer": "^10.4.21", + "babel-plugin-annotate-pure-calls": "0.5.0", + "eslint": "9.22.0", + "eslint-import-resolver-typescript": "3.8.3", + "eslint-plugin-codegen": "0.30.0", + "eslint-plugin-import": "2.31.0", + "eslint-plugin-simple-import-sort": "12.1.1", + "eslint-plugin-sort-destructure-keys": "2.0.0", + "postcss": "^8.5.3", + "tailwindcss": "^4.0.12", + "tsx": "4.19.3", + "typescript": "5.8.2", + "vite": "^6.2.1", + "vitest": "3.0.8", }, }, }, diff --git a/src/services/lexer/state.ts b/src/services/lexer/state.ts index c447571..064e32c 100644 --- a/src/services/lexer/state.ts +++ b/src/services/lexer/state.ts @@ -1,33 +1,33 @@ -import { Context, Effect, Layer, Ref } from 'effect' -import type { Token } from 'src/schemas/token/unions/all' +import { Context, Effect, Layer, Ref } from "effect"; +import type { Token } from "src/schemas/token/unions/all"; -export type LexerStateAll = Effect.Effect.Success +export type LexerStateAll = Effect.Effect.Success; export class LexerState { - incPos1: Effect.Effect - decPos1: Effect.Effect - getPos1: Effect.Effect - incPos2: Effect.Effect - getInput: Effect.Effect - decPos2: Effect.Effect - getPos2: Effect.Effect - getChar: Effect.Effect - setChar: (newChar: string) => Effect.Effect - setPos1: (newPos: number) => Effect.Effect - setPos2: (newPos2: number) => Effect.Effect - setInput: (newInput: string) => Effect.Effect + incPos1: Effect.Effect; + decPos1: Effect.Effect; + getPos1: Effect.Effect; + incPos2: Effect.Effect; + getInput: Effect.Effect; + decPos2: Effect.Effect; + getPos2: Effect.Effect; + getChar: Effect.Effect; + setChar: (newChar: string) => Effect.Effect; + setPos1: (newPos: number) => Effect.Effect; + setPos2: (newPos2: number) => Effect.Effect; + setInput: (newInput: string) => Effect.Effect; getAll: Effect.Effect<{ - input: string - pos1: number - pos2: number - char: string - }> - saveToken: (token: Token) => Effect.Effect - getTokens: Effect.Effect - getPos1History: Effect.Effect - saveToPos1History: (pos1: number) => Effect.Effect - getPos2History: Effect.Effect - saveToPos2History: (pos2: number) => Effect.Effect + input: string; + pos1: number; + pos2: number; + char: string; + }>; + saveToken: (token: Token) => Effect.Effect; + getTokens: Effect.Effect; + getPos1History: Effect.Effect; + saveToPos1History: (pos1: number) => Effect.Effect; + getPos2History: Effect.Effect; + saveToPos2History: (pos2: number) => Effect.Effect; constructor( // execution @@ -40,80 +40,81 @@ export class LexerState { private pos1History: Ref.Ref, private pos2History: Ref.Ref, ) { - this.getInput = Ref.get(this.input) - this.getChar = Ref.get(this.char) - this.incPos1 = Ref.update(this.pos1, (n) => n + 1) - this.decPos1 = Ref.update(this.pos1, (n) => n - 1) - this.getPos1 = Ref.get(this.pos1) - this.incPos2 = Ref.update(this.pos2, (n) => n + 1) - this.decPos2 = Ref.update(this.pos2, (n) => n - 1) - this.getPos2 = Ref.get(this.pos2) - this.setChar = (newChar: string) => Ref.update(this.char, () => newChar) - this.setPos1 = (newPos1: number) => Ref.update(this.pos1, () => newPos1) - this.setPos2 = (newPos2: number) => Ref.update(this.pos2, () => newPos2) + this.getInput = Ref.get(this.input); + this.getChar = Ref.get(this.char); + this.incPos1 = Ref.update(this.pos1, (n) => n + 1); + this.decPos1 = Ref.update(this.pos1, (n) => n - 1); + this.getPos1 = Ref.get(this.pos1); + this.incPos2 = Ref.update(this.pos2, (n) => n + 1); + this.decPos2 = Ref.update(this.pos2, (n) => n - 1); + this.getPos2 = Ref.get(this.pos2); + this.setChar = (newChar: string) => Ref.update(this.char, () => newChar); + this.setPos1 = (newPos1: number) => Ref.update(this.pos1, () => newPos1); + this.setPos2 = (newPos2: number) => Ref.update(this.pos2, () => newPos2); this.setInput = (newInput: string) => Effect.gen(function* () { - yield* Ref.set(input, newInput) - yield* Ref.set(pos1, 0) - yield* Ref.set(pos2, 1) - yield* Ref.set(char, newInput[0]) - }) + yield* Ref.set(input, newInput); + yield* Ref.set(pos1, 0); + yield* Ref.set(pos2, 1); + yield* Ref.set(char, newInput[0]); + }); this.getAll = Effect.gen(function* () { return { input: yield* Ref.get(input), pos1: yield* Ref.get(pos1), pos2: yield* Ref.get(pos2), char: yield* Ref.get(char), - } - }) + }; + }); + // Interpretability. TODO: From a perfomance persepective, this should be separate. // FROM a performace perspective the only true zero-cost intepretability addition // that is viable would be a clever wrapper thing. (apart from language level ability to fully turn off code.) - this.getTokens = Ref.get(this.tokens) + this.getTokens = Ref.get(this.tokens); this.saveToken = (token: Token) => - Ref.update(this.tokens, (tokens) => [...tokens, token]) - this.getPos1History = Ref.get(this.pos1History) - this.getPos2History = Ref.get(this.pos2History) + Ref.update(this.tokens, (tokens) => [...tokens, token]); + this.getPos1History = Ref.get(this.pos1History); + this.getPos2History = Ref.get(this.pos2History); this.saveToPos1History = (pos1: number) => Effect.gen(function* () { - const tks = yield* Ref.get(tokens) + const tks = yield* Ref.get(tokens); yield* Ref.update(pos1History, (pos1History) => { - const tokensLength = tks.length + const tokensLength = tks.length; if (!Array.isArray(pos1History[tokensLength])) { - pos1History.push([pos1]) + pos1History.push([pos1]); } else { - pos1History[tokensLength].push(pos1) + pos1History[tokensLength].push(pos1); } - return pos1History - }) - }) + return pos1History; + }); + }); this.saveToPos2History = (pos2: number) => Effect.gen(function* () { - const tks = yield* Ref.get(tokens) + const tks = yield* Ref.get(tokens); yield* Ref.update(pos2History, (pos2History) => { - const tokensLength = tks.length + const tokensLength = tks.length; if (!Array.isArray(pos2History[tokensLength])) { - pos2History.push([pos2]) + pos2History.push([pos2]); } else { - pos2History[tokensLength].push(pos2) + pos2History[tokensLength].push(pos2); } - return pos2History - }) - }) + return pos2History; + }); + }); // Interpretability } static make = (input: Ref.Ref) => Effect.gen(function* () { - const pos1 = yield* Ref.make(0) - const pos2 = yield* Ref.make(1) + const pos1 = yield* Ref.make(0); + const pos2 = yield* Ref.make(1); const char = yield* Ref.make( yield* Ref.get(input).pipe(Effect.map((str) => str[0])), - ) - const tokens = yield* Ref.make([]) - const pos1History = yield* Ref.make([]) - const pos2History = yield* Ref.make([]) + ); + const tokens = yield* Ref.make([]); + const pos1History = yield* Ref.make([]); + const pos2History = yield* Ref.make([]); return new LexerState( input, @@ -123,11 +124,11 @@ export class LexerState { tokens, pos1History, pos2History, - ) - }) + ); + }); } -export class LexerStateService extends Context.Tag('LexerStateService')< +export class LexerStateService extends Context.Tag("LexerStateService")< LexerStateService, LexerState >() { @@ -135,9 +136,9 @@ export class LexerStateService extends Context.Tag('LexerStateService')< Layer.effect( this, Effect.andThen(Ref.make(input), (inputRef) => LexerState.make(inputRef)), - ) + ); static readonly Default = Layer.effect( this, - Effect.andThen(Ref.make(''), (inputRef) => LexerState.make(inputRef)), - ) + Effect.andThen(Ref.make(""), (inputRef) => LexerState.make(inputRef)), + ); } diff --git a/src/tests/vitest/property/prop.test.ts b/src/tests/vitest/property/prop.test.ts index a28a4a1..c589d0d 100644 --- a/src/tests/vitest/property/prop.test.ts +++ b/src/tests/vitest/property/prop.test.ts @@ -1,16 +1,12 @@ import { defaultLayer } from "@/layers/default"; import { infixOperatorSchema } from "@/schemas/infix-operator"; -import { ArrayObj } from "@/schemas/objs/array"; import { BooleanObj } from "@/schemas/objs/bool"; import { IntegerObj } from "@/schemas/objs/int"; -import { Obj } from "@/schemas/objs/union"; import { prefixOperatorSchema } from "@/schemas/prefix-operator"; -import { TokenType } from "@/schemas/token-types/union"; import { OPERATOR_TO_FUNCTION_MAP, PREFIX_OPERATOR_TO_FUNCTION_MAP, } from "@/services/evaluator/constants"; -import { objInspect } from "@/services/object"; import { describe, expect, it, layer } from "@effect/vitest"; import { Effect, Match, Schema } from "effect"; import { evalP } from "../utils/eval";