├── .gitignore ├── .nano-staged.js ├── README.md ├── biome.json ├── package.json ├── packages └── core │ ├── README.md │ ├── package.json │ ├── src │ ├── convertor.ts │ ├── default.ts │ ├── index.ts │ ├── types.ts │ └── zod.ts │ ├── tests │ └── index.test.ts │ └── tsconfig.json ├── pnpm-lock.yaml └── pnpm-workspace.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /.nano-staged.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "{apps,packages}/**/*.{js,jsx,ts,tsx,json}": (api) => 3 | `pnpm dlx @biomejs/biome check --write ${api.filenames.join(" ")}`, 4 | }; 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ./packages/core/README.md -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", 3 | "organizeImports": { 4 | "enabled": true 5 | }, 6 | "linter": { 7 | "enabled": true, 8 | "rules": { 9 | "recommended": true, 10 | "style": { 11 | "noNonNullAssertion": "off" 12 | } 13 | } 14 | }, 15 | "formatter": { 16 | "indentStyle": "space", 17 | "lineWidth": 80, 18 | "lineEnding": "lf" 19 | }, 20 | "vcs": { 21 | "enabled": true, 22 | "clientKind": "git", 23 | "useIgnoreFile": true 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@standard-community/standard-openapi", 3 | "private": true, 4 | "scripts": { 5 | "test": "vitest", 6 | "prepare": "is-ci || husky", 7 | "format": "biome check --write ." 8 | }, 9 | "devDependencies": { 10 | "@biomejs/biome": "^1.9.4", 11 | "husky": "^9.1.7", 12 | "is-ci": "^4.1.0", 13 | "nano-staged": "^0.8.0", 14 | "typescript": "^5.8.2", 15 | "vitest": "^3.0.8" 16 | }, 17 | "packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6" 18 | } -------------------------------------------------------------------------------- /packages/core/README.md: -------------------------------------------------------------------------------- 1 | # Standard OpenAPI 2 | 3 | [![npm version](https://img.shields.io/npm/v/@standard-community/standard-openapi.svg)](https://npmjs.org/package/@standard-community/standard-openapi "View this project on NPM") 4 | [![npm downloads](https://img.shields.io/npm/dm/@standard-community/standard-openapi)](https://www.npmjs.com/package/@standard-community/standard-openapi) 5 | [![license](https://img.shields.io/npm/l/@standard-community/standard-openapi)](LICENSE) 6 | 7 | Standard Schema Validator's OpenAPI Schema Converter 8 | 9 | ## Installation 10 | 11 | Install the main package - 12 | 13 | ```sh 14 | pnpm add @standard-community/standard-openapi 15 | ``` 16 | 17 | For some specific vendor, install the respective package also - 18 | 19 | | Vendor | Package | 20 | | ------- | ------- | 21 | | Zod | `zod-openapi` | 22 | | Valibot | `@standard-community/standard-json` `@valibot/to-json-schema` `json-schema-walker` | 23 | | ArkType | `@standard-community/standard-json` `json-schema-walker` | 24 | | Effect Schema | `@standard-community/standard-json` `json-schema-walker` | 25 | 26 | ## Usage 27 | 28 | ```ts 29 | import { toOpenAPISchema } from "@standard-community/standard-openapi"; 30 | 31 | // Define your schema 32 | const schema = v.pipe( 33 | v.object({ 34 | myString: v.string(), 35 | myUnion: v.union([v.number(), v.boolean()]), 36 | }), 37 | v.description("My neat object schema"), 38 | ); 39 | 40 | // Convert it to OpenAPI Schema 41 | const openapiSchema = await toOpenAPISchema(schema); 42 | ``` 43 | 44 | ## Compatibility 45 | 46 | List of supported validators - 47 | 48 | | Vendor | Supported | 49 | | ------- | ------- | 50 | | Zod | ✅ | 51 | | Valibot | ✅ | 52 | | ArkType | ✅ | 53 | | Typebox | ✅ (Using [TypeMap](https://github.com/sinclairzx81/typemap) | 54 | | Effect Schema | 🛠️ | 55 | 56 | You can check the compatibility versions at [standardschema.dev](https://standardschema.dev/) 57 | -------------------------------------------------------------------------------- /packages/core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@standard-community/standard-openapi", 3 | "version": "0.1.1", 4 | "type": "module", 5 | "license": "MIT", 6 | "main": "dist/index.cjs", 7 | "module": "dist/index.js", 8 | "types": "dist/index.d.ts", 9 | "files": [ 10 | "dist" 11 | ], 12 | "scripts": { 13 | "build": "pkgroll --minify --clean-dist" 14 | }, 15 | "keywords": [ 16 | "standard-schema", 17 | "standard-community", 18 | "standard-schema-community", 19 | "openapi-schema", 20 | "openapi", 21 | "convertor" 22 | ], 23 | "homepage": "https://github.com/standard-community", 24 | "publishConfig": { 25 | "access": "public" 26 | }, 27 | "repository": { 28 | "type": "git", 29 | "url": "git+https://github.com/standard-community/standard-openapi.git", 30 | "directory": "packages/core" 31 | }, 32 | "bugs": { 33 | "url": "https://github.com/standard-community/standard-openapi/issues" 34 | }, 35 | "exports": { 36 | "import": { 37 | "types": "./dist/index.d.ts", 38 | "default": "./dist/index.js" 39 | }, 40 | "require": { 41 | "types": "./dist/index.d.cts", 42 | "default": "./dist/index.cjs" 43 | } 44 | }, 45 | "peerDependencies": { 46 | "@standard-community/standard-json": "^0.1.0", 47 | "json-schema-walker": "^2.0.0", 48 | "zod-openapi": "^4.0.0" 49 | }, 50 | "peerDependenciesMeta": { 51 | "zod-openapi": { 52 | "optional": true 53 | }, 54 | "@standard-community/standard-json": { 55 | "optional": true 56 | }, 57 | "json-schema-walker": { 58 | "optional": true 59 | } 60 | }, 61 | "devDependencies": { 62 | "@apidevtools/json-schema-ref-parser": "^11.9.3", 63 | "@standard-schema/spec": "^1.0.0", 64 | "@types/json-schema": "^7.0.15", 65 | "arktype": "^2.1.9", 66 | "openapi-types": "^12.1.3", 67 | "pkgroll": "^2.5.1", 68 | "valibot": "1.0.0-rc.4", 69 | "zod": "^3.24.2" 70 | }, 71 | "packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6" 72 | } -------------------------------------------------------------------------------- /packages/core/src/convertor.ts: -------------------------------------------------------------------------------- 1 | import type { 2 | JSONSchema, 3 | ParserOptions, 4 | } from "@apidevtools/json-schema-ref-parser"; 5 | import type { 6 | JSONSchema4, 7 | JSONSchema6Definition, 8 | JSONSchema7Definition, 9 | } from "json-schema"; 10 | import { Walker } from "json-schema-walker"; 11 | import type { OpenAPIV3 } from "openapi-types"; 12 | 13 | export type addPrefixToObject = { 14 | [K in keyof JSONSchema as `x-${K}`]: JSONSchema[K]; 15 | }; 16 | 17 | export interface Options { 18 | cloneSchema?: boolean; 19 | dereference?: boolean; 20 | convertUnreferencedDefinitions?: boolean; 21 | dereferenceOptions?: ParserOptions | undefined; 22 | } 23 | type ExtendedJSONSchema = addPrefixToObject & JSONSchema; 24 | export type SchemaType = ExtendedJSONSchema & { 25 | example?: JSONSchema["examples"][number]; 26 | "x-patternProperties"?: JSONSchema["patternProperties"]; 27 | nullable?: boolean; 28 | }; 29 | export type SchemaTypeKeys = keyof SchemaType; 30 | 31 | const allowedKeywords = [ 32 | "$ref", 33 | "definitions", 34 | // From Schema 35 | "title", 36 | "multipleOf", 37 | "maximum", 38 | "exclusiveMaximum", 39 | "minimum", 40 | "exclusiveMinimum", 41 | "maxLength", 42 | "minLength", 43 | "pattern", 44 | "maxItems", 45 | "minItems", 46 | "uniqueItems", 47 | "maxProperties", 48 | "minProperties", 49 | "required", 50 | "enum", 51 | "type", 52 | "not", 53 | "allOf", 54 | "oneOf", 55 | "anyOf", 56 | "items", 57 | "properties", 58 | "additionalProperties", 59 | "description", 60 | "format", 61 | "default", 62 | "nullable", 63 | "discriminator", 64 | "readOnly", 65 | "writeOnly", 66 | "example", 67 | "externalDocs", 68 | "deprecated", 69 | "xml", 70 | ]; 71 | 72 | class InvalidTypeError extends Error { 73 | constructor(message: string) { 74 | super(message); 75 | this.name = "InvalidTypeError"; 76 | this.message = message; 77 | } 78 | } 79 | 80 | const oasExtensionPrefix = "x-"; 81 | 82 | const handleDefinition = async ( 83 | def: JSONSchema7Definition | JSONSchema6Definition | JSONSchema4, 84 | schema: T, 85 | ) => { 86 | if (typeof def !== "object") { 87 | return def; 88 | } 89 | 90 | const type = def.type; 91 | if (type) { 92 | // Walk just the definitions types 93 | const walker = new Walker(); 94 | await walker.loadSchema( 95 | { 96 | definitions: schema.definitions || [], 97 | ...def, 98 | $schema: schema.$schema, 99 | // biome-ignore lint/suspicious/noExplicitAny: 100 | } as any, 101 | { 102 | dereference: true, 103 | cloneSchema: true, 104 | dereferenceOptions: { 105 | dereference: { 106 | circular: "ignore", 107 | }, 108 | }, 109 | }, 110 | ); 111 | await walker.walk(convertSchema, walker.vocabularies.DRAFT_07); 112 | if ("definitions" in walker.rootSchema) { 113 | walker.rootSchema.definitions = undefined; 114 | } 115 | return walker.rootSchema; 116 | } 117 | if (Array.isArray(def)) { 118 | // if it's an array, we might want to reconstruct the type; 119 | const typeArr = def; 120 | const hasNull = typeArr.includes("null"); 121 | if (hasNull) { 122 | const actualTypes = typeArr.filter((l) => l !== "null"); 123 | return { 124 | type: actualTypes.length === 1 ? actualTypes[0] : actualTypes, 125 | nullable: true, 126 | // this is incorrect but thats ok, we are in the inbetween phase here 127 | } as JSONSchema7Definition | JSONSchema6Definition | JSONSchema4; 128 | } 129 | } 130 | 131 | return def; 132 | }; 133 | 134 | const convert = async ( 135 | schema: T, 136 | ): Promise => { 137 | const walker = new Walker(); 138 | await walker.loadSchema(schema); 139 | await walker.walk(convertSchema, walker.vocabularies.DRAFT_07); 140 | // if we want to convert unreferenced definitions, we need to do it iteratively here 141 | const rootSchema = walker.rootSchema as unknown as JSONSchema; 142 | if (rootSchema?.definitions) { 143 | for (const defName in rootSchema.definitions) { 144 | const def = rootSchema.definitions[defName]; 145 | rootSchema.definitions[defName] = await handleDefinition(def, schema); 146 | } 147 | } 148 | return rootSchema as OpenAPIV3.Document; 149 | }; 150 | 151 | function stripIllegalKeywords(schema: SchemaType) { 152 | if (typeof schema !== "object") { 153 | return schema; 154 | } 155 | schema.$schema = undefined; 156 | schema.$id = undefined; 157 | if ("id" in schema) { 158 | schema.id = undefined; 159 | } 160 | return schema; 161 | } 162 | 163 | function convertSchema(schema?: SchemaType) { 164 | let _schema = schema; 165 | 166 | if (!_schema) { 167 | return _schema; 168 | } 169 | 170 | _schema = stripIllegalKeywords(_schema); 171 | _schema = convertTypes(_schema); 172 | _schema = rewriteConst(_schema); 173 | _schema = convertDependencies(_schema); 174 | _schema = convertNullable(_schema); 175 | _schema = rewriteIfThenElse(_schema); 176 | _schema = rewriteExclusiveMinMax(_schema); 177 | _schema = convertExamples(_schema); 178 | 179 | if (typeof _schema.patternProperties === "object") { 180 | _schema = convertPatternProperties(_schema); 181 | } 182 | 183 | if (_schema.type === "array" && typeof _schema.items === "undefined") { 184 | _schema.items = {}; 185 | } 186 | 187 | // should be called last 188 | _schema = convertIllegalKeywordsAsExtensions(_schema); 189 | return _schema; 190 | } 191 | 192 | const validTypes = new Set([ 193 | "null", 194 | "boolean", 195 | "object", 196 | "array", 197 | "number", 198 | "string", 199 | "integer", 200 | ]); 201 | 202 | function validateType(type: unknown) { 203 | if (typeof type === "object" && !Array.isArray(type)) { 204 | // Refs are allowed because they fix circular references 205 | if (type && "$ref" in type && type.$ref) { 206 | return; 207 | } 208 | // this is a de-referenced circular ref 209 | if (type && "properties" in type && type.properties) { 210 | return; 211 | } 212 | } 213 | const types = Array.isArray(type) ? type : [type]; 214 | 215 | for (const type of types) { 216 | if (type && !validTypes.has(type)) 217 | throw new InvalidTypeError(`Type "${type}" is not a valid type`); 218 | } 219 | } 220 | 221 | function convertDependencies(schema: SchemaType) { 222 | const deps = schema.dependencies; 223 | if (typeof deps !== "object") { 224 | return schema; 225 | } 226 | 227 | // Turns the dependencies keyword into an allOf of oneOf's 228 | // "dependencies": { 229 | // "post-office-box": ["street-address"] 230 | // }, 231 | // 232 | // becomes 233 | // 234 | // "allOf": [ 235 | // { 236 | // "oneOf": [ 237 | // {"not": {"required": ["post-office-box"]}}, 238 | // {"required": ["post-office-box", "street-address"]} 239 | // ] 240 | // } 241 | // 242 | 243 | schema.dependencies = undefined; 244 | if (!Array.isArray(schema.allOf)) { 245 | schema.allOf = []; 246 | } 247 | 248 | for (const key in deps) { 249 | const foo: (JSONSchema4 & JSONSchema6Definition) & JSONSchema7Definition = { 250 | oneOf: [ 251 | { 252 | not: { 253 | required: [key], 254 | }, 255 | }, 256 | { 257 | required: [key, deps[key]].flat() as string[], 258 | }, 259 | ], 260 | }; 261 | schema.allOf.push(foo); 262 | } 263 | return schema; 264 | } 265 | 266 | function convertNullable(schema: SchemaType) { 267 | for (const key of ["oneOf", "anyOf"] as const) { 268 | const schemas = schema[key] as JSONSchema4[]; 269 | if (!schemas) continue; 270 | 271 | if (!Array.isArray(schemas)) { 272 | return schema; 273 | } 274 | 275 | const hasNullable = schemas.some((item) => item.type === "null"); 276 | 277 | if (!hasNullable) { 278 | return schema; 279 | } 280 | 281 | const filtered = schemas.filter((l) => l.type !== "null"); 282 | for (const schemaEntry of filtered) { 283 | schemaEntry.nullable = true; 284 | } 285 | 286 | schema[key] = filtered; 287 | } 288 | 289 | return schema; 290 | } 291 | 292 | function convertTypes(schema: SchemaType) { 293 | if (typeof schema !== "object") { 294 | return schema; 295 | } 296 | if (schema.type === undefined) { 297 | return schema; 298 | } 299 | 300 | validateType(schema.type); 301 | 302 | if (Array.isArray(schema.type)) { 303 | if (schema.type.includes("null")) { 304 | schema.nullable = true; 305 | } 306 | const typesWithoutNull = schema.type.filter((type) => type !== "null"); 307 | if (typesWithoutNull.length === 0) { 308 | schema.type = undefined; 309 | } else if (typesWithoutNull.length === 1) { 310 | schema.type = typesWithoutNull[0]; 311 | } else { 312 | schema.type = undefined; 313 | schema.anyOf = typesWithoutNull.map((type) => ({ type })); 314 | } 315 | } else if (schema.type === "null") { 316 | schema.type = undefined; 317 | schema.nullable = true; 318 | } 319 | 320 | return schema; 321 | } 322 | 323 | // "patternProperties did not make it into OpenAPI v3.0" 324 | // https://github.com/OAI/OpenAPI-Specification/issues/687 325 | function convertPatternProperties(schema: SchemaType) { 326 | schema["x-patternProperties"] = schema.patternProperties; 327 | schema.patternProperties = undefined; 328 | schema.additionalProperties ??= true; 329 | return schema; 330 | } 331 | 332 | // keywords (or property names) that are not recognized within OAS3 are rewritten into extensions. 333 | function convertIllegalKeywordsAsExtensions(schema: SchemaType) { 334 | const keys = Object.keys(schema) as SchemaTypeKeys[]; 335 | 336 | for (const keyword of keys) { 337 | if ( 338 | !keyword.startsWith(oasExtensionPrefix) && 339 | !allowedKeywords.includes(keyword) 340 | ) { 341 | const key = `${oasExtensionPrefix}${keyword}` as keyof SchemaType; 342 | schema[key] = schema[keyword]; 343 | schema[keyword] = undefined; 344 | } 345 | } 346 | 347 | return schema; 348 | } 349 | 350 | function convertExamples(schema: SchemaType) { 351 | if (schema.examples && Array.isArray(schema.examples)) { 352 | schema.example = schema.examples[0]; 353 | schema.examples = undefined; 354 | } 355 | 356 | return schema; 357 | } 358 | 359 | function rewriteConst(schema: SchemaType) { 360 | if (typeof schema.const !== "undefined") { 361 | schema.enum = [schema.const]; 362 | schema.const = undefined; 363 | } 364 | return schema; 365 | } 366 | 367 | function rewriteIfThenElse(schema: SchemaType) { 368 | if (typeof schema !== "object") { 369 | return schema; 370 | } 371 | /* @handrews https://github.com/OAI/OpenAPI-Specification/pull/1766#issuecomment-442652805 372 | if and the *Of keywords 373 | 374 | There is a really easy solution for implementations, which is that 375 | 376 | if: X, then: Y, else: Z 377 | 378 | is equivalent to 379 | 380 | oneOf: [allOf: [X, Y], allOf: [not: X, Z]] 381 | */ 382 | if ("if" in schema && schema.if && schema.then) { 383 | schema.oneOf = [ 384 | { allOf: [schema.if, schema.then].filter(Boolean) }, 385 | { allOf: [{ not: schema.if }, schema.else].filter(Boolean) }, 386 | ]; 387 | schema.if = undefined; 388 | // biome-ignore lint/suspicious/noThenProperty: 389 | schema.then = undefined; 390 | schema.else = undefined; 391 | } 392 | return schema; 393 | } 394 | 395 | function rewriteExclusiveMinMax(schema: SchemaType) { 396 | if (typeof schema.exclusiveMaximum === "number") { 397 | schema.maximum = schema.exclusiveMaximum; 398 | (schema as JSONSchema4).exclusiveMaximum = true; 399 | } 400 | if (typeof schema.exclusiveMinimum === "number") { 401 | schema.minimum = schema.exclusiveMinimum; 402 | (schema as JSONSchema4).exclusiveMinimum = true; 403 | } 404 | return schema; 405 | } 406 | 407 | export default convert; 408 | -------------------------------------------------------------------------------- /packages/core/src/default.ts: -------------------------------------------------------------------------------- 1 | import type { SchemaResult } from "zod-openapi"; 2 | import convert from "./convertor.js"; 3 | import type { GeneratorFn } from "./types.js"; 4 | import { toJsonSchema } from "@standard-community/standard-json"; 5 | 6 | export const generator: GeneratorFn = async (schema) => { 7 | const jsonSchema = toJsonSchema(schema); 8 | return { 9 | schema: await convert(jsonSchema), 10 | } as unknown as SchemaResult; 11 | }; 12 | -------------------------------------------------------------------------------- /packages/core/src/index.ts: -------------------------------------------------------------------------------- 1 | import type { StandardSchemaV1 } from "@standard-schema/spec"; 2 | import type { Handler } from "./types.js"; 3 | 4 | export const toOpenAPISchema = async (schema: StandardSchemaV1) => { 5 | const vendor = schema["~standard"].vendor; 6 | 7 | let mod: Handler; 8 | switch (vendor) { 9 | case "arktype": 10 | case "effect": 11 | case "valibot": 12 | mod = import("./default.js"); 13 | break; 14 | case "zod": 15 | mod = import("./zod.js"); 16 | break; 17 | default: 18 | throw new Error( 19 | `standard-openapi: Unsupported schema vendor "${vendor}"`, 20 | ); 21 | } 22 | 23 | return await (await mod).generator(schema); 24 | }; 25 | -------------------------------------------------------------------------------- /packages/core/src/types.ts: -------------------------------------------------------------------------------- 1 | import type { StandardSchemaV1 } from "@standard-schema/spec"; 2 | import type { SchemaResult } from "zod-openapi"; 3 | 4 | export type GeneratorFn = ( 5 | schema: StandardSchemaV1, 6 | metadata?: Record, 7 | ) => SchemaResult | Promise; 8 | 9 | export type Handler = Promise<{ 10 | generator: GeneratorFn; 11 | }>; 12 | -------------------------------------------------------------------------------- /packages/core/src/zod.ts: -------------------------------------------------------------------------------- 1 | import type { GeneratorFn } from "./types.js"; 2 | import { createSchema } from "zod-openapi"; 3 | import type * as z from "zod"; 4 | 5 | export const generator: GeneratorFn = (schema, metadata) => 6 | createSchema(schema as z.ZodType, metadata); 7 | -------------------------------------------------------------------------------- /packages/core/tests/index.test.ts: -------------------------------------------------------------------------------- 1 | import { type } from "arktype"; 2 | import { describe, expect, it } from "vitest"; 3 | import * as v from "valibot"; 4 | import * as z from "zod"; 5 | 6 | import { toOpenAPISchema } from "../src/index.js"; 7 | 8 | describe("basic", () => { 9 | it("arktype", async () => { 10 | const schema = type({ 11 | myString: "string", 12 | myUnion: "number | boolean", 13 | }).describe("My neat object schema"); 14 | 15 | const specs = await toOpenAPISchema(schema); 16 | expect(specs).toEqual({}); 17 | }); 18 | 19 | it("valibot", async () => { 20 | const schema = v.pipe( 21 | v.object({ 22 | myString: v.string(), 23 | myUnion: v.union([v.number(), v.boolean()]), 24 | }), 25 | v.description("My neat object schema"), 26 | ); 27 | 28 | const specs = await toOpenAPISchema(schema); 29 | expect(specs).toEqual({}); 30 | }); 31 | 32 | it("zod", async () => { 33 | const schema = z 34 | .object({ 35 | myString: z.string(), 36 | myUnion: z.union([z.number(), z.boolean()]), 37 | }) 38 | .describe("My neat object schema"); 39 | 40 | const specs = await toOpenAPISchema(schema); 41 | expect(specs).toEqual({}); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /packages/core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "lib": ["ESNext", "DOM"], 5 | "moduleDetection": "force", 6 | "useDefineForClassFields": false, 7 | "experimentalDecorators": true, 8 | "module": "Node16", 9 | "moduleResolution": "nodenext", 10 | "resolveJsonModule": true, 11 | "allowJs": true, 12 | "strict": true, 13 | "noFallthroughCasesInSwitch": true, 14 | "noImplicitOverride": true, 15 | "noImplicitReturns": true, 16 | "noUnusedLocals": true, 17 | "noImplicitAny": true, 18 | "noUnusedParameters": true, 19 | "declaration": false, 20 | "noEmit": true, 21 | "outDir": "dist/", 22 | "sourceMap": true, 23 | "esModuleInterop": true, 24 | "forceConsistentCasingInFileNames": true, 25 | "isolatedModules": true, 26 | "verbatimModuleSyntax": true, 27 | "skipLibCheck": true 28 | }, 29 | "include": ["./src/**/*"] 30 | } 31 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@biomejs/biome': 12 | specifier: ^1.9.4 13 | version: 1.9.4 14 | husky: 15 | specifier: ^9.1.7 16 | version: 9.1.7 17 | is-ci: 18 | specifier: ^4.1.0 19 | version: 4.1.0 20 | nano-staged: 21 | specifier: ^0.8.0 22 | version: 0.8.0 23 | typescript: 24 | specifier: ^5.8.2 25 | version: 5.8.2 26 | vitest: 27 | specifier: ^3.0.8 28 | version: 3.0.8 29 | 30 | packages/core: 31 | dependencies: 32 | '@standard-community/standard-json': 33 | specifier: ^0.1.0 34 | version: 0.1.0(arktype@2.1.9) 35 | json-schema-walker: 36 | specifier: ^2.0.0 37 | version: 2.0.0 38 | zod-openapi: 39 | specifier: ^4.0.0 40 | version: 4.2.3(zod@3.24.2) 41 | devDependencies: 42 | '@apidevtools/json-schema-ref-parser': 43 | specifier: ^11.9.3 44 | version: 11.9.3 45 | '@standard-schema/spec': 46 | specifier: ^1.0.0 47 | version: 1.0.0 48 | '@types/json-schema': 49 | specifier: ^7.0.15 50 | version: 7.0.15 51 | arktype: 52 | specifier: ^2.1.9 53 | version: 2.1.9 54 | openapi-types: 55 | specifier: ^12.1.3 56 | version: 12.1.3 57 | pkgroll: 58 | specifier: ^2.5.1 59 | version: 2.11.2(typescript@5.8.2) 60 | valibot: 61 | specifier: 1.0.0-rc.4 62 | version: 1.0.0-rc.4(typescript@5.8.2) 63 | zod: 64 | specifier: ^3.24.2 65 | version: 3.24.2 66 | 67 | packages: 68 | 69 | '@apidevtools/json-schema-ref-parser@11.9.3': 70 | resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} 71 | engines: {node: '>= 16'} 72 | 73 | '@ark/schema@0.44.4': 74 | resolution: {integrity: sha512-TsZTX+k5J7xsGABsFjVdRUNgViGDMLv73sikBM8JNxC4STe0suTuMNa1OJ/AFP2N+LpJ1zL9tdWlg28PRqAYhg==} 75 | 76 | '@ark/util@0.44.4': 77 | resolution: {integrity: sha512-zLfNZrsq5Dq+8B0pHJwL/wD3xNBHb8FoP0FuPB455w7HpqVaqO5qPXvn+YoO8v1Y6pNwLVsM9vCIiO221LoODQ==} 78 | 79 | '@biomejs/biome@1.9.4': 80 | resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} 81 | engines: {node: '>=14.21.3'} 82 | hasBin: true 83 | 84 | '@biomejs/cli-darwin-arm64@1.9.4': 85 | resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} 86 | engines: {node: '>=14.21.3'} 87 | cpu: [arm64] 88 | os: [darwin] 89 | 90 | '@biomejs/cli-darwin-x64@1.9.4': 91 | resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} 92 | engines: {node: '>=14.21.3'} 93 | cpu: [x64] 94 | os: [darwin] 95 | 96 | '@biomejs/cli-linux-arm64-musl@1.9.4': 97 | resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} 98 | engines: {node: '>=14.21.3'} 99 | cpu: [arm64] 100 | os: [linux] 101 | 102 | '@biomejs/cli-linux-arm64@1.9.4': 103 | resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} 104 | engines: {node: '>=14.21.3'} 105 | cpu: [arm64] 106 | os: [linux] 107 | 108 | '@biomejs/cli-linux-x64-musl@1.9.4': 109 | resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} 110 | engines: {node: '>=14.21.3'} 111 | cpu: [x64] 112 | os: [linux] 113 | 114 | '@biomejs/cli-linux-x64@1.9.4': 115 | resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} 116 | engines: {node: '>=14.21.3'} 117 | cpu: [x64] 118 | os: [linux] 119 | 120 | '@biomejs/cli-win32-arm64@1.9.4': 121 | resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} 122 | engines: {node: '>=14.21.3'} 123 | cpu: [arm64] 124 | os: [win32] 125 | 126 | '@biomejs/cli-win32-x64@1.9.4': 127 | resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} 128 | engines: {node: '>=14.21.3'} 129 | cpu: [x64] 130 | os: [win32] 131 | 132 | '@esbuild/aix-ppc64@0.24.2': 133 | resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} 134 | engines: {node: '>=18'} 135 | cpu: [ppc64] 136 | os: [aix] 137 | 138 | '@esbuild/aix-ppc64@0.25.1': 139 | resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} 140 | engines: {node: '>=18'} 141 | cpu: [ppc64] 142 | os: [aix] 143 | 144 | '@esbuild/android-arm64@0.24.2': 145 | resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} 146 | engines: {node: '>=18'} 147 | cpu: [arm64] 148 | os: [android] 149 | 150 | '@esbuild/android-arm64@0.25.1': 151 | resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} 152 | engines: {node: '>=18'} 153 | cpu: [arm64] 154 | os: [android] 155 | 156 | '@esbuild/android-arm@0.24.2': 157 | resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} 158 | engines: {node: '>=18'} 159 | cpu: [arm] 160 | os: [android] 161 | 162 | '@esbuild/android-arm@0.25.1': 163 | resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} 164 | engines: {node: '>=18'} 165 | cpu: [arm] 166 | os: [android] 167 | 168 | '@esbuild/android-x64@0.24.2': 169 | resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} 170 | engines: {node: '>=18'} 171 | cpu: [x64] 172 | os: [android] 173 | 174 | '@esbuild/android-x64@0.25.1': 175 | resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} 176 | engines: {node: '>=18'} 177 | cpu: [x64] 178 | os: [android] 179 | 180 | '@esbuild/darwin-arm64@0.24.2': 181 | resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} 182 | engines: {node: '>=18'} 183 | cpu: [arm64] 184 | os: [darwin] 185 | 186 | '@esbuild/darwin-arm64@0.25.1': 187 | resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} 188 | engines: {node: '>=18'} 189 | cpu: [arm64] 190 | os: [darwin] 191 | 192 | '@esbuild/darwin-x64@0.24.2': 193 | resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} 194 | engines: {node: '>=18'} 195 | cpu: [x64] 196 | os: [darwin] 197 | 198 | '@esbuild/darwin-x64@0.25.1': 199 | resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} 200 | engines: {node: '>=18'} 201 | cpu: [x64] 202 | os: [darwin] 203 | 204 | '@esbuild/freebsd-arm64@0.24.2': 205 | resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} 206 | engines: {node: '>=18'} 207 | cpu: [arm64] 208 | os: [freebsd] 209 | 210 | '@esbuild/freebsd-arm64@0.25.1': 211 | resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} 212 | engines: {node: '>=18'} 213 | cpu: [arm64] 214 | os: [freebsd] 215 | 216 | '@esbuild/freebsd-x64@0.24.2': 217 | resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} 218 | engines: {node: '>=18'} 219 | cpu: [x64] 220 | os: [freebsd] 221 | 222 | '@esbuild/freebsd-x64@0.25.1': 223 | resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} 224 | engines: {node: '>=18'} 225 | cpu: [x64] 226 | os: [freebsd] 227 | 228 | '@esbuild/linux-arm64@0.24.2': 229 | resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} 230 | engines: {node: '>=18'} 231 | cpu: [arm64] 232 | os: [linux] 233 | 234 | '@esbuild/linux-arm64@0.25.1': 235 | resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} 236 | engines: {node: '>=18'} 237 | cpu: [arm64] 238 | os: [linux] 239 | 240 | '@esbuild/linux-arm@0.24.2': 241 | resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} 242 | engines: {node: '>=18'} 243 | cpu: [arm] 244 | os: [linux] 245 | 246 | '@esbuild/linux-arm@0.25.1': 247 | resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} 248 | engines: {node: '>=18'} 249 | cpu: [arm] 250 | os: [linux] 251 | 252 | '@esbuild/linux-ia32@0.24.2': 253 | resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} 254 | engines: {node: '>=18'} 255 | cpu: [ia32] 256 | os: [linux] 257 | 258 | '@esbuild/linux-ia32@0.25.1': 259 | resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} 260 | engines: {node: '>=18'} 261 | cpu: [ia32] 262 | os: [linux] 263 | 264 | '@esbuild/linux-loong64@0.24.2': 265 | resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} 266 | engines: {node: '>=18'} 267 | cpu: [loong64] 268 | os: [linux] 269 | 270 | '@esbuild/linux-loong64@0.25.1': 271 | resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} 272 | engines: {node: '>=18'} 273 | cpu: [loong64] 274 | os: [linux] 275 | 276 | '@esbuild/linux-mips64el@0.24.2': 277 | resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} 278 | engines: {node: '>=18'} 279 | cpu: [mips64el] 280 | os: [linux] 281 | 282 | '@esbuild/linux-mips64el@0.25.1': 283 | resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} 284 | engines: {node: '>=18'} 285 | cpu: [mips64el] 286 | os: [linux] 287 | 288 | '@esbuild/linux-ppc64@0.24.2': 289 | resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} 290 | engines: {node: '>=18'} 291 | cpu: [ppc64] 292 | os: [linux] 293 | 294 | '@esbuild/linux-ppc64@0.25.1': 295 | resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} 296 | engines: {node: '>=18'} 297 | cpu: [ppc64] 298 | os: [linux] 299 | 300 | '@esbuild/linux-riscv64@0.24.2': 301 | resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} 302 | engines: {node: '>=18'} 303 | cpu: [riscv64] 304 | os: [linux] 305 | 306 | '@esbuild/linux-riscv64@0.25.1': 307 | resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} 308 | engines: {node: '>=18'} 309 | cpu: [riscv64] 310 | os: [linux] 311 | 312 | '@esbuild/linux-s390x@0.24.2': 313 | resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} 314 | engines: {node: '>=18'} 315 | cpu: [s390x] 316 | os: [linux] 317 | 318 | '@esbuild/linux-s390x@0.25.1': 319 | resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} 320 | engines: {node: '>=18'} 321 | cpu: [s390x] 322 | os: [linux] 323 | 324 | '@esbuild/linux-x64@0.24.2': 325 | resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} 326 | engines: {node: '>=18'} 327 | cpu: [x64] 328 | os: [linux] 329 | 330 | '@esbuild/linux-x64@0.25.1': 331 | resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} 332 | engines: {node: '>=18'} 333 | cpu: [x64] 334 | os: [linux] 335 | 336 | '@esbuild/netbsd-arm64@0.24.2': 337 | resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} 338 | engines: {node: '>=18'} 339 | cpu: [arm64] 340 | os: [netbsd] 341 | 342 | '@esbuild/netbsd-arm64@0.25.1': 343 | resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} 344 | engines: {node: '>=18'} 345 | cpu: [arm64] 346 | os: [netbsd] 347 | 348 | '@esbuild/netbsd-x64@0.24.2': 349 | resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} 350 | engines: {node: '>=18'} 351 | cpu: [x64] 352 | os: [netbsd] 353 | 354 | '@esbuild/netbsd-x64@0.25.1': 355 | resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} 356 | engines: {node: '>=18'} 357 | cpu: [x64] 358 | os: [netbsd] 359 | 360 | '@esbuild/openbsd-arm64@0.24.2': 361 | resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} 362 | engines: {node: '>=18'} 363 | cpu: [arm64] 364 | os: [openbsd] 365 | 366 | '@esbuild/openbsd-arm64@0.25.1': 367 | resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} 368 | engines: {node: '>=18'} 369 | cpu: [arm64] 370 | os: [openbsd] 371 | 372 | '@esbuild/openbsd-x64@0.24.2': 373 | resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} 374 | engines: {node: '>=18'} 375 | cpu: [x64] 376 | os: [openbsd] 377 | 378 | '@esbuild/openbsd-x64@0.25.1': 379 | resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} 380 | engines: {node: '>=18'} 381 | cpu: [x64] 382 | os: [openbsd] 383 | 384 | '@esbuild/sunos-x64@0.24.2': 385 | resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} 386 | engines: {node: '>=18'} 387 | cpu: [x64] 388 | os: [sunos] 389 | 390 | '@esbuild/sunos-x64@0.25.1': 391 | resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} 392 | engines: {node: '>=18'} 393 | cpu: [x64] 394 | os: [sunos] 395 | 396 | '@esbuild/win32-arm64@0.24.2': 397 | resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} 398 | engines: {node: '>=18'} 399 | cpu: [arm64] 400 | os: [win32] 401 | 402 | '@esbuild/win32-arm64@0.25.1': 403 | resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} 404 | engines: {node: '>=18'} 405 | cpu: [arm64] 406 | os: [win32] 407 | 408 | '@esbuild/win32-ia32@0.24.2': 409 | resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} 410 | engines: {node: '>=18'} 411 | cpu: [ia32] 412 | os: [win32] 413 | 414 | '@esbuild/win32-ia32@0.25.1': 415 | resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} 416 | engines: {node: '>=18'} 417 | cpu: [ia32] 418 | os: [win32] 419 | 420 | '@esbuild/win32-x64@0.24.2': 421 | resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} 422 | engines: {node: '>=18'} 423 | cpu: [x64] 424 | os: [win32] 425 | 426 | '@esbuild/win32-x64@0.25.1': 427 | resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} 428 | engines: {node: '>=18'} 429 | cpu: [x64] 430 | os: [win32] 431 | 432 | '@jridgewell/sourcemap-codec@1.5.0': 433 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 434 | 435 | '@jsdevtools/ono@7.1.3': 436 | resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} 437 | 438 | '@nodelib/fs.scandir@2.1.5': 439 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 440 | engines: {node: '>= 8'} 441 | 442 | '@nodelib/fs.stat@2.0.5': 443 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 444 | engines: {node: '>= 8'} 445 | 446 | '@nodelib/fs.walk@1.2.8': 447 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 448 | engines: {node: '>= 8'} 449 | 450 | '@rollup/plugin-alias@5.1.1': 451 | resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} 452 | engines: {node: '>=14.0.0'} 453 | peerDependencies: 454 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 455 | peerDependenciesMeta: 456 | rollup: 457 | optional: true 458 | 459 | '@rollup/plugin-commonjs@28.0.3': 460 | resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} 461 | engines: {node: '>=16.0.0 || 14 >= 14.17'} 462 | peerDependencies: 463 | rollup: ^2.68.0||^3.0.0||^4.0.0 464 | peerDependenciesMeta: 465 | rollup: 466 | optional: true 467 | 468 | '@rollup/plugin-dynamic-import-vars@2.1.5': 469 | resolution: {integrity: sha512-Mymi24fd9hlRifdZV/jYIFj1dn99F34imiYu3KzlAcgBcRi3i9SucgW/VRo5SQ9K4NuQ7dCep6pFWgNyhRdFHQ==} 470 | engines: {node: '>=14.0.0'} 471 | peerDependencies: 472 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 473 | peerDependenciesMeta: 474 | rollup: 475 | optional: true 476 | 477 | '@rollup/plugin-inject@5.0.5': 478 | resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} 479 | engines: {node: '>=14.0.0'} 480 | peerDependencies: 481 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 482 | peerDependenciesMeta: 483 | rollup: 484 | optional: true 485 | 486 | '@rollup/plugin-json@6.1.0': 487 | resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} 488 | engines: {node: '>=14.0.0'} 489 | peerDependencies: 490 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 491 | peerDependenciesMeta: 492 | rollup: 493 | optional: true 494 | 495 | '@rollup/plugin-node-resolve@16.0.1': 496 | resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} 497 | engines: {node: '>=14.0.0'} 498 | peerDependencies: 499 | rollup: ^2.78.0||^3.0.0||^4.0.0 500 | peerDependenciesMeta: 501 | rollup: 502 | optional: true 503 | 504 | '@rollup/pluginutils@5.1.4': 505 | resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 506 | engines: {node: '>=14.0.0'} 507 | peerDependencies: 508 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 509 | peerDependenciesMeta: 510 | rollup: 511 | optional: true 512 | 513 | '@rollup/rollup-android-arm-eabi@4.35.0': 514 | resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} 515 | cpu: [arm] 516 | os: [android] 517 | 518 | '@rollup/rollup-android-arm64@4.35.0': 519 | resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} 520 | cpu: [arm64] 521 | os: [android] 522 | 523 | '@rollup/rollup-darwin-arm64@4.35.0': 524 | resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} 525 | cpu: [arm64] 526 | os: [darwin] 527 | 528 | '@rollup/rollup-darwin-x64@4.35.0': 529 | resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} 530 | cpu: [x64] 531 | os: [darwin] 532 | 533 | '@rollup/rollup-freebsd-arm64@4.35.0': 534 | resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} 535 | cpu: [arm64] 536 | os: [freebsd] 537 | 538 | '@rollup/rollup-freebsd-x64@4.35.0': 539 | resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} 540 | cpu: [x64] 541 | os: [freebsd] 542 | 543 | '@rollup/rollup-linux-arm-gnueabihf@4.35.0': 544 | resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} 545 | cpu: [arm] 546 | os: [linux] 547 | 548 | '@rollup/rollup-linux-arm-musleabihf@4.35.0': 549 | resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} 550 | cpu: [arm] 551 | os: [linux] 552 | 553 | '@rollup/rollup-linux-arm64-gnu@4.35.0': 554 | resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} 555 | cpu: [arm64] 556 | os: [linux] 557 | 558 | '@rollup/rollup-linux-arm64-musl@4.35.0': 559 | resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} 560 | cpu: [arm64] 561 | os: [linux] 562 | 563 | '@rollup/rollup-linux-loongarch64-gnu@4.35.0': 564 | resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} 565 | cpu: [loong64] 566 | os: [linux] 567 | 568 | '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': 569 | resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} 570 | cpu: [ppc64] 571 | os: [linux] 572 | 573 | '@rollup/rollup-linux-riscv64-gnu@4.35.0': 574 | resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} 575 | cpu: [riscv64] 576 | os: [linux] 577 | 578 | '@rollup/rollup-linux-s390x-gnu@4.35.0': 579 | resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} 580 | cpu: [s390x] 581 | os: [linux] 582 | 583 | '@rollup/rollup-linux-x64-gnu@4.35.0': 584 | resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} 585 | cpu: [x64] 586 | os: [linux] 587 | 588 | '@rollup/rollup-linux-x64-musl@4.35.0': 589 | resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} 590 | cpu: [x64] 591 | os: [linux] 592 | 593 | '@rollup/rollup-win32-arm64-msvc@4.35.0': 594 | resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} 595 | cpu: [arm64] 596 | os: [win32] 597 | 598 | '@rollup/rollup-win32-ia32-msvc@4.35.0': 599 | resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} 600 | cpu: [ia32] 601 | os: [win32] 602 | 603 | '@rollup/rollup-win32-x64-msvc@4.35.0': 604 | resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} 605 | cpu: [x64] 606 | os: [win32] 607 | 608 | '@standard-community/standard-json@0.1.0': 609 | resolution: {integrity: sha512-rcKIYTJFTH6RoOpbDASE9kZ4StYUfK1J208JuZ0CQWd37pSghCh1Q0aIPA8q/mvMC7F9pAWAodZaVi7lACAUlg==} 610 | peerDependencies: 611 | '@valibot/to-json-schema': ^1.0.0-rc.0 612 | arktype: ^2.0.4 613 | zod-to-json-schema: ^3.24.1 614 | peerDependenciesMeta: 615 | '@valibot/to-json-schema': 616 | optional: true 617 | arktype: 618 | optional: true 619 | zod-to-json-schema: 620 | optional: true 621 | 622 | '@standard-schema/spec@1.0.0': 623 | resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} 624 | 625 | '@types/estree@1.0.6': 626 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 627 | 628 | '@types/json-schema@7.0.15': 629 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 630 | 631 | '@types/resolve@1.20.2': 632 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 633 | 634 | '@vitest/expect@3.0.8': 635 | resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} 636 | 637 | '@vitest/mocker@3.0.8': 638 | resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} 639 | peerDependencies: 640 | msw: ^2.4.9 641 | vite: ^5.0.0 || ^6.0.0 642 | peerDependenciesMeta: 643 | msw: 644 | optional: true 645 | vite: 646 | optional: true 647 | 648 | '@vitest/pretty-format@3.0.8': 649 | resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} 650 | 651 | '@vitest/runner@3.0.8': 652 | resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} 653 | 654 | '@vitest/snapshot@3.0.8': 655 | resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} 656 | 657 | '@vitest/spy@3.0.8': 658 | resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} 659 | 660 | '@vitest/utils@3.0.8': 661 | resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} 662 | 663 | argparse@2.0.1: 664 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 665 | 666 | arktype@2.1.9: 667 | resolution: {integrity: sha512-bq46shcLpfop4D9acVQN/+quZ+hIGs4OUzoLq2vCaZLdkITOlWkfamBk9abMuC6fbgxW1fu/2PamcQgggWhTwQ==} 668 | 669 | assertion-error@2.0.1: 670 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 671 | engines: {node: '>=12'} 672 | 673 | astring@1.9.0: 674 | resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} 675 | hasBin: true 676 | 677 | braces@3.0.3: 678 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 679 | engines: {node: '>=8'} 680 | 681 | cac@6.7.14: 682 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 683 | engines: {node: '>=8'} 684 | 685 | chai@5.2.0: 686 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 687 | engines: {node: '>=12'} 688 | 689 | check-error@2.1.1: 690 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 691 | engines: {node: '>= 16'} 692 | 693 | ci-info@4.2.0: 694 | resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} 695 | engines: {node: '>=8'} 696 | 697 | clone@2.1.2: 698 | resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} 699 | engines: {node: '>=0.8'} 700 | 701 | commondir@1.0.1: 702 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 703 | 704 | debug@4.4.0: 705 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 706 | engines: {node: '>=6.0'} 707 | peerDependencies: 708 | supports-color: '*' 709 | peerDependenciesMeta: 710 | supports-color: 711 | optional: true 712 | 713 | deep-eql@5.0.2: 714 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 715 | engines: {node: '>=6'} 716 | 717 | deepmerge@4.3.1: 718 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 719 | engines: {node: '>=0.10.0'} 720 | 721 | es-module-lexer@1.6.0: 722 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 723 | 724 | esbuild@0.24.2: 725 | resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} 726 | engines: {node: '>=18'} 727 | hasBin: true 728 | 729 | esbuild@0.25.1: 730 | resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} 731 | engines: {node: '>=18'} 732 | hasBin: true 733 | 734 | estree-walker@0.6.1: 735 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 736 | 737 | estree-walker@2.0.2: 738 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 739 | 740 | estree-walker@3.0.3: 741 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 742 | 743 | expect-type@1.2.0: 744 | resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} 745 | engines: {node: '>=12.0.0'} 746 | 747 | fast-glob@3.3.3: 748 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 749 | engines: {node: '>=8.6.0'} 750 | 751 | fastq@1.19.1: 752 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 753 | 754 | fdir@6.4.3: 755 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 756 | peerDependencies: 757 | picomatch: ^3 || ^4 758 | peerDependenciesMeta: 759 | picomatch: 760 | optional: true 761 | 762 | fill-range@7.1.1: 763 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 764 | engines: {node: '>=8'} 765 | 766 | fsevents@2.3.3: 767 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 768 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 769 | os: [darwin] 770 | 771 | function-bind@1.1.2: 772 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 773 | 774 | glob-parent@5.1.2: 775 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 776 | engines: {node: '>= 6'} 777 | 778 | hasown@2.0.2: 779 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 780 | engines: {node: '>= 0.4'} 781 | 782 | husky@9.1.7: 783 | resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} 784 | engines: {node: '>=18'} 785 | hasBin: true 786 | 787 | is-ci@4.1.0: 788 | resolution: {integrity: sha512-Ab9bQDQ11lWootZUI5qxgN2ZXwxNI5hTwnsvOc1wyxQ7zQ8OkEDw79mI0+9jI3x432NfwbVRru+3noJfXF6lSQ==} 789 | hasBin: true 790 | 791 | is-core-module@2.16.1: 792 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 793 | engines: {node: '>= 0.4'} 794 | 795 | is-extglob@2.1.1: 796 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 797 | engines: {node: '>=0.10.0'} 798 | 799 | is-glob@4.0.3: 800 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 801 | engines: {node: '>=0.10.0'} 802 | 803 | is-module@1.0.0: 804 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 805 | 806 | is-number@7.0.0: 807 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 808 | engines: {node: '>=0.12.0'} 809 | 810 | is-reference@1.2.1: 811 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} 812 | 813 | js-yaml@4.1.0: 814 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 815 | hasBin: true 816 | 817 | json-schema-walker@2.0.0: 818 | resolution: {integrity: sha512-nXN2cMky0Iw7Af28w061hmxaPDaML5/bQD9nwm1lOoIKEGjHcRGxqWe4MfrkYThYAPjSUhmsp4bJNoLAyVn9Xw==} 819 | engines: {node: '>=10'} 820 | 821 | loupe@3.1.3: 822 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 823 | 824 | magic-string@0.30.17: 825 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 826 | 827 | merge2@1.4.1: 828 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 829 | engines: {node: '>= 8'} 830 | 831 | micromatch@4.0.8: 832 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 833 | engines: {node: '>=8.6'} 834 | 835 | ms@2.1.3: 836 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 837 | 838 | nano-staged@0.8.0: 839 | resolution: {integrity: sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==} 840 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 841 | hasBin: true 842 | 843 | nanoid@3.3.10: 844 | resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} 845 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 846 | hasBin: true 847 | 848 | openapi-types@12.1.3: 849 | resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} 850 | 851 | path-parse@1.0.7: 852 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 853 | 854 | pathe@2.0.3: 855 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 856 | 857 | pathval@2.0.0: 858 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 859 | engines: {node: '>= 14.16'} 860 | 861 | picocolors@1.1.1: 862 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 863 | 864 | picomatch@2.3.1: 865 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 866 | engines: {node: '>=8.6'} 867 | 868 | picomatch@4.0.2: 869 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 870 | engines: {node: '>=12'} 871 | 872 | pkgroll@2.11.2: 873 | resolution: {integrity: sha512-AnmLpYTRsOuYl3tATsx9EHaBFN5siNu9ufdu0REz8oKDiILMsWrfvis3DxZh+ATw7z7lbc+hx7pE63pkI3k4Rg==} 874 | engines: {node: '>=18'} 875 | hasBin: true 876 | peerDependencies: 877 | typescript: ^4.1 || ^5.0 878 | peerDependenciesMeta: 879 | typescript: 880 | optional: true 881 | 882 | postcss@8.5.3: 883 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 884 | engines: {node: ^10 || ^12 || >=14} 885 | 886 | queue-microtask@1.2.3: 887 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 888 | 889 | resolve@1.22.10: 890 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 891 | engines: {node: '>= 0.4'} 892 | hasBin: true 893 | 894 | reusify@1.1.0: 895 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 896 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 897 | 898 | rollup-pluginutils@2.8.2: 899 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 900 | 901 | rollup@4.35.0: 902 | resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} 903 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 904 | hasBin: true 905 | 906 | run-parallel@1.2.0: 907 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 908 | 909 | siginfo@2.0.0: 910 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 911 | 912 | source-map-js@1.2.1: 913 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 914 | engines: {node: '>=0.10.0'} 915 | 916 | stackback@0.0.2: 917 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 918 | 919 | std-env@3.8.1: 920 | resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} 921 | 922 | supports-preserve-symlinks-flag@1.0.0: 923 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 924 | engines: {node: '>= 0.4'} 925 | 926 | tinybench@2.9.0: 927 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 928 | 929 | tinyexec@0.3.2: 930 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 931 | 932 | tinypool@1.0.2: 933 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 934 | engines: {node: ^18.0.0 || >=20.0.0} 935 | 936 | tinyrainbow@2.0.0: 937 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 938 | engines: {node: '>=14.0.0'} 939 | 940 | tinyspy@3.0.2: 941 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 942 | engines: {node: '>=14.0.0'} 943 | 944 | to-regex-range@5.0.1: 945 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 946 | engines: {node: '>=8.0'} 947 | 948 | typescript@5.8.2: 949 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} 950 | engines: {node: '>=14.17'} 951 | hasBin: true 952 | 953 | valibot@1.0.0-rc.4: 954 | resolution: {integrity: sha512-VRaChgFv7Ab0P54AMLu7+GqoexdTPQ54Plj59X9qV0AFozI3j9CGH43skg+TqgMpXnrW8jxlJ2TTHAtAD3t4qA==} 955 | peerDependencies: 956 | typescript: '>=5' 957 | peerDependenciesMeta: 958 | typescript: 959 | optional: true 960 | 961 | vite-node@3.0.8: 962 | resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} 963 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 964 | hasBin: true 965 | 966 | vite@6.2.2: 967 | resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} 968 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 969 | hasBin: true 970 | peerDependencies: 971 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 972 | jiti: '>=1.21.0' 973 | less: '*' 974 | lightningcss: ^1.21.0 975 | sass: '*' 976 | sass-embedded: '*' 977 | stylus: '*' 978 | sugarss: '*' 979 | terser: ^5.16.0 980 | tsx: ^4.8.1 981 | yaml: ^2.4.2 982 | peerDependenciesMeta: 983 | '@types/node': 984 | optional: true 985 | jiti: 986 | optional: true 987 | less: 988 | optional: true 989 | lightningcss: 990 | optional: true 991 | sass: 992 | optional: true 993 | sass-embedded: 994 | optional: true 995 | stylus: 996 | optional: true 997 | sugarss: 998 | optional: true 999 | terser: 1000 | optional: true 1001 | tsx: 1002 | optional: true 1003 | yaml: 1004 | optional: true 1005 | 1006 | vitest@3.0.8: 1007 | resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} 1008 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1009 | hasBin: true 1010 | peerDependencies: 1011 | '@edge-runtime/vm': '*' 1012 | '@types/debug': ^4.1.12 1013 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1014 | '@vitest/browser': 3.0.8 1015 | '@vitest/ui': 3.0.8 1016 | happy-dom: '*' 1017 | jsdom: '*' 1018 | peerDependenciesMeta: 1019 | '@edge-runtime/vm': 1020 | optional: true 1021 | '@types/debug': 1022 | optional: true 1023 | '@types/node': 1024 | optional: true 1025 | '@vitest/browser': 1026 | optional: true 1027 | '@vitest/ui': 1028 | optional: true 1029 | happy-dom: 1030 | optional: true 1031 | jsdom: 1032 | optional: true 1033 | 1034 | why-is-node-running@2.3.0: 1035 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1036 | engines: {node: '>=8'} 1037 | hasBin: true 1038 | 1039 | zod-openapi@4.2.3: 1040 | resolution: {integrity: sha512-i0SqpcdXfsvVWTIY1Jl3Tk421s9fBIkpXvaA86zDas+8FjfZjm+GX6ot6SPB2SyuHwUNTN02gE5uIVlYXlyrDQ==} 1041 | engines: {node: '>=18'} 1042 | peerDependencies: 1043 | zod: ^3.21.4 1044 | 1045 | zod@3.24.2: 1046 | resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} 1047 | 1048 | snapshots: 1049 | 1050 | '@apidevtools/json-schema-ref-parser@11.9.3': 1051 | dependencies: 1052 | '@jsdevtools/ono': 7.1.3 1053 | '@types/json-schema': 7.0.15 1054 | js-yaml: 4.1.0 1055 | 1056 | '@ark/schema@0.44.4': 1057 | dependencies: 1058 | '@ark/util': 0.44.4 1059 | 1060 | '@ark/util@0.44.4': {} 1061 | 1062 | '@biomejs/biome@1.9.4': 1063 | optionalDependencies: 1064 | '@biomejs/cli-darwin-arm64': 1.9.4 1065 | '@biomejs/cli-darwin-x64': 1.9.4 1066 | '@biomejs/cli-linux-arm64': 1.9.4 1067 | '@biomejs/cli-linux-arm64-musl': 1.9.4 1068 | '@biomejs/cli-linux-x64': 1.9.4 1069 | '@biomejs/cli-linux-x64-musl': 1.9.4 1070 | '@biomejs/cli-win32-arm64': 1.9.4 1071 | '@biomejs/cli-win32-x64': 1.9.4 1072 | 1073 | '@biomejs/cli-darwin-arm64@1.9.4': 1074 | optional: true 1075 | 1076 | '@biomejs/cli-darwin-x64@1.9.4': 1077 | optional: true 1078 | 1079 | '@biomejs/cli-linux-arm64-musl@1.9.4': 1080 | optional: true 1081 | 1082 | '@biomejs/cli-linux-arm64@1.9.4': 1083 | optional: true 1084 | 1085 | '@biomejs/cli-linux-x64-musl@1.9.4': 1086 | optional: true 1087 | 1088 | '@biomejs/cli-linux-x64@1.9.4': 1089 | optional: true 1090 | 1091 | '@biomejs/cli-win32-arm64@1.9.4': 1092 | optional: true 1093 | 1094 | '@biomejs/cli-win32-x64@1.9.4': 1095 | optional: true 1096 | 1097 | '@esbuild/aix-ppc64@0.24.2': 1098 | optional: true 1099 | 1100 | '@esbuild/aix-ppc64@0.25.1': 1101 | optional: true 1102 | 1103 | '@esbuild/android-arm64@0.24.2': 1104 | optional: true 1105 | 1106 | '@esbuild/android-arm64@0.25.1': 1107 | optional: true 1108 | 1109 | '@esbuild/android-arm@0.24.2': 1110 | optional: true 1111 | 1112 | '@esbuild/android-arm@0.25.1': 1113 | optional: true 1114 | 1115 | '@esbuild/android-x64@0.24.2': 1116 | optional: true 1117 | 1118 | '@esbuild/android-x64@0.25.1': 1119 | optional: true 1120 | 1121 | '@esbuild/darwin-arm64@0.24.2': 1122 | optional: true 1123 | 1124 | '@esbuild/darwin-arm64@0.25.1': 1125 | optional: true 1126 | 1127 | '@esbuild/darwin-x64@0.24.2': 1128 | optional: true 1129 | 1130 | '@esbuild/darwin-x64@0.25.1': 1131 | optional: true 1132 | 1133 | '@esbuild/freebsd-arm64@0.24.2': 1134 | optional: true 1135 | 1136 | '@esbuild/freebsd-arm64@0.25.1': 1137 | optional: true 1138 | 1139 | '@esbuild/freebsd-x64@0.24.2': 1140 | optional: true 1141 | 1142 | '@esbuild/freebsd-x64@0.25.1': 1143 | optional: true 1144 | 1145 | '@esbuild/linux-arm64@0.24.2': 1146 | optional: true 1147 | 1148 | '@esbuild/linux-arm64@0.25.1': 1149 | optional: true 1150 | 1151 | '@esbuild/linux-arm@0.24.2': 1152 | optional: true 1153 | 1154 | '@esbuild/linux-arm@0.25.1': 1155 | optional: true 1156 | 1157 | '@esbuild/linux-ia32@0.24.2': 1158 | optional: true 1159 | 1160 | '@esbuild/linux-ia32@0.25.1': 1161 | optional: true 1162 | 1163 | '@esbuild/linux-loong64@0.24.2': 1164 | optional: true 1165 | 1166 | '@esbuild/linux-loong64@0.25.1': 1167 | optional: true 1168 | 1169 | '@esbuild/linux-mips64el@0.24.2': 1170 | optional: true 1171 | 1172 | '@esbuild/linux-mips64el@0.25.1': 1173 | optional: true 1174 | 1175 | '@esbuild/linux-ppc64@0.24.2': 1176 | optional: true 1177 | 1178 | '@esbuild/linux-ppc64@0.25.1': 1179 | optional: true 1180 | 1181 | '@esbuild/linux-riscv64@0.24.2': 1182 | optional: true 1183 | 1184 | '@esbuild/linux-riscv64@0.25.1': 1185 | optional: true 1186 | 1187 | '@esbuild/linux-s390x@0.24.2': 1188 | optional: true 1189 | 1190 | '@esbuild/linux-s390x@0.25.1': 1191 | optional: true 1192 | 1193 | '@esbuild/linux-x64@0.24.2': 1194 | optional: true 1195 | 1196 | '@esbuild/linux-x64@0.25.1': 1197 | optional: true 1198 | 1199 | '@esbuild/netbsd-arm64@0.24.2': 1200 | optional: true 1201 | 1202 | '@esbuild/netbsd-arm64@0.25.1': 1203 | optional: true 1204 | 1205 | '@esbuild/netbsd-x64@0.24.2': 1206 | optional: true 1207 | 1208 | '@esbuild/netbsd-x64@0.25.1': 1209 | optional: true 1210 | 1211 | '@esbuild/openbsd-arm64@0.24.2': 1212 | optional: true 1213 | 1214 | '@esbuild/openbsd-arm64@0.25.1': 1215 | optional: true 1216 | 1217 | '@esbuild/openbsd-x64@0.24.2': 1218 | optional: true 1219 | 1220 | '@esbuild/openbsd-x64@0.25.1': 1221 | optional: true 1222 | 1223 | '@esbuild/sunos-x64@0.24.2': 1224 | optional: true 1225 | 1226 | '@esbuild/sunos-x64@0.25.1': 1227 | optional: true 1228 | 1229 | '@esbuild/win32-arm64@0.24.2': 1230 | optional: true 1231 | 1232 | '@esbuild/win32-arm64@0.25.1': 1233 | optional: true 1234 | 1235 | '@esbuild/win32-ia32@0.24.2': 1236 | optional: true 1237 | 1238 | '@esbuild/win32-ia32@0.25.1': 1239 | optional: true 1240 | 1241 | '@esbuild/win32-x64@0.24.2': 1242 | optional: true 1243 | 1244 | '@esbuild/win32-x64@0.25.1': 1245 | optional: true 1246 | 1247 | '@jridgewell/sourcemap-codec@1.5.0': {} 1248 | 1249 | '@jsdevtools/ono@7.1.3': {} 1250 | 1251 | '@nodelib/fs.scandir@2.1.5': 1252 | dependencies: 1253 | '@nodelib/fs.stat': 2.0.5 1254 | run-parallel: 1.2.0 1255 | 1256 | '@nodelib/fs.stat@2.0.5': {} 1257 | 1258 | '@nodelib/fs.walk@1.2.8': 1259 | dependencies: 1260 | '@nodelib/fs.scandir': 2.1.5 1261 | fastq: 1.19.1 1262 | 1263 | '@rollup/plugin-alias@5.1.1(rollup@4.35.0)': 1264 | optionalDependencies: 1265 | rollup: 4.35.0 1266 | 1267 | '@rollup/plugin-commonjs@28.0.3(rollup@4.35.0)': 1268 | dependencies: 1269 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1270 | commondir: 1.0.1 1271 | estree-walker: 2.0.2 1272 | fdir: 6.4.3(picomatch@4.0.2) 1273 | is-reference: 1.2.1 1274 | magic-string: 0.30.17 1275 | picomatch: 4.0.2 1276 | optionalDependencies: 1277 | rollup: 4.35.0 1278 | 1279 | '@rollup/plugin-dynamic-import-vars@2.1.5(rollup@4.35.0)': 1280 | dependencies: 1281 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1282 | astring: 1.9.0 1283 | estree-walker: 2.0.2 1284 | fast-glob: 3.3.3 1285 | magic-string: 0.30.17 1286 | optionalDependencies: 1287 | rollup: 4.35.0 1288 | 1289 | '@rollup/plugin-inject@5.0.5(rollup@4.35.0)': 1290 | dependencies: 1291 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1292 | estree-walker: 2.0.2 1293 | magic-string: 0.30.17 1294 | optionalDependencies: 1295 | rollup: 4.35.0 1296 | 1297 | '@rollup/plugin-json@6.1.0(rollup@4.35.0)': 1298 | dependencies: 1299 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1300 | optionalDependencies: 1301 | rollup: 4.35.0 1302 | 1303 | '@rollup/plugin-node-resolve@16.0.1(rollup@4.35.0)': 1304 | dependencies: 1305 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1306 | '@types/resolve': 1.20.2 1307 | deepmerge: 4.3.1 1308 | is-module: 1.0.0 1309 | resolve: 1.22.10 1310 | optionalDependencies: 1311 | rollup: 4.35.0 1312 | 1313 | '@rollup/pluginutils@5.1.4(rollup@4.35.0)': 1314 | dependencies: 1315 | '@types/estree': 1.0.6 1316 | estree-walker: 2.0.2 1317 | picomatch: 4.0.2 1318 | optionalDependencies: 1319 | rollup: 4.35.0 1320 | 1321 | '@rollup/rollup-android-arm-eabi@4.35.0': 1322 | optional: true 1323 | 1324 | '@rollup/rollup-android-arm64@4.35.0': 1325 | optional: true 1326 | 1327 | '@rollup/rollup-darwin-arm64@4.35.0': 1328 | optional: true 1329 | 1330 | '@rollup/rollup-darwin-x64@4.35.0': 1331 | optional: true 1332 | 1333 | '@rollup/rollup-freebsd-arm64@4.35.0': 1334 | optional: true 1335 | 1336 | '@rollup/rollup-freebsd-x64@4.35.0': 1337 | optional: true 1338 | 1339 | '@rollup/rollup-linux-arm-gnueabihf@4.35.0': 1340 | optional: true 1341 | 1342 | '@rollup/rollup-linux-arm-musleabihf@4.35.0': 1343 | optional: true 1344 | 1345 | '@rollup/rollup-linux-arm64-gnu@4.35.0': 1346 | optional: true 1347 | 1348 | '@rollup/rollup-linux-arm64-musl@4.35.0': 1349 | optional: true 1350 | 1351 | '@rollup/rollup-linux-loongarch64-gnu@4.35.0': 1352 | optional: true 1353 | 1354 | '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': 1355 | optional: true 1356 | 1357 | '@rollup/rollup-linux-riscv64-gnu@4.35.0': 1358 | optional: true 1359 | 1360 | '@rollup/rollup-linux-s390x-gnu@4.35.0': 1361 | optional: true 1362 | 1363 | '@rollup/rollup-linux-x64-gnu@4.35.0': 1364 | optional: true 1365 | 1366 | '@rollup/rollup-linux-x64-musl@4.35.0': 1367 | optional: true 1368 | 1369 | '@rollup/rollup-win32-arm64-msvc@4.35.0': 1370 | optional: true 1371 | 1372 | '@rollup/rollup-win32-ia32-msvc@4.35.0': 1373 | optional: true 1374 | 1375 | '@rollup/rollup-win32-x64-msvc@4.35.0': 1376 | optional: true 1377 | 1378 | '@standard-community/standard-json@0.1.0(arktype@2.1.9)': 1379 | optionalDependencies: 1380 | arktype: 2.1.9 1381 | 1382 | '@standard-schema/spec@1.0.0': {} 1383 | 1384 | '@types/estree@1.0.6': {} 1385 | 1386 | '@types/json-schema@7.0.15': {} 1387 | 1388 | '@types/resolve@1.20.2': {} 1389 | 1390 | '@vitest/expect@3.0.8': 1391 | dependencies: 1392 | '@vitest/spy': 3.0.8 1393 | '@vitest/utils': 3.0.8 1394 | chai: 5.2.0 1395 | tinyrainbow: 2.0.0 1396 | 1397 | '@vitest/mocker@3.0.8(vite@6.2.2)': 1398 | dependencies: 1399 | '@vitest/spy': 3.0.8 1400 | estree-walker: 3.0.3 1401 | magic-string: 0.30.17 1402 | optionalDependencies: 1403 | vite: 6.2.2 1404 | 1405 | '@vitest/pretty-format@3.0.8': 1406 | dependencies: 1407 | tinyrainbow: 2.0.0 1408 | 1409 | '@vitest/runner@3.0.8': 1410 | dependencies: 1411 | '@vitest/utils': 3.0.8 1412 | pathe: 2.0.3 1413 | 1414 | '@vitest/snapshot@3.0.8': 1415 | dependencies: 1416 | '@vitest/pretty-format': 3.0.8 1417 | magic-string: 0.30.17 1418 | pathe: 2.0.3 1419 | 1420 | '@vitest/spy@3.0.8': 1421 | dependencies: 1422 | tinyspy: 3.0.2 1423 | 1424 | '@vitest/utils@3.0.8': 1425 | dependencies: 1426 | '@vitest/pretty-format': 3.0.8 1427 | loupe: 3.1.3 1428 | tinyrainbow: 2.0.0 1429 | 1430 | argparse@2.0.1: {} 1431 | 1432 | arktype@2.1.9: 1433 | dependencies: 1434 | '@ark/schema': 0.44.4 1435 | '@ark/util': 0.44.4 1436 | 1437 | assertion-error@2.0.1: {} 1438 | 1439 | astring@1.9.0: {} 1440 | 1441 | braces@3.0.3: 1442 | dependencies: 1443 | fill-range: 7.1.1 1444 | 1445 | cac@6.7.14: {} 1446 | 1447 | chai@5.2.0: 1448 | dependencies: 1449 | assertion-error: 2.0.1 1450 | check-error: 2.1.1 1451 | deep-eql: 5.0.2 1452 | loupe: 3.1.3 1453 | pathval: 2.0.0 1454 | 1455 | check-error@2.1.1: {} 1456 | 1457 | ci-info@4.2.0: {} 1458 | 1459 | clone@2.1.2: {} 1460 | 1461 | commondir@1.0.1: {} 1462 | 1463 | debug@4.4.0: 1464 | dependencies: 1465 | ms: 2.1.3 1466 | 1467 | deep-eql@5.0.2: {} 1468 | 1469 | deepmerge@4.3.1: {} 1470 | 1471 | es-module-lexer@1.6.0: {} 1472 | 1473 | esbuild@0.24.2: 1474 | optionalDependencies: 1475 | '@esbuild/aix-ppc64': 0.24.2 1476 | '@esbuild/android-arm': 0.24.2 1477 | '@esbuild/android-arm64': 0.24.2 1478 | '@esbuild/android-x64': 0.24.2 1479 | '@esbuild/darwin-arm64': 0.24.2 1480 | '@esbuild/darwin-x64': 0.24.2 1481 | '@esbuild/freebsd-arm64': 0.24.2 1482 | '@esbuild/freebsd-x64': 0.24.2 1483 | '@esbuild/linux-arm': 0.24.2 1484 | '@esbuild/linux-arm64': 0.24.2 1485 | '@esbuild/linux-ia32': 0.24.2 1486 | '@esbuild/linux-loong64': 0.24.2 1487 | '@esbuild/linux-mips64el': 0.24.2 1488 | '@esbuild/linux-ppc64': 0.24.2 1489 | '@esbuild/linux-riscv64': 0.24.2 1490 | '@esbuild/linux-s390x': 0.24.2 1491 | '@esbuild/linux-x64': 0.24.2 1492 | '@esbuild/netbsd-arm64': 0.24.2 1493 | '@esbuild/netbsd-x64': 0.24.2 1494 | '@esbuild/openbsd-arm64': 0.24.2 1495 | '@esbuild/openbsd-x64': 0.24.2 1496 | '@esbuild/sunos-x64': 0.24.2 1497 | '@esbuild/win32-arm64': 0.24.2 1498 | '@esbuild/win32-ia32': 0.24.2 1499 | '@esbuild/win32-x64': 0.24.2 1500 | 1501 | esbuild@0.25.1: 1502 | optionalDependencies: 1503 | '@esbuild/aix-ppc64': 0.25.1 1504 | '@esbuild/android-arm': 0.25.1 1505 | '@esbuild/android-arm64': 0.25.1 1506 | '@esbuild/android-x64': 0.25.1 1507 | '@esbuild/darwin-arm64': 0.25.1 1508 | '@esbuild/darwin-x64': 0.25.1 1509 | '@esbuild/freebsd-arm64': 0.25.1 1510 | '@esbuild/freebsd-x64': 0.25.1 1511 | '@esbuild/linux-arm': 0.25.1 1512 | '@esbuild/linux-arm64': 0.25.1 1513 | '@esbuild/linux-ia32': 0.25.1 1514 | '@esbuild/linux-loong64': 0.25.1 1515 | '@esbuild/linux-mips64el': 0.25.1 1516 | '@esbuild/linux-ppc64': 0.25.1 1517 | '@esbuild/linux-riscv64': 0.25.1 1518 | '@esbuild/linux-s390x': 0.25.1 1519 | '@esbuild/linux-x64': 0.25.1 1520 | '@esbuild/netbsd-arm64': 0.25.1 1521 | '@esbuild/netbsd-x64': 0.25.1 1522 | '@esbuild/openbsd-arm64': 0.25.1 1523 | '@esbuild/openbsd-x64': 0.25.1 1524 | '@esbuild/sunos-x64': 0.25.1 1525 | '@esbuild/win32-arm64': 0.25.1 1526 | '@esbuild/win32-ia32': 0.25.1 1527 | '@esbuild/win32-x64': 0.25.1 1528 | 1529 | estree-walker@0.6.1: {} 1530 | 1531 | estree-walker@2.0.2: {} 1532 | 1533 | estree-walker@3.0.3: 1534 | dependencies: 1535 | '@types/estree': 1.0.6 1536 | 1537 | expect-type@1.2.0: {} 1538 | 1539 | fast-glob@3.3.3: 1540 | dependencies: 1541 | '@nodelib/fs.stat': 2.0.5 1542 | '@nodelib/fs.walk': 1.2.8 1543 | glob-parent: 5.1.2 1544 | merge2: 1.4.1 1545 | micromatch: 4.0.8 1546 | 1547 | fastq@1.19.1: 1548 | dependencies: 1549 | reusify: 1.1.0 1550 | 1551 | fdir@6.4.3(picomatch@4.0.2): 1552 | optionalDependencies: 1553 | picomatch: 4.0.2 1554 | 1555 | fill-range@7.1.1: 1556 | dependencies: 1557 | to-regex-range: 5.0.1 1558 | 1559 | fsevents@2.3.3: 1560 | optional: true 1561 | 1562 | function-bind@1.1.2: {} 1563 | 1564 | glob-parent@5.1.2: 1565 | dependencies: 1566 | is-glob: 4.0.3 1567 | 1568 | hasown@2.0.2: 1569 | dependencies: 1570 | function-bind: 1.1.2 1571 | 1572 | husky@9.1.7: {} 1573 | 1574 | is-ci@4.1.0: 1575 | dependencies: 1576 | ci-info: 4.2.0 1577 | 1578 | is-core-module@2.16.1: 1579 | dependencies: 1580 | hasown: 2.0.2 1581 | 1582 | is-extglob@2.1.1: {} 1583 | 1584 | is-glob@4.0.3: 1585 | dependencies: 1586 | is-extglob: 2.1.1 1587 | 1588 | is-module@1.0.0: {} 1589 | 1590 | is-number@7.0.0: {} 1591 | 1592 | is-reference@1.2.1: 1593 | dependencies: 1594 | '@types/estree': 1.0.6 1595 | 1596 | js-yaml@4.1.0: 1597 | dependencies: 1598 | argparse: 2.0.1 1599 | 1600 | json-schema-walker@2.0.0: 1601 | dependencies: 1602 | '@apidevtools/json-schema-ref-parser': 11.9.3 1603 | clone: 2.1.2 1604 | 1605 | loupe@3.1.3: {} 1606 | 1607 | magic-string@0.30.17: 1608 | dependencies: 1609 | '@jridgewell/sourcemap-codec': 1.5.0 1610 | 1611 | merge2@1.4.1: {} 1612 | 1613 | micromatch@4.0.8: 1614 | dependencies: 1615 | braces: 3.0.3 1616 | picomatch: 2.3.1 1617 | 1618 | ms@2.1.3: {} 1619 | 1620 | nano-staged@0.8.0: 1621 | dependencies: 1622 | picocolors: 1.1.1 1623 | 1624 | nanoid@3.3.10: {} 1625 | 1626 | openapi-types@12.1.3: {} 1627 | 1628 | path-parse@1.0.7: {} 1629 | 1630 | pathe@2.0.3: {} 1631 | 1632 | pathval@2.0.0: {} 1633 | 1634 | picocolors@1.1.1: {} 1635 | 1636 | picomatch@2.3.1: {} 1637 | 1638 | picomatch@4.0.2: {} 1639 | 1640 | pkgroll@2.11.2(typescript@5.8.2): 1641 | dependencies: 1642 | '@rollup/plugin-alias': 5.1.1(rollup@4.35.0) 1643 | '@rollup/plugin-commonjs': 28.0.3(rollup@4.35.0) 1644 | '@rollup/plugin-dynamic-import-vars': 2.1.5(rollup@4.35.0) 1645 | '@rollup/plugin-inject': 5.0.5(rollup@4.35.0) 1646 | '@rollup/plugin-json': 6.1.0(rollup@4.35.0) 1647 | '@rollup/plugin-node-resolve': 16.0.1(rollup@4.35.0) 1648 | '@rollup/pluginutils': 5.1.4(rollup@4.35.0) 1649 | esbuild: 0.24.2 1650 | magic-string: 0.30.17 1651 | rollup: 4.35.0 1652 | rollup-pluginutils: 2.8.2 1653 | optionalDependencies: 1654 | typescript: 5.8.2 1655 | 1656 | postcss@8.5.3: 1657 | dependencies: 1658 | nanoid: 3.3.10 1659 | picocolors: 1.1.1 1660 | source-map-js: 1.2.1 1661 | 1662 | queue-microtask@1.2.3: {} 1663 | 1664 | resolve@1.22.10: 1665 | dependencies: 1666 | is-core-module: 2.16.1 1667 | path-parse: 1.0.7 1668 | supports-preserve-symlinks-flag: 1.0.0 1669 | 1670 | reusify@1.1.0: {} 1671 | 1672 | rollup-pluginutils@2.8.2: 1673 | dependencies: 1674 | estree-walker: 0.6.1 1675 | 1676 | rollup@4.35.0: 1677 | dependencies: 1678 | '@types/estree': 1.0.6 1679 | optionalDependencies: 1680 | '@rollup/rollup-android-arm-eabi': 4.35.0 1681 | '@rollup/rollup-android-arm64': 4.35.0 1682 | '@rollup/rollup-darwin-arm64': 4.35.0 1683 | '@rollup/rollup-darwin-x64': 4.35.0 1684 | '@rollup/rollup-freebsd-arm64': 4.35.0 1685 | '@rollup/rollup-freebsd-x64': 4.35.0 1686 | '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 1687 | '@rollup/rollup-linux-arm-musleabihf': 4.35.0 1688 | '@rollup/rollup-linux-arm64-gnu': 4.35.0 1689 | '@rollup/rollup-linux-arm64-musl': 4.35.0 1690 | '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 1691 | '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 1692 | '@rollup/rollup-linux-riscv64-gnu': 4.35.0 1693 | '@rollup/rollup-linux-s390x-gnu': 4.35.0 1694 | '@rollup/rollup-linux-x64-gnu': 4.35.0 1695 | '@rollup/rollup-linux-x64-musl': 4.35.0 1696 | '@rollup/rollup-win32-arm64-msvc': 4.35.0 1697 | '@rollup/rollup-win32-ia32-msvc': 4.35.0 1698 | '@rollup/rollup-win32-x64-msvc': 4.35.0 1699 | fsevents: 2.3.3 1700 | 1701 | run-parallel@1.2.0: 1702 | dependencies: 1703 | queue-microtask: 1.2.3 1704 | 1705 | siginfo@2.0.0: {} 1706 | 1707 | source-map-js@1.2.1: {} 1708 | 1709 | stackback@0.0.2: {} 1710 | 1711 | std-env@3.8.1: {} 1712 | 1713 | supports-preserve-symlinks-flag@1.0.0: {} 1714 | 1715 | tinybench@2.9.0: {} 1716 | 1717 | tinyexec@0.3.2: {} 1718 | 1719 | tinypool@1.0.2: {} 1720 | 1721 | tinyrainbow@2.0.0: {} 1722 | 1723 | tinyspy@3.0.2: {} 1724 | 1725 | to-regex-range@5.0.1: 1726 | dependencies: 1727 | is-number: 7.0.0 1728 | 1729 | typescript@5.8.2: {} 1730 | 1731 | valibot@1.0.0-rc.4(typescript@5.8.2): 1732 | optionalDependencies: 1733 | typescript: 5.8.2 1734 | 1735 | vite-node@3.0.8: 1736 | dependencies: 1737 | cac: 6.7.14 1738 | debug: 4.4.0 1739 | es-module-lexer: 1.6.0 1740 | pathe: 2.0.3 1741 | vite: 6.2.2 1742 | transitivePeerDependencies: 1743 | - '@types/node' 1744 | - jiti 1745 | - less 1746 | - lightningcss 1747 | - sass 1748 | - sass-embedded 1749 | - stylus 1750 | - sugarss 1751 | - supports-color 1752 | - terser 1753 | - tsx 1754 | - yaml 1755 | 1756 | vite@6.2.2: 1757 | dependencies: 1758 | esbuild: 0.25.1 1759 | postcss: 8.5.3 1760 | rollup: 4.35.0 1761 | optionalDependencies: 1762 | fsevents: 2.3.3 1763 | 1764 | vitest@3.0.8: 1765 | dependencies: 1766 | '@vitest/expect': 3.0.8 1767 | '@vitest/mocker': 3.0.8(vite@6.2.2) 1768 | '@vitest/pretty-format': 3.0.8 1769 | '@vitest/runner': 3.0.8 1770 | '@vitest/snapshot': 3.0.8 1771 | '@vitest/spy': 3.0.8 1772 | '@vitest/utils': 3.0.8 1773 | chai: 5.2.0 1774 | debug: 4.4.0 1775 | expect-type: 1.2.0 1776 | magic-string: 0.30.17 1777 | pathe: 2.0.3 1778 | std-env: 3.8.1 1779 | tinybench: 2.9.0 1780 | tinyexec: 0.3.2 1781 | tinypool: 1.0.2 1782 | tinyrainbow: 2.0.0 1783 | vite: 6.2.2 1784 | vite-node: 3.0.8 1785 | why-is-node-running: 2.3.0 1786 | transitivePeerDependencies: 1787 | - jiti 1788 | - less 1789 | - lightningcss 1790 | - msw 1791 | - sass 1792 | - sass-embedded 1793 | - stylus 1794 | - sugarss 1795 | - supports-color 1796 | - terser 1797 | - tsx 1798 | - yaml 1799 | 1800 | why-is-node-running@2.3.0: 1801 | dependencies: 1802 | siginfo: 2.0.0 1803 | stackback: 0.0.2 1804 | 1805 | zod-openapi@4.2.3(zod@3.24.2): 1806 | dependencies: 1807 | zod: 3.24.2 1808 | 1809 | zod@3.24.2: {} 1810 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "packages/*" 3 | --------------------------------------------------------------------------------