UNPKG

@hey-api/openapi-ts

Version:

🌀 OpenAPI to TypeScript codegen. Production-ready SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal.

1 lines • 5.29 kB
{"version":3,"file":"run.mjs","names":["pkg.bin","pkg.version","userConfig: Record<string, unknown>"],"sources":["../package.json","../src/cli.ts","../src/run.ts"],"sourcesContent":["","import type { OptionValues } from 'commander';\nimport { Command } from 'commander';\n\nimport { createClient } from '~/index';\n\nimport pkg from '../package.json' assert { type: 'json' };\n\nconst stringToBoolean = (\n value: string | undefined,\n): boolean | string | undefined => {\n if (value === 'true') return true;\n if (value === 'false') return false;\n return value;\n};\n\nconst processParams = (\n obj: OptionValues,\n booleanKeys: ReadonlyArray<string>,\n): OptionValues => {\n for (const key of booleanKeys) {\n const value = obj[key];\n if (typeof value === 'string') {\n const parsedValue = stringToBoolean(value);\n delete obj[key];\n obj[key] = parsedValue;\n }\n }\n return obj;\n};\n\nexport const runCli = async (): Promise<void> => {\n const params = new Command()\n .name(Object.keys(pkg.bin)[0]!)\n .usage('[options]')\n .version(pkg.version)\n .option('-c, --client <value>', 'HTTP client to generate')\n .option('-d, --debug', 'Set log level to debug')\n .option('--dry-run [value]', 'Skip writing files to disk?')\n .option('-f, --file [value]', 'Path to the config file')\n .option(\n '-i, --input <value>',\n 'OpenAPI specification (path, url, or string content)',\n )\n .option('-l, --logs [value]', 'Logs folder')\n .option('-o, --output <value>', 'Output folder')\n .option('-p, --plugins [value...]', \"List of plugins you'd like to use\")\n .option('-s, --silent', 'Set log level to silent')\n .option(\n '--no-log-file',\n 'Disable writing a log file. Works like --silent but without suppressing console output',\n )\n .option(\n '-w, --watch [value]',\n 'Regenerate the client when the input file changes?',\n )\n .parse(process.argv)\n .opts();\n\n let userConfig: Record<string, unknown>;\n\n try {\n userConfig = processParams(params, ['dryRun', 'logFile']);\n\n if (userConfig.file) {\n userConfig.configFile = userConfig.file;\n delete userConfig.file;\n }\n\n if (params.plugins === true) {\n userConfig.plugins = [];\n } else if (params.plugins) {\n userConfig.plugins = params.plugins;\n } else if (userConfig.client) {\n userConfig.plugins = ['@hey-api/typescript', '@hey-api/sdk'];\n }\n\n if (userConfig.client) {\n (userConfig.plugins as Array<string>).push(userConfig.client as string);\n delete userConfig.client;\n }\n\n userConfig.logs = userConfig.logs\n ? {\n path: userConfig.logs,\n }\n : {};\n\n if (userConfig.debug) {\n (userConfig.logs as Record<string, unknown>).level = 'debug';\n delete userConfig.debug;\n } else if (userConfig.silent) {\n (userConfig.logs as Record<string, unknown>).level = 'silent';\n delete userConfig.silent;\n }\n\n (userConfig.logs as Record<string, unknown>).file = userConfig.logFile;\n delete userConfig.logFile;\n\n if (typeof params.watch === 'string') {\n userConfig.watch = Number.parseInt(params.watch, 10);\n }\n\n if (!Object.keys(userConfig.logs as Record<string, unknown>).length) {\n delete userConfig.logs;\n }\n\n const context = await createClient(\n userConfig as unknown as Required<Parameters<typeof createClient>>[0],\n );\n if (\n !context[0]?.config.input.some(\n (input) => input.watch && input.watch.enabled,\n )\n ) {\n process.exit(0);\n }\n } catch {\n process.exit(1);\n }\n};\n","#!/usr/bin/env node\n\nimport { runCli } from '~/cli';\n\nrunCli();\n"],"mappings":";;;;;;;;;;;;;;ACOA,MAAM,mBACJ,UACiC;AACjC,KAAI,UAAU,OAAQ,QAAO;AAC7B,KAAI,UAAU,QAAS,QAAO;AAC9B,QAAO;;AAGT,MAAM,iBACJ,KACA,gBACiB;AACjB,MAAK,MAAM,OAAO,aAAa;EAC7B,MAAM,QAAQ,IAAI;AAClB,MAAI,OAAO,UAAU,UAAU;GAC7B,MAAM,cAAc,gBAAgB,MAAM;AAC1C,UAAO,IAAI;AACX,OAAI,OAAO;;;AAGf,QAAO;;AAGT,MAAa,SAAS,YAA2B;CAC/C,MAAM,SAAS,IAAI,SAAS,CACzB,KAAK,OAAO,KAAKA,IAAQ,CAAC,GAAI,CAC9B,MAAM,YAAY,CAClB,QAAQC,QAAY,CACpB,OAAO,wBAAwB,0BAA0B,CACzD,OAAO,eAAe,yBAAyB,CAC/C,OAAO,qBAAqB,8BAA8B,CAC1D,OAAO,sBAAsB,0BAA0B,CACvD,OACC,uBACA,uDACD,CACA,OAAO,sBAAsB,cAAc,CAC3C,OAAO,wBAAwB,gBAAgB,CAC/C,OAAO,4BAA4B,oCAAoC,CACvE,OAAO,gBAAgB,0BAA0B,CACjD,OACC,iBACA,yFACD,CACA,OACC,uBACA,qDACD,CACA,MAAM,QAAQ,KAAK,CACnB,MAAM;CAET,IAAIC;AAEJ,KAAI;AACF,eAAa,cAAc,QAAQ,CAAC,UAAU,UAAU,CAAC;AAEzD,MAAI,WAAW,MAAM;AACnB,cAAW,aAAa,WAAW;AACnC,UAAO,WAAW;;AAGpB,MAAI,OAAO,YAAY,KACrB,YAAW,UAAU,EAAE;WACd,OAAO,QAChB,YAAW,UAAU,OAAO;WACnB,WAAW,OACpB,YAAW,UAAU,CAAC,uBAAuB,eAAe;AAG9D,MAAI,WAAW,QAAQ;AACrB,GAAC,WAAW,QAA0B,KAAK,WAAW,OAAiB;AACvE,UAAO,WAAW;;AAGpB,aAAW,OAAO,WAAW,OACzB,EACE,MAAM,WAAW,MAClB,GACD,EAAE;AAEN,MAAI,WAAW,OAAO;AACpB,GAAC,WAAW,KAAiC,QAAQ;AACrD,UAAO,WAAW;aACT,WAAW,QAAQ;AAC5B,GAAC,WAAW,KAAiC,QAAQ;AACrD,UAAO,WAAW;;AAGpB,EAAC,WAAW,KAAiC,OAAO,WAAW;AAC/D,SAAO,WAAW;AAElB,MAAI,OAAO,OAAO,UAAU,SAC1B,YAAW,QAAQ,OAAO,SAAS,OAAO,OAAO,GAAG;AAGtD,MAAI,CAAC,OAAO,KAAK,WAAW,KAAgC,CAAC,OAC3D,QAAO,WAAW;AAMpB,MACE,EAJc,MAAM,aACpB,WACD,EAEU,IAAI,OAAO,MAAM,MACvB,UAAU,MAAM,SAAS,MAAM,MAAM,QACvC,CAED,SAAQ,KAAK,EAAE;SAEX;AACN,UAAQ,KAAK,EAAE;;;;;;ACjHnB,QAAQ"}