@rexeus/typeweaver-zod-to-ts 0.8.0 → 0.9.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.
- package/dist/index.cjs +209 -219
- package/dist/index.d.cts +5 -55
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +5 -55
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +208 -217
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,223 +1,213 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
let typescript = require("typescript");
|
|
3
3
|
let zod_v4_core = require("zod/v4/core");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
*/
|
|
206
|
-
static createTsAstPropertyKey(key) {
|
|
207
|
-
if (/^[$A-Z_a-z][\w$]*$/.test(key)) return typescript.factory.createIdentifier(key);
|
|
208
|
-
return typescript.factory.createStringLiteral(key);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
|
|
4
|
+
//#region src/tsTypeGenerator.ts
|
|
5
|
+
function fromZod(zodType) {
|
|
6
|
+
if (zodType instanceof zod_v4_core.$ZodString) return fromZodString(zodType);
|
|
7
|
+
if (zodType instanceof zod_v4_core.$ZodNumber) return fromZodNumber(zodType);
|
|
8
|
+
if (zodType instanceof zod_v4_core.$ZodBigInt) return fromZodBigInt(zodType);
|
|
9
|
+
if (zodType instanceof zod_v4_core.$ZodBoolean) return fromZodBoolean(zodType);
|
|
10
|
+
if (zodType instanceof zod_v4_core.$ZodDate) return fromZodDate(zodType);
|
|
11
|
+
if (zodType instanceof zod_v4_core.$ZodSymbol) return fromZodSymbol(zodType);
|
|
12
|
+
if (zodType instanceof zod_v4_core.$ZodUndefined) return fromZodUndefined(zodType);
|
|
13
|
+
if (zodType instanceof zod_v4_core.$ZodNullable) return fromZodNullable(zodType);
|
|
14
|
+
if (zodType instanceof zod_v4_core.$ZodNull) return fromZodNull(zodType);
|
|
15
|
+
if (zodType instanceof zod_v4_core.$ZodAny) return fromZodAny(zodType);
|
|
16
|
+
if (zodType instanceof zod_v4_core.$ZodUnknown) return fromZodUnknown(zodType);
|
|
17
|
+
if (zodType instanceof zod_v4_core.$ZodNever) return fromZodNever(zodType);
|
|
18
|
+
if (zodType instanceof zod_v4_core.$ZodVoid) return fromZodVoid(zodType);
|
|
19
|
+
if (zodType instanceof zod_v4_core.$ZodArray) return fromZodArray(zodType);
|
|
20
|
+
if (zodType instanceof zod_v4_core.$ZodObject) return fromZodObject(zodType);
|
|
21
|
+
if (zodType instanceof zod_v4_core.$ZodUnion) return fromZodUnion(zodType);
|
|
22
|
+
if (zodType instanceof zod_v4_core.$ZodIntersection) return fromZodIntersection(zodType);
|
|
23
|
+
if (zodType instanceof zod_v4_core.$ZodTuple) return fromZodTuple(zodType);
|
|
24
|
+
if (zodType instanceof zod_v4_core.$ZodRecord) return fromZodRecord(zodType);
|
|
25
|
+
if (zodType instanceof zod_v4_core.$ZodMap) return fromZodMap(zodType);
|
|
26
|
+
if (zodType instanceof zod_v4_core.$ZodSet) return fromZodSet(zodType);
|
|
27
|
+
if (zodType instanceof zod_v4_core.$ZodLiteral) return fromZodLiteral(zodType);
|
|
28
|
+
if (zodType instanceof zod_v4_core.$ZodEnum) return fromZodEnum(zodType);
|
|
29
|
+
if (zodType instanceof zod_v4_core.$ZodPromise) return fromZodPromise(zodType);
|
|
30
|
+
if (zodType instanceof zod_v4_core.$ZodLazy) return fromZodLazy(zodType);
|
|
31
|
+
if (zodType instanceof zod_v4_core.$ZodOptional) return fromZodOptional(zodType);
|
|
32
|
+
if (zodType instanceof zod_v4_core.$ZodDefault) return fromZodDefault(zodType);
|
|
33
|
+
if (zodType instanceof zod_v4_core.$ZodTemplateLiteral) return fromZodTemplateLiteral(zodType);
|
|
34
|
+
if (zodType instanceof zod_v4_core.$ZodCustom) return fromZodCustom(zodType);
|
|
35
|
+
if (zodType instanceof zod_v4_core.$ZodTransform) return fromZodTransform(zodType);
|
|
36
|
+
if (zodType instanceof zod_v4_core.$ZodNonOptional) return fromZodNonOptional(zodType);
|
|
37
|
+
if (zodType instanceof zod_v4_core.$ZodReadonly) return fromZodReadonly(zodType);
|
|
38
|
+
if (zodType instanceof zod_v4_core.$ZodNaN) return fromZodNaN(zodType);
|
|
39
|
+
if (zodType instanceof zod_v4_core.$ZodPipe) return fromZodPipe(zodType);
|
|
40
|
+
if (zodType instanceof zod_v4_core.$ZodSuccess) return fromZodSuccess(zodType);
|
|
41
|
+
if (zodType instanceof zod_v4_core.$ZodCatch) return fromZodCatch(zodType);
|
|
42
|
+
if (zodType instanceof zod_v4_core.$ZodFile) return fromZodFile(zodType);
|
|
43
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
44
|
+
}
|
|
45
|
+
function fromZodString(_zodString) {
|
|
46
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.StringKeyword);
|
|
47
|
+
}
|
|
48
|
+
function fromZodNumber(_zodNumber) {
|
|
49
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.NumberKeyword);
|
|
50
|
+
}
|
|
51
|
+
function fromZodBigInt(_zodBigInt) {
|
|
52
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.BigIntKeyword);
|
|
53
|
+
}
|
|
54
|
+
function fromZodBoolean(_zodBoolean) {
|
|
55
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.BooleanKeyword);
|
|
56
|
+
}
|
|
57
|
+
function fromZodDate(_zodDate) {
|
|
58
|
+
return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Date"));
|
|
59
|
+
}
|
|
60
|
+
function fromZodSymbol(_zodSymbol) {
|
|
61
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.SymbolKeyword);
|
|
62
|
+
}
|
|
63
|
+
function fromZodUndefined(_zodUndefined) {
|
|
64
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword);
|
|
65
|
+
}
|
|
66
|
+
function fromZodNullable(zodNullable) {
|
|
67
|
+
const innerType = fromZod(zodNullable._zod.def.innerType);
|
|
68
|
+
return typescript.factory.createUnionTypeNode([innerType, typescript.factory.createLiteralTypeNode(typescript.factory.createNull())]);
|
|
69
|
+
}
|
|
70
|
+
function fromZodNull(_zodNull) {
|
|
71
|
+
return typescript.factory.createLiteralTypeNode(typescript.factory.createNull());
|
|
72
|
+
}
|
|
73
|
+
function fromZodAny(_zodAny) {
|
|
74
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.AnyKeyword);
|
|
75
|
+
}
|
|
76
|
+
function fromZodUnknown(_zodUnknown) {
|
|
77
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
78
|
+
}
|
|
79
|
+
function fromZodNever(_zodNever) {
|
|
80
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.NeverKeyword);
|
|
81
|
+
}
|
|
82
|
+
function fromZodVoid(_zodVoid) {
|
|
83
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.VoidKeyword);
|
|
84
|
+
}
|
|
85
|
+
function fromZodArray(zodArray) {
|
|
86
|
+
const innerType = fromZod(zodArray._zod.def.element);
|
|
87
|
+
return typescript.factory.createArrayTypeNode(innerType);
|
|
88
|
+
}
|
|
89
|
+
function fromZodObject(zodObject) {
|
|
90
|
+
const members = Object.entries(zodObject._zod.def.shape).map(([key, nextZodNode]) => {
|
|
91
|
+
const type = fromZod(nextZodNode);
|
|
92
|
+
if (!nextZodNode._zod?.def) console.warn(`Zod node for key "${key}" does not have a _zod.def property. This may indicate an issue with the Zod schema.`, { key });
|
|
93
|
+
const { type: nextZodNodeTypeName } = nextZodNode._zod?.def ?? {};
|
|
94
|
+
const isOptional = nextZodNodeTypeName === "optional";
|
|
95
|
+
return typescript.factory.createPropertySignature(void 0, createTsAstPropertyKey(key), isOptional ? typescript.factory.createToken(typescript.SyntaxKind.QuestionToken) : void 0, type);
|
|
96
|
+
});
|
|
97
|
+
return typescript.factory.createTypeLiteralNode(members);
|
|
98
|
+
}
|
|
99
|
+
function fromZodUnion(zodUnion) {
|
|
100
|
+
const options = zodUnion._zod.def.options.map(fromZod);
|
|
101
|
+
return typescript.factory.createUnionTypeNode(options);
|
|
102
|
+
}
|
|
103
|
+
function fromZodIntersection(zodIntersection) {
|
|
104
|
+
const left = fromZod(zodIntersection._zod.def.left);
|
|
105
|
+
const right = fromZod(zodIntersection._zod.def.right);
|
|
106
|
+
return typescript.factory.createIntersectionTypeNode([left, right]);
|
|
107
|
+
}
|
|
108
|
+
function fromZodTuple(zodTuple) {
|
|
109
|
+
const elements = zodTuple._zod.def.items.map(fromZod);
|
|
110
|
+
return typescript.factory.createTupleTypeNode(elements);
|
|
111
|
+
}
|
|
112
|
+
function fromZodRecord(zodRecord) {
|
|
113
|
+
const keyType = fromZod(zodRecord._zod.def.keyType);
|
|
114
|
+
const valueType = fromZod(zodRecord._zod.def.valueType);
|
|
115
|
+
return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Record"), [keyType, valueType]);
|
|
116
|
+
}
|
|
117
|
+
function fromZodMap(zodMap) {
|
|
118
|
+
const keyType = fromZod(zodMap._zod.def.keyType);
|
|
119
|
+
const valueType = fromZod(zodMap._zod.def.valueType);
|
|
120
|
+
return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Map"), [keyType, valueType]);
|
|
121
|
+
}
|
|
122
|
+
function fromZodSet(zodSet) {
|
|
123
|
+
const innerType = fromZod(zodSet._zod.def.valueType);
|
|
124
|
+
return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Set"), [innerType]);
|
|
125
|
+
}
|
|
126
|
+
function fromZodLiteral(zodLiteral) {
|
|
127
|
+
if (zodLiteral._zod.def.values.length === 0) throw new Error("ZodLiteral has no values");
|
|
128
|
+
const value = zodLiteral._zod.def.values[0];
|
|
129
|
+
if (typeof value === "string") return typescript.factory.createLiteralTypeNode(typescript.factory.createStringLiteral(value));
|
|
130
|
+
if (typeof value === "number") return typescript.factory.createLiteralTypeNode(typescript.factory.createNumericLiteral(value));
|
|
131
|
+
if (typeof value === "boolean") return typescript.factory.createLiteralTypeNode(value ? typescript.factory.createTrue() : typescript.factory.createFalse());
|
|
132
|
+
if (typeof value === "bigint") return typescript.factory.createLiteralTypeNode(typescript.factory.createBigIntLiteral(value.toString()));
|
|
133
|
+
if (value === null) return typescript.factory.createLiteralTypeNode(typescript.factory.createNull());
|
|
134
|
+
if (value === void 0) return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword);
|
|
135
|
+
throw new Error(`Unsupported literal type: ${typeof value}`);
|
|
136
|
+
}
|
|
137
|
+
function fromZodEnum(zodEnum) {
|
|
138
|
+
const types = Object.entries(zodEnum._zod.def.entries).map(([key, _value]) => {
|
|
139
|
+
return typescript.factory.createLiteralTypeNode(typescript.factory.createStringLiteral(key));
|
|
140
|
+
});
|
|
141
|
+
return typescript.factory.createUnionTypeNode(types);
|
|
142
|
+
}
|
|
143
|
+
function fromZodPromise(zodPromise) {
|
|
144
|
+
const innerType = fromZod(zodPromise._zod.def.innerType);
|
|
145
|
+
return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Promise"), [innerType]);
|
|
146
|
+
}
|
|
147
|
+
function fromZodLazy(_zodLazy) {
|
|
148
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
149
|
+
}
|
|
150
|
+
function fromZodOptional(zodOptional) {
|
|
151
|
+
const innerType = fromZod(zodOptional._zod.def.innerType);
|
|
152
|
+
return typescript.factory.createUnionTypeNode([innerType, typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword)]);
|
|
153
|
+
}
|
|
154
|
+
function fromZodDefault(zodDefault) {
|
|
155
|
+
const innerType = fromZod(zodDefault._zod.def.innerType);
|
|
156
|
+
const filteredNodes = [];
|
|
157
|
+
innerType.forEachChild((node) => {
|
|
158
|
+
if (node.kind !== typescript.SyntaxKind.UndefinedKeyword) filteredNodes.push(node);
|
|
159
|
+
});
|
|
160
|
+
innerType.types = filteredNodes;
|
|
161
|
+
return innerType;
|
|
162
|
+
}
|
|
163
|
+
function fromZodTemplateLiteral(_zodTemplateLiteral) {
|
|
164
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
165
|
+
}
|
|
166
|
+
function fromZodCustom(_zodCustom) {
|
|
167
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
168
|
+
}
|
|
169
|
+
function fromZodTransform(_zodTransform) {
|
|
170
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
171
|
+
}
|
|
172
|
+
function fromZodNonOptional(_zodNonOptional) {
|
|
173
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
174
|
+
}
|
|
175
|
+
function fromZodReadonly(_zodReadonly) {
|
|
176
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
177
|
+
}
|
|
178
|
+
function fromZodNaN(_zodNaN) {
|
|
179
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
180
|
+
}
|
|
181
|
+
function fromZodPipe(_zodPipe) {
|
|
182
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
183
|
+
}
|
|
184
|
+
function fromZodSuccess(_zodSuccess) {
|
|
185
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
186
|
+
}
|
|
187
|
+
function fromZodCatch(_zodCatch) {
|
|
188
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
189
|
+
}
|
|
190
|
+
function fromZodFile(_zodFile) {
|
|
191
|
+
return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns a TypeScript AST node representing the property key.
|
|
195
|
+
* If the key is a valid JavaScript identifier, returns an Identifier node.
|
|
196
|
+
* Otherwise, returns a StringLiteral node.
|
|
197
|
+
*
|
|
198
|
+
* @param {string} key - The property key to convert.
|
|
199
|
+
* @returns {Identifier | StringLiteral} The corresponding AST node for the property key.
|
|
200
|
+
*/
|
|
201
|
+
function createTsAstPropertyKey(key) {
|
|
202
|
+
if (/^[$A-Z_a-z][\w$]*$/.test(key)) return typescript.factory.createIdentifier(key);
|
|
203
|
+
return typescript.factory.createStringLiteral(key);
|
|
204
|
+
}
|
|
212
205
|
//#endregion
|
|
213
|
-
//#region src/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
|
|
206
|
+
//#region src/tsTypePrinter.ts
|
|
207
|
+
function print(tsType) {
|
|
208
|
+
const sourceFile = (0, typescript.createSourceFile)("print.ts", "", typescript.ScriptTarget.Latest, false, typescript.ScriptKind.TS);
|
|
209
|
+
return (0, typescript.createPrinter)().printNode(typescript.EmitHint.Unspecified, tsType, sourceFile);
|
|
210
|
+
}
|
|
221
211
|
//#endregion
|
|
222
|
-
exports.
|
|
223
|
-
exports.
|
|
212
|
+
exports.fromZod = fromZod;
|
|
213
|
+
exports.print = print;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,61 +1,11 @@
|
|
|
1
1
|
import { TypeNode } from "typescript";
|
|
2
2
|
import { $ZodType } from "zod/v4/core";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
5
|
-
declare
|
|
6
|
-
static fromZod(zodType: $ZodType): TypeNode;
|
|
7
|
-
private static fromZodString;
|
|
8
|
-
private static fromZodNumber;
|
|
9
|
-
private static fromZodBigInt;
|
|
10
|
-
private static fromZodBoolean;
|
|
11
|
-
private static fromZodDate;
|
|
12
|
-
private static fromZodSymbol;
|
|
13
|
-
private static fromZodUndefined;
|
|
14
|
-
private static fromZodNullable;
|
|
15
|
-
private static fromZodNull;
|
|
16
|
-
private static fromZodAny;
|
|
17
|
-
private static fromZodUnknown;
|
|
18
|
-
private static fromZodNever;
|
|
19
|
-
private static fromZodVoid;
|
|
20
|
-
private static fromZodArray;
|
|
21
|
-
private static fromZodObject;
|
|
22
|
-
private static fromZodUnion;
|
|
23
|
-
private static fromZodIntersection;
|
|
24
|
-
private static fromZodTuple;
|
|
25
|
-
private static fromZodRecord;
|
|
26
|
-
private static fromZodMap;
|
|
27
|
-
private static fromZodSet;
|
|
28
|
-
private static fromZodLiteral;
|
|
29
|
-
private static fromZodEnum;
|
|
30
|
-
private static fromZodPromise;
|
|
31
|
-
private static fromZodLazy;
|
|
32
|
-
private static fromZodOptional;
|
|
33
|
-
private static fromZodDefault;
|
|
34
|
-
private static fromZodTemplateLiteral;
|
|
35
|
-
private static fromZodCustom;
|
|
36
|
-
private static fromZodTransform;
|
|
37
|
-
private static fromZodNonOptional;
|
|
38
|
-
private static fromZodReadonly;
|
|
39
|
-
private static fromZodNaN;
|
|
40
|
-
private static fromZodPipe;
|
|
41
|
-
private static fromZodSuccess;
|
|
42
|
-
private static fromZodCatch;
|
|
43
|
-
private static fromZodFile;
|
|
44
|
-
/**
|
|
45
|
-
* Returns a TypeScript AST node representing the property key.
|
|
46
|
-
* If the key is a valid JavaScript identifier, returns an Identifier node.
|
|
47
|
-
* Otherwise, returns a StringLiteral node.
|
|
48
|
-
*
|
|
49
|
-
* @param {string} key - The property key to convert.
|
|
50
|
-
* @returns {Identifier | StringLiteral} The corresponding AST node for the property key.
|
|
51
|
-
*/
|
|
52
|
-
private static createTsAstPropertyKey;
|
|
53
|
-
}
|
|
4
|
+
//#region src/tsTypeGenerator.d.ts
|
|
5
|
+
declare function fromZod(zodType: $ZodType): TypeNode;
|
|
54
6
|
//#endregion
|
|
55
|
-
//#region src/
|
|
56
|
-
declare
|
|
57
|
-
static print(tsType: TypeNode): string;
|
|
58
|
-
}
|
|
7
|
+
//#region src/tsTypePrinter.d.ts
|
|
8
|
+
declare function print(tsType: TypeNode): string;
|
|
59
9
|
//#endregion
|
|
60
|
-
export {
|
|
10
|
+
export { fromZod, print };
|
|
61
11
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"mappings":";;;;iBAiDgB,OAAA,CAAQ,OAAA,EAAS,QAAA,GAAW,QAAA;;;iBCxC5B,KAAA,CAAM,MAAA,EAAQ,QAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,61 +1,11 @@
|
|
|
1
1
|
import { TypeNode } from "typescript";
|
|
2
2
|
import { $ZodType } from "zod/v4/core";
|
|
3
3
|
|
|
4
|
-
//#region src/
|
|
5
|
-
declare
|
|
6
|
-
static fromZod(zodType: $ZodType): TypeNode;
|
|
7
|
-
private static fromZodString;
|
|
8
|
-
private static fromZodNumber;
|
|
9
|
-
private static fromZodBigInt;
|
|
10
|
-
private static fromZodBoolean;
|
|
11
|
-
private static fromZodDate;
|
|
12
|
-
private static fromZodSymbol;
|
|
13
|
-
private static fromZodUndefined;
|
|
14
|
-
private static fromZodNullable;
|
|
15
|
-
private static fromZodNull;
|
|
16
|
-
private static fromZodAny;
|
|
17
|
-
private static fromZodUnknown;
|
|
18
|
-
private static fromZodNever;
|
|
19
|
-
private static fromZodVoid;
|
|
20
|
-
private static fromZodArray;
|
|
21
|
-
private static fromZodObject;
|
|
22
|
-
private static fromZodUnion;
|
|
23
|
-
private static fromZodIntersection;
|
|
24
|
-
private static fromZodTuple;
|
|
25
|
-
private static fromZodRecord;
|
|
26
|
-
private static fromZodMap;
|
|
27
|
-
private static fromZodSet;
|
|
28
|
-
private static fromZodLiteral;
|
|
29
|
-
private static fromZodEnum;
|
|
30
|
-
private static fromZodPromise;
|
|
31
|
-
private static fromZodLazy;
|
|
32
|
-
private static fromZodOptional;
|
|
33
|
-
private static fromZodDefault;
|
|
34
|
-
private static fromZodTemplateLiteral;
|
|
35
|
-
private static fromZodCustom;
|
|
36
|
-
private static fromZodTransform;
|
|
37
|
-
private static fromZodNonOptional;
|
|
38
|
-
private static fromZodReadonly;
|
|
39
|
-
private static fromZodNaN;
|
|
40
|
-
private static fromZodPipe;
|
|
41
|
-
private static fromZodSuccess;
|
|
42
|
-
private static fromZodCatch;
|
|
43
|
-
private static fromZodFile;
|
|
44
|
-
/**
|
|
45
|
-
* Returns a TypeScript AST node representing the property key.
|
|
46
|
-
* If the key is a valid JavaScript identifier, returns an Identifier node.
|
|
47
|
-
* Otherwise, returns a StringLiteral node.
|
|
48
|
-
*
|
|
49
|
-
* @param {string} key - The property key to convert.
|
|
50
|
-
* @returns {Identifier | StringLiteral} The corresponding AST node for the property key.
|
|
51
|
-
*/
|
|
52
|
-
private static createTsAstPropertyKey;
|
|
53
|
-
}
|
|
4
|
+
//#region src/tsTypeGenerator.d.ts
|
|
5
|
+
declare function fromZod(zodType: $ZodType): TypeNode;
|
|
54
6
|
//#endregion
|
|
55
|
-
//#region src/
|
|
56
|
-
declare
|
|
57
|
-
static print(tsType: TypeNode): string;
|
|
58
|
-
}
|
|
7
|
+
//#region src/tsTypePrinter.d.ts
|
|
8
|
+
declare function print(tsType: TypeNode): string;
|
|
59
9
|
//#endregion
|
|
60
|
-
export {
|
|
10
|
+
export { fromZod, print };
|
|
61
11
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"mappings":";;;;iBAiDgB,OAAA,CAAQ,OAAA,EAAS,QAAA,GAAW,QAAA;;;iBCxC5B,KAAA,CAAM,MAAA,EAAQ,QAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,222 +1,213 @@
|
|
|
1
1
|
import { EmitHint, ScriptKind, ScriptTarget, SyntaxKind, createPrinter, createSourceFile, factory } from "typescript";
|
|
2
2
|
import { $ZodAny, $ZodArray, $ZodBigInt, $ZodBoolean, $ZodCatch, $ZodCustom, $ZodDate, $ZodDefault, $ZodEnum, $ZodFile, $ZodIntersection, $ZodLazy, $ZodLiteral, $ZodMap, $ZodNaN, $ZodNever, $ZodNonOptional, $ZodNull, $ZodNullable, $ZodNumber, $ZodObject, $ZodOptional, $ZodPipe, $ZodPromise, $ZodReadonly, $ZodRecord, $ZodSet, $ZodString, $ZodSuccess, $ZodSymbol, $ZodTemplateLiteral, $ZodTransform, $ZodTuple, $ZodUndefined, $ZodUnion, $ZodUnknown, $ZodVoid } from "zod/v4/core";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
*/
|
|
205
|
-
static createTsAstPropertyKey(key) {
|
|
206
|
-
if (/^[$A-Z_a-z][\w$]*$/.test(key)) return factory.createIdentifier(key);
|
|
207
|
-
return factory.createStringLiteral(key);
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
|
|
3
|
+
//#region src/tsTypeGenerator.ts
|
|
4
|
+
function fromZod(zodType) {
|
|
5
|
+
if (zodType instanceof $ZodString) return fromZodString(zodType);
|
|
6
|
+
if (zodType instanceof $ZodNumber) return fromZodNumber(zodType);
|
|
7
|
+
if (zodType instanceof $ZodBigInt) return fromZodBigInt(zodType);
|
|
8
|
+
if (zodType instanceof $ZodBoolean) return fromZodBoolean(zodType);
|
|
9
|
+
if (zodType instanceof $ZodDate) return fromZodDate(zodType);
|
|
10
|
+
if (zodType instanceof $ZodSymbol) return fromZodSymbol(zodType);
|
|
11
|
+
if (zodType instanceof $ZodUndefined) return fromZodUndefined(zodType);
|
|
12
|
+
if (zodType instanceof $ZodNullable) return fromZodNullable(zodType);
|
|
13
|
+
if (zodType instanceof $ZodNull) return fromZodNull(zodType);
|
|
14
|
+
if (zodType instanceof $ZodAny) return fromZodAny(zodType);
|
|
15
|
+
if (zodType instanceof $ZodUnknown) return fromZodUnknown(zodType);
|
|
16
|
+
if (zodType instanceof $ZodNever) return fromZodNever(zodType);
|
|
17
|
+
if (zodType instanceof $ZodVoid) return fromZodVoid(zodType);
|
|
18
|
+
if (zodType instanceof $ZodArray) return fromZodArray(zodType);
|
|
19
|
+
if (zodType instanceof $ZodObject) return fromZodObject(zodType);
|
|
20
|
+
if (zodType instanceof $ZodUnion) return fromZodUnion(zodType);
|
|
21
|
+
if (zodType instanceof $ZodIntersection) return fromZodIntersection(zodType);
|
|
22
|
+
if (zodType instanceof $ZodTuple) return fromZodTuple(zodType);
|
|
23
|
+
if (zodType instanceof $ZodRecord) return fromZodRecord(zodType);
|
|
24
|
+
if (zodType instanceof $ZodMap) return fromZodMap(zodType);
|
|
25
|
+
if (zodType instanceof $ZodSet) return fromZodSet(zodType);
|
|
26
|
+
if (zodType instanceof $ZodLiteral) return fromZodLiteral(zodType);
|
|
27
|
+
if (zodType instanceof $ZodEnum) return fromZodEnum(zodType);
|
|
28
|
+
if (zodType instanceof $ZodPromise) return fromZodPromise(zodType);
|
|
29
|
+
if (zodType instanceof $ZodLazy) return fromZodLazy(zodType);
|
|
30
|
+
if (zodType instanceof $ZodOptional) return fromZodOptional(zodType);
|
|
31
|
+
if (zodType instanceof $ZodDefault) return fromZodDefault(zodType);
|
|
32
|
+
if (zodType instanceof $ZodTemplateLiteral) return fromZodTemplateLiteral(zodType);
|
|
33
|
+
if (zodType instanceof $ZodCustom) return fromZodCustom(zodType);
|
|
34
|
+
if (zodType instanceof $ZodTransform) return fromZodTransform(zodType);
|
|
35
|
+
if (zodType instanceof $ZodNonOptional) return fromZodNonOptional(zodType);
|
|
36
|
+
if (zodType instanceof $ZodReadonly) return fromZodReadonly(zodType);
|
|
37
|
+
if (zodType instanceof $ZodNaN) return fromZodNaN(zodType);
|
|
38
|
+
if (zodType instanceof $ZodPipe) return fromZodPipe(zodType);
|
|
39
|
+
if (zodType instanceof $ZodSuccess) return fromZodSuccess(zodType);
|
|
40
|
+
if (zodType instanceof $ZodCatch) return fromZodCatch(zodType);
|
|
41
|
+
if (zodType instanceof $ZodFile) return fromZodFile(zodType);
|
|
42
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
43
|
+
}
|
|
44
|
+
function fromZodString(_zodString) {
|
|
45
|
+
return factory.createKeywordTypeNode(SyntaxKind.StringKeyword);
|
|
46
|
+
}
|
|
47
|
+
function fromZodNumber(_zodNumber) {
|
|
48
|
+
return factory.createKeywordTypeNode(SyntaxKind.NumberKeyword);
|
|
49
|
+
}
|
|
50
|
+
function fromZodBigInt(_zodBigInt) {
|
|
51
|
+
return factory.createKeywordTypeNode(SyntaxKind.BigIntKeyword);
|
|
52
|
+
}
|
|
53
|
+
function fromZodBoolean(_zodBoolean) {
|
|
54
|
+
return factory.createKeywordTypeNode(SyntaxKind.BooleanKeyword);
|
|
55
|
+
}
|
|
56
|
+
function fromZodDate(_zodDate) {
|
|
57
|
+
return factory.createTypeReferenceNode(factory.createIdentifier("Date"));
|
|
58
|
+
}
|
|
59
|
+
function fromZodSymbol(_zodSymbol) {
|
|
60
|
+
return factory.createKeywordTypeNode(SyntaxKind.SymbolKeyword);
|
|
61
|
+
}
|
|
62
|
+
function fromZodUndefined(_zodUndefined) {
|
|
63
|
+
return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);
|
|
64
|
+
}
|
|
65
|
+
function fromZodNullable(zodNullable) {
|
|
66
|
+
const innerType = fromZod(zodNullable._zod.def.innerType);
|
|
67
|
+
return factory.createUnionTypeNode([innerType, factory.createLiteralTypeNode(factory.createNull())]);
|
|
68
|
+
}
|
|
69
|
+
function fromZodNull(_zodNull) {
|
|
70
|
+
return factory.createLiteralTypeNode(factory.createNull());
|
|
71
|
+
}
|
|
72
|
+
function fromZodAny(_zodAny) {
|
|
73
|
+
return factory.createKeywordTypeNode(SyntaxKind.AnyKeyword);
|
|
74
|
+
}
|
|
75
|
+
function fromZodUnknown(_zodUnknown) {
|
|
76
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
77
|
+
}
|
|
78
|
+
function fromZodNever(_zodNever) {
|
|
79
|
+
return factory.createKeywordTypeNode(SyntaxKind.NeverKeyword);
|
|
80
|
+
}
|
|
81
|
+
function fromZodVoid(_zodVoid) {
|
|
82
|
+
return factory.createKeywordTypeNode(SyntaxKind.VoidKeyword);
|
|
83
|
+
}
|
|
84
|
+
function fromZodArray(zodArray) {
|
|
85
|
+
const innerType = fromZod(zodArray._zod.def.element);
|
|
86
|
+
return factory.createArrayTypeNode(innerType);
|
|
87
|
+
}
|
|
88
|
+
function fromZodObject(zodObject) {
|
|
89
|
+
const members = Object.entries(zodObject._zod.def.shape).map(([key, nextZodNode]) => {
|
|
90
|
+
const type = fromZod(nextZodNode);
|
|
91
|
+
if (!nextZodNode._zod?.def) console.warn(`Zod node for key "${key}" does not have a _zod.def property. This may indicate an issue with the Zod schema.`, { key });
|
|
92
|
+
const { type: nextZodNodeTypeName } = nextZodNode._zod?.def ?? {};
|
|
93
|
+
const isOptional = nextZodNodeTypeName === "optional";
|
|
94
|
+
return factory.createPropertySignature(void 0, createTsAstPropertyKey(key), isOptional ? factory.createToken(SyntaxKind.QuestionToken) : void 0, type);
|
|
95
|
+
});
|
|
96
|
+
return factory.createTypeLiteralNode(members);
|
|
97
|
+
}
|
|
98
|
+
function fromZodUnion(zodUnion) {
|
|
99
|
+
const options = zodUnion._zod.def.options.map(fromZod);
|
|
100
|
+
return factory.createUnionTypeNode(options);
|
|
101
|
+
}
|
|
102
|
+
function fromZodIntersection(zodIntersection) {
|
|
103
|
+
const left = fromZod(zodIntersection._zod.def.left);
|
|
104
|
+
const right = fromZod(zodIntersection._zod.def.right);
|
|
105
|
+
return factory.createIntersectionTypeNode([left, right]);
|
|
106
|
+
}
|
|
107
|
+
function fromZodTuple(zodTuple) {
|
|
108
|
+
const elements = zodTuple._zod.def.items.map(fromZod);
|
|
109
|
+
return factory.createTupleTypeNode(elements);
|
|
110
|
+
}
|
|
111
|
+
function fromZodRecord(zodRecord) {
|
|
112
|
+
const keyType = fromZod(zodRecord._zod.def.keyType);
|
|
113
|
+
const valueType = fromZod(zodRecord._zod.def.valueType);
|
|
114
|
+
return factory.createTypeReferenceNode(factory.createIdentifier("Record"), [keyType, valueType]);
|
|
115
|
+
}
|
|
116
|
+
function fromZodMap(zodMap) {
|
|
117
|
+
const keyType = fromZod(zodMap._zod.def.keyType);
|
|
118
|
+
const valueType = fromZod(zodMap._zod.def.valueType);
|
|
119
|
+
return factory.createTypeReferenceNode(factory.createIdentifier("Map"), [keyType, valueType]);
|
|
120
|
+
}
|
|
121
|
+
function fromZodSet(zodSet) {
|
|
122
|
+
const innerType = fromZod(zodSet._zod.def.valueType);
|
|
123
|
+
return factory.createTypeReferenceNode(factory.createIdentifier("Set"), [innerType]);
|
|
124
|
+
}
|
|
125
|
+
function fromZodLiteral(zodLiteral) {
|
|
126
|
+
if (zodLiteral._zod.def.values.length === 0) throw new Error("ZodLiteral has no values");
|
|
127
|
+
const value = zodLiteral._zod.def.values[0];
|
|
128
|
+
if (typeof value === "string") return factory.createLiteralTypeNode(factory.createStringLiteral(value));
|
|
129
|
+
if (typeof value === "number") return factory.createLiteralTypeNode(factory.createNumericLiteral(value));
|
|
130
|
+
if (typeof value === "boolean") return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse());
|
|
131
|
+
if (typeof value === "bigint") return factory.createLiteralTypeNode(factory.createBigIntLiteral(value.toString()));
|
|
132
|
+
if (value === null) return factory.createLiteralTypeNode(factory.createNull());
|
|
133
|
+
if (value === void 0) return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);
|
|
134
|
+
throw new Error(`Unsupported literal type: ${typeof value}`);
|
|
135
|
+
}
|
|
136
|
+
function fromZodEnum(zodEnum) {
|
|
137
|
+
const types = Object.entries(zodEnum._zod.def.entries).map(([key, _value]) => {
|
|
138
|
+
return factory.createLiteralTypeNode(factory.createStringLiteral(key));
|
|
139
|
+
});
|
|
140
|
+
return factory.createUnionTypeNode(types);
|
|
141
|
+
}
|
|
142
|
+
function fromZodPromise(zodPromise) {
|
|
143
|
+
const innerType = fromZod(zodPromise._zod.def.innerType);
|
|
144
|
+
return factory.createTypeReferenceNode(factory.createIdentifier("Promise"), [innerType]);
|
|
145
|
+
}
|
|
146
|
+
function fromZodLazy(_zodLazy) {
|
|
147
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
148
|
+
}
|
|
149
|
+
function fromZodOptional(zodOptional) {
|
|
150
|
+
const innerType = fromZod(zodOptional._zod.def.innerType);
|
|
151
|
+
return factory.createUnionTypeNode([innerType, factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword)]);
|
|
152
|
+
}
|
|
153
|
+
function fromZodDefault(zodDefault) {
|
|
154
|
+
const innerType = fromZod(zodDefault._zod.def.innerType);
|
|
155
|
+
const filteredNodes = [];
|
|
156
|
+
innerType.forEachChild((node) => {
|
|
157
|
+
if (node.kind !== SyntaxKind.UndefinedKeyword) filteredNodes.push(node);
|
|
158
|
+
});
|
|
159
|
+
innerType.types = filteredNodes;
|
|
160
|
+
return innerType;
|
|
161
|
+
}
|
|
162
|
+
function fromZodTemplateLiteral(_zodTemplateLiteral) {
|
|
163
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
164
|
+
}
|
|
165
|
+
function fromZodCustom(_zodCustom) {
|
|
166
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
167
|
+
}
|
|
168
|
+
function fromZodTransform(_zodTransform) {
|
|
169
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
170
|
+
}
|
|
171
|
+
function fromZodNonOptional(_zodNonOptional) {
|
|
172
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
173
|
+
}
|
|
174
|
+
function fromZodReadonly(_zodReadonly) {
|
|
175
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
176
|
+
}
|
|
177
|
+
function fromZodNaN(_zodNaN) {
|
|
178
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
179
|
+
}
|
|
180
|
+
function fromZodPipe(_zodPipe) {
|
|
181
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
182
|
+
}
|
|
183
|
+
function fromZodSuccess(_zodSuccess) {
|
|
184
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
185
|
+
}
|
|
186
|
+
function fromZodCatch(_zodCatch) {
|
|
187
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
188
|
+
}
|
|
189
|
+
function fromZodFile(_zodFile) {
|
|
190
|
+
return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns a TypeScript AST node representing the property key.
|
|
194
|
+
* If the key is a valid JavaScript identifier, returns an Identifier node.
|
|
195
|
+
* Otherwise, returns a StringLiteral node.
|
|
196
|
+
*
|
|
197
|
+
* @param {string} key - The property key to convert.
|
|
198
|
+
* @returns {Identifier | StringLiteral} The corresponding AST node for the property key.
|
|
199
|
+
*/
|
|
200
|
+
function createTsAstPropertyKey(key) {
|
|
201
|
+
if (/^[$A-Z_a-z][\w$]*$/.test(key)) return factory.createIdentifier(key);
|
|
202
|
+
return factory.createStringLiteral(key);
|
|
203
|
+
}
|
|
211
204
|
//#endregion
|
|
212
|
-
//#region src/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
|
|
205
|
+
//#region src/tsTypePrinter.ts
|
|
206
|
+
function print(tsType) {
|
|
207
|
+
const sourceFile = createSourceFile("print.ts", "", ScriptTarget.Latest, false, ScriptKind.TS);
|
|
208
|
+
return createPrinter().printNode(EmitHint.Unspecified, tsType, sourceFile);
|
|
209
|
+
}
|
|
220
210
|
//#endregion
|
|
221
|
-
export {
|
|
211
|
+
export { fromZod, print };
|
|
212
|
+
|
|
222
213
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/TsTypeGenerator.ts","../src/TsTypePrinter.ts"],"sourcesContent":["import { factory, SyntaxKind } from \"typescript\";\nimport {\n $ZodAny,\n $ZodArray,\n $ZodBigInt,\n $ZodBoolean,\n $ZodCatch,\n $ZodCustom,\n $ZodDate,\n $ZodDefault,\n $ZodEnum,\n $ZodFile,\n $ZodIntersection,\n $ZodLazy,\n $ZodLiteral,\n $ZodMap,\n $ZodNaN,\n $ZodNever,\n $ZodNonOptional,\n $ZodNull,\n $ZodNullable,\n $ZodNumber,\n $ZodObject,\n $ZodOptional,\n $ZodPipe,\n $ZodPromise,\n $ZodReadonly,\n $ZodRecord,\n $ZodSet,\n $ZodString,\n $ZodSuccess,\n $ZodSymbol,\n $ZodTemplateLiteral,\n $ZodTransform,\n $ZodTuple,\n $ZodUndefined,\n $ZodUnion,\n $ZodUnknown,\n $ZodVoid,\n} from \"zod/v4/core\";\nimport type {\n Identifier,\n Node,\n StringLiteral,\n TypeElement,\n TypeNode,\n} from \"typescript\";\nimport type { $ZodType } from \"zod/v4/core\";\n\nexport class TsTypeNode {\n static fromZod(zodType: $ZodType): TypeNode {\n if (zodType instanceof $ZodString) {\n return TsTypeNode.fromZodString(zodType);\n }\n if (zodType instanceof $ZodNumber) {\n return TsTypeNode.fromZodNumber(zodType);\n }\n if (zodType instanceof $ZodBigInt) {\n return TsTypeNode.fromZodBigInt(zodType);\n }\n if (zodType instanceof $ZodBoolean) {\n return TsTypeNode.fromZodBoolean(zodType);\n }\n if (zodType instanceof $ZodDate) {\n return TsTypeNode.fromZodDate(zodType);\n }\n if (zodType instanceof $ZodSymbol) {\n return TsTypeNode.fromZodSymbol(zodType);\n }\n if (zodType instanceof $ZodUndefined) {\n return TsTypeNode.fromZodUndefined(zodType);\n }\n if (zodType instanceof $ZodNullable) {\n return TsTypeNode.fromZodNullable(zodType);\n }\n if (zodType instanceof $ZodNull) {\n return TsTypeNode.fromZodNull(zodType);\n }\n if (zodType instanceof $ZodAny) {\n return TsTypeNode.fromZodAny(zodType);\n }\n if (zodType instanceof $ZodUnknown) {\n return TsTypeNode.fromZodUnknown(zodType);\n }\n if (zodType instanceof $ZodNever) {\n return TsTypeNode.fromZodNever(zodType);\n }\n if (zodType instanceof $ZodVoid) {\n return TsTypeNode.fromZodVoid(zodType);\n }\n if (zodType instanceof $ZodArray) {\n return TsTypeNode.fromZodArray(zodType);\n }\n if (zodType instanceof $ZodObject) {\n return TsTypeNode.fromZodObject(zodType);\n }\n if (zodType instanceof $ZodUnion) {\n return TsTypeNode.fromZodUnion(zodType);\n }\n if (zodType instanceof $ZodIntersection) {\n return TsTypeNode.fromZodIntersection(zodType);\n }\n if (zodType instanceof $ZodTuple) {\n return TsTypeNode.fromZodTuple(zodType);\n }\n if (zodType instanceof $ZodRecord) {\n return TsTypeNode.fromZodRecord(zodType);\n }\n if (zodType instanceof $ZodMap) {\n return TsTypeNode.fromZodMap(zodType);\n }\n if (zodType instanceof $ZodSet) {\n return TsTypeNode.fromZodSet(zodType);\n }\n if (zodType instanceof $ZodLiteral) {\n if (!TsTypeNode) {\n throw new Error(\"ZodLiteral has no values\");\n }\n return TsTypeNode.fromZodLiteral(zodType);\n }\n if (zodType instanceof $ZodEnum) {\n return TsTypeNode.fromZodEnum(zodType);\n }\n if (zodType instanceof $ZodPromise) {\n return TsTypeNode.fromZodPromise(zodType);\n }\n if (zodType instanceof $ZodLazy) {\n return TsTypeNode.fromZodLazy(zodType);\n }\n if (zodType instanceof $ZodOptional) {\n return TsTypeNode.fromZodOptional(zodType);\n }\n if (zodType instanceof $ZodDefault) {\n return TsTypeNode.fromZodDefault(zodType);\n }\n if (zodType instanceof $ZodTemplateLiteral) {\n return TsTypeNode.fromZodTemplateLiteral(zodType);\n }\n if (zodType instanceof $ZodCustom) {\n return TsTypeNode.fromZodCustom(zodType);\n }\n if (zodType instanceof $ZodTransform) {\n return TsTypeNode.fromZodTransform(zodType);\n }\n if (zodType instanceof $ZodNonOptional) {\n return TsTypeNode.fromZodNonOptional(zodType);\n }\n if (zodType instanceof $ZodReadonly) {\n return TsTypeNode.fromZodReadonly(zodType);\n }\n if (zodType instanceof $ZodNaN) {\n return TsTypeNode.fromZodNaN(zodType);\n }\n if (zodType instanceof $ZodPipe) {\n return TsTypeNode.fromZodPipe(zodType);\n }\n if (zodType instanceof $ZodSuccess) {\n return TsTypeNode.fromZodSuccess(zodType);\n }\n if (zodType instanceof $ZodCatch) {\n return TsTypeNode.fromZodCatch(zodType);\n }\n if (zodType instanceof $ZodFile) {\n return TsTypeNode.fromZodFile(zodType);\n }\n\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodString(_zodString: $ZodString): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.StringKeyword);\n }\n\n private static fromZodNumber(_zodNumber: $ZodNumber): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.NumberKeyword);\n }\n\n private static fromZodBigInt(_zodBigInt: $ZodBigInt): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.BigIntKeyword);\n }\n\n private static fromZodBoolean(_zodBoolean: $ZodBoolean): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.BooleanKeyword);\n }\n\n private static fromZodDate(_zodDate: $ZodDate): TypeNode {\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Date\"));\n }\n\n private static fromZodSymbol(_zodSymbol: $ZodSymbol): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.SymbolKeyword);\n }\n\n private static fromZodUndefined(_zodUndefined: $ZodUndefined): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);\n }\n\n private static fromZodNullable(zodNullable: $ZodNullable): TypeNode {\n const innerType = TsTypeNode.fromZod(zodNullable._zod.def.innerType);\n return factory.createUnionTypeNode([\n innerType,\n factory.createLiteralTypeNode(factory.createNull()),\n ]);\n }\n\n private static fromZodNull(_zodNull: $ZodNull): TypeNode {\n return factory.createLiteralTypeNode(factory.createNull());\n }\n\n private static fromZodAny(_zodAny: $ZodAny): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.AnyKeyword);\n }\n\n private static fromZodUnknown(_zodUnknown: $ZodUnknown): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodNever(_zodNever: $ZodNever): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.NeverKeyword);\n }\n\n private static fromZodVoid(_zodVoid: $ZodVoid): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.VoidKeyword);\n }\n\n private static fromZodArray(zodArray: $ZodArray): TypeNode {\n const innerType = TsTypeNode.fromZod(zodArray._zod.def.element);\n return factory.createArrayTypeNode(innerType);\n }\n\n private static fromZodObject(zodObject: $ZodObject): TypeNode {\n const entries = Object.entries(zodObject._zod.def.shape);\n\n const members: TypeElement[] = entries.map(([key, nextZodNode]) => {\n const type = TsTypeNode.fromZod(nextZodNode);\n\n if (!nextZodNode._zod?.def) {\n console.warn(\n `Zod node for key \"${key}\" does not have a _zod.def property. This may indicate an issue with the Zod schema.`,\n {\n key,\n }\n );\n }\n const { type: nextZodNodeTypeName } = nextZodNode._zod?.def ?? {};\n const isOptional = nextZodNodeTypeName === \"optional\";\n\n const propertySignature = factory.createPropertySignature(\n undefined,\n TsTypeNode.createTsAstPropertyKey(key),\n isOptional ? factory.createToken(SyntaxKind.QuestionToken) : undefined,\n type\n );\n\n // TODO: add description?\n return propertySignature;\n });\n return factory.createTypeLiteralNode(members);\n }\n\n private static fromZodUnion(zodUnion: $ZodUnion): TypeNode {\n const options = zodUnion._zod.def.options.map(TsTypeNode.fromZod);\n return factory.createUnionTypeNode(options);\n }\n\n private static fromZodIntersection(\n zodIntersection: $ZodIntersection\n ): TypeNode {\n const left = TsTypeNode.fromZod(zodIntersection._zod.def.left);\n const right = TsTypeNode.fromZod(zodIntersection._zod.def.right);\n return factory.createIntersectionTypeNode([left, right]);\n }\n\n private static fromZodTuple(zodTuple: $ZodTuple): TypeNode {\n const elements = zodTuple._zod.def.items.map(TsTypeNode.fromZod);\n return factory.createTupleTypeNode(elements);\n }\n\n private static fromZodRecord(zodRecord: $ZodRecord): TypeNode {\n const keyType = TsTypeNode.fromZod(zodRecord._zod.def.keyType);\n const valueType = TsTypeNode.fromZod(zodRecord._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Record\"), [\n keyType,\n valueType,\n ]);\n }\n\n private static fromZodMap(zodMap: $ZodMap): TypeNode {\n const keyType = TsTypeNode.fromZod(zodMap._zod.def.keyType);\n const valueType = TsTypeNode.fromZod(zodMap._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Map\"), [\n keyType,\n valueType,\n ]);\n }\n\n private static fromZodSet(zodSet: $ZodSet): TypeNode {\n const innerType = TsTypeNode.fromZod(zodSet._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Set\"), [\n innerType,\n ]);\n }\n\n private static fromZodLiteral(zodLiteral: $ZodLiteral): TypeNode {\n if (zodLiteral._zod.def.values.length === 0) {\n throw new Error(\"ZodLiteral has no values\");\n }\n const value = zodLiteral._zod.def.values[0];\n\n if (typeof value === \"string\") {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value));\n }\n if (typeof value === \"number\") {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value));\n }\n if (typeof value === \"boolean\") {\n return factory.createLiteralTypeNode(\n value ? factory.createTrue() : factory.createFalse()\n );\n }\n if (typeof value === \"bigint\") {\n return factory.createLiteralTypeNode(\n factory.createBigIntLiteral(value.toString())\n );\n }\n if (value === null) {\n return factory.createLiteralTypeNode(factory.createNull());\n }\n if (value === undefined) {\n return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);\n }\n\n throw new Error(`Unsupported literal type: ${typeof value}`);\n }\n\n private static fromZodEnum(zodEnum: $ZodEnum): TypeNode {\n const entries = Object.entries(zodEnum._zod.def.entries);\n const types = entries.map(([key, _value]) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key));\n });\n return factory.createUnionTypeNode(types);\n }\n\n private static fromZodPromise(zodPromise: $ZodPromise): TypeNode {\n const innerType = TsTypeNode.fromZod(zodPromise._zod.def.innerType);\n return factory.createTypeReferenceNode(\n factory.createIdentifier(\"Promise\"),\n [innerType]\n );\n }\n\n private static fromZodLazy(_zodLazy: $ZodLazy): TypeNode {\n // TODO: handle zodLazy\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodOptional(zodOptional: $ZodOptional): TypeNode {\n const innerType = TsTypeNode.fromZod(zodOptional._zod.def.innerType);\n return factory.createUnionTypeNode([\n innerType,\n factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword),\n ]);\n }\n\n private static fromZodDefault(zodDefault: $ZodDefault): TypeNode {\n const innerType = TsTypeNode.fromZod(zodDefault._zod.def.innerType);\n\n const filteredNodes: Node[] = [];\n innerType.forEachChild(node => {\n if (node.kind !== SyntaxKind.UndefinedKeyword) {\n filteredNodes.push(node);\n }\n });\n\n // TODO: is TsTypeNode correct?\n // @ts-expect-error needed to set children\n innerType.types = filteredNodes;\n return innerType;\n }\n\n private static fromZodTemplateLiteral(\n _zodTemplateLiteral: $ZodTemplateLiteral\n ): TypeNode {\n // TODO: handle zodTemplateLiteral\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodCustom(_zodCustom: $ZodCustom): TypeNode {\n // TODO: handle zodCustom\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodTransform(_zodTransform: $ZodTransform): TypeNode {\n // TODO: handle zodTransform\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodNonOptional(\n _zodNonOptional: $ZodNonOptional\n ): TypeNode {\n // TODO: handle zodNonOptional\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodReadonly(_zodReadonly: $ZodReadonly): TypeNode {\n // TODO: handle zodReadonly\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodNaN(_zodNaN: $ZodNaN): TypeNode {\n // TODO: handle zodNaN\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodPipe(_zodPipe: $ZodPipe): TypeNode {\n // TODO: handle zodPipe\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodSuccess(_zodSuccess: $ZodSuccess): TypeNode {\n // TODO: handle zodSuccess\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodCatch(_zodCatch: $ZodCatch): TypeNode {\n // TODO: handle zodCatch\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n private static fromZodFile(_zodFile: $ZodFile): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n }\n\n /**\n * Returns a TypeScript AST node representing the property key.\n * If the key is a valid JavaScript identifier, returns an Identifier node.\n * Otherwise, returns a StringLiteral node.\n *\n * @param {string} key - The property key to convert.\n * @returns {Identifier | StringLiteral} The corresponding AST node for the property key.\n */\n private static createTsAstPropertyKey(\n key: string\n ): Identifier | StringLiteral {\n // TODO: is TsTypeNode correct or required anymore?\n if (/^[$A-Z_a-z][\\w$]*$/.test(key)) {\n return factory.createIdentifier(key);\n }\n return factory.createStringLiteral(key);\n }\n}\n","import {\n createPrinter,\n createSourceFile,\n EmitHint,\n ScriptKind,\n ScriptTarget,\n} from \"typescript\";\nimport type { TypeNode } from \"typescript\";\n\nexport class TsTypePrinter {\n static print(tsType: TypeNode): string {\n const sourceFile = createSourceFile(\n \"print.ts\",\n \"\",\n ScriptTarget.Latest,\n false,\n ScriptKind.TS\n );\n const printer = createPrinter();\n return printer.printNode(EmitHint.Unspecified, tsType, sourceFile);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"sourcesContent":["import { factory, SyntaxKind } from \"typescript\";\nimport {\n $ZodAny,\n $ZodArray,\n $ZodBigInt,\n $ZodBoolean,\n $ZodCatch,\n $ZodCustom,\n $ZodDate,\n $ZodDefault,\n $ZodEnum,\n $ZodFile,\n $ZodIntersection,\n $ZodLazy,\n $ZodLiteral,\n $ZodMap,\n $ZodNaN,\n $ZodNever,\n $ZodNonOptional,\n $ZodNull,\n $ZodNullable,\n $ZodNumber,\n $ZodObject,\n $ZodOptional,\n $ZodPipe,\n $ZodPromise,\n $ZodReadonly,\n $ZodRecord,\n $ZodSet,\n $ZodString,\n $ZodSuccess,\n $ZodSymbol,\n $ZodTemplateLiteral,\n $ZodTransform,\n $ZodTuple,\n $ZodUndefined,\n $ZodUnion,\n $ZodUnknown,\n $ZodVoid,\n} from \"zod/v4/core\";\nimport type {\n Identifier,\n Node,\n StringLiteral,\n TypeElement,\n TypeNode,\n} from \"typescript\";\nimport type { $ZodType } from \"zod/v4/core\";\n\nexport function fromZod(zodType: $ZodType): TypeNode {\n if (zodType instanceof $ZodString) {\n return fromZodString(zodType);\n }\n if (zodType instanceof $ZodNumber) {\n return fromZodNumber(zodType);\n }\n if (zodType instanceof $ZodBigInt) {\n return fromZodBigInt(zodType);\n }\n if (zodType instanceof $ZodBoolean) {\n return fromZodBoolean(zodType);\n }\n if (zodType instanceof $ZodDate) {\n return fromZodDate(zodType);\n }\n if (zodType instanceof $ZodSymbol) {\n return fromZodSymbol(zodType);\n }\n if (zodType instanceof $ZodUndefined) {\n return fromZodUndefined(zodType);\n }\n if (zodType instanceof $ZodNullable) {\n return fromZodNullable(zodType);\n }\n if (zodType instanceof $ZodNull) {\n return fromZodNull(zodType);\n }\n if (zodType instanceof $ZodAny) {\n return fromZodAny(zodType);\n }\n if (zodType instanceof $ZodUnknown) {\n return fromZodUnknown(zodType);\n }\n if (zodType instanceof $ZodNever) {\n return fromZodNever(zodType);\n }\n if (zodType instanceof $ZodVoid) {\n return fromZodVoid(zodType);\n }\n if (zodType instanceof $ZodArray) {\n return fromZodArray(zodType);\n }\n if (zodType instanceof $ZodObject) {\n return fromZodObject(zodType);\n }\n if (zodType instanceof $ZodUnion) {\n return fromZodUnion(zodType);\n }\n if (zodType instanceof $ZodIntersection) {\n return fromZodIntersection(zodType);\n }\n if (zodType instanceof $ZodTuple) {\n return fromZodTuple(zodType);\n }\n if (zodType instanceof $ZodRecord) {\n return fromZodRecord(zodType);\n }\n if (zodType instanceof $ZodMap) {\n return fromZodMap(zodType);\n }\n if (zodType instanceof $ZodSet) {\n return fromZodSet(zodType);\n }\n if (zodType instanceof $ZodLiteral) {\n return fromZodLiteral(zodType);\n }\n if (zodType instanceof $ZodEnum) {\n return fromZodEnum(zodType);\n }\n if (zodType instanceof $ZodPromise) {\n return fromZodPromise(zodType);\n }\n if (zodType instanceof $ZodLazy) {\n return fromZodLazy(zodType);\n }\n if (zodType instanceof $ZodOptional) {\n return fromZodOptional(zodType);\n }\n if (zodType instanceof $ZodDefault) {\n return fromZodDefault(zodType);\n }\n if (zodType instanceof $ZodTemplateLiteral) {\n return fromZodTemplateLiteral(zodType);\n }\n if (zodType instanceof $ZodCustom) {\n return fromZodCustom(zodType);\n }\n if (zodType instanceof $ZodTransform) {\n return fromZodTransform(zodType);\n }\n if (zodType instanceof $ZodNonOptional) {\n return fromZodNonOptional(zodType);\n }\n if (zodType instanceof $ZodReadonly) {\n return fromZodReadonly(zodType);\n }\n if (zodType instanceof $ZodNaN) {\n return fromZodNaN(zodType);\n }\n if (zodType instanceof $ZodPipe) {\n return fromZodPipe(zodType);\n }\n if (zodType instanceof $ZodSuccess) {\n return fromZodSuccess(zodType);\n }\n if (zodType instanceof $ZodCatch) {\n return fromZodCatch(zodType);\n }\n if (zodType instanceof $ZodFile) {\n return fromZodFile(zodType);\n }\n\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodString(_zodString: $ZodString): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.StringKeyword);\n}\n\nfunction fromZodNumber(_zodNumber: $ZodNumber): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.NumberKeyword);\n}\n\nfunction fromZodBigInt(_zodBigInt: $ZodBigInt): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.BigIntKeyword);\n}\n\nfunction fromZodBoolean(_zodBoolean: $ZodBoolean): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.BooleanKeyword);\n}\n\nfunction fromZodDate(_zodDate: $ZodDate): TypeNode {\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Date\"));\n}\n\nfunction fromZodSymbol(_zodSymbol: $ZodSymbol): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.SymbolKeyword);\n}\n\nfunction fromZodUndefined(_zodUndefined: $ZodUndefined): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);\n}\n\nfunction fromZodNullable(zodNullable: $ZodNullable): TypeNode {\n const innerType = fromZod(zodNullable._zod.def.innerType);\n return factory.createUnionTypeNode([\n innerType,\n factory.createLiteralTypeNode(factory.createNull()),\n ]);\n}\n\nfunction fromZodNull(_zodNull: $ZodNull): TypeNode {\n return factory.createLiteralTypeNode(factory.createNull());\n}\n\nfunction fromZodAny(_zodAny: $ZodAny): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.AnyKeyword);\n}\n\nfunction fromZodUnknown(_zodUnknown: $ZodUnknown): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodNever(_zodNever: $ZodNever): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.NeverKeyword);\n}\n\nfunction fromZodVoid(_zodVoid: $ZodVoid): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.VoidKeyword);\n}\n\nfunction fromZodArray(zodArray: $ZodArray): TypeNode {\n const innerType = fromZod(zodArray._zod.def.element);\n return factory.createArrayTypeNode(innerType);\n}\n\nfunction fromZodObject(zodObject: $ZodObject): TypeNode {\n const entries = Object.entries(zodObject._zod.def.shape);\n\n const members: TypeElement[] = entries.map(([key, nextZodNode]) => {\n const type = fromZod(nextZodNode);\n\n if (!nextZodNode._zod?.def) {\n console.warn(\n `Zod node for key \"${key}\" does not have a _zod.def property. This may indicate an issue with the Zod schema.`,\n {\n key,\n }\n );\n }\n const { type: nextZodNodeTypeName } = nextZodNode._zod?.def ?? {};\n const isOptional = nextZodNodeTypeName === \"optional\";\n\n const propertySignature = factory.createPropertySignature(\n undefined,\n createTsAstPropertyKey(key),\n isOptional ? factory.createToken(SyntaxKind.QuestionToken) : undefined,\n type\n );\n\n // TODO: add description?\n return propertySignature;\n });\n return factory.createTypeLiteralNode(members);\n}\n\nfunction fromZodUnion(zodUnion: $ZodUnion): TypeNode {\n const options = zodUnion._zod.def.options.map(fromZod);\n return factory.createUnionTypeNode(options);\n}\n\nfunction fromZodIntersection(zodIntersection: $ZodIntersection): TypeNode {\n const left = fromZod(zodIntersection._zod.def.left);\n const right = fromZod(zodIntersection._zod.def.right);\n return factory.createIntersectionTypeNode([left, right]);\n}\n\nfunction fromZodTuple(zodTuple: $ZodTuple): TypeNode {\n const elements = zodTuple._zod.def.items.map(fromZod);\n return factory.createTupleTypeNode(elements);\n}\n\nfunction fromZodRecord(zodRecord: $ZodRecord): TypeNode {\n const keyType = fromZod(zodRecord._zod.def.keyType);\n const valueType = fromZod(zodRecord._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Record\"), [\n keyType,\n valueType,\n ]);\n}\n\nfunction fromZodMap(zodMap: $ZodMap): TypeNode {\n const keyType = fromZod(zodMap._zod.def.keyType);\n const valueType = fromZod(zodMap._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Map\"), [\n keyType,\n valueType,\n ]);\n}\n\nfunction fromZodSet(zodSet: $ZodSet): TypeNode {\n const innerType = fromZod(zodSet._zod.def.valueType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Set\"), [\n innerType,\n ]);\n}\n\nfunction fromZodLiteral(zodLiteral: $ZodLiteral): TypeNode {\n if (zodLiteral._zod.def.values.length === 0) {\n throw new Error(\"ZodLiteral has no values\");\n }\n const value = zodLiteral._zod.def.values[0];\n\n if (typeof value === \"string\") {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value));\n }\n if (typeof value === \"number\") {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value));\n }\n if (typeof value === \"boolean\") {\n return factory.createLiteralTypeNode(\n value ? factory.createTrue() : factory.createFalse()\n );\n }\n if (typeof value === \"bigint\") {\n return factory.createLiteralTypeNode(\n factory.createBigIntLiteral(value.toString())\n );\n }\n if (value === null) {\n return factory.createLiteralTypeNode(factory.createNull());\n }\n if (value === undefined) {\n return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);\n }\n\n throw new Error(`Unsupported literal type: ${typeof value}`);\n}\n\nfunction fromZodEnum(zodEnum: $ZodEnum): TypeNode {\n const entries = Object.entries(zodEnum._zod.def.entries);\n const types = entries.map(([key, _value]) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key));\n });\n return factory.createUnionTypeNode(types);\n}\n\nfunction fromZodPromise(zodPromise: $ZodPromise): TypeNode {\n const innerType = fromZod(zodPromise._zod.def.innerType);\n return factory.createTypeReferenceNode(factory.createIdentifier(\"Promise\"), [\n innerType,\n ]);\n}\n\nfunction fromZodLazy(_zodLazy: $ZodLazy): TypeNode {\n // TODO: handle zodLazy\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodOptional(zodOptional: $ZodOptional): TypeNode {\n const innerType = fromZod(zodOptional._zod.def.innerType);\n return factory.createUnionTypeNode([\n innerType,\n factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword),\n ]);\n}\n\nfunction fromZodDefault(zodDefault: $ZodDefault): TypeNode {\n const innerType = fromZod(zodDefault._zod.def.innerType);\n\n const filteredNodes: Node[] = [];\n innerType.forEachChild(node => {\n if (node.kind !== SyntaxKind.UndefinedKeyword) {\n filteredNodes.push(node);\n }\n });\n\n // TODO: is TsTypeNode correct?\n // @ts-expect-error needed to set children\n innerType.types = filteredNodes;\n return innerType;\n}\n\nfunction fromZodTemplateLiteral(\n _zodTemplateLiteral: $ZodTemplateLiteral\n): TypeNode {\n // TODO: handle zodTemplateLiteral\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodCustom(_zodCustom: $ZodCustom): TypeNode {\n // TODO: handle zodCustom\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodTransform(_zodTransform: $ZodTransform): TypeNode {\n // TODO: handle zodTransform\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodNonOptional(_zodNonOptional: $ZodNonOptional): TypeNode {\n // TODO: handle zodNonOptional\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodReadonly(_zodReadonly: $ZodReadonly): TypeNode {\n // TODO: handle zodReadonly\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodNaN(_zodNaN: $ZodNaN): TypeNode {\n // TODO: handle zodNaN\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodPipe(_zodPipe: $ZodPipe): TypeNode {\n // TODO: handle zodPipe\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodSuccess(_zodSuccess: $ZodSuccess): TypeNode {\n // TODO: handle zodSuccess\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodCatch(_zodCatch: $ZodCatch): TypeNode {\n // TODO: handle zodCatch\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\nfunction fromZodFile(_zodFile: $ZodFile): TypeNode {\n return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);\n}\n\n/**\n * Returns a TypeScript AST node representing the property key.\n * If the key is a valid JavaScript identifier, returns an Identifier node.\n * Otherwise, returns a StringLiteral node.\n *\n * @param {string} key - The property key to convert.\n * @returns {Identifier | StringLiteral} The corresponding AST node for the property key.\n */\nfunction createTsAstPropertyKey(key: string): Identifier | StringLiteral {\n // TODO: is TsTypeNode correct or required anymore?\n if (/^[$A-Z_a-z][\\w$]*$/.test(key)) {\n return factory.createIdentifier(key);\n }\n return factory.createStringLiteral(key);\n}\n","import {\n createPrinter,\n createSourceFile,\n EmitHint,\n ScriptKind,\n ScriptTarget,\n} from \"typescript\";\nimport type { TypeNode } from \"typescript\";\n\nexport function print(tsType: TypeNode): string {\n const sourceFile = createSourceFile(\n \"print.ts\",\n \"\",\n ScriptTarget.Latest,\n false,\n ScriptKind.TS\n );\n const printer = createPrinter();\n return printer.printNode(EmitHint.Unspecified, tsType, sourceFile);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rexeus/typeweaver-zod-to-ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Transforms Zod v4 schemas into precise TypeScript shapes. Powered by Typeweaver 🧵✨",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"homepage": "https://github.com/rexeus/typeweaver#readme",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"typescript": "^
|
|
49
|
+
"typescript": "^6.0.2"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"zod": "^4.3.0"
|