UNPKG

typia

Version:

Superfast runtime validators with only one line

60 lines (56 loc) 1.75 kB
#!/usr/bin/env node import path from "node:path"; import { createRequire } from "node:module"; //#region src/executable/typia.ts const USAGE = `Wrong command has been detected. Use like below: npx typia generate [options] [files...] npx typia generate --input src/templates \\ --output src/generated npx typia generate --output src/generated \\ "src/**/*.typia.ts" `; const halt = (desc) => { console.error(desc); process.exit(-1); }; const loadTypeScript = () => { loadPackage("typescript/package.json", `typescript has not been installed. Run "npm i -D ttsc typescript" before.`); }; const loadTtsc = () => { loadPackage("ttsc/package.json", `ttsc has not been installed. Run "npm i -D ttsc typescript" before.`); }; const loadPackage = (request, desc) => { const resolvers = [() => createRequire(path.join(process.cwd(), "package.json")).resolve(request), () => createRequire(path.resolve(process.argv[1] ?? "")).resolve(request)]; for (const resolve of resolvers) try { resolve(); return; } catch {} halt(desc); }; const isHelp = (args) => { return args.some((arg) => arg === "--help" || arg === "-h"); }; const main = async () => { try { await import("inquirer"); await import("commander"); } catch { halt(`typia has not been installed. Run "npm i typia" before.`); } if (process.argv[2] === "generate") { if (isHelp(process.argv.slice(3)) === false) { loadTtsc(); loadTypeScript(); } const { TypiaGenerateWizard } = await import("./TypiaGenerateWizard.mjs"); await TypiaGenerateWizard.generate(); } else halt(USAGE); }; main().catch((exp) => { console.error(exp instanceof URIError ? exp.message : exp); process.exit(-1); }); //#endregion //# sourceMappingURL=typia.mjs.map