UNPKG

zod-to-ts

Version:

generate TypeScript types from your Zod schema

27 lines (26 loc) 1.11 kB
import ts, { factory as f } from 'typescript'; export function createTypeReferenceFromString(identifier) { return f.createTypeReferenceNode(f.createIdentifier(identifier)); } export function createTypeAlias(node, identifier, comment) { const typeAlias = f.createTypeAliasDeclaration(undefined, f.createIdentifier(identifier), undefined, node); if (comment) { addJsDocComment(typeAlias, comment); } return typeAlias; } export function printNode(node, printerOptions) { const sourceFile = ts.createSourceFile('print.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS); const printer = ts.createPrinter(printerOptions); return printer.printNode(ts.EmitHint.Unspecified, node, sourceFile); } const identifierRE = /^[$A-Z_a-z][\w$]*$/; export function getIdentifierOrStringLiteral(string_) { if (identifierRE.test(string_)) { return f.createIdentifier(string_); } return f.createStringLiteral(string_); } export function addJsDocComment(node, text) { ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, `* ${text} `, true); }