zod-aot 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tetsuyawakita
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,15 @@
1
+ import type { SchemaIR } from "../types.js";
2
+ export interface CodeGenResult {
3
+ code: string;
4
+ functionName: string;
5
+ }
6
+ /**
7
+ * Generate optimized validation code from SchemaIR.
8
+ *
9
+ * - `code`: preamble declarations (Sets, RegExps, etc.) — deterministic for the same IR
10
+ * - `functionName`: full function expression string referencing preamble vars via closure
11
+ *
12
+ * Usage: `new Function(code + "\nreturn " + functionName + ";")()`
13
+ */
14
+ export declare function generateValidator(ir: SchemaIR, name: string): CodeGenResult;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.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;CACtB;AA8TD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAmB3E"}
@@ -0,0 +1,254 @@
1
+ // Zod v4's email regex pattern (as a source string for new RegExp())
2
+ 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
+ function escapeString(s) {
4
+ return JSON.stringify(s);
5
+ }
6
+ function generateValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
7
+ switch (ir.type) {
8
+ case "string":
9
+ return generateStringValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
10
+ case "number":
11
+ return generateNumberValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
12
+ case "boolean":
13
+ return generateBooleanValidation(inputExpr, pathExpr, issuesVar);
14
+ case "null":
15
+ return generateNullValidation(inputExpr, pathExpr, issuesVar);
16
+ case "undefined":
17
+ return generateUndefinedValidation(inputExpr, pathExpr, issuesVar);
18
+ case "literal":
19
+ return generateLiteralValidation(ir, inputExpr, pathExpr, issuesVar);
20
+ case "enum":
21
+ return generateEnumValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
22
+ case "object":
23
+ return generateObjectValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
24
+ case "array":
25
+ return generateArrayValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
26
+ case "union":
27
+ return generateUnionValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
28
+ case "optional":
29
+ return generateOptionalValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
30
+ case "nullable":
31
+ return generateNullableValidation(ir, inputExpr, pathExpr, issuesVar, ctx);
32
+ case "fallback":
33
+ return `${issuesVar}.push({code:"custom",path:${pathExpr},message:"Fallback schema: ${ir.reason}"});\n`;
34
+ }
35
+ }
36
+ function generateStringValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
37
+ let code = `if(typeof ${inputExpr}!=="string"){${issuesVar}.push({code:"invalid_type",expected:"string",received:typeof ${inputExpr},path:${pathExpr},message:"Expected string"});}`;
38
+ if (ir.checks.length > 0) {
39
+ code += `else{`;
40
+ for (const check of ir.checks) {
41
+ switch (check.kind) {
42
+ case "min_length":
43
+ code += `if(${inputExpr}.length<${check.minimum}){${issuesVar}.push({code:"too_small",minimum:${check.minimum},type:"string",inclusive:true,path:${pathExpr},message:"String must contain at least ${check.minimum} character(s)"});}`;
44
+ break;
45
+ case "max_length":
46
+ code += `if(${inputExpr}.length>${check.maximum}){${issuesVar}.push({code:"too_big",maximum:${check.maximum},type:"string",inclusive:true,path:${pathExpr},message:"String must contain at most ${check.maximum} character(s)"});}`;
47
+ break;
48
+ case "length_equals":
49
+ code += `if(${inputExpr}.length!==${check.length}){${issuesVar}.push({code:"invalid_length",exact:${check.length},type:"string",path:${pathExpr},message:"String must be exactly ${check.length} character(s)"});}`;
50
+ break;
51
+ case "string_format": {
52
+ let regexVar;
53
+ if (check.format === "email") {
54
+ regexVar = `__re_email_${ctx.counter++}`;
55
+ ctx.preamble.push(`var ${regexVar}=new RegExp(${escapeString(EMAIL_REGEX_SOURCE)});`);
56
+ }
57
+ else if (check.format === "regex" && check.pattern) {
58
+ regexVar = `__re_${ctx.counter++}`;
59
+ ctx.preamble.push(`var ${regexVar}=new RegExp(${escapeString(check.pattern)});`);
60
+ }
61
+ else if (check.format === "url") {
62
+ regexVar = `__re_url_${ctx.counter++}`;
63
+ ctx.preamble.push(`var ${regexVar};try{${regexVar}=true;}catch(e){${regexVar}=false;}`);
64
+ code += `if(!(function(s){try{new URL(s);return true;}catch(e){return false;}})(${inputExpr})){${issuesVar}.push({code:"invalid_string",validation:"url",path:${pathExpr},message:"Invalid url"});}`;
65
+ continue;
66
+ }
67
+ else if (check.format === "uuid") {
68
+ regexVar = `__re_uuid_${ctx.counter++}`;
69
+ ctx.preamble.push(`var ${regexVar}=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;`);
70
+ }
71
+ else {
72
+ regexVar = `__re_${ctx.counter++}`;
73
+ if (check.pattern) {
74
+ ctx.preamble.push(`var ${regexVar}=new RegExp(${escapeString(check.pattern)});`);
75
+ }
76
+ else {
77
+ continue;
78
+ }
79
+ }
80
+ code += `if(!${regexVar}.test(${inputExpr})){${issuesVar}.push({code:"invalid_string",validation:${escapeString(check.format)},path:${pathExpr},message:"Invalid ${check.format}"});}`;
81
+ break;
82
+ }
83
+ }
84
+ }
85
+ code += `}`;
86
+ }
87
+ return `${code}\n`;
88
+ }
89
+ function generateNumberValidation(ir, inputExpr, pathExpr, issuesVar, _ctx) {
90
+ let code = `if(typeof ${inputExpr}!=="number"||!Number.isFinite(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"number",received:typeof ${inputExpr},path:${pathExpr},message:"Expected number"});}`;
91
+ if (ir.checks.length > 0) {
92
+ code += `else{`;
93
+ for (const check of ir.checks) {
94
+ switch (check.kind) {
95
+ case "greater_than":
96
+ if (check.inclusive) {
97
+ code += `if(${inputExpr}<${check.value}){${issuesVar}.push({code:"too_small",minimum:${check.value},type:"number",inclusive:true,path:${pathExpr},message:"Number must be greater than or equal to ${check.value}"});}`;
98
+ }
99
+ else {
100
+ code += `if(${inputExpr}<=${check.value}){${issuesVar}.push({code:"too_small",minimum:${check.value},type:"number",inclusive:false,path:${pathExpr},message:"Number must be greater than ${check.value}"});}`;
101
+ }
102
+ break;
103
+ case "less_than":
104
+ if (check.inclusive) {
105
+ code += `if(${inputExpr}>${check.value}){${issuesVar}.push({code:"too_big",maximum:${check.value},type:"number",inclusive:true,path:${pathExpr},message:"Number must be less than or equal to ${check.value}"});}`;
106
+ }
107
+ else {
108
+ code += `if(${inputExpr}>=${check.value}){${issuesVar}.push({code:"too_big",maximum:${check.value},type:"number",inclusive:false,path:${pathExpr},message:"Number must be less than ${check.value}"});}`;
109
+ }
110
+ break;
111
+ case "number_format":
112
+ if (check.format === "safeint") {
113
+ code += `if(!Number.isSafeInteger(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"integer",received:"float",path:${pathExpr},message:"Expected integer"});}`;
114
+ }
115
+ break;
116
+ case "multiple_of":
117
+ code += `if(${inputExpr}%${check.value}!==0){${issuesVar}.push({code:"not_multiple_of",multipleOf:${check.value},path:${pathExpr},message:"Number must be a multiple of ${check.value}"});}`;
118
+ break;
119
+ }
120
+ }
121
+ code += `}`;
122
+ }
123
+ return `${code}\n`;
124
+ }
125
+ function generateBooleanValidation(inputExpr, pathExpr, issuesVar) {
126
+ return `if(typeof ${inputExpr}!=="boolean"){${issuesVar}.push({code:"invalid_type",expected:"boolean",received:typeof ${inputExpr},path:${pathExpr},message:"Expected boolean"});}\n`;
127
+ }
128
+ function generateNullValidation(inputExpr, pathExpr, issuesVar) {
129
+ return `if(${inputExpr}!==null){${issuesVar}.push({code:"invalid_type",expected:"null",received:typeof ${inputExpr},path:${pathExpr},message:"Expected null"});}\n`;
130
+ }
131
+ function generateUndefinedValidation(inputExpr, pathExpr, issuesVar) {
132
+ return `if(${inputExpr}!==undefined){${issuesVar}.push({code:"invalid_type",expected:"undefined",received:typeof ${inputExpr},path:${pathExpr},message:"Expected undefined"});}\n`;
133
+ }
134
+ function generateLiteralValidation(ir, inputExpr, pathExpr, issuesVar) {
135
+ // For single literal, use direct comparison
136
+ if (ir.values.length === 1) {
137
+ const v = ir.values[0];
138
+ let cond;
139
+ if (v === null) {
140
+ cond = `${inputExpr}!==null`;
141
+ }
142
+ else if (typeof v === "string") {
143
+ cond = `${inputExpr}!==${escapeString(v)}`;
144
+ }
145
+ else {
146
+ cond = `${inputExpr}!==${String(v)}`;
147
+ }
148
+ return `if(${cond}){${issuesVar}.push({code:"invalid_literal",expected:${JSON.stringify(v)},received:${inputExpr},path:${pathExpr},message:"Invalid literal value"});}\n`;
149
+ }
150
+ // Multiple values
151
+ const valueChecks = ir.values
152
+ .map((v) => {
153
+ if (v === null)
154
+ return `${inputExpr}===null`;
155
+ if (typeof v === "string")
156
+ return `${inputExpr}===${escapeString(v)}`;
157
+ return `${inputExpr}===${String(v)}`;
158
+ })
159
+ .join("||");
160
+ return `if(!(${valueChecks})){${issuesVar}.push({code:"invalid_literal",expected:${JSON.stringify(ir.values)},received:${inputExpr},path:${pathExpr},message:"Invalid literal value"});}\n`;
161
+ }
162
+ function generateEnumValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
163
+ const setVar = `__set_${ctx.counter++}`;
164
+ ctx.preamble.push(`var ${setVar}=new Set(${JSON.stringify(ir.values)});`);
165
+ return `if(!${setVar}.has(${inputExpr})){${issuesVar}.push({code:"invalid_enum_value",options:${JSON.stringify(ir.values)},received:${inputExpr},path:${pathExpr},message:"Invalid enum value"});}\n`;
166
+ }
167
+ function generateObjectValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
168
+ let code = `if(typeof ${inputExpr}!=="object"||${inputExpr}===null||Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"object",received:Array.isArray(${inputExpr})?"array":${inputExpr}===null?"null":typeof ${inputExpr},path:${pathExpr},message:"Expected object"});}else{`;
169
+ const objVar = `__o_${ctx.counter++}`;
170
+ code += `var ${objVar}=${inputExpr};`;
171
+ for (const [key, propIR] of Object.entries(ir.properties)) {
172
+ const propExpr = `${objVar}[${escapeString(key)}]`;
173
+ const propPath = `${pathExpr}.concat(${escapeString(key)})`;
174
+ code += generateValidation(propIR, propExpr, propPath, issuesVar, ctx);
175
+ }
176
+ code += `}\n`;
177
+ return code;
178
+ }
179
+ function generateArrayValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
180
+ let code = `if(!Array.isArray(${inputExpr})){${issuesVar}.push({code:"invalid_type",expected:"array",received:typeof ${inputExpr},path:${pathExpr},message:"Expected array"});}else{`;
181
+ // Length checks
182
+ for (const check of ir.checks) {
183
+ switch (check.kind) {
184
+ case "min_length":
185
+ code += `if(${inputExpr}.length<${check.minimum}){${issuesVar}.push({code:"too_small",minimum:${check.minimum},type:"array",inclusive:true,path:${pathExpr},message:"Array must contain at least ${check.minimum} element(s)"});}`;
186
+ break;
187
+ case "max_length":
188
+ code += `if(${inputExpr}.length>${check.maximum}){${issuesVar}.push({code:"too_big",maximum:${check.maximum},type:"array",inclusive:true,path:${pathExpr},message:"Array must contain at most ${check.maximum} element(s)"});}`;
189
+ break;
190
+ case "length_equals":
191
+ code += `if(${inputExpr}.length!==${check.length}){${issuesVar}.push({code:"invalid_length",exact:${check.length},type:"array",path:${pathExpr},message:"Array must contain exactly ${check.length} element(s)"});}`;
192
+ break;
193
+ }
194
+ }
195
+ // Element validation
196
+ const idxVar = `__i_${ctx.counter++}`;
197
+ code += `for(var ${idxVar}=0;${idxVar}<${inputExpr}.length;${idxVar}++){`;
198
+ const elemExpr = `${inputExpr}[${idxVar}]`;
199
+ const elemPath = `${pathExpr}.concat(${idxVar})`;
200
+ code += generateValidation(ir.element, elemExpr, elemPath, issuesVar, ctx);
201
+ code += `}`;
202
+ code += `}\n`;
203
+ return code;
204
+ }
205
+ function generateUnionValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
206
+ const resultVar = `__u_${ctx.counter++}`;
207
+ let code = `var ${resultVar}=false;`;
208
+ for (const option of ir.options) {
209
+ const tmpIssues = `__ui_${ctx.counter++}`;
210
+ code += `if(!${resultVar}){var ${tmpIssues}=[];`;
211
+ code += generateValidation(option, inputExpr, pathExpr, tmpIssues, ctx);
212
+ code += `if(${tmpIssues}.length===0){${resultVar}=true;}}`;
213
+ }
214
+ code += `if(!${resultVar}){${issuesVar}.push({code:"invalid_union",unionErrors:[],path:${pathExpr},message:"Invalid input"});}\n`;
215
+ return code;
216
+ }
217
+ function generateOptionalValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
218
+ let code = `if(${inputExpr}!==undefined){`;
219
+ code += generateValidation(ir.inner, inputExpr, pathExpr, issuesVar, ctx);
220
+ code += `}\n`;
221
+ return code;
222
+ }
223
+ function generateNullableValidation(ir, inputExpr, pathExpr, issuesVar, ctx) {
224
+ let code = `if(${inputExpr}!==null){`;
225
+ code += generateValidation(ir.inner, inputExpr, pathExpr, issuesVar, ctx);
226
+ code += `}\n`;
227
+ return code;
228
+ }
229
+ /**
230
+ * Generate optimized validation code from SchemaIR.
231
+ *
232
+ * - `code`: preamble declarations (Sets, RegExps, etc.) — deterministic for the same IR
233
+ * - `functionName`: full function expression string referencing preamble vars via closure
234
+ *
235
+ * Usage: `new Function(code + "\nreturn " + functionName + ";")()`
236
+ */
237
+ export function generateValidator(ir, name) {
238
+ const ctx = { preamble: [], counter: 0 };
239
+ const bodyCode = generateValidation(ir, "input", "[]", "__issues", ctx);
240
+ // code = preamble only (name-independent, deterministic for same IR)
241
+ const code = ["/* zod-aot */", ...ctx.preamble].join("\n");
242
+ // functionName = full function expression (references preamble vars via closure)
243
+ const fnName = `safeParse_${name}`;
244
+ const functionName = [
245
+ `function ${fnName}(input){`,
246
+ `var __issues=[];`,
247
+ bodyCode,
248
+ `if(__issues.length>0)return{success:false,error:{issues:__issues}};`,
249
+ `return{success:true,data:input};`,
250
+ `}`,
251
+ ].join("\n");
252
+ return { code, functionName };
253
+ }
254
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAOA,qEAAqE;AACrE,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAOxI,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,kBAAkB,CACzB,EAAY,EACZ,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3E,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3E,KAAK,SAAS;YACZ,OAAO,yBAAyB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnE,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChE,KAAK,WAAW;YACd,OAAO,2BAA2B,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrE,KAAK,SAAS;YACZ,OAAO,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACzE,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3E,KAAK,OAAO;YACV,OAAO,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1E,KAAK,OAAO;YACV,OAAO,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1E,KAAK,UAAU;YACb,OAAO,0BAA0B,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7E,KAAK,UAAU;YACb,OAAO,0BAA0B,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7E,KAAK,UAAU;YACb,OAAO,GAAG,SAAS,6BAA6B,QAAQ,8BAA8B,EAAE,CAAC,MAAM,QAAQ,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAiC,EACjC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,gEAAgE,SAAS,SAAS,QAAQ,gCAAgC,CAAC;IAErL,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,YAAY;oBACf,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,KAAK,SAAS,mCAAmC,KAAK,CAAC,OAAO,sCAAsC,QAAQ,0CAA0C,KAAK,CAAC,OAAO,oBAAoB,CAAC;oBACvO,MAAM;gBACR,KAAK,YAAY;oBACf,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,KAAK,SAAS,iCAAiC,KAAK,CAAC,OAAO,sCAAsC,QAAQ,yCAAyC,KAAK,CAAC,OAAO,oBAAoB,CAAC;oBACpO,MAAM;gBACR,KAAK,eAAe;oBAClB,IAAI,IAAI,MAAM,SAAS,aAAa,KAAK,CAAC,MAAM,KAAK,SAAS,sCAAsC,KAAK,CAAC,MAAM,uBAAuB,QAAQ,oCAAoC,KAAK,CAAC,MAAM,oBAAoB,CAAC;oBACpN,MAAM;gBACR,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,IAAI,QAAgB,CAAC;oBACrB,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;wBAC7B,QAAQ,GAAG,cAAc,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACzC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,QAAQ,eAAe,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACxF,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACrD,QAAQ,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,QAAQ,eAAe,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACnF,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;wBAClC,QAAQ,GAAG,YAAY,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACvC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,QAAQ,QAAQ,QAAQ,mBAAmB,QAAQ,UAAU,CAAC,CAAC;wBACxF,IAAI,IAAI,0EAA0E,SAAS,MAAM,SAAS,sDAAsD,QAAQ,4BAA4B,CAAC;wBACrM,SAAS;oBACX,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;wBACnC,QAAQ,GAAG,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACf,OAAO,QAAQ,mFAAmF,CACnG,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,QAAQ,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACnC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;4BAClB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,QAAQ,eAAe,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACnF,CAAC;6BAAM,CAAC;4BACN,SAAS;wBACX,CAAC;oBACH,CAAC;oBACD,IAAI,IAAI,OAAO,QAAQ,SAAS,SAAS,MAAM,SAAS,2CAA2C,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,QAAQ,qBAAqB,KAAK,CAAC,MAAM,OAAO,CAAC;oBACvL,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAiC,EACjC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,IAAoB;IAEpB,IAAI,IAAI,GAAG,aAAa,SAAS,iCAAiC,SAAS,MAAM,SAAS,gEAAgE,SAAS,SAAS,QAAQ,gCAAgC,CAAC;IAErN,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,cAAc;oBACjB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,mCAAmC,KAAK,CAAC,KAAK,sCAAsC,QAAQ,qDAAqD,KAAK,CAAC,KAAK,OAAO,CAAC;oBAC1N,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,SAAS,KAAK,KAAK,CAAC,KAAK,KAAK,SAAS,mCAAmC,KAAK,CAAC,KAAK,uCAAuC,QAAQ,yCAAyC,KAAK,CAAC,KAAK,OAAO,CAAC;oBAChN,CAAC;oBACD,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,iCAAiC,KAAK,CAAC,KAAK,sCAAsC,QAAQ,kDAAkD,KAAK,CAAC,KAAK,OAAO,CAAC;oBACrN,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,MAAM,SAAS,KAAK,KAAK,CAAC,KAAK,KAAK,SAAS,iCAAiC,KAAK,CAAC,KAAK,uCAAuC,QAAQ,sCAAsC,KAAK,CAAC,KAAK,OAAO,CAAC;oBAC3M,CAAC;oBACD,MAAM;gBACR,KAAK,eAAe;oBAClB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC/B,IAAI,IAAI,4BAA4B,SAAS,MAAM,SAAS,uEAAuE,QAAQ,iCAAiC,CAAC;oBAC/K,CAAC;oBACD,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,IAAI,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,SAAS,SAAS,4CAA4C,KAAK,CAAC,KAAK,SAAS,QAAQ,0CAA0C,KAAK,CAAC,KAAK,OAAO,CAAC;oBAC7L,MAAM;YACV,CAAC;QACH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAiB;IACvF,OAAO,aAAa,SAAS,iBAAiB,SAAS,iEAAiE,SAAS,SAAS,QAAQ,mCAAmC,CAAC;AACxL,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAiB;IACpF,OAAO,MAAM,SAAS,YAAY,SAAS,8DAA8D,SAAS,SAAS,QAAQ,gCAAgC,CAAC;AACtK,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,OAAO,MAAM,SAAS,iBAAiB,SAAS,mEAAmE,SAAS,SAAS,QAAQ,qCAAqC,CAAC;AACrL,CAAC;AAED,SAAS,yBAAyB,CAChC,EAAkC,EAClC,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,4CAA4C;IAC5C,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,0CAA0C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,SAAS,SAAS,QAAQ,wCAAwC,CAAC;IAC5K,CAAC;IAED,kBAAkB;IAClB,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,0CAA0C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,SAAS,SAAS,QAAQ,wCAAwC,CAAC;AAC9L,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAA+B,EAC/B,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC,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,4CAA4C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,SAAS,SAAS,QAAQ,qCAAqC,CAAC;AACxM,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAiC,EACjC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,IAAI,IAAI,GAAG,aAAa,SAAS,gBAAgB,SAAS,0BAA0B,SAAS,MAAM,SAAS,uEAAuE,SAAS,aAAa,SAAS,yBAAyB,SAAS,SAAS,QAAQ,qCAAqC,CAAC;IAE3S,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACtC,IAAI,IAAI,OAAO,MAAM,IAAI,SAAS,GAAG,CAAC;IAEtC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QACnD,MAAM,QAAQ,GAAG,GAAG,QAAQ,WAAW,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5D,IAAI,IAAI,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,EAAgC,EAChC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,IAAI,IAAI,GAAG,qBAAqB,SAAS,MAAM,SAAS,+DAA+D,SAAS,SAAS,QAAQ,oCAAoC,CAAC;IAEtL,gBAAgB;IAChB,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,qCAAqC,QAAQ,yCAAyC,KAAK,CAAC,OAAO,kBAAkB,CAAC;gBACnO,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,IAAI,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,KAAK,SAAS,iCAAiC,KAAK,CAAC,OAAO,qCAAqC,QAAQ,wCAAwC,KAAK,CAAC,OAAO,kBAAkB,CAAC;gBAChO,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,IAAI,MAAM,SAAS,aAAa,KAAK,CAAC,MAAM,KAAK,SAAS,sCAAsC,KAAK,CAAC,MAAM,sBAAsB,QAAQ,wCAAwC,KAAK,CAAC,MAAM,kBAAkB,CAAC;gBACrN,MAAM;QACV,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,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,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3E,IAAI,IAAI,GAAG,CAAC;IAEZ,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,EAAgC,EAChC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACzC,IAAI,IAAI,GAAG,OAAO,SAAS,SAAS,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,OAAO,SAAS,SAAS,SAAS,MAAM,CAAC;QACjD,IAAI,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,IAAI,MAAM,SAAS,gBAAgB,SAAS,UAAU,CAAC;IAC7D,CAAC;IAED,IAAI,IAAI,OAAO,SAAS,KAAK,SAAS,mDAAmD,QAAQ,gCAAgC,CAAC;IAClI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAmC,EACnC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,IAAI,IAAI,GAAG,MAAM,SAAS,gBAAgB,CAAC;IAC3C,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1E,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAmC,EACnC,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,IAAI,IAAI,GAAG,MAAM,SAAS,WAAW,CAAC;IACtC,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1E,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAY,EAAE,IAAY;IAC1D,MAAM,GAAG,GAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAExE,qEAAqE;IACrE,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,iFAAiF;IACjF,MAAM,MAAM,GAAG,aAAa,IAAI,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG;QACnB,YAAY,MAAM,UAAU;QAC5B,kBAAkB;QAClB,QAAQ;QACR,qEAAqE;QACrE,kCAAkC;QAClC,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { SchemaIR } from "../types.js";
2
+ /**
3
+ * Extract SchemaIR from a Zod schema by traversing its `_zod.def` and `_zod.bag`.
4
+ */
5
+ export declare function extractSchema(zodSchema: unknown): SchemaIR;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+FrD;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAyF1D"}
@@ -0,0 +1,129 @@
1
+ function extractChecks(checks) {
2
+ const checkIRs = [];
3
+ let hasFallback = false;
4
+ for (const check of checks) {
5
+ const def = check._zod?.def;
6
+ if (!def)
7
+ continue;
8
+ switch (def.check) {
9
+ case "min_length":
10
+ checkIRs.push({ kind: "min_length", minimum: def.minimum });
11
+ break;
12
+ case "max_length":
13
+ checkIRs.push({ kind: "max_length", maximum: def.maximum });
14
+ break;
15
+ case "length_equals":
16
+ checkIRs.push({ kind: "length_equals", length: def.length });
17
+ break;
18
+ case "greater_than":
19
+ checkIRs.push({ kind: "greater_than", value: def.value, inclusive: def.inclusive });
20
+ break;
21
+ case "less_than":
22
+ checkIRs.push({ kind: "less_than", value: def.value, inclusive: def.inclusive });
23
+ break;
24
+ case "multiple_of":
25
+ checkIRs.push({ kind: "multiple_of", value: def.value });
26
+ break;
27
+ case "number_format":
28
+ checkIRs.push({
29
+ kind: "number_format",
30
+ format: def.format,
31
+ });
32
+ break;
33
+ case "string_format": {
34
+ const pattern = def.pattern instanceof RegExp ? def.pattern.source : def.pattern;
35
+ checkIRs.push({
36
+ kind: "string_format",
37
+ format: def.format,
38
+ ...(pattern ? { pattern } : {}),
39
+ });
40
+ break;
41
+ }
42
+ case "custom":
43
+ hasFallback = true;
44
+ break;
45
+ }
46
+ }
47
+ return { checkIRs, hasFallback };
48
+ }
49
+ /**
50
+ * Extract SchemaIR from a Zod schema by traversing its `_zod.def` and `_zod.bag`.
51
+ */
52
+ export function extractSchema(zodSchema) {
53
+ const schema = zodSchema;
54
+ const def = schema._zod.def;
55
+ // Transform: pipe with transform output
56
+ if (def.type === "pipe") {
57
+ const outDef = def.out?._zod?.def;
58
+ if (outDef && outDef.type === "transform") {
59
+ return { type: "fallback", reason: "transform" };
60
+ }
61
+ return { type: "fallback", reason: "unsupported" };
62
+ }
63
+ // String format schemas (z.email(), z.url(), z.uuid())
64
+ if (def.type === "string" && def.check === "string_format") {
65
+ const pattern = def.pattern instanceof RegExp ? def.pattern.source : def.pattern;
66
+ const checks = [
67
+ {
68
+ kind: "string_format",
69
+ format: def.format,
70
+ ...(pattern ? { pattern } : {}),
71
+ },
72
+ ];
73
+ return { type: "string", checks };
74
+ }
75
+ switch (def.type) {
76
+ case "string": {
77
+ if (!def.checks || def.checks.length === 0) {
78
+ return { type: "string", checks: [] };
79
+ }
80
+ const { checkIRs, hasFallback } = extractChecks(def.checks);
81
+ if (hasFallback)
82
+ return { type: "fallback", reason: "refine" };
83
+ return { type: "string", checks: checkIRs };
84
+ }
85
+ case "number": {
86
+ if (!def.checks || def.checks.length === 0) {
87
+ return { type: "number", checks: [] };
88
+ }
89
+ const { checkIRs, hasFallback } = extractChecks(def.checks);
90
+ if (hasFallback)
91
+ return { type: "fallback", reason: "refine" };
92
+ return { type: "number", checks: checkIRs };
93
+ }
94
+ case "boolean":
95
+ return { type: "boolean" };
96
+ case "null":
97
+ return { type: "null" };
98
+ case "undefined":
99
+ return { type: "undefined" };
100
+ case "literal":
101
+ return { type: "literal", values: def.values };
102
+ case "enum":
103
+ return { type: "enum", values: Object.values(def.entries) };
104
+ case "object": {
105
+ const properties = {};
106
+ for (const [key, value] of Object.entries(def.shape)) {
107
+ properties[key] = extractSchema(value);
108
+ }
109
+ return { type: "object", properties };
110
+ }
111
+ case "array": {
112
+ const element = extractSchema(def.element);
113
+ const { checkIRs } = def.checks ? extractChecks(def.checks) : { checkIRs: [] };
114
+ return { type: "array", element, checks: checkIRs };
115
+ }
116
+ case "union":
117
+ return {
118
+ type: "union",
119
+ options: def.options.map((opt) => extractSchema(opt)),
120
+ };
121
+ case "optional":
122
+ return { type: "optional", inner: extractSchema(def.innerType) };
123
+ case "nullable":
124
+ return { type: "nullable", inner: extractSchema(def.innerType) };
125
+ default:
126
+ return { type: "fallback", reason: "unsupported" };
127
+ }
128
+ }
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { CodeGenResult } from "./codegen/index.js";
2
+ export { generateValidator } from "./codegen/index.js";
3
+ export { extractSchema } from "./extractor/index.js";
4
+ export { createFallback } from "./runtime.js";
5
+ export type { CheckIR, CompiledSchema, SafeParseError, SafeParseResult, SafeParseSuccess, SchemaIR, ZodErrorLike, ZodIssueLike, } from "./types.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { generateValidator } from "./codegen/index.js";
2
+ export { extractSchema } from "./extractor/index.js";
3
+ export { createFallback } from "./runtime.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CompiledSchema } from "./types.js";
2
+ /**
3
+ * Dev-time fallback: wraps Zod schema to provide the CompiledSchema interface.
4
+ */
5
+ export declare function createFallback<T>(zodSchema: unknown): CompiledSchema<T>;
6
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,YAAY,CAAC;AA0B9F;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CA6BvE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Dev-time fallback: wraps Zod schema to provide the CompiledSchema interface.
3
+ */
4
+ export function createFallback(zodSchema) {
5
+ const schema = zodSchema;
6
+ return {
7
+ parse(input) {
8
+ return schema.parse(input);
9
+ },
10
+ safeParse(input) {
11
+ const result = schema.safeParse(input);
12
+ if (result.success) {
13
+ return { success: true, data: result.data };
14
+ }
15
+ const issues = result.error.issues.map((issue) => ({
16
+ ...issue,
17
+ code: issue.code,
18
+ path: issue.path,
19
+ message: issue.message,
20
+ }));
21
+ const error = { issues };
22
+ return { success: false, error };
23
+ },
24
+ is(input) {
25
+ return schema.safeParse(input).success;
26
+ },
27
+ schema: zodSchema,
28
+ };
29
+ }
30
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AA0BA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,SAAkB;IAClD,MAAM,MAAM,GAAG,SAA0B,CAAC;IAE1C,OAAO;QACL,KAAK,CAAC,KAAc;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,KAAc;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAS,EAAE,CAAC;YACnD,CAAC;YACD,MAAM,MAAM,GAAmB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjE,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,KAAK,GAAiB,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;QAED,EAAE,CAAC,KAAc;YACf,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC;QAED,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * SchemaIR — Intermediate representation for Zod schemas.
3
+ * Extracted from Zod's `_zod.def` and `_zod.bag` at build time.
4
+ */
5
+ export interface CheckMinLength {
6
+ kind: "min_length";
7
+ minimum: number;
8
+ }
9
+ export interface CheckMaxLength {
10
+ kind: "max_length";
11
+ maximum: number;
12
+ }
13
+ export interface CheckLengthEquals {
14
+ kind: "length_equals";
15
+ length: number;
16
+ }
17
+ export interface CheckGreaterThan {
18
+ kind: "greater_than";
19
+ value: number;
20
+ inclusive: boolean;
21
+ }
22
+ export interface CheckLessThan {
23
+ kind: "less_than";
24
+ value: number;
25
+ inclusive: boolean;
26
+ }
27
+ export interface CheckMultipleOf {
28
+ kind: "multiple_of";
29
+ value: number;
30
+ }
31
+ export interface CheckNumberFormat {
32
+ kind: "number_format";
33
+ format: "safeint" | "int32" | "uint32" | "float32" | "float64";
34
+ }
35
+ export interface CheckStringFormat {
36
+ kind: "string_format";
37
+ format: string;
38
+ pattern?: string;
39
+ }
40
+ export type CheckIR = CheckMinLength | CheckMaxLength | CheckLengthEquals | CheckGreaterThan | CheckLessThan | CheckMultipleOf | CheckNumberFormat | CheckStringFormat;
41
+ export interface StringIR {
42
+ type: "string";
43
+ checks: CheckIR[];
44
+ }
45
+ export interface NumberIR {
46
+ type: "number";
47
+ checks: CheckIR[];
48
+ }
49
+ export interface BooleanIR {
50
+ type: "boolean";
51
+ }
52
+ export interface NullIR {
53
+ type: "null";
54
+ }
55
+ export interface UndefinedIR {
56
+ type: "undefined";
57
+ }
58
+ export interface LiteralIR {
59
+ type: "literal";
60
+ values: (string | number | boolean | null)[];
61
+ }
62
+ export interface EnumIR {
63
+ type: "enum";
64
+ values: string[];
65
+ }
66
+ export interface ObjectIR {
67
+ type: "object";
68
+ properties: Record<string, SchemaIR>;
69
+ }
70
+ export interface ArrayIR {
71
+ type: "array";
72
+ element: SchemaIR;
73
+ checks: CheckIR[];
74
+ }
75
+ export interface UnionIR {
76
+ type: "union";
77
+ options: SchemaIR[];
78
+ }
79
+ export interface OptionalIR {
80
+ type: "optional";
81
+ inner: SchemaIR;
82
+ }
83
+ export interface NullableIR {
84
+ type: "nullable";
85
+ inner: SchemaIR;
86
+ }
87
+ export interface FallbackIR {
88
+ type: "fallback";
89
+ reason: "transform" | "refine" | "superRefine" | "custom" | "unsupported";
90
+ }
91
+ export type SchemaIR = StringIR | NumberIR | BooleanIR | NullIR | UndefinedIR | LiteralIR | EnumIR | ObjectIR | ArrayIR | UnionIR | OptionalIR | NullableIR | FallbackIR;
92
+ export interface SafeParseSuccess<T> {
93
+ success: true;
94
+ data: T;
95
+ }
96
+ export interface SafeParseError {
97
+ success: false;
98
+ error: ZodErrorLike;
99
+ }
100
+ export type SafeParseResult<T> = SafeParseSuccess<T> | SafeParseError;
101
+ export interface ZodIssueLike {
102
+ code: string;
103
+ path: (string | number)[];
104
+ message: string;
105
+ [key: string]: unknown;
106
+ }
107
+ export interface ZodErrorLike {
108
+ issues: ZodIssueLike[];
109
+ }
110
+ export interface CompiledSchema<T> {
111
+ parse(input: unknown): T;
112
+ safeParse(input: unknown): SafeParseResult<T>;
113
+ is(input: unknown): input is T;
114
+ schema: unknown;
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * SchemaIR — Intermediate representation for Zod schemas.
3
+ * Extracted from Zod's `_zod.def` and `_zod.bag` at build time.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "zod-aot",
3
+ "version": "0.0.1",
4
+ "description": "Compile Zod schemas into zero-overhead validation functions at build time",
5
+ "type": "module",
6
+ "keywords": [
7
+ "zod",
8
+ "validation",
9
+ "aot",
10
+ "compiler",
11
+ "codegen",
12
+ "performance",
13
+ "schema",
14
+ "typescript"
15
+ ],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/watettman/zod-aot.git",
19
+ "directory": "packages/zod-aot"
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "imports": {
25
+ "#src/*": "./src/*"
26
+ },
27
+ "exports": {
28
+ ".": {
29
+ "import": "./dist/index.js",
30
+ "types": "./dist/index.d.ts"
31
+ }
32
+ },
33
+ "peerDependencies": {
34
+ "zod": "^4.0.0"
35
+ },
36
+ "devDependencies": {
37
+ "zod": "^4.0.0",
38
+ "typescript": "^5.7.0"
39
+ },
40
+ "license": "MIT",
41
+ "scripts": {
42
+ "build": "tsc",
43
+ "typecheck": "tsc --noEmit"
44
+ }
45
+ }