zod-aot 0.11.0 → 0.13.0

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 (194) hide show
  1. package/README.md +61 -1
  2. package/dist/cli/commands/check.d.ts +4 -2
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +102 -113
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/index.js +43 -12
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/logger.d.ts +10 -0
  9. package/dist/cli/logger.d.ts.map +1 -1
  10. package/dist/cli/logger.js +22 -9
  11. package/dist/cli/logger.js.map +1 -1
  12. package/dist/core/codegen/context.d.ts +9 -9
  13. package/dist/core/codegen/context.d.ts.map +1 -1
  14. package/dist/core/codegen/context.js +33 -21
  15. package/dist/core/codegen/context.js.map +1 -1
  16. package/dist/core/codegen/emit.d.ts +8 -0
  17. package/dist/core/codegen/emit.d.ts.map +1 -0
  18. package/dist/core/codegen/emit.js +16 -0
  19. package/dist/core/codegen/emit.js.map +1 -0
  20. package/dist/core/codegen/fast-check/array.d.ts +4 -0
  21. package/dist/core/codegen/fast-check/array.d.ts.map +1 -0
  22. package/dist/core/codegen/fast-check/array.js +28 -0
  23. package/dist/core/codegen/fast-check/array.js.map +1 -0
  24. package/dist/core/codegen/fast-check/bigint.d.ts +3 -0
  25. package/dist/core/codegen/fast-check/bigint.d.ts.map +1 -0
  26. package/dist/core/codegen/fast-check/bigint.js +19 -0
  27. package/dist/core/codegen/fast-check/bigint.js.map +1 -0
  28. package/dist/core/codegen/fast-check/discriminated-union.d.ts +4 -0
  29. package/dist/core/codegen/fast-check/discriminated-union.d.ts.map +1 -0
  30. package/dist/core/codegen/fast-check/discriminated-union.js +13 -0
  31. package/dist/core/codegen/fast-check/discriminated-union.js.map +1 -0
  32. package/dist/core/codegen/fast-check/enum.d.ts +4 -0
  33. package/dist/core/codegen/fast-check/enum.d.ts.map +1 -0
  34. package/dist/core/codegen/fast-check/enum.js +12 -0
  35. package/dist/core/codegen/fast-check/enum.js.map +1 -0
  36. package/dist/core/codegen/fast-check/index.d.ts +16 -0
  37. package/dist/core/codegen/fast-check/index.d.ts.map +1 -0
  38. package/dist/core/codegen/fast-check/index.js +118 -0
  39. package/dist/core/codegen/fast-check/index.js.map +1 -0
  40. package/dist/core/codegen/fast-check/intersection.d.ts +4 -0
  41. package/dist/core/codegen/fast-check/intersection.d.ts.map +1 -0
  42. package/dist/core/codegen/fast-check/intersection.js +10 -0
  43. package/dist/core/codegen/fast-check/intersection.js.map +1 -0
  44. package/dist/core/codegen/fast-check/literal.d.ts +3 -0
  45. package/dist/core/codegen/fast-check/literal.d.ts.map +1 -0
  46. package/dist/core/codegen/fast-check/literal.js +8 -0
  47. package/dist/core/codegen/fast-check/literal.js.map +1 -0
  48. package/dist/core/codegen/fast-check/nullable.d.ts +4 -0
  49. package/dist/core/codegen/fast-check/nullable.d.ts.map +1 -0
  50. package/dist/core/codegen/fast-check/nullable.js +7 -0
  51. package/dist/core/codegen/fast-check/nullable.js.map +1 -0
  52. package/dist/core/codegen/fast-check/number.d.ts +3 -0
  53. package/dist/core/codegen/fast-check/number.d.ts.map +1 -0
  54. package/dist/core/codegen/fast-check/number.js +51 -0
  55. package/dist/core/codegen/fast-check/number.js.map +1 -0
  56. package/dist/core/codegen/fast-check/object.d.ts +4 -0
  57. package/dist/core/codegen/fast-check/object.d.ts.map +1 -0
  58. package/dist/core/codegen/fast-check/object.js +13 -0
  59. package/dist/core/codegen/fast-check/object.js.map +1 -0
  60. package/dist/core/codegen/fast-check/optional.d.ts +4 -0
  61. package/dist/core/codegen/fast-check/optional.d.ts.map +1 -0
  62. package/dist/core/codegen/fast-check/optional.js +7 -0
  63. package/dist/core/codegen/fast-check/optional.js.map +1 -0
  64. package/dist/core/codegen/fast-check/pipe.d.ts +4 -0
  65. package/dist/core/codegen/fast-check/pipe.d.ts.map +1 -0
  66. package/dist/core/codegen/fast-check/pipe.js +14 -0
  67. package/dist/core/codegen/fast-check/pipe.js.map +1 -0
  68. package/dist/core/codegen/fast-check/readonly.d.ts +4 -0
  69. package/dist/core/codegen/fast-check/readonly.d.ts.map +1 -0
  70. package/dist/core/codegen/fast-check/readonly.js +4 -0
  71. package/dist/core/codegen/fast-check/readonly.js.map +1 -0
  72. package/dist/core/codegen/fast-check/record.d.ts +4 -0
  73. package/dist/core/codegen/fast-check/record.d.ts.map +1 -0
  74. package/dist/core/codegen/fast-check/record.js +18 -0
  75. package/dist/core/codegen/fast-check/record.js.map +1 -0
  76. package/dist/core/codegen/fast-check/string.d.ts +4 -0
  77. package/dist/core/codegen/fast-check/string.d.ts.map +1 -0
  78. package/dist/core/codegen/fast-check/string.js +62 -0
  79. package/dist/core/codegen/fast-check/string.js.map +1 -0
  80. package/dist/core/codegen/fast-check/tuple.d.ts +4 -0
  81. package/dist/core/codegen/fast-check/tuple.d.ts.map +1 -0
  82. package/dist/core/codegen/fast-check/tuple.js +32 -0
  83. package/dist/core/codegen/fast-check/tuple.js.map +1 -0
  84. package/dist/core/codegen/fast-check/union.d.ts +4 -0
  85. package/dist/core/codegen/fast-check/union.d.ts.map +1 -0
  86. package/dist/core/codegen/fast-check/union.js +12 -0
  87. package/dist/core/codegen/fast-check/union.js.map +1 -0
  88. package/dist/core/codegen/generators/array.js +1 -1
  89. package/dist/core/codegen/generators/array.js.map +1 -1
  90. package/dist/core/codegen/generators/bigint.d.ts.map +1 -1
  91. package/dist/core/codegen/generators/bigint.js +3 -2
  92. package/dist/core/codegen/generators/bigint.js.map +1 -1
  93. package/dist/core/codegen/generators/boolean.js +1 -1
  94. package/dist/core/codegen/generators/boolean.js.map +1 -1
  95. package/dist/core/codegen/generators/date.js +1 -1
  96. package/dist/core/codegen/generators/date.js.map +1 -1
  97. package/dist/core/codegen/generators/default.js +1 -1
  98. package/dist/core/codegen/generators/default.js.map +1 -1
  99. package/dist/core/codegen/generators/discriminated-union.d.ts.map +1 -1
  100. package/dist/core/codegen/generators/discriminated-union.js +2 -1
  101. package/dist/core/codegen/generators/discriminated-union.js.map +1 -1
  102. package/dist/core/codegen/generators/enum.d.ts.map +1 -1
  103. package/dist/core/codegen/generators/enum.js +11 -1
  104. package/dist/core/codegen/generators/enum.js.map +1 -1
  105. package/dist/core/codegen/generators/fallback.js +1 -1
  106. package/dist/core/codegen/generators/fallback.js.map +1 -1
  107. package/dist/core/codegen/generators/index.d.ts +3 -33
  108. package/dist/core/codegen/generators/index.d.ts.map +1 -1
  109. package/dist/core/codegen/generators/index.js +103 -33
  110. package/dist/core/codegen/generators/index.js.map +1 -1
  111. package/dist/core/codegen/generators/literal.d.ts.map +1 -1
  112. package/dist/core/codegen/generators/literal.js +2 -1
  113. package/dist/core/codegen/generators/literal.js.map +1 -1
  114. package/dist/core/codegen/generators/map.js +1 -1
  115. package/dist/core/codegen/generators/map.js.map +1 -1
  116. package/dist/core/codegen/generators/nan.js +1 -1
  117. package/dist/core/codegen/generators/nan.js.map +1 -1
  118. package/dist/core/codegen/generators/never.js +1 -1
  119. package/dist/core/codegen/generators/never.js.map +1 -1
  120. package/dist/core/codegen/generators/null.js +1 -1
  121. package/dist/core/codegen/generators/null.js.map +1 -1
  122. package/dist/core/codegen/generators/nullable.js +1 -1
  123. package/dist/core/codegen/generators/nullable.js.map +1 -1
  124. package/dist/core/codegen/generators/number.d.ts.map +1 -1
  125. package/dist/core/codegen/generators/number.js +3 -2
  126. package/dist/core/codegen/generators/number.js.map +1 -1
  127. package/dist/core/codegen/generators/object.d.ts.map +1 -1
  128. package/dist/core/codegen/generators/object.js +2 -1
  129. package/dist/core/codegen/generators/object.js.map +1 -1
  130. package/dist/core/codegen/generators/optional.js +1 -1
  131. package/dist/core/codegen/generators/optional.js.map +1 -1
  132. package/dist/core/codegen/generators/record.js +1 -1
  133. package/dist/core/codegen/generators/record.js.map +1 -1
  134. package/dist/core/codegen/generators/recursive-ref.js +1 -1
  135. package/dist/core/codegen/generators/recursive-ref.js.map +1 -1
  136. package/dist/core/codegen/generators/set.js +1 -1
  137. package/dist/core/codegen/generators/set.js.map +1 -1
  138. package/dist/core/codegen/generators/string.d.ts.map +1 -1
  139. package/dist/core/codegen/generators/string.js +3 -2
  140. package/dist/core/codegen/generators/string.js.map +1 -1
  141. package/dist/core/codegen/generators/symbol.js +1 -1
  142. package/dist/core/codegen/generators/symbol.js.map +1 -1
  143. package/dist/core/codegen/generators/template-literal.d.ts.map +1 -1
  144. package/dist/core/codegen/generators/template-literal.js +2 -1
  145. package/dist/core/codegen/generators/template-literal.js.map +1 -1
  146. package/dist/core/codegen/generators/tuple.js +1 -1
  147. package/dist/core/codegen/generators/tuple.js.map +1 -1
  148. package/dist/core/codegen/generators/undefined.js +1 -1
  149. package/dist/core/codegen/generators/undefined.js.map +1 -1
  150. package/dist/core/codegen/generators/union.js +1 -1
  151. package/dist/core/codegen/generators/union.js.map +1 -1
  152. package/dist/core/codegen/generators/void.js +1 -1
  153. package/dist/core/codegen/generators/void.js.map +1 -1
  154. package/dist/core/codegen/index.d.ts +1 -0
  155. package/dist/core/codegen/index.d.ts.map +1 -1
  156. package/dist/core/codegen/index.js +25 -86
  157. package/dist/core/codegen/index.js.map +1 -1
  158. package/dist/core/compile.d.ts.map +1 -1
  159. package/dist/core/compile.js +12 -1
  160. package/dist/core/compile.js.map +1 -1
  161. package/dist/core/diagnostic.d.ts +46 -0
  162. package/dist/core/diagnostic.d.ts.map +1 -0
  163. package/dist/core/diagnostic.js +168 -0
  164. package/dist/core/diagnostic.js.map +1 -0
  165. package/dist/core/iife.d.ts.map +1 -1
  166. package/dist/core/iife.js +8 -1
  167. package/dist/core/iife.js.map +1 -1
  168. package/dist/core/pipeline.d.ts +10 -4
  169. package/dist/core/pipeline.d.ts.map +1 -1
  170. package/dist/core/pipeline.js +21 -9
  171. package/dist/core/pipeline.js.map +1 -1
  172. package/dist/core/types.d.ts +4 -0
  173. package/dist/core/types.d.ts.map +1 -1
  174. package/dist/discovery.d.ts +1 -4
  175. package/dist/discovery.d.ts.map +1 -1
  176. package/dist/discovery.js.map +1 -1
  177. package/dist/unplugin/index.d.ts.map +1 -1
  178. package/dist/unplugin/index.js +40 -17
  179. package/dist/unplugin/index.js.map +1 -1
  180. package/dist/unplugin/transform.d.ts +15 -4
  181. package/dist/unplugin/transform.d.ts.map +1 -1
  182. package/dist/unplugin/transform.js +35 -1
  183. package/dist/unplugin/transform.js.map +1 -1
  184. package/dist/unplugin/types.d.ts +6 -0
  185. package/dist/unplugin/types.d.ts.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/cli/fallback.d.ts +0 -7
  188. package/dist/cli/fallback.d.ts.map +0 -1
  189. package/dist/cli/fallback.js +0 -52
  190. package/dist/cli/fallback.js.map +0 -1
  191. package/dist/core/runtime.d.ts +0 -10
  192. package/dist/core/runtime.d.ts.map +0 -1
  193. package/dist/core/runtime.js +0 -14
  194. package/dist/core/runtime.js.map +0 -1
package/README.md CHANGED
@@ -135,8 +135,14 @@ npx zod-aot generate src/ -o src/compiled/
135
135
  # Watch mode — regenerate on file changes
136
136
  npx zod-aot generate src/ --watch
137
137
 
138
- # Check if schemas are compilable (without generating)
138
+ # Diagnose schemas tree view, coverage, Fast Path, hints
139
139
  npx zod-aot check src/schemas.ts
140
+
141
+ # JSON output for CI integration
142
+ npx zod-aot check src/schemas.ts --json
143
+
144
+ # Fail CI if coverage < 80%
145
+ npx zod-aot check src/schemas.ts --json --fail-under 80
140
146
  ```
141
147
 
142
148
  ## Build Plugin (unplugin)
@@ -159,6 +165,7 @@ module.exports = { plugins: [zodAot()] };
159
165
  zodAot({
160
166
  include: ["src/schemas"], // only process files matching these substrings
161
167
  exclude: ["test", "mock"], // skip files matching these substrings
168
+ verbose: true, // log per-schema compilation status and build summary
162
169
  })
163
170
  ```
164
171
 
@@ -199,6 +206,59 @@ app.post("/users", zValidator("json", validateUser), (c) => {
199
206
 
200
207
  `@hono/zod-validator` internally calls `schema.safeParse()` — with zod-aot, this call is replaced by the generated optimized validator at build time, giving you faster request validation with zero code changes.
201
208
 
209
+ ## Schema Diagnostics (`check`)
210
+
211
+ The `check` command analyzes schemas for compilation coverage, Fast Path eligibility, and actionable hints — without generating code.
212
+
213
+ ```bash
214
+ npx zod-aot check src/schemas.ts
215
+ ```
216
+
217
+ **Output includes:**
218
+
219
+ - **Tree view** — hierarchical visualization of schema structure with compile/fallback status per node
220
+ - **Coverage** — percentage of schema nodes that are compiled (e.g. `85% compiled (17/20 nodes)`)
221
+ - **Fast Path eligibility** — whether the schema qualifies for two-phase validation, with the specific blocker if ineligible
222
+ - **Hints** — actionable suggestions (e.g. "Replace `.refine()` with built-in checks")
223
+
224
+ ### Options
225
+
226
+ | Flag | Description |
227
+ |---|---|
228
+ | `--json` | Output structured JSON (for CI/CD integration) |
229
+ | `--fail-under <pct>` | Exit with code 1 if any schema's coverage is below the threshold |
230
+ | `--no-color` | Disable colored output |
231
+
232
+ ### JSON output
233
+
234
+ ```bash
235
+ npx zod-aot check src/schemas.ts --json
236
+ ```
237
+
238
+ ```json
239
+ [
240
+ {
241
+ "file": "src/schemas.ts",
242
+ "schemas": [
243
+ {
244
+ "exportName": "validateUser",
245
+ "coverage": { "total": 5, "compilable": 5, "percent": 100 },
246
+ "fastPath": { "eligible": true },
247
+ "fallbacks": []
248
+ }
249
+ ]
250
+ }
251
+ ]
252
+ ```
253
+
254
+ ### CI gate
255
+
256
+ ```bash
257
+ npx zod-aot check src/schemas.ts --json --fail-under 80
258
+ ```
259
+
260
+ Exits with code 1 if any schema's compilation coverage drops below 80%.
261
+
202
262
  ## How It Works
203
263
 
204
264
  ```
@@ -1,6 +1,8 @@
1
- interface CheckOptions {
1
+ export interface CheckOptions {
2
2
  inputs: string[];
3
+ json: boolean;
4
+ failUnder: number | undefined;
5
+ noColor: boolean;
3
6
  }
4
7
  export declare function runCheck(options: CheckOptions): Promise<void>;
5
- export {};
6
8
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAmIA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDnE"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAiFA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHnE"}
@@ -1,113 +1,59 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import process from "node:process";
4
+ import { diagnoseSchema } from "#src/core/diagnostic.js";
4
5
  import { extractSchema } from "#src/core/extract/index.js";
5
6
  import { discoverSchemas } from "#src/discovery.js";
6
7
  import { getErrorMessage } from "../errors.js";
7
- import { logger } from "../logger.js";
8
- function countNodes(ir, currentPath = "") {
9
- if (ir.type === "fallback") {
10
- return {
11
- total: 1,
12
- compilable: 0,
13
- fallbacks: [{ reason: ir.reason, path: currentPath || "." }],
14
- };
8
+ import { createColors, logger } from "../logger.js";
9
+ // ─── Tree Rendering ─────────────────────────────────────────────────────────
10
+ function renderTree(node, c, prefix = "", isLast = true) {
11
+ const lines = [];
12
+ const connector = prefix === "" ? "" : isLast ? "└─ " : "├─ ";
13
+ const childPrefix = prefix === "" ? "" : prefix + (isLast ? " " : "│ ");
14
+ const statusIcon = node.status === "compiled" ? `${c.green}✓${c.reset}` : `${c.red}✗${c.reset}`;
15
+ const typeLabel = `${c.bold}${node.type}${c.reset}`;
16
+ const pathLabel = node.path && node.path !== "(root)" ? ` ${c.dim}${node.path}${c.reset}` : "";
17
+ const reasonLabel = node.status === "fallback" && node.reason ? ` ${c.yellow}(${node.reason})${c.reset}` : "";
18
+ lines.push(`${prefix}${connector}${statusIcon} ${typeLabel}${pathLabel}${reasonLabel}`);
19
+ if (node.status === "fallback" && node.hint) {
20
+ const hintPrefix = `${childPrefix} `;
21
+ lines.push(`${hintPrefix}${c.dim}hint: ${node.hint}${c.reset}`);
15
22
  }
16
- if (ir.type === "object") {
17
- let total = 0;
18
- let compilable = 0;
19
- const fallbacks = [];
20
- for (const [key, prop] of Object.entries(ir.properties)) {
21
- const r = countNodes(prop, `${currentPath}.${key}`);
22
- total += r.total;
23
- compilable += r.compilable;
24
- fallbacks.push(...r.fallbacks);
25
- }
26
- return { total, compilable, fallbacks };
27
- }
28
- if (ir.type === "array") {
29
- return countNodes(ir.element, `${currentPath}[]`);
30
- }
31
- if (ir.type === "optional" || ir.type === "nullable" || ir.type === "readonly") {
32
- return countNodes(ir.inner, currentPath);
33
- }
34
- if (ir.type === "default" || ir.type === "catch") {
35
- return countNodes(ir.inner, currentPath);
36
- }
37
- if (ir.type === "union" || ir.type === "discriminatedUnion") {
38
- let total = 0;
39
- let compilable = 0;
40
- const fallbacks = [];
41
- for (const [i, opt] of ir.options.entries()) {
42
- const r = countNodes(opt, `${currentPath}[${i}]`);
43
- total += r.total;
44
- compilable += r.compilable;
45
- fallbacks.push(...r.fallbacks);
46
- }
47
- return { total, compilable, fallbacks };
48
- }
49
- if (ir.type === "tuple") {
50
- let total = 0;
51
- let compilable = 0;
52
- const fallbacks = [];
53
- for (const [i, item] of ir.items.entries()) {
54
- const r = countNodes(item, `${currentPath}[${i}]`);
55
- total += r.total;
56
- compilable += r.compilable;
57
- fallbacks.push(...r.fallbacks);
58
- }
59
- if (ir.rest) {
60
- const r = countNodes(ir.rest, `${currentPath}[...rest]`);
61
- total += r.total;
62
- compilable += r.compilable;
63
- fallbacks.push(...r.fallbacks);
64
- }
65
- return { total, compilable, fallbacks };
66
- }
67
- if (ir.type === "record") {
68
- const kr = countNodes(ir.keyType, `${currentPath}[key]`);
69
- const vr = countNodes(ir.valueType, `${currentPath}[value]`);
70
- return {
71
- total: kr.total + vr.total,
72
- compilable: kr.compilable + vr.compilable,
73
- fallbacks: [...kr.fallbacks, ...vr.fallbacks],
74
- };
75
- }
76
- if (ir.type === "intersection") {
77
- const lr = countNodes(ir.left, `${currentPath}[left]`);
78
- const rr = countNodes(ir.right, `${currentPath}[right]`);
79
- return {
80
- total: lr.total + rr.total,
81
- compilable: lr.compilable + rr.compilable,
82
- fallbacks: [...lr.fallbacks, ...rr.fallbacks],
83
- };
84
- }
85
- if (ir.type === "set") {
86
- return countNodes(ir.valueType, `${currentPath}[element]`);
87
- }
88
- if (ir.type === "map") {
89
- const kr = countNodes(ir.keyType, `${currentPath}[key]`);
90
- const vr = countNodes(ir.valueType, `${currentPath}[value]`);
91
- return {
92
- total: kr.total + vr.total,
93
- compilable: kr.compilable + vr.compilable,
94
- fallbacks: [...kr.fallbacks, ...vr.fallbacks],
95
- };
23
+ for (const [i, child] of node.children.entries()) {
24
+ const last = i === node.children.length - 1;
25
+ lines.push(...renderTree(child, c, childPrefix, last));
96
26
  }
97
- if (ir.type === "pipe") {
98
- const ir2 = countNodes(ir.in, `${currentPath}[in]`);
99
- const or2 = countNodes(ir.out, `${currentPath}[out]`);
100
- return {
101
- total: ir2.total + or2.total,
102
- compilable: ir2.compilable + or2.compilable,
103
- fallbacks: [...ir2.fallbacks, ...or2.fallbacks],
104
- };
105
- }
106
- // Leaf node (string, number, boolean, bigint, date, literal, enum,
107
- // symbol, null, undefined, void, nan, never, any, unknown, recursiveRef, templateLiteral)
108
- return { total: 1, compilable: 1, fallbacks: [] };
27
+ return lines;
28
+ }
29
+ function buildJsonReport(filePath, results) {
30
+ return {
31
+ file: filePath,
32
+ schemas: results.map(({ exportName, diagnostic }) => {
33
+ const report = {
34
+ exportName,
35
+ coverage: {
36
+ total: diagnostic.total,
37
+ compilable: diagnostic.compilable,
38
+ percent: diagnostic.coveragePct,
39
+ },
40
+ fastPath: { eligible: diagnostic.fastPathEligible },
41
+ fallbacks: diagnostic.fallbacks,
42
+ };
43
+ if (diagnostic.fastPathBlocker) {
44
+ report.fastPath.blocker = diagnostic.fastPathBlocker;
45
+ }
46
+ return report;
47
+ }),
48
+ };
109
49
  }
110
50
  export async function runCheck(options) {
51
+ // biome-ignore lint/suspicious/noConsole: CLI output
52
+ const out = console.log;
53
+ // biome-ignore lint/suspicious/noConsole: CLI output
54
+ const err = console.error;
55
+ const colorEnabled = !options.noColor && process.stdout.isTTY === true;
56
+ const c = createColors(colorEnabled);
111
57
  const files = [];
112
58
  for (const input of options.inputs) {
113
59
  const absPath = path.resolve(input);
@@ -122,36 +68,79 @@ export async function runCheck(options) {
122
68
  }
123
69
  files.push(absPath);
124
70
  }
125
- let hasCompilable = false;
71
+ const allJsonReports = [];
72
+ let minCoverage = 100;
73
+ let schemasProcessed = 0;
126
74
  for (const filePath of files) {
127
75
  const relPath = path.relative(process.cwd(), filePath);
128
76
  let schemas;
129
77
  try {
130
78
  schemas = await discoverSchemas(filePath);
131
79
  }
132
- catch (err) {
133
- logger.error(`Failed to load ${relPath}: ${getErrorMessage(err)}`);
80
+ catch (e) {
81
+ logger.error(`Failed to load ${relPath}: ${getErrorMessage(e)}`);
134
82
  process.exit(1);
135
83
  }
136
84
  if (schemas.length === 0) {
137
85
  logger.warn(`${relPath}: no compile() calls found`);
138
86
  continue;
139
87
  }
88
+ const results = [];
140
89
  for (const s of schemas) {
141
- const ir = extractSchema(s.schema);
142
- const coverage = countNodes(ir);
143
- const pct = coverage.total > 0 ? Math.round((coverage.compilable / coverage.total) * 100) : 100;
144
- if (coverage.fallbacks.length > 0) {
145
- const reasons = coverage.fallbacks.map((f) => `${f.reason} at ${f.path}`).join(", ");
146
- logger.warn(`${s.exportName} ${pct}% compiled (fallback: ${reasons})`);
90
+ let ir;
91
+ try {
92
+ ir = extractSchema(s.schema);
93
+ }
94
+ catch (e) {
95
+ err(`${c.red}error${c.reset} Failed to extract "${s.exportName}" in ${relPath}: ${getErrorMessage(e)}`);
96
+ continue;
147
97
  }
148
- else {
149
- logger.success(`${s.exportName} ${pct}% compiled`);
150
- hasCompilable = true;
98
+ const diagnostic = diagnoseSchema(ir);
99
+ results.push({ exportName: s.exportName, diagnostic });
100
+ schemasProcessed++;
101
+ if (diagnostic.coveragePct < minCoverage) {
102
+ minCoverage = diagnostic.coveragePct;
103
+ }
104
+ }
105
+ if (options.json) {
106
+ allJsonReports.push(buildJsonReport(relPath, results));
107
+ }
108
+ else {
109
+ out(`\n${c.bold}${relPath}${c.reset}`);
110
+ for (const { exportName, diagnostic } of results) {
111
+ const pctColor = diagnostic.coveragePct === 100 ? c.green : c.yellow;
112
+ const fpLabel = diagnostic.fastPathEligible
113
+ ? `${c.green}Fast Path: eligible${c.reset}`
114
+ : `${c.yellow}Fast Path: ineligible${c.reset}${c.dim} (${diagnostic.fastPathBlocker})${c.reset}`;
115
+ out(`\n ${c.cyan}${exportName}${c.reset} — ${pctColor}${diagnostic.coveragePct}%${c.reset} compiled (${diagnostic.compilable}/${diagnostic.total} nodes) | ${fpLabel}`);
116
+ const treeLines = renderTree(diagnostic.root, c, " ");
117
+ for (const line of treeLines) {
118
+ out(line);
119
+ }
120
+ if (diagnostic.fallbacks.length > 0) {
121
+ out(`\n ${c.yellow}Fallbacks:${c.reset}`);
122
+ for (const fb of diagnostic.fallbacks) {
123
+ out(` ${c.red}✗${c.reset} ${fb.path} — ${fb.reason}`);
124
+ out(` ${c.dim}${fb.hint}${c.reset}`);
125
+ }
126
+ }
151
127
  }
152
128
  }
153
129
  }
154
- if (!hasCompilable) {
130
+ if (options.json) {
131
+ out(JSON.stringify(allJsonReports, null, 2));
132
+ }
133
+ if (options.failUnder !== undefined) {
134
+ if (schemasProcessed === 0) {
135
+ logger.error("No schemas were analyzed — cannot satisfy --fail-under");
136
+ process.exit(1);
137
+ }
138
+ if (minCoverage < options.failUnder) {
139
+ logger.error(`Coverage ${minCoverage}% is below threshold ${options.failUnder}%`);
140
+ process.exit(1);
141
+ }
142
+ }
143
+ else if (schemasProcessed === 0) {
155
144
  process.exit(1);
156
145
  }
157
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -12,24 +12,28 @@ zod-aot v${VERSION} — Compile Zod schemas into zero-overhead validation functi
12
12
 
13
13
  Usage:
14
14
  zod-aot generate <files...> [-o <output>] [-w]
15
- zod-aot check <files...>
15
+ zod-aot check <files...> [--json] [--fail-under <pct>] [--no-color]
16
16
 
17
17
  Commands:
18
18
  generate Generate optimized validation code from compile() calls
19
- check Check if schemas are compilable (dry-run)
19
+ check Check schemas with tree view, coverage, Fast Path status, and hints
20
20
 
21
21
  Options:
22
- -o, --output <path> Output file or directory
23
- -w, --watch Watch for changes and regenerate
24
- --no-zod-compat Minimal output without Zod compatibility (smaller bundle)
25
- -h, --help Show this help message
26
- -v, --version Show version number
22
+ -o, --output <path> Output file or directory
23
+ -w, --watch Watch for changes and regenerate
24
+ --no-zod-compat Minimal output without Zod compatibility (smaller bundle)
25
+ --json Output diagnosis as JSON (check only)
26
+ --fail-under <pct> Exit with code 1 if any schema's coverage < pct (check only)
27
+ --no-color Disable colored output (check only)
28
+ -h, --help Show this help message
29
+ -v, --version Show version number
27
30
 
28
31
  Examples:
29
32
  zod-aot generate src/schemas.ts
30
33
  zod-aot generate src/schemas.ts -o src/schemas.compiled.ts
31
34
  zod-aot generate src/ --watch
32
35
  zod-aot check src/schemas.ts
36
+ zod-aot check src/schemas.ts --json --fail-under 80
33
37
  `.trim());
34
38
  }
35
39
  function parseArgs(argv) {
@@ -87,18 +91,45 @@ function parseArgs(argv) {
87
91
  };
88
92
  }
89
93
  if (command === "check") {
90
- const inputs = rest.filter((arg) => {
91
- if (arg.startsWith("-")) {
94
+ const inputs = [];
95
+ let json = false;
96
+ let failUnder;
97
+ let noColor = false;
98
+ for (let i = 0; i < rest.length; i++) {
99
+ const arg = rest[i];
100
+ if (arg === "--json") {
101
+ json = true;
102
+ }
103
+ else if (arg === "--fail-under") {
104
+ i++;
105
+ const val = rest[i];
106
+ if (!val) {
107
+ logger.error("Missing value for --fail-under");
108
+ process.exit(1);
109
+ }
110
+ const num = Number(val);
111
+ if (Number.isNaN(num) || num < 0 || num > 100) {
112
+ logger.error("--fail-under must be a number between 0 and 100");
113
+ process.exit(1);
114
+ }
115
+ failUnder = num;
116
+ }
117
+ else if (arg === "--no-color") {
118
+ noColor = true;
119
+ }
120
+ else if (arg.startsWith("-")) {
92
121
  logger.error(`Unknown option: ${arg}`);
93
122
  process.exit(1);
94
123
  }
95
- return true;
96
- });
124
+ else {
125
+ inputs.push(arg);
126
+ }
127
+ }
97
128
  if (inputs.length === 0) {
98
129
  logger.error("No input files specified. Run 'zod-aot --help' for usage.");
99
130
  process.exit(1);
100
131
  }
101
- return { kind: "check", options: { inputs } };
132
+ return { kind: "check", options: { inputs, json, failUnder, noColor } };
102
133
  }
103
134
  logger.error(`Unknown command: ${command}. Run 'zod-aot --help' for usage.`);
104
135
  process.exit(1);
@@ -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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"}
@@ -1,3 +1,13 @@
1
+ export interface Colors {
2
+ reset: string;
3
+ red: string;
4
+ green: string;
5
+ yellow: string;
6
+ cyan: string;
7
+ dim: string;
8
+ bold: string;
9
+ }
10
+ export declare function createColors(enabled: boolean): Colors;
1
11
  export declare const logger: {
2
12
  info(msg: string): void;
3
13
  success(msg: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,MAAM;cACP,MAAM,GAAG,IAAI;iBAGV,MAAM,GAAG,IAAI;cAGhB,MAAM,GAAG,IAAI;eAGZ,MAAM,GAAG,IAAI;aAGf,MAAM,GAAG,IAAI;CAGvB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAWrD;AASD,eAAO,MAAM,MAAM;cACP,MAAM,GAAG,IAAI;iBAGV,MAAM,GAAG,IAAI;cAGhB,MAAM,GAAG,IAAI;eAGZ,MAAM,GAAG,IAAI;aAGf,MAAM,GAAG,IAAI;CAGvB,CAAC"}
@@ -1,14 +1,27 @@
1
1
  import process from "node:process";
2
- const isTTY = process.stdout.isTTY === true;
3
- const colors = {
4
- reset: isTTY ? "\x1b[0m" : "",
5
- red: isTTY ? "\x1b[31m" : "",
6
- green: isTTY ? "\x1b[32m" : "",
7
- yellow: isTTY ? "\x1b[33m" : "",
8
- cyan: isTTY ? "\x1b[36m" : "",
9
- dim: isTTY ? "\x1b[2m" : "",
10
- bold: isTTY ? "\x1b[1m" : "",
2
+ const NO_COLORS = {
3
+ reset: "",
4
+ red: "",
5
+ green: "",
6
+ yellow: "",
7
+ cyan: "",
8
+ dim: "",
9
+ bold: "",
11
10
  };
11
+ export function createColors(enabled) {
12
+ if (!enabled)
13
+ return NO_COLORS;
14
+ return {
15
+ reset: "\x1b[0m",
16
+ red: "\x1b[31m",
17
+ green: "\x1b[32m",
18
+ yellow: "\x1b[33m",
19
+ cyan: "\x1b[36m",
20
+ dim: "\x1b[2m",
21
+ bold: "\x1b[1m",
22
+ };
23
+ }
24
+ const colors = createColors(process.stdout.isTTY === true);
12
25
  // biome-ignore lint/suspicious/noConsole: CLI output
13
26
  const log = console.log;
14
27
  // biome-ignore lint/suspicious/noConsole: CLI output
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAE5C,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IAC7B,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IAC5B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IAC9B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IAC/B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;IAC7B,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;CAC7B,CAAC;AAEF,qDAAqD;AACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,qDAAqD;AACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,GAAW;QACd,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAW;QACjB,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,GAAW;QACd,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,GAAW;QACf,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,GAAG,CAAC,GAAW;QACb,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAYnC,MAAM,SAAS,GAAW;IACxB,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAE3D,qDAAqD;AACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,qDAAqD;AACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,GAAW;QACd,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAW;QACjB,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,GAAW;QACd,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,GAAW;QACf,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,GAAG,CAAC,GAAW;QACb,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
@@ -1,9 +1,11 @@
1
- import type { SchemaIR } from "../types.js";
1
+ import type { BigIntCheckIR, CheckIR, DateCheckIR, SchemaIR } from "../types.js";
2
2
  export interface CodeGenResult {
3
3
  code: string;
4
4
  functionDef: string;
5
5
  /** Number of fallback schemas referenced by __fb[N] in the generated code. 0 = no fallbacks. */
6
6
  fallbackCount: number;
7
+ /** Auxiliary function definitions (e.g. __fastCheck_* for recursiveRef). Emitted before the main function. */
8
+ auxiliaryFunctions?: string[];
7
9
  }
8
10
  export interface CodeGenContext {
9
11
  preamble: string[];
@@ -11,18 +13,16 @@ export interface CodeGenContext {
11
13
  fnName: string;
12
14
  }
13
15
  export type GenerateValidationFn = (ir: SchemaIR, inputExpr: string, pathExpr: string, issuesVar: string, ctx: CodeGenContext) => string;
16
+ export type GenerateFastCheckFn = (ir: SchemaIR, inputExpr: string, ctx: CodeGenContext) => string | null;
14
17
  export declare const EMAIL_REGEX_SOURCE: string;
15
18
  /** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
16
19
  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)$";
17
- /**
18
- * Tagged template literal that strips newlines and leading whitespace.
19
- * Allows writing generated code with readable indentation while producing minified output.
20
- */
21
- export declare function emit(strings: TemplateStringsArray, ...values: (string | number | bigint | boolean)[]): string;
20
+ /** Enum values at or below this count use inline === checks instead of Set.has(). */
21
+ export declare const ENUM_INLINE_THRESHOLD = 3;
22
22
  export declare function escapeString(s: string): string;
23
23
  /**
24
- * Extract the function name from a generated function definition string.
25
- * e.g. "function safeParse_User(input){..." -> "safeParse_User"
24
+ * Sort comparator for CheckIR: cheapest/most-discriminating checks first.
25
+ * Used as `[...ir.checks].sort(checkPriority)`.
26
26
  */
27
- export declare function extractFunctionName(functionDef: string): string;
27
+ export declare function checkPriority(a: CheckIR | BigIntCheckIR | DateCheckIR, b: CheckIR | BigIntCheckIR | DateCheckIR): number;
28
28
  //# sourceMappingURL=context.d.ts.map
@@ -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,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;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;;;GAGG;AACH,wBAAgB,IAAI,CAClB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAChD,MAAM,CAOR;AAED,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,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC;IACtB,8GAA8G;IAC9G,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;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;AAEZ,MAAM,MAAM,mBAAmB,GAAG,CAChC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,KAChB,MAAM,GAAG,IAAI,CAAC;AAGnB,eAAO,MAAM,kBAAkB,QAA+G,CAAC;AAE/I,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,2KAC4I,CAAC;AAE3K,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AA8BvC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,EACxC,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,GACvC,MAAM,CAER"}