zod-aot 0.0.7 → 0.0.9

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.
Files changed (52) hide show
  1. package/README.md +26 -7
  2. package/dist/cli/commands/generate.d.ts +25 -2
  3. package/dist/cli/commands/generate.d.ts.map +1 -1
  4. package/dist/cli/commands/generate.js +58 -31
  5. package/dist/cli/commands/generate.js.map +1 -1
  6. package/dist/cli/commands/watch.d.ts +23 -0
  7. package/dist/cli/commands/watch.d.ts.map +1 -0
  8. package/dist/cli/commands/watch.js +149 -0
  9. package/dist/cli/commands/watch.js.map +1 -0
  10. package/dist/cli/emitter.d.ts.map +1 -1
  11. package/dist/cli/emitter.js +4 -0
  12. package/dist/cli/emitter.js.map +1 -1
  13. package/dist/cli/index.js +16 -5
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/core/codegen/generators/bigint.d.ts +6 -0
  16. package/dist/core/codegen/generators/bigint.d.ts.map +1 -0
  17. package/dist/core/codegen/generators/bigint.js +32 -0
  18. package/dist/core/codegen/generators/bigint.js.map +1 -0
  19. package/dist/core/codegen/generators/index.d.ts +4 -0
  20. package/dist/core/codegen/generators/index.d.ts.map +1 -1
  21. package/dist/core/codegen/generators/index.js +4 -0
  22. package/dist/core/codegen/generators/index.js.map +1 -1
  23. package/dist/core/codegen/generators/map.d.ts +8 -0
  24. package/dist/core/codegen/generators/map.d.ts.map +1 -0
  25. package/dist/core/codegen/generators/map.js +18 -0
  26. package/dist/core/codegen/generators/map.js.map +1 -0
  27. package/dist/core/codegen/generators/pipe.d.ts +8 -0
  28. package/dist/core/codegen/generators/pipe.d.ts.map +1 -0
  29. package/dist/core/codegen/generators/pipe.js +7 -0
  30. package/dist/core/codegen/generators/pipe.js.map +1 -0
  31. package/dist/core/codegen/generators/set.d.ts +8 -0
  32. package/dist/core/codegen/generators/set.d.ts.map +1 -0
  33. package/dist/core/codegen/generators/set.js +29 -0
  34. package/dist/core/codegen/generators/set.js.map +1 -0
  35. package/dist/core/codegen/generators/string.d.ts.map +1 -1
  36. package/dist/core/codegen/generators/string.js +0 -2
  37. package/dist/core/codegen/generators/string.js.map +1 -1
  38. package/dist/core/codegen/generators/tuple.d.ts.map +1 -1
  39. package/dist/core/codegen/generators/tuple.js +3 -0
  40. package/dist/core/codegen/generators/tuple.js.map +1 -1
  41. package/dist/core/codegen/generators/union.d.ts.map +1 -1
  42. package/dist/core/codegen/generators/union.js +4 -3
  43. package/dist/core/codegen/generators/union.js.map +1 -1
  44. package/dist/core/codegen/index.d.ts.map +1 -1
  45. package/dist/core/codegen/index.js +9 -1
  46. package/dist/core/codegen/index.js.map +1 -1
  47. package/dist/core/extractor.d.ts.map +1 -1
  48. package/dist/core/extractor.js +72 -2
  49. package/dist/core/extractor.js.map +1 -1
  50. package/dist/core/types.d.ts +48 -2
  51. package/dist/core/types.d.ts.map +1 -1
  52. package/package.json +1 -1
package/README.md CHANGED
@@ -116,6 +116,9 @@ npx zod-aot generate src/schemas.ts -o src/schemas.compiled.ts
116
116
  # Generate from a directory
117
117
  npx zod-aot generate src/ -o src/compiled/
118
118
 
119
+ # Watch mode — regenerate on file changes
120
+ npx zod-aot generate src/ --watch
121
+
119
122
  # Check if schemas are compilable (without generating)
120
123
  npx zod-aot check src/schemas.ts
121
124
  ```
@@ -360,7 +363,11 @@ The intermediate representation — a discriminated union of all supported schem
360
363
  | `DefaultIR` | `.default(...)` |
361
364
  | `IntersectionIR` | `z.intersection(...)` / `.and(...)` |
362
365
  | `DiscriminatedUnionIR` | `z.discriminatedUnion(...)` |
363
- | `FallbackIR` | `transform`, `refine`, etc. |
366
+ | `BigIntIR` | `z.bigint()` |
367
+ | `SetIR` | `z.set(...)` |
368
+ | `MapIR` | `z.map(...)` |
369
+ | `PipeIR` | `.pipe(...)` (non-transform) |
370
+ | `FallbackIR` | `transform`, `refine`, `lazy`, etc. |
364
371
 
365
372
  ## Supported Types
366
373
 
@@ -395,14 +402,24 @@ The intermediate representation — a discriminated union of all supported schem
395
402
  | `intersection` | validates both left and right schemas |
396
403
  | `discriminatedUnion` | O(1) `switch` dispatch on discriminator field |
397
404
 
405
+ ### Tier 3 — Collections & Pipeline
406
+
407
+ | Type | Supported Checks |
408
+ |---|---|
409
+ | `bigint` | `min`, `max`, `positive`, `negative`, `nonnegative`, `nonpositive`, `multipleOf` |
410
+ | `set` | `min`, `max` (size), element validation |
411
+ | `map` | key and value type validation |
412
+ | `pipe` (non-transform) | sequential in→out validation |
413
+
398
414
  ### Automatic Fallback to Zod
399
415
 
400
- These schema types contain JavaScript closures that cannot be compiled to static code. They are detected during extraction and produce a `FallbackIR`:
416
+ These schema types contain JavaScript closures or runtime-dependent logic that cannot be compiled to static code. They are detected during extraction and produce a `FallbackIR`:
401
417
 
402
418
  - `transform` — runtime data transformation
403
419
  - `refine` / `superRefine` — custom validation with closures
404
420
  - `custom` — arbitrary validation logic
405
421
  - `preprocess` — input preprocessing
422
+ - `lazy` — deferred schema resolution (getter function not serializable)
406
423
 
407
424
  #### Partial Fallback
408
425
 
@@ -410,11 +427,11 @@ When a schema contains a mix of compilable and non-compilable parts (e.g., an ob
410
427
 
411
428
  > **Note:** If a schema heavily relies on `transform`, `refine`, or other non-compilable features, the performance benefit from partial fallback will be minimal — most of the validation work is still delegated to Zod. Partial fallback is most effective when only a small portion of the schema uses these features.
412
429
 
413
- ### Planned (Tier 3)
430
+ ### Planned
414
431
 
415
- | Tier | Types |
432
+ | Type | Status |
416
433
  |---|---|
417
- | Tier 3 | `lazy`, `pipe` (non-transform), `template_literal`, `bigint`, `map`, `set` |
434
+ | `template_literal` | Pending Zod v4 API verification |
418
435
 
419
436
  ## Roadmap
420
437
 
@@ -435,11 +452,13 @@ When a schema contains a mix of compilable and non-compilable parts (e.g., an ob
435
452
  - [x] CLI (`npx zod-aot generate` / `npx zod-aot check`)
436
453
  - [x] Partial fallback (objects with some transform properties)
437
454
  - [x] unplugin integration (Vite / webpack / esbuild / Rollup)
438
- - [ ] Watch mode
455
+ - [x] Watch mode (`--watch` / `-w`)
439
456
 
440
457
  ### Phase 3: Ecosystem
441
458
 
442
- - [ ] Tier 3 type support
459
+ - [x] Tier 3 type support (bigint, set, map, pipe non-transform)
460
+ - [x] Lazy schema fallback
461
+ - [ ] `template_literal` type support
443
462
  - [ ] Documentation site
444
463
 
445
464
  ## Development
@@ -1,7 +1,30 @@
1
- interface GenerateOptions {
1
+ export interface GenerateOptions {
2
2
  inputs: string[];
3
3
  output: string | undefined;
4
4
  }
5
+ export interface GenerateFileResult {
6
+ filePath: string;
7
+ outputPath: string;
8
+ schemaCount: number;
9
+ schemaNames: string[];
10
+ }
11
+ /**
12
+ * Check if a filename is a schema file candidate.
13
+ * Shared filter logic used by both findSchemaFiles and isWatchTarget.
14
+ */
15
+ export declare function isSchemaFile(fileName: string): boolean;
16
+ /**
17
+ * Resolve input paths to a list of source files.
18
+ * If a path is a directory, find all .ts files (excluding .compiled.ts, .test.ts, node_modules).
19
+ */
20
+ export declare function resolveInputFiles(inputs: string[]): Promise<string[]>;
21
+ export declare function findSchemaFiles(dir: string): Promise<string[]>;
22
+ /**
23
+ * Generate compiled output for a single source file.
24
+ * Returns null if no compile() calls are found.
25
+ */
26
+ export declare function generateFile(filePath: string, outputFlag: string | undefined, options?: {
27
+ cacheBust?: boolean;
28
+ }): Promise<GenerateFileResult | null>;
5
29
  export declare function runGenerate(options: GenerateOptions): Promise<void>;
6
- export {};
7
30
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AA0DD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DzE"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAWA,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,CAqCpC;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}
@@ -6,11 +6,23 @@ import { extractSchema } from "#src/core/extractor.js";
6
6
  import { discoverSchemas } from "#src/discovery.js";
7
7
  import { generateCompiledFileContent, resolveOutputPath, writeCompiledFile } from "../emitter.js";
8
8
  import { logger } from "../logger.js";
9
+ /**
10
+ * Check if a filename is a schema file candidate.
11
+ * Shared filter logic used by both findSchemaFiles and isWatchTarget.
12
+ */
13
+ export function isSchemaFile(fileName) {
14
+ return (/\.(?:ts|mts|js|mjs)$/.test(fileName) &&
15
+ !fileName.endsWith(".compiled.ts") &&
16
+ !fileName.endsWith(".compiled.js") &&
17
+ !fileName.endsWith(".test.ts") &&
18
+ !fileName.endsWith(".test.js") &&
19
+ !fileName.endsWith(".d.ts"));
20
+ }
9
21
  /**
10
22
  * Resolve input paths to a list of source files.
11
23
  * If a path is a directory, find all .ts files (excluding .compiled.ts, .test.ts, node_modules).
12
24
  */
13
- async function resolveInputFiles(inputs) {
25
+ export async function resolveInputFiles(inputs) {
14
26
  const files = [];
15
27
  for (const input of inputs) {
16
28
  const absPath = path.resolve(input);
@@ -29,7 +41,7 @@ async function resolveInputFiles(inputs) {
29
41
  }
30
42
  return files;
31
43
  }
32
- async function findSchemaFiles(dir) {
44
+ export async function findSchemaFiles(dir) {
33
45
  const results = [];
34
46
  const entries = await fs.promises.readdir(dir, { withFileTypes: true });
35
47
  for (const entry of entries) {
@@ -41,18 +53,47 @@ async function findSchemaFiles(dir) {
41
53
  const nested = await findSchemaFiles(fullPath);
42
54
  results.push(...nested);
43
55
  }
44
- else if (entry.isFile() &&
45
- /\.(?:ts|mts|js|mjs)$/.test(entry.name) &&
46
- !entry.name.endsWith(".compiled.ts") &&
47
- !entry.name.endsWith(".compiled.js") &&
48
- !entry.name.endsWith(".test.ts") &&
49
- !entry.name.endsWith(".test.js") &&
50
- !entry.name.endsWith(".d.ts")) {
56
+ else if (entry.isFile() && isSchemaFile(entry.name)) {
51
57
  results.push(fullPath);
52
58
  }
53
59
  }
54
60
  return results;
55
61
  }
62
+ /**
63
+ * Generate compiled output for a single source file.
64
+ * Returns null if no compile() calls are found.
65
+ */
66
+ export async function generateFile(filePath, outputFlag, options) {
67
+ const relPath = path.relative(process.cwd(), filePath);
68
+ let schemas;
69
+ try {
70
+ schemas = await discoverSchemas(filePath, options?.cacheBust ? { cacheBust: true } : undefined);
71
+ }
72
+ catch (err) {
73
+ throw new Error(`Failed to load ${relPath}: ${err instanceof Error ? err.message : String(err)}`);
74
+ }
75
+ if (schemas.length === 0) {
76
+ return null;
77
+ }
78
+ const codegenResults = schemas.map((s) => {
79
+ const fallbackEntries = [];
80
+ const ir = extractSchema(s.schema, fallbackEntries);
81
+ const result = generateValidator(ir, s.exportName, {
82
+ fallbackCount: fallbackEntries.length,
83
+ });
84
+ return { exportName: s.exportName, codegenResult: result, fallbackEntries };
85
+ });
86
+ const outputPath = resolveOutputPath(filePath, outputFlag);
87
+ const sourceRelPath = path.relative(path.dirname(outputPath), filePath);
88
+ const content = generateCompiledFileContent(codegenResults, sourceRelPath);
89
+ await writeCompiledFile(outputPath, content);
90
+ return {
91
+ filePath,
92
+ outputPath,
93
+ schemaCount: schemas.length,
94
+ schemaNames: schemas.map((s) => s.exportName),
95
+ };
96
+ }
56
97
  export async function runGenerate(options) {
57
98
  const files = await resolveInputFiles(options.inputs);
58
99
  if (files.length === 0) {
@@ -62,34 +103,20 @@ export async function runGenerate(options) {
62
103
  let totalSchemas = 0;
63
104
  let totalFiles = 0;
64
105
  for (const filePath of files) {
65
- const relPath = path.relative(process.cwd(), filePath);
66
- let schemas;
106
+ let result;
67
107
  try {
68
- schemas = await discoverSchemas(filePath);
108
+ result = await generateFile(filePath, options.output);
69
109
  }
70
110
  catch (err) {
71
- logger.error(`Failed to load ${relPath}: ${err instanceof Error ? err.message : String(err)}`);
111
+ logger.error(err instanceof Error ? err.message : String(err));
72
112
  process.exit(1);
73
113
  }
74
- if (schemas.length === 0) {
114
+ if (!result)
75
115
  continue;
76
- }
77
- const codegenResults = schemas.map((s) => {
78
- const fallbackEntries = [];
79
- const ir = extractSchema(s.schema, fallbackEntries);
80
- const result = generateValidator(ir, s.exportName, {
81
- fallbackCount: fallbackEntries.length,
82
- });
83
- return { exportName: s.exportName, codegenResult: result, fallbackEntries };
84
- });
85
- const outputPath = resolveOutputPath(filePath, options.output);
86
- const outputRelPath = path.relative(process.cwd(), outputPath);
87
- const sourceRelPath = path.relative(path.dirname(outputPath), filePath);
88
- const content = generateCompiledFileContent(codegenResults, sourceRelPath);
89
- await writeCompiledFile(outputPath, content);
90
- const schemaNames = schemas.map((s) => s.exportName).join(", ");
91
- logger.success(`${relPath} -> ${outputRelPath} (${schemaNames})`);
92
- totalSchemas += schemas.length;
116
+ const relPath = path.relative(process.cwd(), result.filePath);
117
+ const outputRelPath = path.relative(process.cwd(), result.outputPath);
118
+ logger.success(`${relPath} -> ${outputRelPath} (${result.schemaNames.join(", ")})`);
119
+ totalSchemas += result.schemaCount;
93
120
  totalFiles++;
94
121
  }
95
122
  if (totalFiles === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
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,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AActC;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAClC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAClC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9B,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9B,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAgB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAExE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzF,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,UAA8B,EAC9B,OAAiC;IAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,OAA2B,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,eAAe,GAAoB,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE;YACjD,aAAa,EAAE,eAAe,CAAC,MAAM;SACtC,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,2BAA2B,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAE3E,MAAM,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE7C,OAAO;QACL,QAAQ;QACR,UAAU;QACV,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAwB;IACxD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,MAAiC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,OAAO,aAAa,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpF,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC;QACnC,UAAU,EAAE,CAAC;IACf,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,aAAa,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,UAAU,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CACtH,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ interface WatchOptions {
2
+ inputs: string[];
3
+ output: string | undefined;
4
+ }
5
+ /**
6
+ * Check if a file path should trigger regeneration.
7
+ */
8
+ export declare function isWatchTarget(filePath: string): boolean;
9
+ /**
10
+ * Resolve which directories to watch from input paths.
11
+ * Files are mapped to their parent directory; subdirectories are deduplicated.
12
+ */
13
+ export declare function resolveWatchDirs(inputs: string[]): string[];
14
+ /**
15
+ * Create a debounced version of a function.
16
+ */
17
+ export declare function debounce<T extends (...args: never[]) => void>(fn: T, delayMs: number): T;
18
+ /**
19
+ * Run the watch mode: initial generate + fs.watch for changes.
20
+ */
21
+ export declare function runWatch(options: WatchOptions): Promise<void>;
22
+ export {};
23
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAWA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAwB3D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CASxF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGnE"}
@@ -0,0 +1,149 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import process from "node:process";
4
+ import { logger } from "../logger.js";
5
+ import { generateFile, isSchemaFile, resolveInputFiles, } from "./generate.js";
6
+ /**
7
+ * Check if a file path should trigger regeneration.
8
+ */
9
+ export function isWatchTarget(filePath) {
10
+ if (filePath.split(path.sep).includes("node_modules"))
11
+ return false;
12
+ return isSchemaFile(filePath);
13
+ }
14
+ /**
15
+ * Resolve which directories to watch from input paths.
16
+ * Files are mapped to their parent directory; subdirectories are deduplicated.
17
+ */
18
+ export function resolveWatchDirs(inputs) {
19
+ const dirs = [];
20
+ for (const input of inputs) {
21
+ const abs = path.resolve(input);
22
+ try {
23
+ const stat = fs.statSync(abs);
24
+ dirs.push(stat.isDirectory() ? abs : path.dirname(abs));
25
+ }
26
+ catch {
27
+ dirs.push(path.dirname(abs));
28
+ }
29
+ }
30
+ // Deduplicate: remove dirs that are subdirectories of another watched dir
31
+ const sorted = [...new Set(dirs)].sort();
32
+ const result = [];
33
+ for (const dir of sorted) {
34
+ const isSubdir = result.some((parent) => dir.startsWith(parent + path.sep));
35
+ if (!isSubdir) {
36
+ result.push(dir);
37
+ }
38
+ }
39
+ return result;
40
+ }
41
+ /**
42
+ * Create a debounced version of a function.
43
+ */
44
+ export function debounce(fn, delayMs) {
45
+ let timer;
46
+ return ((...args) => {
47
+ if (timer !== undefined)
48
+ clearTimeout(timer);
49
+ timer = setTimeout(() => {
50
+ timer = undefined;
51
+ fn(...args);
52
+ }, delayMs);
53
+ });
54
+ }
55
+ /**
56
+ * Run the watch mode: initial generate + fs.watch for changes.
57
+ */
58
+ export async function runWatch(options) {
59
+ const files = await resolveInputFiles(options.inputs);
60
+ if (files.length === 0) {
61
+ logger.warn("No source files found.");
62
+ return;
63
+ }
64
+ // Initial generation
65
+ let totalSchemas = 0;
66
+ let totalFiles = 0;
67
+ for (const filePath of files) {
68
+ try {
69
+ const result = await generateFile(filePath, options.output);
70
+ if (result) {
71
+ logResult(result);
72
+ totalSchemas += result.schemaCount;
73
+ totalFiles++;
74
+ }
75
+ }
76
+ catch (err) {
77
+ logger.error(err instanceof Error ? err.message : String(err));
78
+ }
79
+ }
80
+ if (totalFiles > 0) {
81
+ logger.info(`Generated ${totalSchemas} schema${totalSchemas > 1 ? "s" : ""} from ${totalFiles} file${totalFiles > 1 ? "s" : ""}.`);
82
+ }
83
+ else {
84
+ logger.warn("No compile() calls found in any source file.");
85
+ }
86
+ // Set up file watching
87
+ const watchDirs = resolveWatchDirs(options.inputs);
88
+ const ac = new AbortController();
89
+ const pendingFiles = new Set();
90
+ const flush = debounce(async () => {
91
+ const batch = [...pendingFiles];
92
+ pendingFiles.clear();
93
+ for (const filePath of batch) {
94
+ try {
95
+ const result = await generateFile(filePath, options.output, { cacheBust: true });
96
+ if (result) {
97
+ logResult(result);
98
+ }
99
+ }
100
+ catch (err) {
101
+ logger.error(err instanceof Error ? err.message : String(err));
102
+ }
103
+ }
104
+ }, 150);
105
+ const watchers = [];
106
+ for (const dir of watchDirs) {
107
+ try {
108
+ const watcher = fs.watch(dir, { recursive: true, signal: ac.signal }, (_event, filename) => {
109
+ if (!filename)
110
+ return;
111
+ const fullPath = path.resolve(dir, filename);
112
+ if (isWatchTarget(fullPath)) {
113
+ pendingFiles.add(fullPath);
114
+ void flush();
115
+ }
116
+ });
117
+ watchers.push(watcher);
118
+ }
119
+ catch (err) {
120
+ logger.error(`Failed to watch ${dir}: ${err instanceof Error ? err.message : String(err)}`);
121
+ }
122
+ }
123
+ if (watchers.length === 0) {
124
+ logger.error("No directories could be watched.");
125
+ return;
126
+ }
127
+ logger.info(`Watching ${watchDirs.length} director${watchDirs.length > 1 ? "ies" : "y"} for changes... (Ctrl+C to stop)`);
128
+ // Graceful shutdown
129
+ const shutdown = () => {
130
+ logger.dim("\nStopping watch mode...");
131
+ ac.abort();
132
+ };
133
+ process.on("SIGINT", shutdown);
134
+ process.on("SIGTERM", shutdown);
135
+ // Keep process alive until aborted
136
+ await new Promise((resolve) => {
137
+ ac.signal.addEventListener("abort", () => {
138
+ process.removeListener("SIGINT", shutdown);
139
+ process.removeListener("SIGTERM", shutdown);
140
+ resolve();
141
+ }, { once: true });
142
+ });
143
+ }
144
+ function logResult(result) {
145
+ const relPath = path.relative(process.cwd(), result.filePath);
146
+ const outputRelPath = path.relative(process.cwd(), result.outputPath);
147
+ logger.success(`${relPath} -> ${outputRelPath} (${result.schemaNames.join(", ")})`);
148
+ }
149
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAgFhG;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"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAsFhG;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"}
@@ -49,6 +49,10 @@ export function generateCompiledFileContent(schemas, sourceRelPath) {
49
49
  // Inject __fb binding at function start
50
50
  const fnDef = schema.codegenResult.functionName;
51
51
  const injected = fnDef.replace(/^(function\s+\w+\(input\)\{)\n/, `$1\nvar __fb=__fb_${schema.exportName};\n`);
52
+ if (injected === fnDef) {
53
+ throw new Error(`[zod-aot] Failed to inject __fb binding into ${schema.exportName}. ` +
54
+ "Generated function format may have changed.");
55
+ }
52
56
  lines.push(injected);
53
57
  }
54
58
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/cli/emitter.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -10,7 +10,7 @@ function printUsage() {
10
10
  zod-aot v${VERSION} — Compile Zod schemas into zero-overhead validation functions
11
11
 
12
12
  Usage:
13
- zod-aot generate <files...> [-o <output>]
13
+ zod-aot generate <files...> [-o <output>] [-w]
14
14
  zod-aot check <files...>
15
15
 
16
16
  Commands:
@@ -19,13 +19,14 @@ Commands:
19
19
 
20
20
  Options:
21
21
  -o, --output <path> Output file or directory
22
+ -w, --watch Watch for changes and regenerate
22
23
  -h, --help Show this help message
23
24
  -v, --version Show version number
24
25
 
25
26
  Examples:
26
27
  zod-aot generate src/schemas.ts
27
28
  zod-aot generate src/schemas.ts -o src/schemas.compiled.ts
28
- zod-aot generate src/
29
+ zod-aot generate src/ --watch
29
30
  zod-aot check src/schemas.ts
30
31
  `.trim());
31
32
  }
@@ -42,6 +43,7 @@ function parseArgs(argv) {
42
43
  if (command === "generate") {
43
44
  const inputs = [];
44
45
  let output;
46
+ let watch = false;
45
47
  for (let i = 0; i < rest.length; i++) {
46
48
  const arg = rest[i];
47
49
  if (arg === "-o" || arg === "--output") {
@@ -53,6 +55,9 @@ function parseArgs(argv) {
53
55
  }
54
56
  output = val;
55
57
  }
58
+ else if (arg === "-w" || arg === "--watch") {
59
+ watch = true;
60
+ }
56
61
  else if (arg.startsWith("-")) {
57
62
  logger.error(`Unknown option: ${arg}`);
58
63
  process.exit(1);
@@ -65,7 +70,7 @@ function parseArgs(argv) {
65
70
  logger.error("No input files specified. Run 'zod-aot --help' for usage.");
66
71
  process.exit(1);
67
72
  }
68
- return { kind: "generate", options: { inputs, output } };
73
+ return { kind: "generate", options: { inputs, output, watch } };
69
74
  }
70
75
  if (command === "check") {
71
76
  const inputs = rest.filter((arg) => {
@@ -95,8 +100,14 @@ async function main() {
95
100
  console.log(VERSION);
96
101
  break;
97
102
  case "generate": {
98
- const { runGenerate } = await import("./commands/generate.js");
99
- await runGenerate(command.options);
103
+ if (command.options.watch) {
104
+ const { runWatch } = await import("./commands/watch.js");
105
+ await runWatch(command.options);
106
+ }
107
+ else {
108
+ const { runGenerate } = await import("./commands/generate.js");
109
+ await runGenerate(command.options);
110
+ }
100
111
  break;
101
112
  }
102
113
  case "check": {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SchemaIR } from "../../types.js";
2
+ import type { CodeGenContext } from "../context.js";
3
+ export declare function generateBigIntValidation(ir: SchemaIR & {
4
+ type: "bigint";
5
+ }, inputExpr: string, pathExpr: string, issuesVar: string, _ctx: CodeGenContext): string;
6
+ //# sourceMappingURL=bigint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/generators/bigint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,GACnB,MAAM,CA8BR"}
@@ -0,0 +1,32 @@
1
+ export function generateBigIntValidation(ir, inputExpr, pathExpr, issuesVar, _ctx) {
2
+ let code = `if(typeof ${inputExpr}!=="bigint"){${issuesVar}.push({code:"invalid_type",expected:"bigint",received:typeof ${inputExpr},path:${pathExpr},message:"Expected bigint"});}`;
3
+ if (ir.checks.length > 0) {
4
+ code += `else{`;
5
+ for (const check of ir.checks) {
6
+ switch (check.kind) {
7
+ case "bigint_greater_than":
8
+ if (check.inclusive) {
9
+ code += `if(${inputExpr}<${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,type:"bigint",inclusive:true,path:${pathExpr},message:"BigInt must be greater than or equal to ${check.value}"});}`;
10
+ }
11
+ else {
12
+ code += `if(${inputExpr}<=${check.value}n){${issuesVar}.push({code:"too_small",minimum:${check.value}n,type:"bigint",inclusive:false,path:${pathExpr},message:"BigInt must be greater than ${check.value}"});}`;
13
+ }
14
+ break;
15
+ case "bigint_less_than":
16
+ if (check.inclusive) {
17
+ code += `if(${inputExpr}>${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,type:"bigint",inclusive:true,path:${pathExpr},message:"BigInt must be less than or equal to ${check.value}"});}`;
18
+ }
19
+ else {
20
+ code += `if(${inputExpr}>=${check.value}n){${issuesVar}.push({code:"too_big",maximum:${check.value}n,type:"bigint",inclusive:false,path:${pathExpr},message:"BigInt must be less than ${check.value}"});}`;
21
+ }
22
+ break;
23
+ case "bigint_multiple_of":
24
+ code += `if(${inputExpr}%${check.value}n!==0n){${issuesVar}.push({code:"not_multiple_of",multipleOf:${check.value}n,path:${pathExpr},message:"BigInt must be a multiple of ${check.value}"});}`;
25
+ break;
26
+ }
27
+ }
28
+ code += `}`;
29
+ }
30
+ return `${code}\n`;
31
+ }
32
+ //# sourceMappingURL=bigint.js.map