zod-aot 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -136
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +2 -10
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/emitter.d.ts +2 -9
- package/dist/cli/emitter.d.ts.map +1 -1
- package/dist/cli/emitter.js +4 -0
- package/dist/cli/emitter.js.map +1 -1
- package/dist/core/codegen/context.d.ts +2 -0
- package/dist/core/codegen/context.d.ts.map +1 -1
- package/dist/core/codegen/context.js +2 -0
- package/dist/core/codegen/context.js.map +1 -1
- package/dist/core/codegen/generators/array.js +4 -4
- package/dist/core/codegen/generators/array.js.map +1 -1
- package/dist/core/codegen/generators/bigint.js +6 -6
- package/dist/core/codegen/generators/bigint.js.map +1 -1
- package/dist/core/codegen/generators/boolean.js +1 -1
- package/dist/core/codegen/generators/boolean.js.map +1 -1
- package/dist/core/codegen/generators/date.js +5 -5
- package/dist/core/codegen/generators/date.js.map +1 -1
- package/dist/core/codegen/generators/discriminated-union.js +2 -2
- package/dist/core/codegen/generators/discriminated-union.js.map +1 -1
- package/dist/core/codegen/generators/enum.js +2 -2
- package/dist/core/codegen/generators/enum.js.map +1 -1
- package/dist/core/codegen/generators/literal.js +2 -2
- package/dist/core/codegen/generators/literal.js.map +1 -1
- package/dist/core/codegen/generators/map.d.ts +1 -1
- package/dist/core/codegen/generators/map.d.ts.map +1 -1
- package/dist/core/codegen/generators/map.js +4 -4
- package/dist/core/codegen/generators/map.js.map +1 -1
- package/dist/core/codegen/generators/null.js +1 -1
- package/dist/core/codegen/generators/null.js.map +1 -1
- package/dist/core/codegen/generators/number.d.ts.map +1 -1
- package/dist/core/codegen/generators/number.js +9 -7
- package/dist/core/codegen/generators/number.js.map +1 -1
- package/dist/core/codegen/generators/object.js +1 -1
- package/dist/core/codegen/generators/object.js.map +1 -1
- package/dist/core/codegen/generators/pipe.d.ts +1 -1
- package/dist/core/codegen/generators/pipe.d.ts.map +1 -1
- package/dist/core/codegen/generators/pipe.js +3 -3
- package/dist/core/codegen/generators/pipe.js.map +1 -1
- package/dist/core/codegen/generators/record.js +1 -1
- package/dist/core/codegen/generators/record.js.map +1 -1
- package/dist/core/codegen/generators/set.d.ts +1 -1
- package/dist/core/codegen/generators/set.d.ts.map +1 -1
- package/dist/core/codegen/generators/set.js +5 -5
- package/dist/core/codegen/generators/set.js.map +1 -1
- package/dist/core/codegen/generators/string.d.ts.map +1 -1
- package/dist/core/codegen/generators/string.js +9 -8
- package/dist/core/codegen/generators/string.js.map +1 -1
- package/dist/core/codegen/generators/tuple.d.ts.map +1 -1
- package/dist/core/codegen/generators/tuple.js +3 -5
- package/dist/core/codegen/generators/tuple.js.map +1 -1
- package/dist/core/codegen/generators/undefined.js +1 -1
- package/dist/core/codegen/generators/undefined.js.map +1 -1
- package/dist/core/codegen/generators/union.d.ts.map +1 -1
- package/dist/core/codegen/generators/union.js +6 -2
- package/dist/core/codegen/generators/union.js.map +1 -1
- package/dist/core/codegen/index.d.ts.map +1 -1
- package/dist/core/codegen/index.js +7 -1
- package/dist/core/codegen/index.js.map +1 -1
- package/dist/core/pipeline.d.ts +17 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +17 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +7 -0
- package/dist/internals.d.ts.map +1 -0
- package/dist/internals.js +4 -0
- package/dist/internals.js.map +1 -0
- package/dist/unplugin/transform.d.ts +1 -8
- package/dist/unplugin/transform.d.ts.map +1 -1
- package/dist/unplugin/transform.js +12 -15
- package/dist/unplugin/transform.js.map +1 -1
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -27,21 +27,21 @@ Measured with `vitest bench` on Node.js (Apple M-series):
|
|
|
27
27
|
|
|
28
28
|
| Scenario | Zod v4 | zod-aot | Speedup |
|
|
29
29
|
|---|---|---|----------|
|
|
30
|
-
| simple string |
|
|
31
|
-
| string (min/max) | 5.
|
|
32
|
-
| number (int+positive) | 5.
|
|
33
|
-
| enum |
|
|
34
|
-
| tuple [string, int, boolean] | 4.3M ops/s |
|
|
35
|
-
| record\<string, number\> (5 keys) | 1.9M ops/s |
|
|
36
|
-
| discriminatedUnion (3 variants) | 3.0M ops/s |
|
|
37
|
-
| medium object (7 props, valid) | 1.
|
|
38
|
-
| medium object (7 props, invalid) |
|
|
39
|
-
| large object (10 nested items) |
|
|
40
|
-
| large object (100 nested items) | 11.
|
|
41
|
-
| event log (combined) |
|
|
42
|
-
| partial fallback object (transform) | 1.
|
|
43
|
-
| partial fallback array 10 (transform) |
|
|
44
|
-
| partial fallback array 50 (transform) |
|
|
30
|
+
| simple string | 11.1M ops/s | 19.6M ops/s | **1.8x** |
|
|
31
|
+
| string (min/max) | 5.5M ops/s | 20.0M ops/s | **3.6x** |
|
|
32
|
+
| number (int+positive) | 5.5M ops/s | 18.7M ops/s | **3.4x** |
|
|
33
|
+
| enum | 9.1M ops/s | 17.2M ops/s | **1.9x** |
|
|
34
|
+
| tuple [string, int, boolean] | 4.3M ops/s | 18.1M ops/s | **4.2x** |
|
|
35
|
+
| record\<string, number\> (5 keys) | 1.9M ops/s | 7.1M ops/s | **3.7x** |
|
|
36
|
+
| discriminatedUnion (3 variants) | 3.0M ops/s | 17.3M ops/s | **5.8x** |
|
|
37
|
+
| medium object (7 props, valid) | 1.6M ops/s | 6.6M ops/s | **4.1x** |
|
|
38
|
+
| medium object (7 props, invalid) | 63K ops/s | 474K ops/s | **7.5x** |
|
|
39
|
+
| large object (10 nested items) | 107K ops/s | 5.0M ops/s | **46x** |
|
|
40
|
+
| large object (100 nested items) | 11.6K ops/s | 740K ops/s | **64x** |
|
|
41
|
+
| event log (combined) | 442K ops/s | 5.5M ops/s | **12x** |
|
|
42
|
+
| partial fallback object (transform) | 1.7M ops/s | 3.9M ops/s | **2.3x** |
|
|
43
|
+
| partial fallback array 10 (transform) | 139K ops/s | 577K ops/s | **4.1x** |
|
|
44
|
+
| partial fallback array 50 (transform) | 28K ops/s | 119K ops/s | **4.2x** |
|
|
45
45
|
|
|
46
46
|
Performance gains scale with schema complexity. The `discriminatedUnion` optimization uses an O(1) `switch` dispatch instead of Zod's sequential trial approach. Partial fallback schemas (containing `transform`/`refine`) still show 2.5-4.7x speedups by compiling the optimizable portions.
|
|
47
47
|
|
|
@@ -152,43 +152,6 @@ The plugin:
|
|
|
152
152
|
- Adds `/* @__PURE__ */` annotations for tree-shaking
|
|
153
153
|
- Supports HMR in development
|
|
154
154
|
|
|
155
|
-
## Low-Level API
|
|
156
|
-
|
|
157
|
-
For custom build scripts or advanced use cases, you can use the extractor and code generator directly:
|
|
158
|
-
|
|
159
|
-
```typescript
|
|
160
|
-
import { z } from "zod";
|
|
161
|
-
import { extractSchema, generateValidator } from "zod-aot";
|
|
162
|
-
|
|
163
|
-
const UserSchema = z.object({
|
|
164
|
-
name: z.string().min(3),
|
|
165
|
-
age: z.number().int().positive(),
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
// Extract schema into intermediate representation (IR)
|
|
169
|
-
const ir = extractSchema(UserSchema);
|
|
170
|
-
|
|
171
|
-
// Generate optimized JavaScript validation code
|
|
172
|
-
const { code, functionName } = generateValidator(ir, "validateUser");
|
|
173
|
-
|
|
174
|
-
// Execute the generated code
|
|
175
|
-
const safeParse = new Function(`${code}\nreturn ${functionName};`)();
|
|
176
|
-
const result = safeParse({ name: "Alice", age: 30 });
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### `createFallback(zodSchema)`
|
|
180
|
-
|
|
181
|
-
Wraps a Zod schema to provide the `CompiledSchema` interface, delegating to Zod at runtime. Useful for development or unsupported schema types:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
import { createFallback } from "zod-aot";
|
|
185
|
-
|
|
186
|
-
const validator = createFallback(UserSchema);
|
|
187
|
-
validator.parse(data); // throws on failure
|
|
188
|
-
validator.safeParse(data); // { success, data/error }
|
|
189
|
-
validator.is(data); // type guard (boolean)
|
|
190
|
-
```
|
|
191
|
-
|
|
192
155
|
## How It Works
|
|
193
156
|
|
|
194
157
|
```
|
|
@@ -270,104 +233,33 @@ Key optimizations in the generated code:
|
|
|
270
233
|
|
|
271
234
|
## API Reference
|
|
272
235
|
|
|
273
|
-
### `
|
|
236
|
+
### `compile<T>(zodSchema): CompiledSchema<T>`
|
|
274
237
|
|
|
275
|
-
|
|
238
|
+
Wraps a Zod schema for AOT compilation. In development, it falls back to Zod's built-in validation. After build (via CLI or unplugin), it uses the generated optimized validator.
|
|
276
239
|
|
|
277
240
|
```typescript
|
|
278
241
|
import { z } from "zod";
|
|
279
|
-
import {
|
|
280
|
-
|
|
281
|
-
const ir = extractSchema(z.string().min(3));
|
|
282
|
-
// { type: "string", checks: [{ kind: "min_length", minimum: 3 }] }
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
Schemas containing `transform`, `refine`, `superRefine`, or `custom` produce a `FallbackIR`:
|
|
286
|
-
|
|
287
|
-
```typescript
|
|
288
|
-
const ir = extractSchema(z.string().transform((s) => parseInt(s)));
|
|
289
|
-
// { type: "fallback", reason: "transform" }
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
### `generateValidator(ir, name): CodeGenResult`
|
|
293
|
-
|
|
294
|
-
Generates optimized JavaScript validation code from a SchemaIR.
|
|
295
|
-
|
|
296
|
-
```typescript
|
|
297
|
-
import { generateValidator } from "zod-aot";
|
|
298
|
-
|
|
299
|
-
const { code, functionName } = generateValidator(ir, "myValidator");
|
|
300
|
-
// code: preamble (var declarations for Sets, RegExps, etc.)
|
|
301
|
-
// functionName: full function expression string
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
To execute the generated code:
|
|
305
|
-
|
|
306
|
-
```typescript
|
|
307
|
-
const safeParse = new Function(`${code}\nreturn ${functionName};`)();
|
|
308
|
-
const result = safeParse({ name: "Alice", age: 30 });
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### `createFallback<T>(zodSchema): CompiledSchema<T>`
|
|
312
|
-
|
|
313
|
-
Wraps a Zod schema to provide the `CompiledSchema` interface, delegating to Zod at runtime.
|
|
314
|
-
|
|
315
|
-
```typescript
|
|
316
|
-
import { createFallback } from "zod-aot";
|
|
242
|
+
import { compile } from "zod-aot";
|
|
317
243
|
|
|
318
|
-
const
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
validator.schema; // reference to original Zod schema
|
|
244
|
+
const validateUser = compile(z.object({
|
|
245
|
+
name: z.string().min(3),
|
|
246
|
+
age: z.number().int().positive(),
|
|
247
|
+
}));
|
|
323
248
|
```
|
|
324
249
|
|
|
325
250
|
### `CompiledSchema<T>`
|
|
326
251
|
|
|
327
|
-
The
|
|
252
|
+
The interface returned by `compile()`:
|
|
328
253
|
|
|
329
254
|
```typescript
|
|
330
255
|
interface CompiledSchema<T> {
|
|
331
|
-
parse(input: unknown): T;
|
|
332
|
-
safeParse(input: unknown): SafeParseResult<T>;
|
|
333
|
-
is(input: unknown): input is T;
|
|
334
|
-
schema: unknown;
|
|
256
|
+
parse(input: unknown): T; // throws on failure
|
|
257
|
+
safeParse(input: unknown): SafeParseResult<T>; // { success, data/error }
|
|
258
|
+
is(input: unknown): input is T; // type guard (boolean)
|
|
259
|
+
schema: unknown; // reference to original Zod schema
|
|
335
260
|
}
|
|
336
261
|
```
|
|
337
262
|
|
|
338
|
-
### `SchemaIR`
|
|
339
|
-
|
|
340
|
-
The intermediate representation — a discriminated union of all supported schema types:
|
|
341
|
-
|
|
342
|
-
| IR Type | Zod Equivalent |
|
|
343
|
-
|---|---|
|
|
344
|
-
| `StringIR` | `z.string()`, `z.email()`, `z.url()`, `z.uuid()` |
|
|
345
|
-
| `NumberIR` | `z.number()`, `z.int()` |
|
|
346
|
-
| `BooleanIR` | `z.boolean()` |
|
|
347
|
-
| `NullIR` | `z.null()` |
|
|
348
|
-
| `UndefinedIR` | `z.undefined()` |
|
|
349
|
-
| `LiteralIR` | `z.literal(...)` |
|
|
350
|
-
| `EnumIR` | `z.enum([...])` |
|
|
351
|
-
| `ObjectIR` | `z.object({...})` |
|
|
352
|
-
| `ArrayIR` | `z.array(...)` |
|
|
353
|
-
| `UnionIR` | `z.union([...])` |
|
|
354
|
-
| `OptionalIR` | `.optional()` |
|
|
355
|
-
| `NullableIR` | `.nullable()` |
|
|
356
|
-
| `AnyIR` | `z.any()` |
|
|
357
|
-
| `UnknownIR` | `z.unknown()` |
|
|
358
|
-
| `ReadonlyIR` | `.readonly()` |
|
|
359
|
-
| `DateIR` | `z.date()` |
|
|
360
|
-
| `TupleIR` | `z.tuple([...])` |
|
|
361
|
-
| `RecordIR` | `z.record(...)` |
|
|
362
|
-
| `DefaultIR` | `.default(...)` |
|
|
363
|
-
| `IntersectionIR` | `z.intersection(...)` / `.and(...)` |
|
|
364
|
-
| `DiscriminatedUnionIR` | `z.discriminatedUnion(...)` |
|
|
365
|
-
| `BigIntIR` | `z.bigint()` |
|
|
366
|
-
| `SetIR` | `z.set(...)` |
|
|
367
|
-
| `MapIR` | `z.map(...)` |
|
|
368
|
-
| `PipeIR` | `.pipe(...)` (non-transform) |
|
|
369
|
-
| `FallbackIR` | `transform`, `refine`, `lazy`, etc. |
|
|
370
|
-
|
|
371
263
|
## Supported Types
|
|
372
264
|
|
|
373
265
|
| Type | Supported Checks |
|
|
@@ -442,7 +334,8 @@ pnpm -r build
|
|
|
442
334
|
zod-aot/
|
|
443
335
|
├── packages/zod-aot/ # Main npm package
|
|
444
336
|
│ ├── src/
|
|
445
|
-
│ │ ├── index.ts # Public API exports
|
|
337
|
+
│ │ ├── index.ts # Public API exports (zod-aot)
|
|
338
|
+
│ │ ├── internals.ts # Internal API exports (zod-aot/internals)
|
|
446
339
|
│ │ ├── discovery.ts # Schema discovery (shared by CLI & unplugin)
|
|
447
340
|
│ │ ├── loader.ts # Runtime-aware file loader
|
|
448
341
|
│ │ ├── core/ # Pure logic (no CLI/unplugin deps)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAStD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqB3E;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA4BpC;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import process from "node:process";
|
|
4
|
-
import {
|
|
5
|
-
import { extractSchema } from "#src/core/extractor.js";
|
|
4
|
+
import { compileSchemas } from "#src/core/pipeline.js";
|
|
6
5
|
import { discoverSchemas } from "#src/discovery.js";
|
|
7
6
|
import { generateCompiledFileContent, resolveOutputPath, writeCompiledFile } from "../emitter.js";
|
|
8
7
|
import { getErrorMessage } from "../errors.js";
|
|
@@ -76,14 +75,7 @@ export async function generateFile(filePath, outputFlag, options) {
|
|
|
76
75
|
if (schemas.length === 0) {
|
|
77
76
|
return null;
|
|
78
77
|
}
|
|
79
|
-
const codegenResults = schemas
|
|
80
|
-
const fallbackEntries = [];
|
|
81
|
-
const ir = extractSchema(s.schema, fallbackEntries);
|
|
82
|
-
const result = generateValidator(ir, s.exportName, {
|
|
83
|
-
fallbackCount: fallbackEntries.length,
|
|
84
|
-
});
|
|
85
|
-
return { exportName: s.exportName, codegenResult: result, fallbackEntries };
|
|
86
|
-
});
|
|
78
|
+
const codegenResults = compileSchemas(schemas);
|
|
87
79
|
const outputPath = resolveOutputPath(filePath, outputFlag);
|
|
88
80
|
const sourceRelPath = path.relative(path.dirname(outputPath), filePath);
|
|
89
81
|
const content = generateCompiledFileContent(codegenResults, sourceRelPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/emitter.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { FallbackEntry } from "#src/core/extractor.js";
|
|
3
|
-
interface EmitSchema {
|
|
4
|
-
exportName: string;
|
|
5
|
-
codegenResult: CodeGenResult;
|
|
6
|
-
fallbackEntries: FallbackEntry[];
|
|
7
|
-
}
|
|
1
|
+
import type { CompiledSchemaInfo } from "#src/core/pipeline.js";
|
|
8
2
|
/**
|
|
9
3
|
* Generate the content of a .compiled.ts file from multiple schemas.
|
|
10
4
|
*/
|
|
11
|
-
export declare function generateCompiledFileContent(schemas:
|
|
5
|
+
export declare function generateCompiledFileContent(schemas: CompiledSchemaInfo[], sourceRelPath: string): string;
|
|
12
6
|
/**
|
|
13
7
|
* Resolve the output file path for a given input file.
|
|
14
8
|
*/
|
|
@@ -17,5 +11,4 @@ export declare function resolveOutputPath(inputPath: string, outputFlag: string
|
|
|
17
11
|
* Write the compiled file content to disk.
|
|
18
12
|
*/
|
|
19
13
|
export declare function writeCompiledFile(outputPath: string, content: string): Promise<void>;
|
|
20
|
-
export {};
|
|
21
14
|
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,aAAa,EAAE,MAAM,GACpB,MAAM,CA2FR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAc3F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1F"}
|
package/dist/cli/emitter.js
CHANGED
|
@@ -10,6 +10,10 @@ export function generateCompiledFileContent(schemas, sourceRelPath) {
|
|
|
10
10
|
lines.push("// AUTO-GENERATED by zod-aot — DO NOT EDIT");
|
|
11
11
|
lines.push(`// Source: ${sourceRelPath}`);
|
|
12
12
|
lines.push("");
|
|
13
|
+
// Import Zod config for locale-aware error messages
|
|
14
|
+
lines.push('import { config as __zodAotConfig } from "zod";');
|
|
15
|
+
lines.push("const __msg = __zodAotConfig().localeError;");
|
|
16
|
+
lines.push("");
|
|
13
17
|
// Import original schemas for partial fallback (if any schema has fallbacks)
|
|
14
18
|
const schemasWithFallbacks = schemas.filter((s) => s.fallbackEntries.length > 0);
|
|
15
19
|
if (schemasWithFallbacks.length > 0) {
|
package/dist/cli/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export interface CodeGenContext {
|
|
|
11
11
|
}
|
|
12
12
|
export type GenerateValidationFn = (ir: SchemaIR, inputExpr: string, pathExpr: string, issuesVar: string, ctx: CodeGenContext) => string;
|
|
13
13
|
export declare const EMAIL_REGEX_SOURCE: string;
|
|
14
|
+
/** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
|
|
15
|
+
export declare const UUID_REGEX_SOURCE = "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
|
|
14
16
|
export declare function escapeString(s: string): string;
|
|
15
17
|
/**
|
|
16
18
|
* Extract the function name from a generated function definition string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,KAChB,MAAM,CAAC;AAGZ,eAAO,MAAM,kBAAkB,QAA+G,CAAC;AAE/I,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM/D"}
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,KAChB,MAAM,CAAC;AAGZ,eAAO,MAAM,kBAAkB,QAA+G,CAAC;AAE/I,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,2KAC4I,CAAC;AAE3K,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM/D"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Zod v4's email regex pattern (as a source string for new RegExp())
|
|
2
2
|
export const EMAIL_REGEX_SOURCE = String.raw `^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$`;
|
|
3
|
+
/** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
|
|
4
|
+
export const UUID_REGEX_SOURCE = "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
|
|
3
5
|
export function escapeString(s) {
|
|
4
6
|
return JSON.stringify(s);
|
|
5
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AAsBA,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAE/I,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AAsBA,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAE/I,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAC5B,wKAAwK,CAAC;AAE3K,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export function generateArrayValidation(ir, inputExpr, pathExpr, issuesVar, ctx, generateFn) {
|
|
2
|
-
let code = `if(!Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"array",
|
|
2
|
+
let code = `if(!Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"array",input:${inputExpr},path:${pathExpr}});}else{`;
|
|
3
3
|
for (const check of ir.checks) {
|
|
4
4
|
switch (check.kind) {
|
|
5
5
|
case "min_length":
|
|
6
|
-
code += `if(${inputExpr}.length<${check.minimum}){${issuesVar}.push({code:"too_small",minimum:${check.minimum},
|
|
6
|
+
code += `if(${inputExpr}.length<${check.minimum}){${issuesVar}.push({code:"too_small",minimum:${check.minimum},origin:"array",inclusive:true,input:${inputExpr},path:${pathExpr}});}`;
|
|
7
7
|
break;
|
|
8
8
|
case "max_length":
|
|
9
|
-
code += `if(${inputExpr}.length>${check.maximum}){${issuesVar}.push({code:"too_big",maximum:${check.maximum},
|
|
9
|
+
code += `if(${inputExpr}.length>${check.maximum}){${issuesVar}.push({code:"too_big",maximum:${check.maximum},origin:"array",inclusive:true,input:${inputExpr},path:${pathExpr}});}`;
|
|
10
10
|
break;
|
|
11
11
|
case "length_equals":
|
|
12
|
-
code += `if(${inputExpr}.length
|
|
12
|
+
code += `if(${inputExpr}.length<${check.length}){${issuesVar}.push({code:"too_small",minimum:${check.length},origin:"array",inclusive:true,exact:true,input:${inputExpr},path:${pathExpr}});}else if(${inputExpr}.length>${check.length}){${issuesVar}.push({code:"too_big",maximum:${check.length},origin:"array",inclusive:true,exact:true,input:${inputExpr},path:${pathExpr}});}`;
|
|
13
13
|
break;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/array.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,uBAAuB,CACrC,EAAgC,EAChC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB,EACnB,UAAgC;IAEhC,IAAI,IAAI,GAAG,qBAAqB,SAAS,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/array.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,uBAAuB,CACrC,EAAgC,EAChC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB,EACnB,UAAgC;IAEhC,IAAI,IAAI,GAAG,qBAAqB,SAAS,MAAM,SAAS,qDAAqD,SAAS,SAAS,QAAQ,WAAW,CAAC;IAEnJ,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY;gBACf,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,KAAK,SAAS,mCAAmC,KAAK,CAAC,OAAO,wCAAwC,SAAS,SAAS,QAAQ,MAAM,CAAC;gBACtL,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,KAAK,SAAS,iCAAiC,KAAK,CAAC,OAAO,wCAAwC,SAAS,SAAS,QAAQ,MAAM,CAAC;gBACpL,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,MAAM,KAAK,SAAS,mCAAmC,KAAK,CAAC,MAAM,mDAAmD,SAAS,SAAS,QAAQ,eAAe,SAAS,WAAW,KAAK,CAAC,MAAM,KAAK,SAAS,iCAAiC,KAAK,CAAC,MAAM,mDAAmD,SAAS,SAAS,QAAQ,MAAM,CAAC;gBACtX,MAAM;QACV,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACtC,IAAI,IAAI,WAAW,MAAM,MAAM,MAAM,IAAI,SAAS,WAAW,MAAM,MAAM,CAAC;IAC1E,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,MAAM,GAAG,CAAC;IAC3C,MAAM,QAAQ,GAAG,GAAG,QAAQ,WAAW,MAAM,GAAG,CAAC;IACjD,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACnE,IAAI,IAAI,GAAG,CAAC;IAEZ,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
export function generateBigIntValidation(ir, inputExpr, pathExpr, issuesVar, _ctx) {
|
|
2
|
-
let code = `if(typeof ${inputExpr}!=="bigint"){${issuesVar}.push({code:"invalid_type",expected:"bigint",
|
|
2
|
+
let code = `if(typeof ${inputExpr}!=="bigint"){${issuesVar}.push({code:"invalid_type",expected:"bigint",input:${inputExpr},path:${pathExpr}});}`;
|
|
3
3
|
if (ir.checks.length > 0) {
|
|
4
4
|
code += `else{`;
|
|
5
5
|
for (const check of ir.checks) {
|
|
6
6
|
switch (check.kind) {
|
|
7
7
|
case "bigint_greater_than":
|
|
8
8
|
if (check.inclusive) {
|
|
9
|
-
code += `if(${inputExpr}<${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,
|
|
9
|
+
code += `if(${inputExpr}<${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,origin:"bigint",inclusive:true,input:${inputExpr},path:${pathExpr}});}`;
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
code += `if(${inputExpr}<=${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,
|
|
12
|
+
code += `if(${inputExpr}<=${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,origin:"bigint",inclusive:false,input:${inputExpr},path:${pathExpr}});}`;
|
|
13
13
|
}
|
|
14
14
|
break;
|
|
15
15
|
case "bigint_less_than":
|
|
16
16
|
if (check.inclusive) {
|
|
17
|
-
code += `if(${inputExpr}>${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,
|
|
17
|
+
code += `if(${inputExpr}>${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,origin:"bigint",inclusive:true,input:${inputExpr},path:${pathExpr}});}`;
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
code += `if(${inputExpr}>=${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,
|
|
20
|
+
code += `if(${inputExpr}>=${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,origin:"bigint",inclusive:false,input:${inputExpr},path:${pathExpr}});}`;
|
|
21
21
|
}
|
|
22
22
|
break;
|
|
23
23
|
case "bigint_multiple_of":
|
|
24
|
-
code += `if(${inputExpr}%${check.value}n!==0n){${issuesVar}.push({code:"not_multiple_of",
|
|
24
|
+
code += `if(${inputExpr}%${check.value}n!==0n){${issuesVar}.push({code:"not_multiple_of",divisor:${check.value}n,origin:"bigint",input:${inputExpr},path:${pathExpr}});}`;
|
|
25
25
|
break;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/bigint.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,wBAAwB,CACtC,EAAiC,EACjC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,IAAoB;IAEpB,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,
|
|
1
|
+
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/bigint.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,wBAAwB,CACtC,EAAiC,EACjC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,IAAoB;IAEpB,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,sDAAsD,SAAS,SAAS,QAAQ,MAAM,CAAC;IAEjJ,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,OAAO,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,qBAAqB;oBACxB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,MAAM,SAAS,mCAAmC,KAAK,CAAC,KAAK,0CAA0C,SAAS,SAAS,QAAQ,MAAM,CAAC;oBAChL,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,SAAS,KAAK,KAAK,CAAC,KAAK,MAAM,SAAS,mCAAmC,KAAK,CAAC,KAAK,2CAA2C,SAAS,SAAS,QAAQ,MAAM,CAAC;oBAClL,CAAC;oBACD,MAAM;gBACR,KAAK,kBAAkB;oBACrB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,MAAM,SAAS,iCAAiC,KAAK,CAAC,KAAK,0CAA0C,SAAS,SAAS,QAAQ,MAAM,CAAC;oBAC9K,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,SAAS,KAAK,KAAK,CAAC,KAAK,MAAM,SAAS,iCAAiC,KAAK,CAAC,KAAK,2CAA2C,SAAS,SAAS,QAAQ,MAAM,CAAC;oBAChL,CAAC;oBACD,MAAM;gBACR,KAAK,oBAAoB;oBACvB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,WAAW,SAAS,yCAAyC,KAAK,CAAC,KAAK,2BAA2B,SAAS,SAAS,QAAQ,MAAM,CAAC;oBAC1K,MAAM;YACV,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export function generateBooleanValidation(inputExpr, pathExpr, issuesVar) {
|
|
2
|
-
return `if(typeof ${inputExpr}!=="boolean"){${issuesVar}.push({code:"invalid_type",expected:"boolean",
|
|
2
|
+
return `if(typeof ${inputExpr}!=="boolean"){${issuesVar}.push({code:"invalid_type",expected:"boolean",input:${inputExpr},path:${pathExpr}});}\n`;
|
|
3
3
|
}
|
|
4
4
|
//# sourceMappingURL=boolean.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/boolean.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,OAAO,aAAa,SAAS,iBAAiB,SAAS,
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/boolean.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,OAAO,aAAa,SAAS,iBAAiB,SAAS,uDAAuD,SAAS,SAAS,QAAQ,QAAQ,CAAC;AACnJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function generateDateValidation(ir, inputExpr, pathExpr, issuesVar) {
|
|
2
|
-
let code = `if(!(${inputExpr} instanceof Date)
|
|
2
|
+
let code = `if(!(${inputExpr} instanceof Date)){${issuesVar}.push({code:"invalid_type",expected:"date",input:${inputExpr},path:${pathExpr}});}else if(isNaN(${inputExpr}.getTime())){${issuesVar}.push({code:"invalid_type",expected:"date",received:"Invalid Date",input:${inputExpr},path:${pathExpr}});}`;
|
|
3
3
|
if (ir.checks.length > 0) {
|
|
4
4
|
code += `else{`;
|
|
5
5
|
for (const check of ir.checks) {
|
|
@@ -7,18 +7,18 @@ export function generateDateValidation(ir, inputExpr, pathExpr, issuesVar) {
|
|
|
7
7
|
switch (check.kind) {
|
|
8
8
|
case "date_greater_than":
|
|
9
9
|
if (check.inclusive) {
|
|
10
|
-
code += `if(${timeExpr}<${check.timestamp}){${issuesVar}.push({code:"too_small",minimum:${check.timestamp},inclusive:true,origin:"date",
|
|
10
|
+
code += `if(${timeExpr}<${check.timestamp}){${issuesVar}.push({code:"too_small",minimum:${check.timestamp},inclusive:true,origin:"date",input:${inputExpr},path:${pathExpr}});}`;
|
|
11
11
|
}
|
|
12
12
|
else {
|
|
13
|
-
code += `if(${timeExpr}<=${check.timestamp}){${issuesVar}.push({code:"too_small",minimum:${check.timestamp},inclusive:false,origin:"date",
|
|
13
|
+
code += `if(${timeExpr}<=${check.timestamp}){${issuesVar}.push({code:"too_small",minimum:${check.timestamp},inclusive:false,origin:"date",input:${inputExpr},path:${pathExpr}});}`;
|
|
14
14
|
}
|
|
15
15
|
break;
|
|
16
16
|
case "date_less_than":
|
|
17
17
|
if (check.inclusive) {
|
|
18
|
-
code += `if(${timeExpr}>${check.timestamp}){${issuesVar}.push({code:"too_big",maximum:${check.timestamp},inclusive:true,origin:"date",
|
|
18
|
+
code += `if(${timeExpr}>${check.timestamp}){${issuesVar}.push({code:"too_big",maximum:${check.timestamp},inclusive:true,origin:"date",input:${inputExpr},path:${pathExpr}});}`;
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
|
-
code += `if(${timeExpr}>=${check.timestamp}){${issuesVar}.push({code:"too_big",maximum:${check.timestamp},inclusive:false,origin:"date",
|
|
21
|
+
code += `if(${timeExpr}>=${check.timestamp}){${issuesVar}.push({code:"too_big",maximum:${check.timestamp},inclusive:false,origin:"date",input:${inputExpr},path:${pathExpr}});}`;
|
|
22
22
|
}
|
|
23
23
|
break;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/date.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,EAA+B,EAC/B,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,IAAI,GAAG,QAAQ,SAAS,
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/date.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,EAA+B,EAC/B,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,IAAI,GAAG,QAAQ,SAAS,sBAAsB,SAAS,oDAAoD,SAAS,SAAS,QAAQ,qBAAqB,SAAS,gBAAgB,SAAS,4EAA4E,SAAS,SAAS,QAAQ,MAAM,CAAC;IAE7S,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,OAAO,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,GAAG,SAAS,YAAY,CAAC;YAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,mBAAmB;oBACtB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,mCAAmC,KAAK,CAAC,SAAS,uCAAuC,SAAS,SAAS,QAAQ,MAAM,CAAC;oBACnL,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,SAAS,KAAK,SAAS,mCAAmC,KAAK,CAAC,SAAS,wCAAwC,SAAS,SAAS,QAAQ,MAAM,CAAC;oBACrL,CAAC;oBACD,MAAM;gBACR,KAAK,gBAAgB;oBACnB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,iCAAiC,KAAK,CAAC,SAAS,uCAAuC,SAAS,SAAS,QAAQ,MAAM,CAAC;oBACjL,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,SAAS,KAAK,SAAS,iCAAiC,KAAK,CAAC,SAAS,wCAAwC,SAAS,SAAS,QAAQ,MAAM,CAAC;oBACnL,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { escapeString } from "../context.js";
|
|
2
2
|
export function generateDiscriminatedUnionValidation(ir, inputExpr, pathExpr, issuesVar, ctx, generateFn) {
|
|
3
3
|
const discKey = escapeString(ir.discriminator);
|
|
4
|
-
let code = `if(typeof ${inputExpr}!=="object"||${inputExpr}===null||Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"object",
|
|
4
|
+
let code = `if(typeof ${inputExpr}!=="object"||${inputExpr}===null||Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"object",input:${inputExpr},path:${pathExpr}});}else{`;
|
|
5
5
|
const objVar = `__du_${ctx.counter++}`;
|
|
6
6
|
code += `var ${objVar}=${inputExpr};`;
|
|
7
7
|
code += `switch(${objVar}[${discKey}]){`;
|
|
@@ -11,7 +11,7 @@ export function generateDiscriminatedUnionValidation(ir, inputExpr, pathExpr, is
|
|
|
11
11
|
code += generateFn(option, objVar, pathExpr, issuesVar, ctx);
|
|
12
12
|
code += `break;`;
|
|
13
13
|
}
|
|
14
|
-
code += `default:${issuesVar}.push({code:"invalid_union",
|
|
14
|
+
code += `default:${issuesVar}.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:${discKey},input:${inputExpr},path:${pathExpr}.concat(${discKey})});`;
|
|
15
15
|
code += `}`;
|
|
16
16
|
code += `}\n`;
|
|
17
17
|
return code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/discriminated-union.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,oCAAoC,CAClD,EAA6C,EAC7C,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB,EACnB,UAAgC;IAEhC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,0BAA0B,SAAS,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/discriminated-union.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,oCAAoC,CAClD,EAA6C,EAC7C,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB,EACnB,UAAgC;IAEhC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,0BAA0B,SAAS,MAAM,SAAS,sDAAsD,SAAS,SAAS,QAAQ,WAAW,CAAC;IAExM,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACvC,IAAI,IAAI,OAAO,MAAM,IAAI,SAAS,GAAG,CAAC;IAEtC,IAAI,IAAI,UAAU,MAAM,IAAI,OAAO,KAAK,CAAC;IAEzC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAa,CAAC;QAC7C,IAAI,IAAI,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,IAAI,QAAQ,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,WAAW,SAAS,wFAAwF,OAAO,UAAU,SAAS,SAAS,QAAQ,WAAW,OAAO,MAAM,CAAC;IACxL,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function generateEnumValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
|
|
2
|
-
const setVar = `
|
|
2
|
+
const setVar = `__enumSet_${ctx.counter++}`;
|
|
3
3
|
ctx.preamble.push(`var ${setVar}=new Set(${JSON.stringify(ir.values)});`);
|
|
4
|
-
return `if(!${setVar}.has(${inputExpr})){${issuesVar}.push({code:"
|
|
4
|
+
return `if(!${setVar}.has(${inputExpr})){${issuesVar}.push({code:"invalid_value",values:${JSON.stringify(ir.values)},input:${inputExpr},path:${pathExpr}});}\n`;
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/enum.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CACpC,EAA+B,EAC/B,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/enum.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CACpC,EAA+B,EAC/B,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,OAAO,MAAM,QAAQ,SAAS,MAAM,SAAS,sCAAsC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,SAAS,SAAS,QAAQ,QAAQ,CAAC;AAClK,CAAC"}
|
|
@@ -12,7 +12,7 @@ export function generateLiteralValidation(ir, inputExpr, pathExpr, issuesVar) {
|
|
|
12
12
|
else {
|
|
13
13
|
cond = `${inputExpr}!==${String(v)}`;
|
|
14
14
|
}
|
|
15
|
-
return `if(${cond}){${issuesVar}.push({code:"
|
|
15
|
+
return `if(${cond}){${issuesVar}.push({code:"invalid_value",values:${JSON.stringify([v])},input:${inputExpr},path:${pathExpr}});}\n`;
|
|
16
16
|
}
|
|
17
17
|
const valueChecks = ir.values
|
|
18
18
|
.map((v) => {
|
|
@@ -23,6 +23,6 @@ export function generateLiteralValidation(ir, inputExpr, pathExpr, issuesVar) {
|
|
|
23
23
|
return `${inputExpr}===${String(v)}`;
|
|
24
24
|
})
|
|
25
25
|
.join("||");
|
|
26
|
-
return `if(!(${valueChecks})){${issuesVar}.push({code:"
|
|
26
|
+
return `if(!(${valueChecks})){${issuesVar}.push({code:"invalid_value",values:${JSON.stringify(ir.values)},input:${inputExpr},path:${pathExpr}});}\n`;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=literal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,yBAAyB,CACvC,EAAkC,EAClC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,SAAS,SAAS,CAAC;QAC/B,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,GAAG,GAAG,SAAS,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,IAAI,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../../src/core/codegen/generators/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,yBAAyB,CACvC,EAAkC,EAClC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,SAAS,SAAS,CAAC;QAC/B,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,GAAG,GAAG,SAAS,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,IAAI,KAAK,SAAS,sCAAsC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,SAAS,SAAS,QAAQ,QAAQ,CAAC;IACvI,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,GAAG,SAAS,SAAS,CAAC;QAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,GAAG,SAAS,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,QAAQ,WAAW,MAAM,SAAS,sCAAsC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,SAAS,SAAS,QAAQ,QAAQ,CAAC;AACvJ,CAAC"}
|
|
@@ -2,5 +2,5 @@ import type { SchemaIR } from "../../types.js";
|
|
|
2
2
|
import type { CodeGenContext, GenerateValidationFn } from "../context.js";
|
|
3
3
|
export declare function generateMapValidation(ir: SchemaIR & {
|
|
4
4
|
type: "map";
|
|
5
|
-
}, inputExpr: string, pathExpr: string, issuesVar: string, ctx: CodeGenContext,
|
|
5
|
+
}, inputExpr: string, pathExpr: string, issuesVar: string, ctx: CodeGenContext, generateFn: GenerateValidationFn): string;
|
|
6
6
|
//# sourceMappingURL=map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/generators/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/generators/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,oBAAoB,GAC/B,MAAM,CAkCR"}
|