{"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"}