UNPKG

typia

Version:

Superfast runtime validators with only one line

1 lines 3.29 kB
{"version":3,"file":"typia.mjs","names":[],"sources":["../../src/executable/typia.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nconst USAGE = `Wrong command has been detected. Use like below:\n\n npx typia generate [options] [files...]\n\n npx typia generate\n --input src/templates \\\\\n --output src/generated\n\n npx typia generate\n --output src/generated \\\\\n \"src/**/*.typia.ts\"\n`;\n\nconst halt = (desc: string): never => {\n console.error(desc);\n process.exit(-1);\n};\n\nconst loadTypeScript = (): void => {\n loadPackage(\n \"typescript/package.json\",\n `typescript has not been installed. Run \"npm i -D ttsc typescript\" before.`,\n );\n};\n\nconst loadTtsc = (): void => {\n loadPackage(\n \"ttsc/package.json\",\n `ttsc has not been installed. Run \"npm i -D ttsc typescript\" before.`,\n );\n};\n\nconst loadPackage = (request: string, desc: string): void => {\n // The ambient CJS `require` does not exist in the transcoded `.mjs`;\n // anchor explicit resolvers on the consuming project (cwd) first, then on\n // this executable's own location, mirroring the original lookup order.\n const resolvers: Array<() => string> = [\n () =>\n createRequire(path.join(process.cwd(), \"package.json\")).resolve(request),\n () => createRequire(path.resolve(process.argv[1] ?? \"\")).resolve(request),\n ];\n for (const resolve of resolvers) {\n try {\n resolve();\n return;\n } catch {}\n }\n halt(desc);\n};\n\nconst isHelp = (args: string[]): boolean => {\n return args.some((arg) => arg === \"--help\" || arg === \"-h\");\n};\n\nconst main = async (): Promise<void> => {\n try {\n await import(\"inquirer\");\n await import(\"commander\");\n } catch {\n halt(`typia has not been installed. Run \"npm i typia\" before.`);\n }\n\n const type: string | undefined = process.argv[2];\n if (type === \"generate\") {\n if (isHelp(process.argv.slice(3)) === false) {\n loadTtsc();\n loadTypeScript();\n }\n const { TypiaGenerateWizard } = await import(\"./TypiaGenerateWizard.js\");\n await TypiaGenerateWizard.generate();\n } else halt(USAGE);\n};\nmain().catch((exp) => {\n console.error(exp instanceof URIError ? exp.message : exp);\n process.exit(-1);\n});\n"],"mappings":";;;;AAIA,MAAM,QAAQ;;;;;;;;;;;;AAad,MAAM,QAAQ,SAAwB;CACpC,QAAQ,MAAM,IAAI;CAClB,QAAQ,KAAK,EAAE;AACjB;AAEA,MAAM,uBAA6B;CACjC,YACE,2BACA,2EACF;AACF;AAEA,MAAM,iBAAuB;CAC3B,YACE,qBACA,qEACF;AACF;AAEA,MAAM,eAAe,SAAiB,SAAuB;CAI3D,MAAM,YAAiC,OAEnC,cAAc,KAAK,KAAK,QAAQ,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,OAAO,SACnE,cAAc,KAAK,QAAQ,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,OAAO,CAC1E;CACA,KAAK,MAAM,WAAW,WACpB,IAAI;EACF,QAAQ;EACR;CACF,QAAQ,CAAC;CAEX,KAAK,IAAI;AACX;AAEA,MAAM,UAAU,SAA4B;CAC1C,OAAO,KAAK,MAAM,QAAQ,QAAQ,YAAY,QAAQ,IAAI;AAC5D;AAEA,MAAM,OAAO,YAA2B;CACtC,IAAI;EACF,MAAM,OAAO;EACb,MAAM,OAAO;CACf,QAAQ;EACN,KAAK,yDAAyD;CAChE;CAGA,IADiC,QAAQ,KAAK,OACjC,YAAY;EACvB,IAAI,OAAO,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,OAAO;GAC3C,SAAS;GACT,eAAe;EACjB;EACA,MAAM,EAAE,wBAAwB,MAAM,OAAO;EAC7C,MAAM,oBAAoB,SAAS;CACrC,OAAO,KAAK,KAAK;AACnB;AACA,KAAK,CAAC,CAAC,OAAO,QAAQ;CACpB,QAAQ,MAAM,eAAe,WAAW,IAAI,UAAU,GAAG;CACzD,QAAQ,KAAK,EAAE;AACjB,CAAC"}