@rexeus/typeweaver-zod-to-ts 0.10.3 → 0.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,7 +49,7 @@ The library provides complete TypeScript type generation for the following Zod s
49
49
  - **Objects**: `z.object()` with nested properties and optional fields
50
50
  - **Unions**: `z.union()`
51
51
  - **Intersections**: `z.intersection()`
52
- - **Modifiers**: `z.optional()`, `z.nullable()`
52
+ - **Modifiers**: `z.optional()`, `z.nullable()`, `z.default()`
53
53
  - **Special types**: `z.unknown()`, `z.any()`, `z.void()`, `z.never()`, `z.null()`, `z.undefined()`
54
54
  - **Async types**: `z.promise()`
55
55
 
@@ -58,7 +58,7 @@ The library provides complete TypeScript type generation for the following Zod s
58
58
  The following Zod types are not yet implemented and will fall back to `unknown` type:
59
59
 
60
60
  - **Advanced types**: `z.lazy()`, `z.templateLiteral()`, `z.custom()`, `z.transform()`, `z.pipe()`
61
- - **Modifiers**: `z.nonOptional()`, `z.readonly()`, `z.default()`, `z.catch()`
61
+ - **Modifiers**: `z.nonoptional()`, `z.readonly()`, `z.catch()`
62
62
  - **Special types**: `z.nan()`, `z.file()`, `z.success()`
63
63
 
64
64
  > **Note**: When encountering unsupported Zod types, the library gracefully falls back to
package/dist/index.cjs CHANGED
@@ -1,6 +1,23 @@
1
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
+ //#region src/errors/EmptyZodLiteralError.ts
5
+ var EmptyZodLiteralError = class extends Error {
6
+ name = "EmptyZodLiteralError";
7
+ constructor() {
8
+ super("ZodLiteral must contain at least one literal value.");
9
+ }
10
+ };
11
+ //#endregion
12
+ //#region src/errors/UnsupportedLiteralValueError.ts
13
+ var UnsupportedLiteralValueError = class extends Error {
14
+ name = "UnsupportedLiteralValueError";
15
+ constructor(valueType) {
16
+ super(`Unsupported Zod literal value type: ${valueType}.`);
17
+ this.valueType = valueType;
18
+ }
19
+ };
20
+ //#endregion
4
21
  //#region src/tsTypeGenerator.ts
5
22
  function fromZod(zodType) {
6
23
  if (zodType instanceof zod_v4_core.$ZodString) return fromZodString(zodType);
@@ -90,8 +107,7 @@ function fromZodObject(zodObject) {
90
107
  const members = Object.entries(zodObject._zod.def.shape).map(([key, nextZodNode]) => {
91
108
  const type = fromZod(nextZodNode);
92
109
  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";
110
+ const isOptional = nextZodNode._zod?.optout === "optional";
95
111
  return typescript.factory.createPropertySignature(void 0, createTsAstPropertyKey(key), isOptional ? typescript.factory.createToken(typescript.SyntaxKind.QuestionToken) : void 0, type);
96
112
  });
97
113
  return typescript.factory.createTypeLiteralNode(members);
@@ -107,6 +123,8 @@ function fromZodIntersection(zodIntersection) {
107
123
  }
108
124
  function fromZodTuple(zodTuple) {
109
125
  const elements = zodTuple._zod.def.items.map(fromZod);
126
+ const { rest } = zodTuple._zod.def;
127
+ if (rest) elements.push(typescript.factory.createRestTypeNode(typescript.factory.createArrayTypeNode(fromZod(rest))));
110
128
  return typescript.factory.createTupleTypeNode(elements);
111
129
  }
112
130
  function fromZodRecord(zodRecord) {
@@ -124,22 +142,29 @@ function fromZodSet(zodSet) {
124
142
  return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Set"), [innerType]);
125
143
  }
126
144
  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];
145
+ if (zodLiteral._zod.def.values.length === 0) throw new EmptyZodLiteralError();
146
+ const types = zodLiteral._zod.def.values.map(fromLiteralValue);
147
+ const [type] = types;
148
+ if (types.length === 1 && type) return type;
149
+ return typescript.factory.createUnionTypeNode(types);
150
+ }
151
+ function fromLiteralValue(value) {
129
152
  if (typeof value === "string") return typescript.factory.createLiteralTypeNode(typescript.factory.createStringLiteral(value));
130
153
  if (typeof value === "number") return typescript.factory.createLiteralTypeNode(typescript.factory.createNumericLiteral(value));
131
154
  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()));
155
+ if (typeof value === "bigint") return typescript.factory.createLiteralTypeNode(typescript.factory.createBigIntLiteral(`${value.toString()}n`));
133
156
  if (value === null) return typescript.factory.createLiteralTypeNode(typescript.factory.createNull());
134
157
  if (value === void 0) return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword);
135
- throw new Error(`Unsupported literal type: ${typeof value}`);
158
+ throw new UnsupportedLiteralValueError(typeof value);
136
159
  }
137
160
  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
- });
161
+ const types = getZodEnumValues(zodEnum._zod.def.entries).map(fromLiteralValue);
141
162
  return typescript.factory.createUnionTypeNode(types);
142
163
  }
164
+ function getZodEnumValues(entries) {
165
+ const numericValues = Object.values(entries).filter((value) => typeof value === "number");
166
+ return Object.entries(entries).filter(([key]) => !numericValues.includes(Number(key))).map(([, value]) => value);
167
+ }
143
168
  function fromZodPromise(zodPromise) {
144
169
  const innerType = fromZod(zodPromise._zod.def.innerType);
145
170
  return typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Promise"), [innerType]);
@@ -152,13 +177,16 @@ function fromZodOptional(zodOptional) {
152
177
  return typescript.factory.createUnionTypeNode([innerType, typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword)]);
153
178
  }
154
179
  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;
180
+ return withoutUndefined(fromZod(zodDefault._zod.def.innerType));
181
+ }
182
+ function withoutUndefined(type) {
183
+ if ((0, typescript.isParenthesizedTypeNode)(type)) return withoutUndefined(type.type);
184
+ if (!(0, typescript.isUnionTypeNode)(type)) return type;
185
+ const types = type.types.map(withoutUndefined).flatMap((nextType) => (0, typescript.isUnionTypeNode)(nextType) ? Array.from(nextType.types) : [nextType]).filter((nextType) => nextType.kind !== typescript.SyntaxKind.UndefinedKeyword);
186
+ const [singleType] = types;
187
+ if (types.length === 0) return type;
188
+ if (types.length === 1 && singleType) return singleType;
189
+ return typescript.factory.createUnionTypeNode(types);
162
190
  }
163
191
  function fromZodTemplateLiteral(_zodTemplateLiteral) {
164
192
  return typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UnknownKeyword);
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"mappings":";;;;iBAuDgB,OAAA,CAAQ,OAAA,EAAS,QAAA,GAAW,QAAA;;;iBC9C5B,KAAA,CAAM,MAAA,EAAQ,QAAA"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"mappings":";;;;iBAuDgB,OAAA,CAAQ,OAAA,EAAS,QAAA,GAAW,QAAA;;;iBC9C5B,KAAA,CAAM,MAAA,EAAQ,QAAA"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,22 @@
1
- import { EmitHint, ScriptKind, ScriptTarget, SyntaxKind, createPrinter, createSourceFile, factory } from "typescript";
1
+ import { EmitHint, ScriptKind, ScriptTarget, SyntaxKind, createPrinter, createSourceFile, factory, isParenthesizedTypeNode, isUnionTypeNode } 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
+ //#region src/errors/EmptyZodLiteralError.ts
4
+ var EmptyZodLiteralError = class extends Error {
5
+ name = "EmptyZodLiteralError";
6
+ constructor() {
7
+ super("ZodLiteral must contain at least one literal value.");
8
+ }
9
+ };
10
+ //#endregion
11
+ //#region src/errors/UnsupportedLiteralValueError.ts
12
+ var UnsupportedLiteralValueError = class extends Error {
13
+ name = "UnsupportedLiteralValueError";
14
+ constructor(valueType) {
15
+ super(`Unsupported Zod literal value type: ${valueType}.`);
16
+ this.valueType = valueType;
17
+ }
18
+ };
19
+ //#endregion
3
20
  //#region src/tsTypeGenerator.ts
4
21
  function fromZod(zodType) {
5
22
  if (zodType instanceof $ZodString) return fromZodString(zodType);
@@ -89,8 +106,7 @@ function fromZodObject(zodObject) {
89
106
  const members = Object.entries(zodObject._zod.def.shape).map(([key, nextZodNode]) => {
90
107
  const type = fromZod(nextZodNode);
91
108
  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";
109
+ const isOptional = nextZodNode._zod?.optout === "optional";
94
110
  return factory.createPropertySignature(void 0, createTsAstPropertyKey(key), isOptional ? factory.createToken(SyntaxKind.QuestionToken) : void 0, type);
95
111
  });
96
112
  return factory.createTypeLiteralNode(members);
@@ -106,6 +122,8 @@ function fromZodIntersection(zodIntersection) {
106
122
  }
107
123
  function fromZodTuple(zodTuple) {
108
124
  const elements = zodTuple._zod.def.items.map(fromZod);
125
+ const { rest } = zodTuple._zod.def;
126
+ if (rest) elements.push(factory.createRestTypeNode(factory.createArrayTypeNode(fromZod(rest))));
109
127
  return factory.createTupleTypeNode(elements);
110
128
  }
111
129
  function fromZodRecord(zodRecord) {
@@ -123,22 +141,29 @@ function fromZodSet(zodSet) {
123
141
  return factory.createTypeReferenceNode(factory.createIdentifier("Set"), [innerType]);
124
142
  }
125
143
  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];
144
+ if (zodLiteral._zod.def.values.length === 0) throw new EmptyZodLiteralError();
145
+ const types = zodLiteral._zod.def.values.map(fromLiteralValue);
146
+ const [type] = types;
147
+ if (types.length === 1 && type) return type;
148
+ return factory.createUnionTypeNode(types);
149
+ }
150
+ function fromLiteralValue(value) {
128
151
  if (typeof value === "string") return factory.createLiteralTypeNode(factory.createStringLiteral(value));
129
152
  if (typeof value === "number") return factory.createLiteralTypeNode(factory.createNumericLiteral(value));
130
153
  if (typeof value === "boolean") return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse());
131
- if (typeof value === "bigint") return factory.createLiteralTypeNode(factory.createBigIntLiteral(value.toString()));
154
+ if (typeof value === "bigint") return factory.createLiteralTypeNode(factory.createBigIntLiteral(`${value.toString()}n`));
132
155
  if (value === null) return factory.createLiteralTypeNode(factory.createNull());
133
156
  if (value === void 0) return factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword);
134
- throw new Error(`Unsupported literal type: ${typeof value}`);
157
+ throw new UnsupportedLiteralValueError(typeof value);
135
158
  }
136
159
  function fromZodEnum(zodEnum) {
137
- const types = Object.entries(zodEnum._zod.def.entries).map(([key, _value]) => {
138
- return factory.createLiteralTypeNode(factory.createStringLiteral(key));
139
- });
160
+ const types = getZodEnumValues(zodEnum._zod.def.entries).map(fromLiteralValue);
140
161
  return factory.createUnionTypeNode(types);
141
162
  }
163
+ function getZodEnumValues(entries) {
164
+ const numericValues = Object.values(entries).filter((value) => typeof value === "number");
165
+ return Object.entries(entries).filter(([key]) => !numericValues.includes(Number(key))).map(([, value]) => value);
166
+ }
142
167
  function fromZodPromise(zodPromise) {
143
168
  const innerType = fromZod(zodPromise._zod.def.innerType);
144
169
  return factory.createTypeReferenceNode(factory.createIdentifier("Promise"), [innerType]);
@@ -151,13 +176,16 @@ function fromZodOptional(zodOptional) {
151
176
  return factory.createUnionTypeNode([innerType, factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword)]);
152
177
  }
153
178
  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;
179
+ return withoutUndefined(fromZod(zodDefault._zod.def.innerType));
180
+ }
181
+ function withoutUndefined(type) {
182
+ if (isParenthesizedTypeNode(type)) return withoutUndefined(type.type);
183
+ if (!isUnionTypeNode(type)) return type;
184
+ const types = type.types.map(withoutUndefined).flatMap((nextType) => isUnionTypeNode(nextType) ? Array.from(nextType.types) : [nextType]).filter((nextType) => nextType.kind !== SyntaxKind.UndefinedKeyword);
185
+ const [singleType] = types;
186
+ if (types.length === 0) return type;
187
+ if (types.length === 1 && singleType) return singleType;
188
+ return factory.createUnionTypeNode(types);
161
189
  }
162
190
  function fromZodTemplateLiteral(_zodTemplateLiteral) {
163
191
  return factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword);
@@ -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 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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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/errors/EmptyZodLiteralError.ts","../src/errors/UnsupportedLiteralValueError.ts","../src/tsTypeGenerator.ts","../src/tsTypePrinter.ts"],"sourcesContent":["export class EmptyZodLiteralError extends Error {\n public override readonly name = \"EmptyZodLiteralError\";\n\n public constructor() {\n super(\"ZodLiteral must contain at least one literal value.\");\n }\n}\n","export class UnsupportedLiteralValueError extends Error {\n public override readonly name = \"UnsupportedLiteralValueError\";\n\n public constructor(public readonly valueType: string) {\n super(`Unsupported Zod literal value type: ${valueType}.`);\n }\n}\n","import {\n factory,\n isParenthesizedTypeNode,\n isUnionTypeNode,\n SyntaxKind,\n} 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 { EmptyZodLiteralError } from \"./errors/EmptyZodLiteralError.js\";\nimport { UnsupportedLiteralValueError } from \"./errors/UnsupportedLiteralValueError.js\";\nimport type {\n Identifier,\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 isOptional = nextZodNode._zod?.optout === \"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 const { rest } = zodTuple._zod.def;\n\n if (rest) {\n elements.push(\n factory.createRestTypeNode(factory.createArrayTypeNode(fromZod(rest)))\n );\n }\n\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 EmptyZodLiteralError();\n }\n const types = zodLiteral._zod.def.values.map(fromLiteralValue);\n\n const [type] = types;\n if (types.length === 1 && type) {\n return type;\n }\n\n return factory.createUnionTypeNode(types);\n}\n\ntype LiteralValue = string | number | boolean | bigint | null | undefined;\n\nfunction fromLiteralValue(value: LiteralValue): TypeNode {\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 }\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 UnsupportedLiteralValueError(typeof value);\n}\n\nfunction fromZodEnum(zodEnum: $ZodEnum): TypeNode {\n const values = getZodEnumValues(zodEnum._zod.def.entries);\n const types = values.map(fromLiteralValue);\n return factory.createUnionTypeNode(types);\n}\n\nfunction getZodEnumValues(\n entries: Record<string, string | number>\n): Array<string | number> {\n const numericValues = Object.values(entries).filter(\n (value): value is number => typeof value === \"number\"\n );\n\n return Object.entries(entries)\n .filter(([key]) => !numericValues.includes(Number(key)))\n .map(([, value]) => value);\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 return withoutUndefined(innerType);\n}\n\nfunction withoutUndefined(type: TypeNode): TypeNode {\n if (isParenthesizedTypeNode(type)) {\n return withoutUndefined(type.type);\n }\n\n if (!isUnionTypeNode(type)) {\n return type;\n }\n\n const types = type.types\n .map(withoutUndefined)\n .flatMap(nextType =>\n isUnionTypeNode(nextType) ? Array.from(nextType.types) : [nextType]\n )\n .filter(nextType => nextType.kind !== SyntaxKind.UndefinedKeyword);\n\n const [singleType] = types;\n if (types.length === 0) {\n return type;\n }\n if (types.length === 1 && singleType) {\n return singleType;\n }\n\n return factory.createUnionTypeNode(types);\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.10.3",
3
+ "version": "0.10.5",
4
4
  "description": "Transforms Zod v4 schemas into precise TypeScript shapes. Powered by Typeweaver 🧵✨",
5
5
  "type": "module",
6
6
  "sideEffects": false,