@hey-api/openapi-ts 0.89.2 → 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +14 -13
  2. package/dist/clients/angular/client.ts +4 -0
  3. package/dist/clients/axios/client.ts +4 -0
  4. package/dist/clients/fetch/client.ts +4 -0
  5. package/dist/clients/ky/client.ts +4 -0
  6. package/dist/clients/next/client.ts +4 -0
  7. package/dist/clients/nuxt/client.ts +5 -0
  8. package/dist/clients/nuxt/types.ts +15 -9
  9. package/dist/{config-Baq-Kb-6.d.mts → config-D5jw0Xaw.d.mts} +6582 -5475
  10. package/dist/{config-CREHWzRd.d.cts → config-Dl9mEw3s.d.cts} +4112 -3006
  11. package/dist/index.cjs +2 -1
  12. package/dist/index.d.cts +49 -32
  13. package/dist/index.d.mts +22 -5
  14. package/dist/index.mjs +2 -1
  15. package/dist/internal.cjs +2 -1
  16. package/dist/internal.d.cts +2 -1
  17. package/dist/internal.d.mts +2 -1
  18. package/dist/internal.mjs +2 -1
  19. package/dist/openApi-BfsCCQJN.mjs +14 -0
  20. package/dist/openApi-BfsCCQJN.mjs.map +1 -0
  21. package/dist/openApi-VRTfi3V4.cjs +14 -0
  22. package/dist/openApi-VRTfi3V4.cjs.map +1 -0
  23. package/dist/run.cjs +3 -1
  24. package/dist/run.cjs.map +1 -1
  25. package/dist/run.d.cts +1 -0
  26. package/dist/run.d.mts +1 -0
  27. package/dist/run.mjs +3 -1
  28. package/dist/run.mjs.map +1 -1
  29. package/dist/src-CB7dCcql.cjs +20 -0
  30. package/dist/src-CB7dCcql.cjs.map +1 -0
  31. package/dist/src-DxXY6pL5.mjs +12 -0
  32. package/dist/src-DxXY6pL5.mjs.map +1 -0
  33. package/package.json +6 -6
  34. package/dist/openApi-DV_SToAE.cjs +0 -13
  35. package/dist/openApi-DV_SToAE.cjs.map +0 -1
  36. package/dist/openApi-Dz9FsU_q.mjs +0 -13
  37. package/dist/openApi-Dz9FsU_q.mjs.map +0 -1
  38. package/dist/src-CnDKH9rV.cjs +0 -19
  39. package/dist/src-CnDKH9rV.cjs.map +0 -1
  40. package/dist/src-novPNOHw.mjs +0 -11
  41. package/dist/src-novPNOHw.mjs.map +0 -1
package/dist/run.cjs CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const e=require(`./openApi-DV_SToAE.cjs`),t=require(`./src-CnDKH9rV.cjs`);let n=require(`commander`);var r=`0.89.2`,i={"openapi-ts":`./bin/run.js`};const a=e=>e===`true`?!0:e===`false`?!1:e,o=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`string`){let r=a(t);delete e[n],e[n]=r}}return e},s=async()=>{let e=new n.Command().name(Object.keys(i)[0]).usage(`[options]`).version(r).option(`-c, --client <value>`,`HTTP client to generate`).option(`-d, --debug`,`Set log level to debug`).option(`--dry-run [value]`,`Skip writing files to disk?`).option(`-f, --file [value]`,`Path to the config file`).option(`-i, --input <value>`,`OpenAPI specification (path, url, or string content)`).option(`-l, --logs [value]`,`Logs folder`).option(`-o, --output <value>`,`Output folder`).option(`-p, --plugins [value...]`,`List of plugins you'd like to use`).option(`-s, --silent`,`Set log level to silent`).option(`--no-log-file`,`Disable writing a log file. Works like --silent but without suppressing console output`).option(`-w, --watch [value]`,`Regenerate the client when the input file changes?`).parse(process.argv).opts(),a;try{a=o(e,[`dryRun`,`logFile`]),a.file&&(a.configFile=a.file,delete a.file),e.plugins===!0?a.plugins=[]:e.plugins?a.plugins=e.plugins:a.client&&(a.plugins=[`@hey-api/typescript`,`@hey-api/sdk`]),a.client&&(a.plugins.push(a.client),delete a.client),a.logs=a.logs?{path:a.logs}:{},a.debug?(a.logs.level=`debug`,delete a.debug):a.silent&&(a.logs.level=`silent`,delete a.silent),a.logs.file=a.logFile,delete a.logFile,typeof e.watch==`string`&&(a.watch=Number.parseInt(e.watch,10)),Object.keys(a.logs).length||delete a.logs,(await t.r(a))[0]?.config.input.some(e=>e.watch&&e.watch.enabled)||process.exit(0)}catch{process.exit(1)}};s();
2
+
3
+
4
+ const e=require(`./openApi-VRTfi3V4.cjs`),t=require(`./src-CB7dCcql.cjs`);let n=require(`commander`);var r=`0.90.1`,i={"openapi-ts":`./bin/run.js`};const a=e=>e===`true`?!0:e===`false`?!1:e,o=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`string`){let r=a(t);delete e[n],e[n]=r}}return e},s=async()=>{let e=new n.Command().name(Object.keys(i)[0]).usage(`[options]`).version(r).option(`-c, --client <value>`,`HTTP client to generate`).option(`-d, --debug`,`Set log level to debug`).option(`--dry-run [value]`,`Skip writing files to disk?`).option(`-f, --file [value]`,`Path to the config file`).option(`-i, --input <value>`,`OpenAPI specification (path, url, or string content)`).option(`-l, --logs [value]`,`Logs folder`).option(`-o, --output <value>`,`Output folder`).option(`-p, --plugins [value...]`,`List of plugins you'd like to use`).option(`-s, --silent`,`Set log level to silent`).option(`--no-log-file`,`Disable writing a log file. Works like --silent but without suppressing console output`).option(`-w, --watch [value]`,`Regenerate the client when the input file changes?`).parse(process.argv).opts(),a;try{a=o(e,[`dryRun`,`logFile`]),a.file&&(a.configFile=a.file,delete a.file),e.plugins===!0?a.plugins=[]:e.plugins?a.plugins=e.plugins:a.client&&(a.plugins=[`@hey-api/typescript`,`@hey-api/sdk`]),a.client&&(a.plugins.push(a.client),delete a.client),a.logs=a.logs?{path:a.logs}:{},a.debug?(a.logs.level=`debug`,delete a.debug):a.silent&&(a.logs.level=`silent`,delete a.silent),a.logs.file=a.logFile,delete a.logFile,typeof e.watch==`string`&&(a.watch=Number.parseInt(e.watch,10)),Object.keys(a.logs).length||delete a.logs,(await t.r(a))[0]?.config.input.some(e=>e.watch&&e.watch.enabled)||process.exit(0)}catch{process.exit(1)}};s();
3
5
  //# sourceMappingURL=run.cjs.map
package/dist/run.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.cjs","names":["Command","pkg.bin","pkg.version","userConfig: Record<string, unknown>","createClient"],"sources":["../package.json","../src/cli.ts","../src/run.ts"],"sourcesContent":["{\n \"name\": \"@hey-api/openapi-ts\",\n \"version\": \"0.89.2\",\n \"description\": \"🌀 OpenAPI to TypeScript code generator. Generate API clients, SDKs, validators, and more.\",\n \"homepage\": \"https://heyapi.dev/\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/hey-api/openapi-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/hey-api/openapi-ts/issues\"\n },\n \"license\": \"MIT\",\n \"author\": {\n \"email\": \"lubos@heyapi.dev\",\n \"name\": \"Hey API\",\n \"url\": \"https://heyapi.dev\"\n },\n \"funding\": \"https://github.com/sponsors/hey-api\",\n \"keywords\": [\n \"angular\",\n \"axios\",\n \"codegen\",\n \"fetch\",\n \"generator\",\n \"http\",\n \"javascript\",\n \"json\",\n \"next\",\n \"next.js\",\n \"node\",\n \"nuxt\",\n \"ofetch\",\n \"openapi\",\n \"rest\",\n \"swagger\",\n \"typescript\",\n \"xhr\",\n \"yaml\"\n ],\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"./internal\": {\n \"import\": {\n \"types\": \"./dist/internal.d.mts\",\n \"default\": \"./dist/internal.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/internal.d.cts\",\n \"default\": \"./dist/internal.cjs\"\n }\n },\n \"./package.json\": \"./package.json\"\n },\n \"bin\": {\n \"openapi-ts\": \"./bin/run.js\"\n },\n \"files\": [\n \"bin\",\n \"dist\",\n \"LICENSE.md\",\n \"README.md\"\n ],\n \"scripts\": {\n \"build\": \"tsdown && pnpm check-exports\",\n \"check-exports\": \"attw --pack . --profile node16\",\n \"dev\": \"tsdown --watch\",\n \"prepublishOnly\": \"pnpm build\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:update\": \"vitest watch --update\",\n \"test:watch\": \"vitest watch\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"engines\": {\n \"node\": \">=20.19.0\"\n },\n \"dependencies\": {\n \"@hey-api/codegen-core\": \"workspace:^0.4.0\",\n \"@hey-api/json-schema-ref-parser\": \"1.2.2\",\n \"ansi-colors\": \"4.1.3\",\n \"c12\": \"3.3.2\",\n \"color-support\": \"1.1.3\",\n \"commander\": \"14.0.2\",\n \"open\": \"11.0.0\",\n \"semver\": \"7.7.3\"\n },\n \"peerDependencies\": {\n \"typescript\": \">=5.5.3\"\n },\n \"devDependencies\": {\n \"@angular/common\": \"19.2.17\",\n \"@angular/compiler\": \"19.2.17\",\n \"@angular/compiler-cli\": \"19.2.17\",\n \"@angular/core\": \"19.2.17\",\n \"@angular/platform-browser\": \"19.2.17\",\n \"@angular/platform-browser-dynamic\": \"19.2.17\",\n \"@angular/router\": \"19.2.17\",\n \"@config/vite-base\": \"workspace:*\",\n \"@types/bun\": \"1.3.4\",\n \"@types/cross-spawn\": \"6.0.6\",\n \"@types/semver\": \"7.7.1\",\n \"axios\": \"1.13.2\",\n \"cross-spawn\": \"7.0.6\",\n \"eslint\": \"9.39.1\",\n \"ky\": \"1.14.1\",\n \"nuxt\": \"3.14.1592\",\n \"ofetch\": \"1.5.1\",\n \"prettier\": \"3.4.2\",\n \"rxjs\": \"7.8.2\",\n \"typescript\": \"5.9.3\",\n \"vue\": \"3.5.25\",\n \"yaml\": \"2.8.2\",\n \"zone.js\": \"0.16.0\"\n }\n}\n","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":";2GAEa,WAiEJ,CACL,aAAc,eACf,CC9DH,MAAM,EACJ,GAEI,IAAU,OAAe,GACzB,IAAU,QAAgB,GACvB,EAGH,GACJ,EACA,IACiB,CACjB,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAQ,EAAI,GAClB,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAc,EAAgB,EAAM,CAC1C,OAAO,EAAI,GACX,EAAI,GAAO,GAGf,OAAO,GAGI,EAAS,SAA2B,CAC/C,IAAM,EAAS,IAAIA,EAAAA,SAAS,CACzB,KAAK,OAAO,KAAKC,EAAQ,CAAC,GAAI,CAC9B,MAAM,YAAY,CAClB,QAAQC,EAAY,CACpB,OAAO,uBAAwB,0BAA0B,CACzD,OAAO,cAAe,yBAAyB,CAC/C,OAAO,oBAAqB,8BAA8B,CAC1D,OAAO,qBAAsB,0BAA0B,CACvD,OACC,sBACA,uDACD,CACA,OAAO,qBAAsB,cAAc,CAC3C,OAAO,uBAAwB,gBAAgB,CAC/C,OAAO,2BAA4B,oCAAoC,CACvE,OAAO,eAAgB,0BAA0B,CACjD,OACC,gBACA,yFACD,CACA,OACC,sBACA,qDACD,CACA,MAAM,QAAQ,KAAK,CACnB,MAAM,CAELC,EAEJ,GAAI,CACF,EAAa,EAAc,EAAQ,CAAC,SAAU,UAAU,CAAC,CAErD,EAAW,OACb,EAAW,WAAa,EAAW,KACnC,OAAO,EAAW,MAGhB,EAAO,UAAY,GACrB,EAAW,QAAU,EAAE,CACd,EAAO,QAChB,EAAW,QAAU,EAAO,QACnB,EAAW,SACpB,EAAW,QAAU,CAAC,sBAAuB,eAAe,EAG1D,EAAW,SACZ,EAAW,QAA0B,KAAK,EAAW,OAAiB,CACvE,OAAO,EAAW,QAGpB,EAAW,KAAO,EAAW,KACzB,CACE,KAAM,EAAW,KAClB,CACD,EAAE,CAEF,EAAW,OACZ,EAAW,KAAiC,MAAQ,QACrD,OAAO,EAAW,OACT,EAAW,SACnB,EAAW,KAAiC,MAAQ,SACrD,OAAO,EAAW,QAGnB,EAAW,KAAiC,KAAO,EAAW,QAC/D,OAAO,EAAW,QAEd,OAAO,EAAO,OAAU,WAC1B,EAAW,MAAQ,OAAO,SAAS,EAAO,MAAO,GAAG,EAGjD,OAAO,KAAK,EAAW,KAAgC,CAAC,QAC3D,OAAO,EAAW,MAGJ,MAAMC,EAAAA,EACpB,EACD,EAEU,IAAI,OAAO,MAAM,KACvB,GAAU,EAAM,OAAS,EAAM,MAAM,QACvC,EAED,QAAQ,KAAK,EAAE,MAEX,CACN,QAAQ,KAAK,EAAE,GCjHnB,GAAQ"}
1
+ {"version":3,"file":"run.cjs","names":["Command","pkg.bin","pkg.version","userConfig: Record<string, unknown>","createClient"],"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":";;;;oJCOA,MAAM,EACJ,GAEI,IAAU,OAAe,GACzB,IAAU,QAAgB,GACvB,EAGH,GACJ,EACA,IACiB,CACjB,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAQ,EAAI,GAClB,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAc,EAAgB,EAAM,CAC1C,OAAO,EAAI,GACX,EAAI,GAAO,GAGf,OAAO,GAGI,EAAS,SAA2B,CAC/C,IAAM,EAAS,IAAIA,EAAAA,SAAS,CACzB,KAAK,OAAO,KAAKC,EAAQ,CAAC,GAAI,CAC9B,MAAM,YAAY,CAClB,QAAQC,EAAY,CACpB,OAAO,uBAAwB,0BAA0B,CACzD,OAAO,cAAe,yBAAyB,CAC/C,OAAO,oBAAqB,8BAA8B,CAC1D,OAAO,qBAAsB,0BAA0B,CACvD,OACC,sBACA,uDACD,CACA,OAAO,qBAAsB,cAAc,CAC3C,OAAO,uBAAwB,gBAAgB,CAC/C,OAAO,2BAA4B,oCAAoC,CACvE,OAAO,eAAgB,0BAA0B,CACjD,OACC,gBACA,yFACD,CACA,OACC,sBACA,qDACD,CACA,MAAM,QAAQ,KAAK,CACnB,MAAM,CAELC,EAEJ,GAAI,CACF,EAAa,EAAc,EAAQ,CAAC,SAAU,UAAU,CAAC,CAErD,EAAW,OACb,EAAW,WAAa,EAAW,KACnC,OAAO,EAAW,MAGhB,EAAO,UAAY,GACrB,EAAW,QAAU,EAAE,CACd,EAAO,QAChB,EAAW,QAAU,EAAO,QACnB,EAAW,SACpB,EAAW,QAAU,CAAC,sBAAuB,eAAe,EAG1D,EAAW,SACZ,EAAW,QAA0B,KAAK,EAAW,OAAiB,CACvE,OAAO,EAAW,QAGpB,EAAW,KAAO,EAAW,KACzB,CACE,KAAM,EAAW,KAClB,CACD,EAAE,CAEF,EAAW,OACZ,EAAW,KAAiC,MAAQ,QACrD,OAAO,EAAW,OACT,EAAW,SACnB,EAAW,KAAiC,MAAQ,SACrD,OAAO,EAAW,QAGnB,EAAW,KAAiC,KAAO,EAAW,QAC/D,OAAO,EAAW,QAEd,OAAO,EAAO,OAAU,WAC1B,EAAW,MAAQ,OAAO,SAAS,EAAO,MAAO,GAAG,EAGjD,OAAO,KAAK,EAAW,KAAgC,CAAC,QAC3D,OAAO,EAAW,MAGJ,MAAMC,EAAAA,EACpB,EACD,EAEU,IAAI,OAAO,MAAM,KACvB,GAAU,EAAM,OAAS,EAAM,MAAM,QACvC,EAED,QAAQ,KAAK,EAAE,MAEX,CACN,QAAQ,KAAK,EAAE,GCjHnB,GAAQ"}
package/dist/run.d.cts CHANGED
@@ -1 +1,2 @@
1
+
1
2
  export { };
package/dist/run.d.mts CHANGED
@@ -1 +1,2 @@
1
+
1
2
  export { };
package/dist/run.mjs CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import"./openApi-Dz9FsU_q.mjs";import{r as e}from"./src-novPNOHw.mjs";import{Command as t}from"commander";var n=`0.89.2`,r={"openapi-ts":`./bin/run.js`};const i=e=>e===`true`?!0:e===`false`?!1:e,a=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`string`){let r=i(t);delete e[n],e[n]=r}}return e};(async()=>{let i=new t().name(Object.keys(r)[0]).usage(`[options]`).version(n).option(`-c, --client <value>`,`HTTP client to generate`).option(`-d, --debug`,`Set log level to debug`).option(`--dry-run [value]`,`Skip writing files to disk?`).option(`-f, --file [value]`,`Path to the config file`).option(`-i, --input <value>`,`OpenAPI specification (path, url, or string content)`).option(`-l, --logs [value]`,`Logs folder`).option(`-o, --output <value>`,`Output folder`).option(`-p, --plugins [value...]`,`List of plugins you'd like to use`).option(`-s, --silent`,`Set log level to silent`).option(`--no-log-file`,`Disable writing a log file. Works like --silent but without suppressing console output`).option(`-w, --watch [value]`,`Regenerate the client when the input file changes?`).parse(process.argv).opts(),o;try{o=a(i,[`dryRun`,`logFile`]),o.file&&(o.configFile=o.file,delete o.file),i.plugins===!0?o.plugins=[]:i.plugins?o.plugins=i.plugins:o.client&&(o.plugins=[`@hey-api/typescript`,`@hey-api/sdk`]),o.client&&(o.plugins.push(o.client),delete o.client),o.logs=o.logs?{path:o.logs}:{},o.debug?(o.logs.level=`debug`,delete o.debug):o.silent&&(o.logs.level=`silent`,delete o.silent),o.logs.file=o.logFile,delete o.logFile,typeof i.watch==`string`&&(o.watch=Number.parseInt(i.watch,10)),Object.keys(o.logs).length||delete o.logs,(await e(o))[0]?.config.input.some(e=>e.watch&&e.watch.enabled)||process.exit(0)}catch{process.exit(1)}})();export{};
2
+
3
+
4
+ import"./openApi-BfsCCQJN.mjs";import{r as e}from"./src-DxXY6pL5.mjs";import{Command as t}from"commander";var n=`0.90.1`,r={"openapi-ts":`./bin/run.js`};const i=e=>e===`true`?!0:e===`false`?!1:e,a=(e,t)=>{for(let n of t){let t=e[n];if(typeof t==`string`){let r=i(t);delete e[n],e[n]=r}}return e};(async()=>{let i=new t().name(Object.keys(r)[0]).usage(`[options]`).version(n).option(`-c, --client <value>`,`HTTP client to generate`).option(`-d, --debug`,`Set log level to debug`).option(`--dry-run [value]`,`Skip writing files to disk?`).option(`-f, --file [value]`,`Path to the config file`).option(`-i, --input <value>`,`OpenAPI specification (path, url, or string content)`).option(`-l, --logs [value]`,`Logs folder`).option(`-o, --output <value>`,`Output folder`).option(`-p, --plugins [value...]`,`List of plugins you'd like to use`).option(`-s, --silent`,`Set log level to silent`).option(`--no-log-file`,`Disable writing a log file. Works like --silent but without suppressing console output`).option(`-w, --watch [value]`,`Regenerate the client when the input file changes?`).parse(process.argv).opts(),o;try{o=a(i,[`dryRun`,`logFile`]),o.file&&(o.configFile=o.file,delete o.file),i.plugins===!0?o.plugins=[]:i.plugins?o.plugins=i.plugins:o.client&&(o.plugins=[`@hey-api/typescript`,`@hey-api/sdk`]),o.client&&(o.plugins.push(o.client),delete o.client),o.logs=o.logs?{path:o.logs}:{},o.debug?(o.logs.level=`debug`,delete o.debug):o.silent&&(o.logs.level=`silent`,delete o.silent),o.logs.file=o.logFile,delete o.logFile,typeof i.watch==`string`&&(o.watch=Number.parseInt(i.watch,10)),Object.keys(o.logs).length||delete o.logs,(await e(o))[0]?.config.input.some(e=>e.watch&&e.watch.enabled)||process.exit(0)}catch{process.exit(1)}})();export{};
3
5
  //# sourceMappingURL=run.mjs.map
package/dist/run.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.mjs","names":["pkg.bin","pkg.version","userConfig: Record<string, unknown>"],"sources":["../package.json","../src/cli.ts","../src/run.ts"],"sourcesContent":["{\n \"name\": \"@hey-api/openapi-ts\",\n \"version\": \"0.89.2\",\n \"description\": \"🌀 OpenAPI to TypeScript code generator. Generate API clients, SDKs, validators, and more.\",\n \"homepage\": \"https://heyapi.dev/\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/hey-api/openapi-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/hey-api/openapi-ts/issues\"\n },\n \"license\": \"MIT\",\n \"author\": {\n \"email\": \"lubos@heyapi.dev\",\n \"name\": \"Hey API\",\n \"url\": \"https://heyapi.dev\"\n },\n \"funding\": \"https://github.com/sponsors/hey-api\",\n \"keywords\": [\n \"angular\",\n \"axios\",\n \"codegen\",\n \"fetch\",\n \"generator\",\n \"http\",\n \"javascript\",\n \"json\",\n \"next\",\n \"next.js\",\n \"node\",\n \"nuxt\",\n \"ofetch\",\n \"openapi\",\n \"rest\",\n \"swagger\",\n \"typescript\",\n \"xhr\",\n \"yaml\"\n ],\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"./internal\": {\n \"import\": {\n \"types\": \"./dist/internal.d.mts\",\n \"default\": \"./dist/internal.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/internal.d.cts\",\n \"default\": \"./dist/internal.cjs\"\n }\n },\n \"./package.json\": \"./package.json\"\n },\n \"bin\": {\n \"openapi-ts\": \"./bin/run.js\"\n },\n \"files\": [\n \"bin\",\n \"dist\",\n \"LICENSE.md\",\n \"README.md\"\n ],\n \"scripts\": {\n \"build\": \"tsdown && pnpm check-exports\",\n \"check-exports\": \"attw --pack . --profile node16\",\n \"dev\": \"tsdown --watch\",\n \"prepublishOnly\": \"pnpm build\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:update\": \"vitest watch --update\",\n \"test:watch\": \"vitest watch\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"engines\": {\n \"node\": \">=20.19.0\"\n },\n \"dependencies\": {\n \"@hey-api/codegen-core\": \"workspace:^0.4.0\",\n \"@hey-api/json-schema-ref-parser\": \"1.2.2\",\n \"ansi-colors\": \"4.1.3\",\n \"c12\": \"3.3.2\",\n \"color-support\": \"1.1.3\",\n \"commander\": \"14.0.2\",\n \"open\": \"11.0.0\",\n \"semver\": \"7.7.3\"\n },\n \"peerDependencies\": {\n \"typescript\": \">=5.5.3\"\n },\n \"devDependencies\": {\n \"@angular/common\": \"19.2.17\",\n \"@angular/compiler\": \"19.2.17\",\n \"@angular/compiler-cli\": \"19.2.17\",\n \"@angular/core\": \"19.2.17\",\n \"@angular/platform-browser\": \"19.2.17\",\n \"@angular/platform-browser-dynamic\": \"19.2.17\",\n \"@angular/router\": \"19.2.17\",\n \"@config/vite-base\": \"workspace:*\",\n \"@types/bun\": \"1.3.4\",\n \"@types/cross-spawn\": \"6.0.6\",\n \"@types/semver\": \"7.7.1\",\n \"axios\": \"1.13.2\",\n \"cross-spawn\": \"7.0.6\",\n \"eslint\": \"9.39.1\",\n \"ky\": \"1.14.1\",\n \"nuxt\": \"3.14.1592\",\n \"ofetch\": \"1.5.1\",\n \"prettier\": \"3.4.2\",\n \"rxjs\": \"7.8.2\",\n \"typescript\": \"5.9.3\",\n \"vue\": \"3.5.25\",\n \"yaml\": \"2.8.2\",\n \"zone.js\": \"0.16.0\"\n }\n}\n","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":";gHAEa,WAiEJ,CACL,aAAc,eACf,CC9DH,MAAM,EACJ,GAEI,IAAU,OAAe,GACzB,IAAU,QAAgB,GACvB,EAGH,GACJ,EACA,IACiB,CACjB,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAQ,EAAI,GAClB,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAc,EAAgB,EAAM,CAC1C,OAAO,EAAI,GACX,EAAI,GAAO,GAGf,OAAO,IAGa,SAA2B,CAC/C,IAAM,EAAS,IAAI,GAAS,CACzB,KAAK,OAAO,KAAKA,EAAQ,CAAC,GAAI,CAC9B,MAAM,YAAY,CAClB,QAAQC,EAAY,CACpB,OAAO,uBAAwB,0BAA0B,CACzD,OAAO,cAAe,yBAAyB,CAC/C,OAAO,oBAAqB,8BAA8B,CAC1D,OAAO,qBAAsB,0BAA0B,CACvD,OACC,sBACA,uDACD,CACA,OAAO,qBAAsB,cAAc,CAC3C,OAAO,uBAAwB,gBAAgB,CAC/C,OAAO,2BAA4B,oCAAoC,CACvE,OAAO,eAAgB,0BAA0B,CACjD,OACC,gBACA,yFACD,CACA,OACC,sBACA,qDACD,CACA,MAAM,QAAQ,KAAK,CACnB,MAAM,CAELC,EAEJ,GAAI,CACF,EAAa,EAAc,EAAQ,CAAC,SAAU,UAAU,CAAC,CAErD,EAAW,OACb,EAAW,WAAa,EAAW,KACnC,OAAO,EAAW,MAGhB,EAAO,UAAY,GACrB,EAAW,QAAU,EAAE,CACd,EAAO,QAChB,EAAW,QAAU,EAAO,QACnB,EAAW,SACpB,EAAW,QAAU,CAAC,sBAAuB,eAAe,EAG1D,EAAW,SACZ,EAAW,QAA0B,KAAK,EAAW,OAAiB,CACvE,OAAO,EAAW,QAGpB,EAAW,KAAO,EAAW,KACzB,CACE,KAAM,EAAW,KAClB,CACD,EAAE,CAEF,EAAW,OACZ,EAAW,KAAiC,MAAQ,QACrD,OAAO,EAAW,OACT,EAAW,SACnB,EAAW,KAAiC,MAAQ,SACrD,OAAO,EAAW,QAGnB,EAAW,KAAiC,KAAO,EAAW,QAC/D,OAAO,EAAW,QAEd,OAAO,EAAO,OAAU,WAC1B,EAAW,MAAQ,OAAO,SAAS,EAAO,MAAO,GAAG,EAGjD,OAAO,KAAK,EAAW,KAAgC,CAAC,QAC3D,OAAO,EAAW,MAGJ,MAAM,EACpB,EACD,EAEU,IAAI,OAAO,MAAM,KACvB,GAAU,EAAM,OAAS,EAAM,MAAM,QACvC,EAED,QAAQ,KAAK,EAAE,MAEX,CACN,QAAQ,KAAK,EAAE,KCjHX"}
1
+ {"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":";;;;yJCOA,MAAM,EACJ,GAEI,IAAU,OAAe,GACzB,IAAU,QAAgB,GACvB,EAGH,GACJ,EACA,IACiB,CACjB,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAQ,EAAI,GAClB,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAc,EAAgB,EAAM,CAC1C,OAAO,EAAI,GACX,EAAI,GAAO,GAGf,OAAO,IAGa,SAA2B,CAC/C,IAAM,EAAS,IAAI,GAAS,CACzB,KAAK,OAAO,KAAKA,EAAQ,CAAC,GAAI,CAC9B,MAAM,YAAY,CAClB,QAAQC,EAAY,CACpB,OAAO,uBAAwB,0BAA0B,CACzD,OAAO,cAAe,yBAAyB,CAC/C,OAAO,oBAAqB,8BAA8B,CAC1D,OAAO,qBAAsB,0BAA0B,CACvD,OACC,sBACA,uDACD,CACA,OAAO,qBAAsB,cAAc,CAC3C,OAAO,uBAAwB,gBAAgB,CAC/C,OAAO,2BAA4B,oCAAoC,CACvE,OAAO,eAAgB,0BAA0B,CACjD,OACC,gBACA,yFACD,CACA,OACC,sBACA,qDACD,CACA,MAAM,QAAQ,KAAK,CACnB,MAAM,CAELC,EAEJ,GAAI,CACF,EAAa,EAAc,EAAQ,CAAC,SAAU,UAAU,CAAC,CAErD,EAAW,OACb,EAAW,WAAa,EAAW,KACnC,OAAO,EAAW,MAGhB,EAAO,UAAY,GACrB,EAAW,QAAU,EAAE,CACd,EAAO,QAChB,EAAW,QAAU,EAAO,QACnB,EAAW,SACpB,EAAW,QAAU,CAAC,sBAAuB,eAAe,EAG1D,EAAW,SACZ,EAAW,QAA0B,KAAK,EAAW,OAAiB,CACvE,OAAO,EAAW,QAGpB,EAAW,KAAO,EAAW,KACzB,CACE,KAAM,EAAW,KAClB,CACD,EAAE,CAEF,EAAW,OACZ,EAAW,KAAiC,MAAQ,QACrD,OAAO,EAAW,OACT,EAAW,SACnB,EAAW,KAAiC,MAAQ,SACrD,OAAO,EAAW,QAGnB,EAAW,KAAiC,KAAO,EAAW,QAC/D,OAAO,EAAW,QAEd,OAAO,EAAO,OAAU,WAC1B,EAAW,MAAQ,OAAO,SAAS,EAAO,MAAO,GAAG,EAGjD,OAAO,KAAK,EAAW,KAAgC,CAAC,QAC3D,OAAO,EAAW,MAGJ,MAAM,EACpB,EACD,EAEU,IAAI,OAAO,MAAM,KACvB,GAAU,EAAM,OAAS,EAAM,MAAM,QACvC,EAED,QAAQ,KAAK,EAAE,MAEX,CACN,QAAQ,KAAK,EAAE,KCjHX"}
@@ -0,0 +1,20 @@
1
+
2
+ const e=require(`./openApi-VRTfi3V4.cjs`);let t=require(`@hey-api/codegen-core`),n=require(`ansi-colors`);n=e.P(n);let r=require(`color-support`);r=e.P(r);let i=require(`node:fs`);i=e.P(i);let a=require(`node:path`);a=e.P(a);let o=require(`@hey-api/json-schema-ref-parser`);const s=()=>{if(typeof Bun<`u`){let[t]=Bun.version.split(`.`).map(Number);if(t<1)throw new e.E(`Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`)}else if(typeof process<`u`&&process.versions?.node){let[t]=process.versions.node.split(`.`).map(Number);if(t<20)throw new e.E(`Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`)}};var c=class{spec;constructor(e){this.spec=e}getOperation(e,t){let n=this.spec.paths;if(n)return n[e]?.[t]}setExample(e,t){let n=this.getOperation(e.path,e.method);n&&(n[`x-codeSamples`]||=[],n[`x-codeSamples`].push(t))}};const l=async({context:t})=>{let n=a.default.resolve(t.config.output.path);t.config.output.clean&&i.default.existsSync(n)&&i.default.rmSync(n,{force:!0,recursive:!0});let r=e.y(t.config);`bundle`in r.config&&r.config.bundle&&!t.config.dryRun&&(t.config._FRAGILE_CLIENT_BUNDLE_RENAMED=e.s({meta:{importFileExtension:t.config.output.importFileExtension},outputPath:n,plugin:r,project:t.gen}));for(let e of t.registerPlugins())await e.run();t.gen.plan();let o=new c(t.spec);for(let e of t.intents)await e.run(o);for(let e of t.gen.render()){let r=a.default.resolve(n,e.path),o=a.default.dirname(r);t.config.dryRun||(i.default.mkdirSync(o,{recursive:!0}),i.default.writeFileSync(r,e.content,{encoding:`utf8`}))}let{source:s}=t.config.output;if(s.enabled){let e=s.path===null?void 0:a.default.resolve(n,s.path);!t.config.dryRun&&e&&e!==n&&i.default.mkdirSync(e,{recursive:!0});let r=await s.serialize(t.spec);!t.config.dryRun&&e&&i.default.writeFileSync(a.default.resolve(e,`${s.fileName}.${s.extension}`),r,{encoding:`utf8`}),s.callback&&await s.callback(r)}},u=({patchOptions:e,spec:t})=>{if(!e)return;let n=t;if(`swagger`in n){if(e.version&&n.swagger&&(n.swagger=typeof e.version==`string`?e.version:e.version(n.swagger)),e.meta&&n.info&&e.meta(n.info),e.schemas&&n.definitions)for(let t in e.schemas){let r=n.definitions[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}return}if(e.version&&n.openapi&&(n.openapi=typeof e.version==`string`?e.version:e.version(n.openapi)),e.meta&&n.info&&e.meta(n.info),n.components){if(e.schemas&&n.components.schemas)for(let t in e.schemas){let r=n.components.schemas[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.parameters&&n.components.parameters)for(let t in e.parameters){let r=n.components.parameters[t];if(!r||typeof r!=`object`)continue;let i=e.parameters[t];i(r)}if(e.requestBodies&&n.components.requestBodies)for(let t in e.requestBodies){let r=n.components.requestBodies[t];if(!r||typeof r!=`object`)continue;let i=e.requestBodies[t];i(r)}if(e.responses&&n.components.responses)for(let t in e.responses){let r=n.components.responses[t];if(!r||typeof r!=`object`)continue;let i=e.responses[t];i(r)}}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}},d=e=>{let t={...e,path:``};if(e.path&&(typeof e.path!=`string`||e.registry!==`hey-api`))return t.path=e.path,t;let[n,r]=e.path.split(`?`),i=(r||``).split(`&`).map(e=>e.split(`=`)),a=n||``;a.endsWith(`/`)&&(a=a.slice(0,a.length-1));let[,o]=a.split(`://`),[s,c,l]=(o||``).split(`/`);t.organization=c||e.organization,t.project=l||e.project;let u=[],d=`api_key`;t.api_key=i.find(([e])=>e===d)?.[1]||e.api_key||process.env.HEY_API_TOKEN,t.api_key&&u.push(`${d}=${t.api_key}`);let f=`branch`;t.branch=i.find(([e])=>e===f)?.[1]||e.branch,t.branch&&u.push(`${f}=${t.branch}`);let p=`commit_sha`;t.commit_sha=i.find(([e])=>e===p)?.[1]||e.commit_sha,t.commit_sha&&u.push(`${p}=${t.commit_sha}`);let m=`tags`;t.tags=i.find(([e])=>e===m)?.[1]?.split(`,`)||e.tags,t.tags?.length&&u.push(`${m}=${t.tags.join(`,`)}`);let h=`version`;if(t.version=i.find(([e])=>e===h)?.[1]||e.version,t.version&&u.push(`${h}=${t.version}`),!t.organization)throw Error(`missing organization - from which Hey API Platform organization do you want to generate your output?`);if(!t.project)throw Error(`missing project - from which Hey API Platform project do you want to generate your output?`);let g=u.join(`&`),_=s||`get.heyapi.dev`,v=_.startsWith(`localhost`),y=[v?`http`:`https`,_].join(`://`),b=v?[y,`v1`,`get`,t.organization,t.project].join(`/`):[y,t.organization,t.project].join(`/`);return t.path=g?`${b}?${g}`:b,t},f=(e,t)=>{let r=[],i=n.default.gray(`[Job ${t+1}] `),a=e.length,o=n.default.cyan(`Generating from ${a} ${a===1?`input`:`inputs`}:`);r.push(`${i}⏳ ${o}`),e.forEach((e,t)=>{let a=` [${t+1}] `,o=n.default.cyan(a),s=` `.repeat(a.length);if(typeof e.path!=`string`){r.push(`${i}${o}raw OpenAPI specification`);return}switch(e.registry){case`hey-api`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);r.push(`${i}${o}${t}`),e.branch&&r.push(`${i}${s}${n.default.gray(`branch:`)} ${n.default.green(e.branch)}`),e.commit_sha&&r.push(`${i}${s}${n.default.gray(`commit:`)} ${n.default.green(e.commit_sha)}`),e.tags?.length&&r.push(`${i}${s}${n.default.gray(`tags:`)} ${n.default.green(e.tags.join(`, `))}`),e.version&&r.push(`${i}${s}${n.default.gray(`version:`)} ${n.default.green(e.version)}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`Hey API`)}`);break}case`readme`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);t?r.push(`${i}${o}${t}`):r.push(`${i}${o}${e.path}`),e.uuid&&r.push(`${i}${s}${n.default.gray(`uuid:`)} ${n.default.green(e.uuid)}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`ReadMe`)}`);break}case`scalar`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);r.push(`${i}${o}${t}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`Scalar`)}`);break}default:r.push(`${i}${o}${e.path}`);break}});for(let e of r)console.log(e)},p=async({config:t,dependencies:r,jobIndex:i,logger:s,watches:c})=>{let m=c||Array.from({length:t.input.length},()=>({headers:new Headers})),h=t.input.map(e=>d(e));t.logs.level!==`silent`&&!c&&f(h,i);let g=async(t,n)=>{let r=s.timeEvent(`spec`),{arrayBuffer:i,error:a,resolvedInput:o,response:l}=await e.r({fetchOptions:t.fetch,inputPath:h[n].path,timeout:t.watch.timeout,watch:m[n]});if(r.timeEnd(),a&&!c)throw Error(`Request failed with status ${l.status}: ${l.statusText}`);return{arrayBuffer:i,resolvedInput:o}},_=(await Promise.all(t.input.map((e,t)=>g(e,t)))).filter(e=>e.arrayBuffer||e.resolvedInput),v;if(_.length){let d=new o.$RefParser,p=_.length>1?await d.bundleMany({arrayBuffer:_.map(e=>e.arrayBuffer),pathOrUrlOrSchemas:[],resolvedInputs:_.map(e=>e.resolvedInput)}):await d.bundle({arrayBuffer:_[0].arrayBuffer,pathOrUrlOrSchema:void 0,resolvedInput:_[0].resolvedInput});t.logs.level!==`silent`&&c&&(console.clear(),f(h,i));let m=s.timeEvent(`input.patch`);u({patchOptions:t.parser.patch,spec:p}),m.timeEnd();let g=s.timeEvent(`parser`);v=e.t({config:t,dependencies:r,logger:s,spec:p}),v.graph=e.n(v.ir,s).graph,g.timeEnd();let y=s.timeEvent(`generator`);await l({context:v}),y.timeEnd();let b=s.timeEvent(`postprocess`);if(!t.dryRun&&(e.w(t.output),t.logs.level!==`silent`)){let e=process.env.INIT_CWD?`./${a.default.relative(process.env.INIT_CWD,t.output.path)}`:t.output.path,r=n.default.gray(`[Job ${i+1}] `);console.log(`${r}${n.default.green(`✅ Done!`)} Your output is in ${n.default.cyanBright(e)}`)}b.timeEnd()}let y=t.input.find((e,t)=>e.watch.enabled&&typeof h[t].path==`string`);return y&&setTimeout(()=>{p({config:t,dependencies:r,jobIndex:i,logger:s,watches:m})},y.watch.interval),v},m=`
3
+ 888 | e 888~-_ 888
4
+ 888___| e88~~8e Y88b / d8b 888 \\ 888
5
+ 888 | d888 88b Y888/ /Y88b 888 | 888
6
+ 888 | 8888__888 Y8/ / Y88b 888 / 888
7
+ 888 | Y888 , Y /____Y88b 888_-~ 888
8
+ 888 | "88___/ / / Y88b 888 888
9
+ _/
10
+ `,h=(e,t)=>{let n=[],r=Array.from({length:t?.padding??0}).fill(``);n.push(...r);let i=0,a=``;for(let t of e)t===`
11
+ `?a&&=(n.push(a),i=Math.max(i,a.length),``):a+=t;return n.push(...r),{lines:n,maxLineLength:i}};function g(){let t=e.N(),r=h(`
12
+ 888 | e 888~-_ 888
13
+ 888___| e88~~8e Y88b / d8b 888 \\ 888
14
+ 888 | d888 88b Y888/ /Y88b 888 | 888
15
+ 888 | 8888__888 Y8/ / Y88b 888 / 888
16
+ 888 | Y888 , Y /____Y88b 888_-~ 888
17
+ 888 | "88___/ / / Y88b 888 888
18
+ _/
19
+ `,{padding:1});for(let e of r.lines)console.log(n.default.cyan(e));console.log(n.default.gray(`${t.name} v${t.version}`)),console.log(``)}let _=0;const v=e=>`${e}-${_++}`,y=e=>`${e}-end`,b=e=>`${e}-length`,x=e=>`${e}-start`,S=(e,t)=>{if(e>200)return{color:n.default.red,type:`duration`};if(t>30)return{color:n.default.red,type:`percentage`};if(e>50)return{color:n.default.yellow,type:`duration`};if(t>10)return{color:n.default.yellow,type:`percentage`}};var C=class{events=[];end(e){let t,n=this.events;for(let r of e.position)t=n[r],t?.events&&(n=t.events);t&&!t.end&&(t.end=performance.mark(y(t.id)))}endAllEvents(e){for(let t of e)t.end||=performance.mark(y(t.id)),t.events.length>0&&this.endAllEvents(t.events)}report(e=!0){let t=this.events[0];if(!t)return;this.endAllEvents(this.events);let n=this.events[this.events.length-1],r=`root`,i=v(r);try{let a=performance.measure(b(i),x(t.id),y(n.id));return e&&this.reportEvent({end:n.end,events:this.events,id:i,indent:0,measure:a,name:r,start:t.start}),a}catch{return}}reportEvent({indent:e,...t}){let r=e?n.default.gray:n.default.cyan,i=t.events.length-1;t.events.forEach((a,o)=>{try{let s=performance.measure(b(a.id),x(a.id),y(a.id)),c=Math.ceil(s.duration*100)/100,l=Math.ceil(s.duration/t.measure.duration*100*100)/100,u=e?S(c,l):void 0,d=`${c.toFixed(2).padStart(8)}ms`;u?.type===`duration`&&(d=u.color(d));let f=o===i?`└─ `:`├─ `,p=e?`│ `.repeat(e-1)+f:``,m=38-p.length,h=e?`↳ `:``,g=`${e?` `.repeat(e-1)+h:``}${l.toFixed(2)}%`;u?.type===`percentage`&&(g=u.color(g));let _=n.default.gray(`[root] `);console.log(`${_}${n.default.gray(p)}${r(`${a.name.padEnd(m)} ${d} (${g})`)}`),this.reportEvent({...a,indent:e+1,measure:s})}catch{}})}start(e){return performance.mark(x(e))}storeEvent({result:e,...t}){let n=t.events.length-1,r=t.events[n];if(r&&!r.end){e.position=[...e.position,n],this.storeEvent({...t,events:r.events,result:e});return}let i=t.events.push({...t,events:[]});e.position=[...e.position,i-1]}timeEvent(e){let t=v(e),n=this.start(t),r={events:this.events,id:t,name:e,start:n},i={position:[]};return this.storeEvent({...r,result:i}),{mark:n,timeEnd:()=>this.end(i)}}};const w=async(t,n=new C)=>{let r=typeof t==`function`?await t():t,i=r?r instanceof Array?r:[r]:[],a=i.find(t=>e.T(t).level!==`silent`)?.logs;typeof a==`string`&&(a=e.T({logs:a}));let o;try{s();let t=n.timeEvent(`createClient`),r=n.timeEvent(`config`);o=await e.i({logger:n,userConfigs:i}),o.results.some(e=>e.config.logs.level!==`silent`)&&g(),r.timeEnd();let a=o.results.flatMap(e=>e.errors.map(t=>({error:t,jobIndex:e.jobIndex})));if(a.length)throw new e.D(a);let c=(await Promise.all(o.results.map(async t=>{try{return await p({config:t.config,dependencies:o.dependencies,jobIndex:t.jobIndex,logger:n})}catch(n){throw new e.O(``,{error:n,jobIndex:t.jobIndex})}}))).filter(e=>!!e);t.timeEnd();let l=o.results.some(e=>e.config.logs.level===`debug`);return n.report(l),c}catch(t){let n=o?.results??[],r=n.find(e=>e.config.logs.level!==`silent`)?.config.logs??n[0]?.config.logs??a,s=n.some(e=>e.config.dryRun)??i.some(e=>e.dryRun)??!1,c=r?.file&&!s?e.k(t,r.path??``):void 0;throw(!r||r.level!==`silent`)&&(e.j({error:t,logPath:c}),await e.M({error:t,isInteractive:n.some(e=>e.config.interactive)??i.some(e=>e.interactive)??!1})&&await e.A(t)),t}},T={stringCase({case:t,stripLeadingSeparators:n,value:r}){return e.u(r,t,{stripLeadingSeparators:n})},toCase:e.u};n.default.enabled=(0,r.default)().hasBasic;const E=async e=>typeof e==`function`?await e():e;Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return E}});
20
+ //# sourceMappingURL=src-CB7dCcql.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-CB7dCcql.cjs","names":["ConfigError","path","path","fs","getClientPlugin","generateClientBundle","path","result: Pick<\n Partial<Input>,\n | 'api_key'\n | 'branch'\n | 'commit_sha'\n | 'organization'\n | 'project'\n | 'registry'\n | 'tags'\n | 'version'\n > &\n Pick<Input, 'path'>","path","queryParams: Array<string>","lines: Array<string>","colors","createClient","watches: ReadonlyArray<WatchValues>","getSpec","context: Context | undefined","$RefParser","data","parseOpenApiSpec","buildGraph","lines: Array<string>","loadPackageJson","colors","colors","event: LoggerEvent | undefined","event: LoggerEvent","result: StoredEventResult","getLogs","configs: Configs | undefined","initConfigs","result","ConfigValidationError","pCreateClient","JobError","logCrashReport","shouldReportCrash","openGitHubIssueWithCrashReport","toCase"],"sources":["../src/config/engine.ts","../src/ir/intents.ts","../src/generate/output.ts","../src/openApi/shared/utils/patch.ts","../src/createClient.ts","../src/utils/cli.ts","../src/utils/logger.ts","../src/generate.ts","../src/utils/exports.ts","../src/index.ts"],"sourcesContent":["import { ConfigError } from '~/error';\n\nexport const checkNodeVersion = () => {\n if (typeof Bun !== 'undefined') {\n const [major] = Bun.version.split('.').map(Number);\n if (major! < 1) {\n throw new ConfigError(\n `Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`,\n );\n }\n } else if (typeof process !== 'undefined' && process.versions?.node) {\n const [major] = process.versions.node.split('.').map(Number);\n if (major! < 20) {\n throw new ConfigError(\n `Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`,\n );\n }\n }\n};\n","import type { CodeSampleObject } from '~/openApi/shared/types';\nimport type { MaybePromise } from '~/types/utils';\n\nimport type { IR } from './types';\n\nexport interface ExampleIntent {\n run(ctx: IntentContext): MaybePromise<void>;\n}\n\nexport class IntentContext<Spec extends Record<string, any> = any> {\n private spec: Spec;\n\n constructor(spec: Spec) {\n this.spec = spec;\n }\n\n private getOperation(\n path: string,\n method: string,\n ): Record<string, any> | undefined {\n const paths = (this.spec as any).paths;\n if (!paths) return;\n return paths[path]?.[method];\n }\n\n setExample(operation: IR.OperationObject, example: CodeSampleObject): void {\n const source = this.getOperation(operation.path, operation.method);\n if (!source) return;\n source['x-codeSamples'] ||= [];\n source['x-codeSamples'].push(example);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { Context } from '~/ir/context';\nimport { IntentContext } from '~/ir/intents';\nimport { getClientPlugin } from '~/plugins/@hey-api/client-core/utils';\n\nimport { generateClientBundle } from './client';\n\nexport const generateOutput = async ({ context }: { context: Context }) => {\n const outputPath = path.resolve(context.config.output.path);\n\n if (context.config.output.clean) {\n if (fs.existsSync(outputPath)) {\n fs.rmSync(outputPath, { force: true, recursive: true });\n }\n }\n\n const client = getClientPlugin(context.config);\n if (\n 'bundle' in client.config &&\n client.config.bundle &&\n !context.config.dryRun\n ) {\n // not proud of this one\n // @ts-expect-error\n context.config._FRAGILE_CLIENT_BUNDLE_RENAMED = generateClientBundle({\n meta: {\n importFileExtension: context.config.output.importFileExtension,\n },\n outputPath,\n // @ts-expect-error\n plugin: client,\n project: context.gen,\n });\n }\n\n for (const plugin of context.registerPlugins()) {\n await plugin.run();\n }\n\n context.gen.plan();\n\n const ctx = new IntentContext(context.spec);\n for (const intent of context.intents) {\n await intent.run(ctx);\n }\n\n for (const file of context.gen.render()) {\n const filePath = path.resolve(outputPath, file.path);\n const dir = path.dirname(filePath);\n if (!context.config.dryRun) {\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(filePath, file.content, { encoding: 'utf8' });\n }\n }\n\n const { source } = context.config.output;\n if (source.enabled) {\n const sourcePath =\n source.path === null ? undefined : path.resolve(outputPath, source.path);\n if (!context.config.dryRun && sourcePath && sourcePath !== outputPath) {\n fs.mkdirSync(sourcePath, { recursive: true });\n }\n const serialized = await source.serialize(context.spec);\n // TODO: handle yaml (convert before writing)\n if (!context.config.dryRun && sourcePath) {\n fs.writeFileSync(\n path.resolve(sourcePath, `${source.fileName}.${source.extension}`),\n serialized,\n { encoding: 'utf8' },\n );\n }\n if (source.callback) {\n await source.callback(serialized);\n }\n }\n};\n","import type { OpenApi } from '~/openApi/types';\n\nimport type { Patch } from '../../../types/parser';\n\nexport const patchOpenApiSpec = ({\n patchOptions,\n spec: _spec,\n}: {\n patchOptions: Patch | undefined;\n spec: unknown;\n}) => {\n if (!patchOptions) {\n return;\n }\n\n const spec = _spec as OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X;\n\n if ('swagger' in spec) {\n if (patchOptions.version && spec.swagger) {\n spec.swagger = (\n typeof patchOptions.version === 'string'\n ? patchOptions.version\n : patchOptions.version(spec.swagger)\n ) as typeof spec.swagger;\n }\n\n if (patchOptions.meta && spec.info) {\n patchOptions.meta(spec.info);\n }\n\n if (patchOptions.schemas && spec.definitions) {\n for (const key in patchOptions.schemas) {\n const schema = spec.definitions[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.schemas[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.operations && spec.paths) {\n for (const key in patchOptions.operations) {\n const [method, path] = key.split(' ');\n if (!method || !path) continue;\n\n const pathItem = spec.paths[path as keyof typeof spec.paths];\n if (!pathItem) continue;\n\n const operation =\n pathItem[method.toLocaleLowerCase() as keyof typeof pathItem] ||\n pathItem[method.toLocaleUpperCase() as keyof typeof pathItem];\n if (!operation || typeof operation !== 'object') continue;\n\n const patchFn = patchOptions.operations[key]!;\n patchFn(operation as any);\n }\n }\n return;\n }\n\n if (patchOptions.version && spec.openapi) {\n spec.openapi = (\n typeof patchOptions.version === 'string'\n ? patchOptions.version\n : patchOptions.version(spec.openapi)\n ) as typeof spec.openapi;\n }\n\n if (patchOptions.meta && spec.info) {\n patchOptions.meta(spec.info);\n }\n\n if (spec.components) {\n if (patchOptions.schemas && spec.components.schemas) {\n for (const key in patchOptions.schemas) {\n const schema = spec.components.schemas[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.schemas[key]!;\n patchFn(schema as Parameters<typeof patchFn>[0]);\n }\n }\n\n if (patchOptions.parameters && spec.components.parameters) {\n for (const key in patchOptions.parameters) {\n const schema = spec.components.parameters[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.parameters[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.requestBodies && spec.components.requestBodies) {\n for (const key in patchOptions.requestBodies) {\n const schema = spec.components.requestBodies[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.requestBodies[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.responses && spec.components.responses) {\n for (const key in patchOptions.responses) {\n const schema = spec.components.responses[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.responses[key]!;\n patchFn(schema);\n }\n }\n }\n\n if (patchOptions.operations && spec.paths) {\n for (const key in patchOptions.operations) {\n const [method, path] = key.split(' ');\n if (!method || !path) continue;\n\n const pathItem = spec.paths[path as keyof typeof spec.paths];\n if (!pathItem) continue;\n\n const operation =\n pathItem[method.toLocaleLowerCase() as keyof typeof pathItem] ||\n pathItem[method.toLocaleUpperCase() as keyof typeof pathItem];\n if (!operation || typeof operation !== 'object') continue;\n\n const patchFn = patchOptions.operations[key]!;\n patchFn(operation as any);\n }\n }\n};\n","import path from 'node:path';\n\nimport { $RefParser } from '@hey-api/json-schema-ref-parser';\nimport colors from 'ansi-colors';\n\nimport { postprocessOutput } from '~/config/output';\nimport { generateOutput } from '~/generate/output';\nimport { getSpec } from '~/getSpec';\nimport type { Context } from '~/ir/context';\nimport { parseOpenApiSpec } from '~/openApi';\nimport { buildGraph } from '~/openApi/shared/utils/graph';\nimport { patchOpenApiSpec } from '~/openApi/shared/utils/patch';\nimport type { Config } from '~/types/config';\nimport type { Input } from '~/types/input';\nimport type { WatchValues } from '~/types/types';\nimport type { Logger } from '~/utils/logger';\n\nexport const compileInputPath = (input: Omit<Input, 'watch'>) => {\n const result: Pick<\n Partial<Input>,\n | 'api_key'\n | 'branch'\n | 'commit_sha'\n | 'organization'\n | 'project'\n | 'registry'\n | 'tags'\n | 'version'\n > &\n Pick<Input, 'path'> = {\n ...input,\n path: '',\n };\n\n if (\n input.path &&\n (typeof input.path !== 'string' || input.registry !== 'hey-api')\n ) {\n result.path = input.path;\n return result;\n }\n\n const [basePath, baseQuery] = input.path.split('?');\n const queryParts = (baseQuery || '').split('&');\n const queryPath = queryParts.map((part) => part.split('='));\n\n let path = basePath || '';\n if (path.endsWith('/')) {\n path = path.slice(0, path.length - 1);\n }\n\n const [, pathUrl] = path.split('://');\n const [baseUrl, organization, project] = (pathUrl || '').split('/');\n result.organization = organization || input.organization;\n result.project = project || input.project;\n\n const queryParams: Array<string> = [];\n\n const kApiKey = 'api_key';\n result.api_key =\n queryPath.find(([key]) => key === kApiKey)?.[1] ||\n input.api_key ||\n process.env.HEY_API_TOKEN;\n if (result.api_key) {\n queryParams.push(`${kApiKey}=${result.api_key}`);\n }\n\n const kBranch = 'branch';\n result.branch =\n queryPath.find(([key]) => key === kBranch)?.[1] || input.branch;\n if (result.branch) {\n queryParams.push(`${kBranch}=${result.branch}`);\n }\n\n const kCommitSha = 'commit_sha';\n result.commit_sha =\n queryPath.find(([key]) => key === kCommitSha)?.[1] || input.commit_sha;\n if (result.commit_sha) {\n queryParams.push(`${kCommitSha}=${result.commit_sha}`);\n }\n\n const kTags = 'tags';\n result.tags =\n queryPath.find(([key]) => key === kTags)?.[1]?.split(',') || input.tags;\n if (result.tags?.length) {\n queryParams.push(`${kTags}=${result.tags.join(',')}`);\n }\n\n const kVersion = 'version';\n result.version =\n queryPath.find(([key]) => key === kVersion)?.[1] || input.version;\n if (result.version) {\n queryParams.push(`${kVersion}=${result.version}`);\n }\n\n if (!result.organization) {\n throw new Error(\n 'missing organization - from which Hey API Platform organization do you want to generate your output?',\n );\n }\n\n if (!result.project) {\n throw new Error(\n 'missing project - from which Hey API Platform project do you want to generate your output?',\n );\n }\n\n const query = queryParams.join('&');\n const platformUrl = baseUrl || 'get.heyapi.dev';\n const isLocalhost = platformUrl.startsWith('localhost');\n const platformUrlWithProtocol = [\n isLocalhost ? 'http' : 'https',\n platformUrl,\n ].join('://');\n const compiledPath = isLocalhost\n ? [\n platformUrlWithProtocol,\n 'v1',\n 'get',\n result.organization,\n result.project,\n ].join('/')\n : [platformUrlWithProtocol, result.organization, result.project].join('/');\n result.path = query ? `${compiledPath}?${query}` : compiledPath;\n\n return result;\n};\n\nconst logInputPaths = (\n inputPaths: ReadonlyArray<ReturnType<typeof compileInputPath>>,\n jobIndex: number,\n) => {\n const lines: Array<string> = [];\n\n const jobPrefix = colors.gray(`[Job ${jobIndex + 1}] `);\n const count = inputPaths.length;\n const baseString = colors.cyan(\n `Generating from ${count} ${count === 1 ? 'input' : 'inputs'}:`,\n );\n lines.push(`${jobPrefix}⏳ ${baseString}`);\n\n inputPaths.forEach((inputPath, index) => {\n const itemPrefixStr = ` [${index + 1}] `;\n const itemPrefix = colors.cyan(itemPrefixStr);\n const detailIndent = ' '.repeat(itemPrefixStr.length);\n\n if (typeof inputPath.path !== 'string') {\n lines.push(`${jobPrefix}${itemPrefix}raw OpenAPI specification`);\n return;\n }\n\n switch (inputPath.registry) {\n case 'hey-api': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n if (inputPath.branch) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('branch:')} ${colors.green(\n inputPath.branch,\n )}`,\n );\n }\n if (inputPath.commit_sha) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('commit:')} ${colors.green(\n inputPath.commit_sha,\n )}`,\n );\n }\n if (inputPath.tags?.length) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('tags:')} ${colors.green(\n inputPath.tags.join(', '),\n )}`,\n );\n }\n if (inputPath.version) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('version:')} ${colors.green(\n inputPath.version,\n )}`,\n );\n }\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('Hey API')}`,\n );\n break;\n }\n case 'readme': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n if (!baseInput) {\n lines.push(`${jobPrefix}${itemPrefix}${inputPath.path}`);\n } else {\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n }\n // @ts-expect-error\n if (inputPath.uuid) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('uuid:')} ${colors.green(\n // @ts-expect-error\n inputPath.uuid,\n )}`,\n );\n }\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('ReadMe')}`,\n );\n break;\n }\n case 'scalar': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('Scalar')}`,\n );\n break;\n }\n default:\n lines.push(`${jobPrefix}${itemPrefix}${inputPath.path}`);\n break;\n }\n });\n\n for (const line of lines) {\n console.log(line);\n }\n};\n\nexport const createClient = async ({\n config,\n dependencies,\n jobIndex,\n logger,\n watches: _watches,\n}: {\n config: Config;\n dependencies: Record<string, string>;\n jobIndex: number;\n logger: Logger;\n /**\n * Always undefined on the first run, defined on subsequent runs.\n */\n watches?: ReadonlyArray<WatchValues>;\n}): Promise<Context | undefined> => {\n const watches: ReadonlyArray<WatchValues> =\n _watches ||\n Array.from({ length: config.input.length }, () => ({\n headers: new Headers(),\n }));\n\n const inputPaths = config.input.map((input) => compileInputPath(input));\n\n // on first run, print the message as soon as possible\n if (config.logs.level !== 'silent' && !_watches) {\n logInputPaths(inputPaths, jobIndex);\n }\n\n const getSpecData = async (input: Input, index: number) => {\n const eventSpec = logger.timeEvent('spec');\n const { arrayBuffer, error, resolvedInput, response } = await getSpec({\n fetchOptions: input.fetch,\n inputPath: inputPaths[index]!.path,\n timeout: input.watch.timeout,\n watch: watches[index]!,\n });\n eventSpec.timeEnd();\n\n // throw on first run if there's an error to preserve user experience\n // if in watch mode, subsequent errors won't throw to gracefully handle\n // cases where server might be reloading\n if (error && !_watches) {\n throw new Error(\n `Request failed with status ${response.status}: ${response.statusText}`,\n );\n }\n\n return { arrayBuffer, resolvedInput };\n };\n const specData = (\n await Promise.all(\n config.input.map((input, index) => getSpecData(input, index)),\n )\n ).filter((data) => data.arrayBuffer || data.resolvedInput);\n\n let context: Context | undefined;\n\n if (specData.length) {\n const refParser = new $RefParser();\n const data =\n specData.length > 1\n ? await refParser.bundleMany({\n arrayBuffer: specData.map((data) => data.arrayBuffer!),\n pathOrUrlOrSchemas: [],\n resolvedInputs: specData.map((data) => data.resolvedInput!),\n })\n : await refParser.bundle({\n arrayBuffer: specData[0]!.arrayBuffer,\n pathOrUrlOrSchema: undefined,\n resolvedInput: specData[0]!.resolvedInput,\n });\n\n // on subsequent runs in watch mode, print the message only if we know we're\n // generating the output\n if (config.logs.level !== 'silent' && _watches) {\n console.clear();\n logInputPaths(inputPaths, jobIndex);\n }\n\n const eventInputPatch = logger.timeEvent('input.patch');\n patchOpenApiSpec({ patchOptions: config.parser.patch, spec: data });\n eventInputPatch.timeEnd();\n\n const eventParser = logger.timeEvent('parser');\n context = parseOpenApiSpec({ config, dependencies, logger, spec: data });\n context.graph = buildGraph(context.ir, logger).graph;\n eventParser.timeEnd();\n\n const eventGenerator = logger.timeEvent('generator');\n await generateOutput({ context });\n eventGenerator.timeEnd();\n\n const eventPostprocess = logger.timeEvent('postprocess');\n if (!config.dryRun) {\n postprocessOutput(config.output);\n\n if (config.logs.level !== 'silent') {\n const outputPath = process.env.INIT_CWD\n ? `./${path.relative(process.env.INIT_CWD, config.output.path)}`\n : config.output.path;\n const jobPrefix = colors.gray(`[Job ${jobIndex + 1}] `);\n console.log(\n `${jobPrefix}${colors.green('✅ Done!')} Your output is in ${colors.cyanBright(outputPath)}`,\n );\n }\n }\n eventPostprocess.timeEnd();\n }\n\n const watchedInput = config.input.find(\n (input, index) =>\n input.watch.enabled && typeof inputPaths[index]!.path === 'string',\n );\n\n if (watchedInput) {\n setTimeout(() => {\n createClient({\n config,\n dependencies,\n jobIndex,\n logger,\n watches,\n });\n }, watchedInput.watch.interval);\n }\n\n return context;\n};\n","import colors from 'ansi-colors';\n\nimport { loadPackageJson } from '~/generate/tsConfig';\n\nconst textAscii = `\n888 | e 888~-_ 888\n888___| e88~~8e Y88b / d8b 888 \\\\ 888\n888 | d888 88b Y888/ /Y88b 888 | 888\n888 | 8888__888 Y8/ / Y88b 888 / 888\n888 | Y888 , Y /____Y88b 888_-~ 888\n888 | \"88___/ / / Y88b 888 888\n _/\n`;\n\nconst asciiToLines = (\n ascii: string,\n options?: {\n padding?: number;\n },\n) => {\n const lines: Array<string> = [];\n const padding = Array.from<string>({ length: options?.padding ?? 0 }).fill(\n '',\n );\n lines.push(...padding);\n let maxLineLength = 0;\n let line = '';\n for (const char of ascii) {\n if (char === '\\n') {\n if (line) {\n lines.push(line);\n maxLineLength = Math.max(maxLineLength, line.length);\n line = '';\n }\n } else {\n line += char;\n }\n }\n lines.push(...padding);\n return { lines, maxLineLength };\n};\n\nexport function printCliIntro() {\n const packageJson = loadPackageJson();\n const text = asciiToLines(textAscii, { padding: 1 });\n for (const line of text.lines) {\n console.log(colors.cyan(line));\n }\n console.log(colors.gray(`${packageJson.name} v${packageJson.version}`));\n console.log('');\n}\n","import colors from 'ansi-colors';\n\ninterface LoggerEvent {\n end?: PerformanceMark;\n events: Array<LoggerEvent>;\n id: string; // unique internal key\n name: string;\n start: PerformanceMark;\n}\n\ninterface Severity {\n color: colors.StyleFunction;\n type: 'duration' | 'percentage';\n}\n\ninterface StoredEventResult {\n position: ReadonlyArray<number>;\n}\n\nlet loggerCounter = 0;\nconst nameToId = (name: string) => `${name}-${loggerCounter++}`;\nconst idEnd = (id: string) => `${id}-end`;\nconst idLength = (id: string) => `${id}-length`;\nconst idStart = (id: string) => `${id}-start`;\n\nconst getSeverity = (\n duration: number,\n percentage: number,\n): Severity | undefined => {\n if (duration > 200) {\n return {\n color: colors.red,\n type: 'duration',\n };\n }\n if (percentage > 30) {\n return {\n color: colors.red,\n type: 'percentage',\n };\n }\n if (duration > 50) {\n return {\n color: colors.yellow,\n type: 'duration',\n };\n }\n if (percentage > 10) {\n return {\n color: colors.yellow,\n type: 'percentage',\n };\n }\n return;\n};\n\nexport class Logger {\n private events: Array<LoggerEvent> = [];\n\n private end(result: StoredEventResult): void {\n let event: LoggerEvent | undefined;\n let events = this.events;\n for (const index of result.position) {\n event = events[index];\n if (event?.events) {\n events = event.events;\n }\n }\n if (event && !event.end) {\n event.end = performance.mark(idEnd(event.id));\n }\n }\n\n /**\n * Recursively end all unended events in the event tree.\n * This ensures all events have end marks before measuring.\n */\n private endAllEvents(events: Array<LoggerEvent>): void {\n for (const event of events) {\n if (!event.end) {\n event.end = performance.mark(idEnd(event.id));\n }\n if (event.events.length > 0) {\n this.endAllEvents(event.events);\n }\n }\n }\n\n report(print: boolean = true): PerformanceMeasure | undefined {\n const firstEvent = this.events[0];\n if (!firstEvent) return;\n\n // Ensure all events are ended before reporting\n this.endAllEvents(this.events);\n\n const lastEvent = this.events[this.events.length - 1]!;\n const name = 'root';\n const id = nameToId(name);\n\n try {\n const measure = performance.measure(\n idLength(id),\n idStart(firstEvent.id),\n idEnd(lastEvent.id),\n );\n if (print) {\n this.reportEvent({\n end: lastEvent.end,\n events: this.events,\n id,\n indent: 0,\n measure,\n name,\n start: firstEvent!.start,\n });\n }\n return measure;\n } catch {\n // If measuring fails (e.g., marks don't exist), silently skip reporting\n // to avoid crashing the application\n return;\n }\n }\n\n private reportEvent({\n indent,\n ...parent\n }: LoggerEvent & {\n indent: number;\n measure: PerformanceMeasure;\n }): void {\n const color = !indent ? colors.cyan : colors.gray;\n const lastIndex = parent.events.length - 1;\n\n parent.events.forEach((event, index) => {\n try {\n const measure = performance.measure(\n idLength(event.id),\n idStart(event.id),\n idEnd(event.id),\n );\n const duration = Math.ceil(measure.duration * 100) / 100;\n const percentage =\n Math.ceil((measure.duration / parent.measure.duration) * 100 * 100) /\n 100;\n const severity = indent ? getSeverity(duration, percentage) : undefined;\n\n let durationLabel = `${duration.toFixed(2).padStart(8)}ms`;\n if (severity?.type === 'duration') {\n durationLabel = severity.color(durationLabel);\n }\n\n const branch = index === lastIndex ? '└─ ' : '├─ ';\n const prefix = !indent ? '' : '│ '.repeat(indent - 1) + branch;\n const maxLength = 38 - prefix.length;\n\n const percentageBranch = !indent ? '' : '↳ ';\n const percentagePrefix = indent\n ? ' '.repeat(indent - 1) + percentageBranch\n : '';\n let percentageLabel = `${percentagePrefix}${percentage.toFixed(2)}%`;\n if (severity?.type === 'percentage') {\n percentageLabel = severity.color(percentageLabel);\n }\n const jobPrefix = colors.gray('[root] ');\n console.log(\n `${jobPrefix}${colors.gray(prefix)}${color(\n `${event.name.padEnd(maxLength)} ${durationLabel} (${percentageLabel})`,\n )}`,\n );\n this.reportEvent({ ...event, indent: indent + 1, measure });\n } catch {\n // If measuring fails (e.g., marks don't exist), silently skip this event\n // to avoid crashing the application\n }\n });\n }\n\n private start(id: string): PerformanceMark {\n return performance.mark(idStart(id));\n }\n\n private storeEvent({\n result,\n ...event\n }: Pick<LoggerEvent, 'events' | 'id' | 'name' | 'start'> & {\n result: StoredEventResult;\n }): void {\n const lastEventIndex = event.events.length - 1;\n const lastEvent = event.events[lastEventIndex];\n if (lastEvent && !lastEvent.end) {\n result.position = [...result.position, lastEventIndex];\n this.storeEvent({ ...event, events: lastEvent.events, result });\n return;\n }\n const length = event.events.push({ ...event, events: [] });\n result.position = [...result.position, length - 1];\n }\n\n timeEvent(name: string) {\n const id = nameToId(name);\n const start = this.start(id);\n const event: LoggerEvent = {\n events: this.events,\n id,\n name,\n start,\n };\n const result: StoredEventResult = {\n position: [],\n };\n this.storeEvent({ ...event, result });\n return {\n mark: start,\n timeEnd: () => this.end(result),\n };\n }\n}\n","import { checkNodeVersion } from '~/config/engine';\nimport type { Configs } from '~/config/init';\nimport { initConfigs } from '~/config/init';\nimport { getLogs } from '~/config/logs';\nimport { createClient as pCreateClient } from '~/createClient';\nimport {\n ConfigValidationError,\n JobError,\n logCrashReport,\n openGitHubIssueWithCrashReport,\n printCrashReport,\n shouldReportCrash,\n} from '~/error';\nimport type { Context } from '~/ir/context';\nimport type { UserConfig } from '~/types/config';\nimport type { LazyOrAsync, MaybeArray } from '~/types/utils';\nimport { printCliIntro } from '~/utils/cli';\nimport { Logger } from '~/utils/logger';\n\n/**\n * Generate a client from the provided configuration.\n *\n * @param userConfig User provided {@link UserConfig} configuration(s).\n */\nexport const createClient = async (\n userConfig?: LazyOrAsync<MaybeArray<UserConfig>>,\n logger = new Logger(),\n): Promise<ReadonlyArray<Context>> => {\n const resolvedConfig =\n typeof userConfig === 'function' ? await userConfig() : userConfig;\n const userConfigs = resolvedConfig\n ? resolvedConfig instanceof Array\n ? resolvedConfig\n : [resolvedConfig]\n : [];\n\n let rawLogs = userConfigs.find(\n (config) => getLogs(config).level !== 'silent',\n )?.logs;\n if (typeof rawLogs === 'string') {\n rawLogs = getLogs({ logs: rawLogs });\n }\n\n let configs: Configs | undefined;\n\n try {\n checkNodeVersion();\n\n const eventCreateClient = logger.timeEvent('createClient');\n\n const eventConfig = logger.timeEvent('config');\n configs = await initConfigs({ logger, userConfigs });\n const printIntro = configs.results.some(\n (result) => result.config.logs.level !== 'silent',\n );\n if (printIntro) {\n printCliIntro();\n }\n eventConfig.timeEnd();\n\n const allConfigErrors = configs.results.flatMap((result) =>\n result.errors.map((error) => ({ error, jobIndex: result.jobIndex })),\n );\n if (allConfigErrors.length) {\n throw new ConfigValidationError(allConfigErrors);\n }\n\n const clients = await Promise.all(\n configs.results.map(async (result) => {\n try {\n return await pCreateClient({\n config: result.config,\n dependencies: configs!.dependencies,\n jobIndex: result.jobIndex,\n logger,\n });\n } catch (error) {\n throw new JobError('', {\n error,\n jobIndex: result.jobIndex,\n });\n }\n }),\n );\n const result = clients.filter((client) =>\n Boolean(client),\n ) as ReadonlyArray<Context>;\n\n eventCreateClient.timeEnd();\n\n const printLogs = configs.results.some(\n (result) => result.config.logs.level === 'debug',\n );\n logger.report(printLogs);\n\n return result;\n } catch (error) {\n const results = configs?.results ?? [];\n\n const logs =\n results.find((result) => result.config.logs.level !== 'silent')?.config\n .logs ??\n results[0]?.config.logs ??\n rawLogs;\n const dryRun =\n results.some((result) => result.config.dryRun) ??\n userConfigs.some((config) => config.dryRun) ??\n false;\n const logPath =\n logs?.file && !dryRun\n ? logCrashReport(error, logs.path ?? '')\n : undefined;\n if (!logs || logs.level !== 'silent') {\n printCrashReport({ error, logPath });\n const isInteractive =\n results.some((result) => result.config.interactive) ??\n userConfigs.some((config) => config.interactive) ??\n false;\n if (await shouldReportCrash({ error, isInteractive })) {\n await openGitHubIssueWithCrashReport(error);\n }\n }\n\n throw error;\n }\n};\n","import type { Casing } from './naming';\nimport { toCase } from './naming';\n\n/**\n * Utilities shared across the package.\n */\nexport const utils = {\n /**\n * @deprecated use `toCase` instead\n */\n stringCase({\n case: casing,\n stripLeadingSeparators,\n value,\n }: {\n readonly case: Casing | undefined;\n /**\n * If leading separators have a semantic meaning, we might not want to\n * remove them.\n */\n stripLeadingSeparators?: boolean;\n value: string;\n }) {\n return toCase(value, casing, { stripLeadingSeparators });\n },\n /**\n * Converts the given string to the specified casing.\n */\n toCase,\n};\n","// OVERRIDES\n// hard-coded here because build process doesn't pick up overrides from separate files\nimport '@hey-api/codegen-core';\n\ndeclare module '@hey-api/codegen-core' {\n interface ProjectRenderMeta {\n /**\n * If specified, this will be the file extension used when importing\n * other modules. By default, we don't add a file extension and let the\n * runtime resolve it.\n *\n * @default null\n */\n importFileExtension?: (string & {}) | null;\n }\n\n interface SymbolMeta {\n category?:\n | 'client'\n | 'external'\n | 'hook'\n | 'schema'\n | 'sdk'\n | 'transform'\n | 'type'\n | 'utility'\n | (string & {});\n /**\n * Path to the resource this symbol represents.\n */\n path?: ReadonlyArray<string | number>;\n /**\n * Name of the plugin that registered this symbol.\n */\n pluginName?: string;\n resource?:\n | 'client'\n | 'definition'\n | 'operation'\n | 'webhook'\n | (string & {});\n resourceId?: string;\n role?:\n | 'data'\n | 'error'\n | 'errors'\n | 'options'\n | 'response'\n | 'responses'\n | (string & {});\n /**\n * Tags associated with this symbol.\n */\n tags?: ReadonlyArray<string>;\n tool?:\n | 'angular'\n | 'arktype'\n | 'fastify'\n | 'json-schema'\n | 'sdk'\n | 'typescript'\n | 'valibot'\n | 'zod'\n | (string & {});\n variant?: 'container' | (string & {});\n }\n}\n// END OVERRIDES\n\nimport colors from 'ansi-colors';\n// @ts-expect-error\nimport colorSupport from 'color-support';\n\nimport type { UserConfig } from '~/types/config';\nimport type { LazyOrAsync, MaybeArray } from '~/types/utils';\n\ncolors.enabled = colorSupport().hasBasic;\n\nexport { createClient } from '~/generate';\n\n/**\n * Type helper for openapi-ts.config.ts, returns {@link MaybeArray<UserConfig>} object(s)\n */\nexport const defineConfig = async <T extends MaybeArray<UserConfig>>(\n config: LazyOrAsync<T>,\n): Promise<T> => (typeof config === 'function' ? await config() : config);\n\nexport { defaultPaginationKeywords } from '~/config/parser';\nexport { defaultPlugins } from '~/config/plugins';\nexport type { IR } from '~/ir/types';\nexport { OperationPath, OperationStrategy } from '~/openApi/shared/locations';\nexport type {\n OpenApi,\n OpenApiMetaObject,\n OpenApiOperationObject,\n OpenApiParameterObject,\n OpenApiRequestBodyObject,\n OpenApiResponseObject,\n OpenApiSchemaObject,\n} from '~/openApi/types';\nexport type { DefinePlugin, Plugin } from '~/plugins';\nexport type { AngularClient } from '~/plugins/@hey-api/client-angular';\nexport type { AxiosClient } from '~/plugins/@hey-api/client-axios';\nexport {\n clientDefaultConfig,\n clientDefaultMeta,\n} from '~/plugins/@hey-api/client-core/config';\nexport { clientPluginHandler } from '~/plugins/@hey-api/client-core/plugin';\nexport type { Client } from '~/plugins/@hey-api/client-core/types';\nexport type { FetchClient } from '~/plugins/@hey-api/client-fetch';\nexport type { NextClient } from '~/plugins/@hey-api/client-next';\nexport type { NuxtClient } from '~/plugins/@hey-api/client-nuxt';\nexport type { OfetchClient } from '~/plugins/@hey-api/client-ofetch';\nexport type { ExpressionTransformer } from '~/plugins/@hey-api/transformers/expressions';\nexport type { TypeTransformer } from '~/plugins/@hey-api/transformers/types';\nexport { definePluginConfig } from '~/plugins/shared/utils/config';\nexport * from '~/ts-dsl';\nexport type { UserConfig } from '~/types/config';\nexport { utils } from '~/utils/exports';\nexport { Logger } from '~/utils/logger';\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+
2
+ import{A as e,D as t,E as n,M as r,N as i,O as a,T as o,i as s,j as c,k as l,n as u,r as d,s as f,t as p,u as m,w as h,y as g}from"./openApi-BfsCCQJN.mjs";import"@hey-api/codegen-core";import _ from"ansi-colors";import v from"color-support";import y from"node:fs";import b from"node:path";import{$RefParser as x}from"@hey-api/json-schema-ref-parser";const S=()=>{if(typeof Bun<`u`){let[e]=Bun.version.split(`.`).map(Number);if(e<1)throw new n(`Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`)}else if(typeof process<`u`&&process.versions?.node){let[e]=process.versions.node.split(`.`).map(Number);if(e<20)throw new n(`Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`)}};var C=class{spec;constructor(e){this.spec=e}getOperation(e,t){let n=this.spec.paths;if(n)return n[e]?.[t]}setExample(e,t){let n=this.getOperation(e.path,e.method);n&&(n[`x-codeSamples`]||=[],n[`x-codeSamples`].push(t))}};const w=async({context:e})=>{let t=b.resolve(e.config.output.path);e.config.output.clean&&y.existsSync(t)&&y.rmSync(t,{force:!0,recursive:!0});let n=g(e.config);`bundle`in n.config&&n.config.bundle&&!e.config.dryRun&&(e.config._FRAGILE_CLIENT_BUNDLE_RENAMED=f({meta:{importFileExtension:e.config.output.importFileExtension},outputPath:t,plugin:n,project:e.gen}));for(let t of e.registerPlugins())await t.run();e.gen.plan();let r=new C(e.spec);for(let t of e.intents)await t.run(r);for(let n of e.gen.render()){let r=b.resolve(t,n.path),i=b.dirname(r);e.config.dryRun||(y.mkdirSync(i,{recursive:!0}),y.writeFileSync(r,n.content,{encoding:`utf8`}))}let{source:i}=e.config.output;if(i.enabled){let n=i.path===null?void 0:b.resolve(t,i.path);!e.config.dryRun&&n&&n!==t&&y.mkdirSync(n,{recursive:!0});let r=await i.serialize(e.spec);!e.config.dryRun&&n&&y.writeFileSync(b.resolve(n,`${i.fileName}.${i.extension}`),r,{encoding:`utf8`}),i.callback&&await i.callback(r)}},T=({patchOptions:e,spec:t})=>{if(!e)return;let n=t;if(`swagger`in n){if(e.version&&n.swagger&&(n.swagger=typeof e.version==`string`?e.version:e.version(n.swagger)),e.meta&&n.info&&e.meta(n.info),e.schemas&&n.definitions)for(let t in e.schemas){let r=n.definitions[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}return}if(e.version&&n.openapi&&(n.openapi=typeof e.version==`string`?e.version:e.version(n.openapi)),e.meta&&n.info&&e.meta(n.info),n.components){if(e.schemas&&n.components.schemas)for(let t in e.schemas){let r=n.components.schemas[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.parameters&&n.components.parameters)for(let t in e.parameters){let r=n.components.parameters[t];if(!r||typeof r!=`object`)continue;let i=e.parameters[t];i(r)}if(e.requestBodies&&n.components.requestBodies)for(let t in e.requestBodies){let r=n.components.requestBodies[t];if(!r||typeof r!=`object`)continue;let i=e.requestBodies[t];i(r)}if(e.responses&&n.components.responses)for(let t in e.responses){let r=n.components.responses[t];if(!r||typeof r!=`object`)continue;let i=e.responses[t];i(r)}}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}},E=e=>{let t={...e,path:``};if(e.path&&(typeof e.path!=`string`||e.registry!==`hey-api`))return t.path=e.path,t;let[n,r]=e.path.split(`?`),i=(r||``).split(`&`).map(e=>e.split(`=`)),a=n||``;a.endsWith(`/`)&&(a=a.slice(0,a.length-1));let[,o]=a.split(`://`),[s,c,l]=(o||``).split(`/`);t.organization=c||e.organization,t.project=l||e.project;let u=[],d=`api_key`;t.api_key=i.find(([e])=>e===d)?.[1]||e.api_key||process.env.HEY_API_TOKEN,t.api_key&&u.push(`${d}=${t.api_key}`);let f=`branch`;t.branch=i.find(([e])=>e===f)?.[1]||e.branch,t.branch&&u.push(`${f}=${t.branch}`);let p=`commit_sha`;t.commit_sha=i.find(([e])=>e===p)?.[1]||e.commit_sha,t.commit_sha&&u.push(`${p}=${t.commit_sha}`);let m=`tags`;t.tags=i.find(([e])=>e===m)?.[1]?.split(`,`)||e.tags,t.tags?.length&&u.push(`${m}=${t.tags.join(`,`)}`);let h=`version`;if(t.version=i.find(([e])=>e===h)?.[1]||e.version,t.version&&u.push(`${h}=${t.version}`),!t.organization)throw Error(`missing organization - from which Hey API Platform organization do you want to generate your output?`);if(!t.project)throw Error(`missing project - from which Hey API Platform project do you want to generate your output?`);let g=u.join(`&`),_=s||`get.heyapi.dev`,v=_.startsWith(`localhost`),y=[v?`http`:`https`,_].join(`://`),b=v?[y,`v1`,`get`,t.organization,t.project].join(`/`):[y,t.organization,t.project].join(`/`);return t.path=g?`${b}?${g}`:b,t},D=(e,t)=>{let n=[],r=_.gray(`[Job ${t+1}] `),i=e.length,a=_.cyan(`Generating from ${i} ${i===1?`input`:`inputs`}:`);n.push(`${r}⏳ ${a}`),e.forEach((e,t)=>{let i=` [${t+1}] `,a=_.cyan(i),o=` `.repeat(i.length);if(typeof e.path!=`string`){n.push(`${r}${a}raw OpenAPI specification`);return}switch(e.registry){case`hey-api`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);n.push(`${r}${a}${t}`),e.branch&&n.push(`${r}${o}${_.gray(`branch:`)} ${_.green(e.branch)}`),e.commit_sha&&n.push(`${r}${o}${_.gray(`commit:`)} ${_.green(e.commit_sha)}`),e.tags?.length&&n.push(`${r}${o}${_.gray(`tags:`)} ${_.green(e.tags.join(`, `))}`),e.version&&n.push(`${r}${o}${_.gray(`version:`)} ${_.green(e.version)}`),n.push(`${r}${o}${_.gray(`registry:`)} ${_.green(`Hey API`)}`);break}case`readme`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);t?n.push(`${r}${a}${t}`):n.push(`${r}${a}${e.path}`),e.uuid&&n.push(`${r}${o}${_.gray(`uuid:`)} ${_.green(e.uuid)}`),n.push(`${r}${o}${_.gray(`registry:`)} ${_.green(`ReadMe`)}`);break}case`scalar`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);n.push(`${r}${a}${t}`),n.push(`${r}${o}${_.gray(`registry:`)} ${_.green(`Scalar`)}`);break}default:n.push(`${r}${a}${e.path}`);break}});for(let e of n)console.log(e)},O=async({config:e,dependencies:t,jobIndex:n,logger:r,watches:i})=>{let a=i||Array.from({length:e.input.length},()=>({headers:new Headers})),o=e.input.map(e=>E(e));e.logs.level!==`silent`&&!i&&D(o,n);let s=async(e,t)=>{let n=r.timeEvent(`spec`),{arrayBuffer:s,error:c,resolvedInput:l,response:u}=await d({fetchOptions:e.fetch,inputPath:o[t].path,timeout:e.watch.timeout,watch:a[t]});if(n.timeEnd(),c&&!i)throw Error(`Request failed with status ${u.status}: ${u.statusText}`);return{arrayBuffer:s,resolvedInput:l}},c=(await Promise.all(e.input.map((e,t)=>s(e,t)))).filter(e=>e.arrayBuffer||e.resolvedInput),l;if(c.length){let a=new x,s=c.length>1?await a.bundleMany({arrayBuffer:c.map(e=>e.arrayBuffer),pathOrUrlOrSchemas:[],resolvedInputs:c.map(e=>e.resolvedInput)}):await a.bundle({arrayBuffer:c[0].arrayBuffer,pathOrUrlOrSchema:void 0,resolvedInput:c[0].resolvedInput});e.logs.level!==`silent`&&i&&(console.clear(),D(o,n));let d=r.timeEvent(`input.patch`);T({patchOptions:e.parser.patch,spec:s}),d.timeEnd();let f=r.timeEvent(`parser`);l=p({config:e,dependencies:t,logger:r,spec:s}),l.graph=u(l.ir,r).graph,f.timeEnd();let m=r.timeEvent(`generator`);await w({context:l}),m.timeEnd();let g=r.timeEvent(`postprocess`);if(!e.dryRun&&(h(e.output),e.logs.level!==`silent`)){let t=process.env.INIT_CWD?`./${b.relative(process.env.INIT_CWD,e.output.path)}`:e.output.path,r=_.gray(`[Job ${n+1}] `);console.log(`${r}${_.green(`✅ Done!`)} Your output is in ${_.cyanBright(t)}`)}g.timeEnd()}let f=e.input.find((e,t)=>e.watch.enabled&&typeof o[t].path==`string`);return f&&setTimeout(()=>{O({config:e,dependencies:t,jobIndex:n,logger:r,watches:a})},f.watch.interval),l},k=(e,t)=>{let n=[],r=Array.from({length:t?.padding??0}).fill(``);n.push(...r);let i=0,a=``;for(let t of e)t===`
3
+ `?a&&=(n.push(a),i=Math.max(i,a.length),``):a+=t;return n.push(...r),{lines:n,maxLineLength:i}};function A(){let e=i(),t=k(`
4
+ 888 | e 888~-_ 888
5
+ 888___| e88~~8e Y88b / d8b 888 \\ 888
6
+ 888 | d888 88b Y888/ /Y88b 888 | 888
7
+ 888 | 8888__888 Y8/ / Y88b 888 / 888
8
+ 888 | Y888 , Y /____Y88b 888_-~ 888
9
+ 888 | "88___/ / / Y88b 888 888
10
+ _/
11
+ `,{padding:1});for(let e of t.lines)console.log(_.cyan(e));console.log(_.gray(`${e.name} v${e.version}`)),console.log(``)}let j=0;const M=e=>`${e}-${j++}`,N=e=>`${e}-end`,P=e=>`${e}-length`,F=e=>`${e}-start`,I=(e,t)=>{if(e>200)return{color:_.red,type:`duration`};if(t>30)return{color:_.red,type:`percentage`};if(e>50)return{color:_.yellow,type:`duration`};if(t>10)return{color:_.yellow,type:`percentage`}};var L=class{events=[];end(e){let t,n=this.events;for(let r of e.position)t=n[r],t?.events&&(n=t.events);t&&!t.end&&(t.end=performance.mark(N(t.id)))}endAllEvents(e){for(let t of e)t.end||=performance.mark(N(t.id)),t.events.length>0&&this.endAllEvents(t.events)}report(e=!0){let t=this.events[0];if(!t)return;this.endAllEvents(this.events);let n=this.events[this.events.length-1],r=`root`,i=M(r);try{let a=performance.measure(P(i),F(t.id),N(n.id));return e&&this.reportEvent({end:n.end,events:this.events,id:i,indent:0,measure:a,name:r,start:t.start}),a}catch{return}}reportEvent({indent:e,...t}){let n=e?_.gray:_.cyan,r=t.events.length-1;t.events.forEach((i,a)=>{try{let o=performance.measure(P(i.id),F(i.id),N(i.id)),s=Math.ceil(o.duration*100)/100,c=Math.ceil(o.duration/t.measure.duration*100*100)/100,l=e?I(s,c):void 0,u=`${s.toFixed(2).padStart(8)}ms`;l?.type===`duration`&&(u=l.color(u));let d=a===r?`└─ `:`├─ `,f=e?`│ `.repeat(e-1)+d:``,p=38-f.length,m=e?`↳ `:``,h=`${e?` `.repeat(e-1)+m:``}${c.toFixed(2)}%`;l?.type===`percentage`&&(h=l.color(h));let g=_.gray(`[root] `);console.log(`${g}${_.gray(f)}${n(`${i.name.padEnd(p)} ${u} (${h})`)}`),this.reportEvent({...i,indent:e+1,measure:o})}catch{}})}start(e){return performance.mark(F(e))}storeEvent({result:e,...t}){let n=t.events.length-1,r=t.events[n];if(r&&!r.end){e.position=[...e.position,n],this.storeEvent({...t,events:r.events,result:e});return}let i=t.events.push({...t,events:[]});e.position=[...e.position,i-1]}timeEvent(e){let t=M(e),n=this.start(t),r={events:this.events,id:t,name:e,start:n},i={position:[]};return this.storeEvent({...r,result:i}),{mark:n,timeEnd:()=>this.end(i)}}};const R=async(n,i=new L)=>{let u=typeof n==`function`?await n():n,d=u?u instanceof Array?u:[u]:[],f=d.find(e=>o(e).level!==`silent`)?.logs;typeof f==`string`&&(f=o({logs:f}));let p;try{S();let e=i.timeEvent(`createClient`),n=i.timeEvent(`config`);p=await s({logger:i,userConfigs:d}),p.results.some(e=>e.config.logs.level!==`silent`)&&A(),n.timeEnd();let r=p.results.flatMap(e=>e.errors.map(t=>({error:t,jobIndex:e.jobIndex})));if(r.length)throw new t(r);let o=(await Promise.all(p.results.map(async e=>{try{return await O({config:e.config,dependencies:p.dependencies,jobIndex:e.jobIndex,logger:i})}catch(t){throw new a(``,{error:t,jobIndex:e.jobIndex})}}))).filter(e=>!!e);e.timeEnd();let c=p.results.some(e=>e.config.logs.level===`debug`);return i.report(c),o}catch(t){let n=p?.results??[],i=n.find(e=>e.config.logs.level!==`silent`)?.config.logs??n[0]?.config.logs??f,a=n.some(e=>e.config.dryRun)??d.some(e=>e.dryRun)??!1,o=i?.file&&!a?l(t,i.path??``):void 0;throw(!i||i.level!==`silent`)&&(c({error:t,logPath:o}),await r({error:t,isInteractive:n.some(e=>e.config.interactive)??d.some(e=>e.interactive)??!1})&&await e(t)),t}},z={stringCase({case:e,stripLeadingSeparators:t,value:n}){return m(n,e,{stripLeadingSeparators:t})},toCase:m};_.enabled=v().hasBasic;const B=async e=>typeof e==`function`?await e():e;export{L as i,z as n,R as r,B as t};
12
+ //# sourceMappingURL=src-DxXY6pL5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-DxXY6pL5.mjs","names":["path","path","result: Pick<\n Partial<Input>,\n | 'api_key'\n | 'branch'\n | 'commit_sha'\n | 'organization'\n | 'project'\n | 'registry'\n | 'tags'\n | 'version'\n > &\n Pick<Input, 'path'>","path","queryParams: Array<string>","lines: Array<string>","createClient","watches: ReadonlyArray<WatchValues>","context: Context | undefined","data","lines: Array<string>","event: LoggerEvent | undefined","event: LoggerEvent","result: StoredEventResult","configs: Configs | undefined","result","pCreateClient"],"sources":["../src/config/engine.ts","../src/ir/intents.ts","../src/generate/output.ts","../src/openApi/shared/utils/patch.ts","../src/createClient.ts","../src/utils/cli.ts","../src/utils/logger.ts","../src/generate.ts","../src/utils/exports.ts","../src/index.ts"],"sourcesContent":["import { ConfigError } from '~/error';\n\nexport const checkNodeVersion = () => {\n if (typeof Bun !== 'undefined') {\n const [major] = Bun.version.split('.').map(Number);\n if (major! < 1) {\n throw new ConfigError(\n `Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`,\n );\n }\n } else if (typeof process !== 'undefined' && process.versions?.node) {\n const [major] = process.versions.node.split('.').map(Number);\n if (major! < 20) {\n throw new ConfigError(\n `Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`,\n );\n }\n }\n};\n","import type { CodeSampleObject } from '~/openApi/shared/types';\nimport type { MaybePromise } from '~/types/utils';\n\nimport type { IR } from './types';\n\nexport interface ExampleIntent {\n run(ctx: IntentContext): MaybePromise<void>;\n}\n\nexport class IntentContext<Spec extends Record<string, any> = any> {\n private spec: Spec;\n\n constructor(spec: Spec) {\n this.spec = spec;\n }\n\n private getOperation(\n path: string,\n method: string,\n ): Record<string, any> | undefined {\n const paths = (this.spec as any).paths;\n if (!paths) return;\n return paths[path]?.[method];\n }\n\n setExample(operation: IR.OperationObject, example: CodeSampleObject): void {\n const source = this.getOperation(operation.path, operation.method);\n if (!source) return;\n source['x-codeSamples'] ||= [];\n source['x-codeSamples'].push(example);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { Context } from '~/ir/context';\nimport { IntentContext } from '~/ir/intents';\nimport { getClientPlugin } from '~/plugins/@hey-api/client-core/utils';\n\nimport { generateClientBundle } from './client';\n\nexport const generateOutput = async ({ context }: { context: Context }) => {\n const outputPath = path.resolve(context.config.output.path);\n\n if (context.config.output.clean) {\n if (fs.existsSync(outputPath)) {\n fs.rmSync(outputPath, { force: true, recursive: true });\n }\n }\n\n const client = getClientPlugin(context.config);\n if (\n 'bundle' in client.config &&\n client.config.bundle &&\n !context.config.dryRun\n ) {\n // not proud of this one\n // @ts-expect-error\n context.config._FRAGILE_CLIENT_BUNDLE_RENAMED = generateClientBundle({\n meta: {\n importFileExtension: context.config.output.importFileExtension,\n },\n outputPath,\n // @ts-expect-error\n plugin: client,\n project: context.gen,\n });\n }\n\n for (const plugin of context.registerPlugins()) {\n await plugin.run();\n }\n\n context.gen.plan();\n\n const ctx = new IntentContext(context.spec);\n for (const intent of context.intents) {\n await intent.run(ctx);\n }\n\n for (const file of context.gen.render()) {\n const filePath = path.resolve(outputPath, file.path);\n const dir = path.dirname(filePath);\n if (!context.config.dryRun) {\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(filePath, file.content, { encoding: 'utf8' });\n }\n }\n\n const { source } = context.config.output;\n if (source.enabled) {\n const sourcePath =\n source.path === null ? undefined : path.resolve(outputPath, source.path);\n if (!context.config.dryRun && sourcePath && sourcePath !== outputPath) {\n fs.mkdirSync(sourcePath, { recursive: true });\n }\n const serialized = await source.serialize(context.spec);\n // TODO: handle yaml (convert before writing)\n if (!context.config.dryRun && sourcePath) {\n fs.writeFileSync(\n path.resolve(sourcePath, `${source.fileName}.${source.extension}`),\n serialized,\n { encoding: 'utf8' },\n );\n }\n if (source.callback) {\n await source.callback(serialized);\n }\n }\n};\n","import type { OpenApi } from '~/openApi/types';\n\nimport type { Patch } from '../../../types/parser';\n\nexport const patchOpenApiSpec = ({\n patchOptions,\n spec: _spec,\n}: {\n patchOptions: Patch | undefined;\n spec: unknown;\n}) => {\n if (!patchOptions) {\n return;\n }\n\n const spec = _spec as OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X;\n\n if ('swagger' in spec) {\n if (patchOptions.version && spec.swagger) {\n spec.swagger = (\n typeof patchOptions.version === 'string'\n ? patchOptions.version\n : patchOptions.version(spec.swagger)\n ) as typeof spec.swagger;\n }\n\n if (patchOptions.meta && spec.info) {\n patchOptions.meta(spec.info);\n }\n\n if (patchOptions.schemas && spec.definitions) {\n for (const key in patchOptions.schemas) {\n const schema = spec.definitions[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.schemas[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.operations && spec.paths) {\n for (const key in patchOptions.operations) {\n const [method, path] = key.split(' ');\n if (!method || !path) continue;\n\n const pathItem = spec.paths[path as keyof typeof spec.paths];\n if (!pathItem) continue;\n\n const operation =\n pathItem[method.toLocaleLowerCase() as keyof typeof pathItem] ||\n pathItem[method.toLocaleUpperCase() as keyof typeof pathItem];\n if (!operation || typeof operation !== 'object') continue;\n\n const patchFn = patchOptions.operations[key]!;\n patchFn(operation as any);\n }\n }\n return;\n }\n\n if (patchOptions.version && spec.openapi) {\n spec.openapi = (\n typeof patchOptions.version === 'string'\n ? patchOptions.version\n : patchOptions.version(spec.openapi)\n ) as typeof spec.openapi;\n }\n\n if (patchOptions.meta && spec.info) {\n patchOptions.meta(spec.info);\n }\n\n if (spec.components) {\n if (patchOptions.schemas && spec.components.schemas) {\n for (const key in patchOptions.schemas) {\n const schema = spec.components.schemas[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.schemas[key]!;\n patchFn(schema as Parameters<typeof patchFn>[0]);\n }\n }\n\n if (patchOptions.parameters && spec.components.parameters) {\n for (const key in patchOptions.parameters) {\n const schema = spec.components.parameters[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.parameters[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.requestBodies && spec.components.requestBodies) {\n for (const key in patchOptions.requestBodies) {\n const schema = spec.components.requestBodies[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.requestBodies[key]!;\n patchFn(schema);\n }\n }\n\n if (patchOptions.responses && spec.components.responses) {\n for (const key in patchOptions.responses) {\n const schema = spec.components.responses[key];\n if (!schema || typeof schema !== 'object') continue;\n\n const patchFn = patchOptions.responses[key]!;\n patchFn(schema);\n }\n }\n }\n\n if (patchOptions.operations && spec.paths) {\n for (const key in patchOptions.operations) {\n const [method, path] = key.split(' ');\n if (!method || !path) continue;\n\n const pathItem = spec.paths[path as keyof typeof spec.paths];\n if (!pathItem) continue;\n\n const operation =\n pathItem[method.toLocaleLowerCase() as keyof typeof pathItem] ||\n pathItem[method.toLocaleUpperCase() as keyof typeof pathItem];\n if (!operation || typeof operation !== 'object') continue;\n\n const patchFn = patchOptions.operations[key]!;\n patchFn(operation as any);\n }\n }\n};\n","import path from 'node:path';\n\nimport { $RefParser } from '@hey-api/json-schema-ref-parser';\nimport colors from 'ansi-colors';\n\nimport { postprocessOutput } from '~/config/output';\nimport { generateOutput } from '~/generate/output';\nimport { getSpec } from '~/getSpec';\nimport type { Context } from '~/ir/context';\nimport { parseOpenApiSpec } from '~/openApi';\nimport { buildGraph } from '~/openApi/shared/utils/graph';\nimport { patchOpenApiSpec } from '~/openApi/shared/utils/patch';\nimport type { Config } from '~/types/config';\nimport type { Input } from '~/types/input';\nimport type { WatchValues } from '~/types/types';\nimport type { Logger } from '~/utils/logger';\n\nexport const compileInputPath = (input: Omit<Input, 'watch'>) => {\n const result: Pick<\n Partial<Input>,\n | 'api_key'\n | 'branch'\n | 'commit_sha'\n | 'organization'\n | 'project'\n | 'registry'\n | 'tags'\n | 'version'\n > &\n Pick<Input, 'path'> = {\n ...input,\n path: '',\n };\n\n if (\n input.path &&\n (typeof input.path !== 'string' || input.registry !== 'hey-api')\n ) {\n result.path = input.path;\n return result;\n }\n\n const [basePath, baseQuery] = input.path.split('?');\n const queryParts = (baseQuery || '').split('&');\n const queryPath = queryParts.map((part) => part.split('='));\n\n let path = basePath || '';\n if (path.endsWith('/')) {\n path = path.slice(0, path.length - 1);\n }\n\n const [, pathUrl] = path.split('://');\n const [baseUrl, organization, project] = (pathUrl || '').split('/');\n result.organization = organization || input.organization;\n result.project = project || input.project;\n\n const queryParams: Array<string> = [];\n\n const kApiKey = 'api_key';\n result.api_key =\n queryPath.find(([key]) => key === kApiKey)?.[1] ||\n input.api_key ||\n process.env.HEY_API_TOKEN;\n if (result.api_key) {\n queryParams.push(`${kApiKey}=${result.api_key}`);\n }\n\n const kBranch = 'branch';\n result.branch =\n queryPath.find(([key]) => key === kBranch)?.[1] || input.branch;\n if (result.branch) {\n queryParams.push(`${kBranch}=${result.branch}`);\n }\n\n const kCommitSha = 'commit_sha';\n result.commit_sha =\n queryPath.find(([key]) => key === kCommitSha)?.[1] || input.commit_sha;\n if (result.commit_sha) {\n queryParams.push(`${kCommitSha}=${result.commit_sha}`);\n }\n\n const kTags = 'tags';\n result.tags =\n queryPath.find(([key]) => key === kTags)?.[1]?.split(',') || input.tags;\n if (result.tags?.length) {\n queryParams.push(`${kTags}=${result.tags.join(',')}`);\n }\n\n const kVersion = 'version';\n result.version =\n queryPath.find(([key]) => key === kVersion)?.[1] || input.version;\n if (result.version) {\n queryParams.push(`${kVersion}=${result.version}`);\n }\n\n if (!result.organization) {\n throw new Error(\n 'missing organization - from which Hey API Platform organization do you want to generate your output?',\n );\n }\n\n if (!result.project) {\n throw new Error(\n 'missing project - from which Hey API Platform project do you want to generate your output?',\n );\n }\n\n const query = queryParams.join('&');\n const platformUrl = baseUrl || 'get.heyapi.dev';\n const isLocalhost = platformUrl.startsWith('localhost');\n const platformUrlWithProtocol = [\n isLocalhost ? 'http' : 'https',\n platformUrl,\n ].join('://');\n const compiledPath = isLocalhost\n ? [\n platformUrlWithProtocol,\n 'v1',\n 'get',\n result.organization,\n result.project,\n ].join('/')\n : [platformUrlWithProtocol, result.organization, result.project].join('/');\n result.path = query ? `${compiledPath}?${query}` : compiledPath;\n\n return result;\n};\n\nconst logInputPaths = (\n inputPaths: ReadonlyArray<ReturnType<typeof compileInputPath>>,\n jobIndex: number,\n) => {\n const lines: Array<string> = [];\n\n const jobPrefix = colors.gray(`[Job ${jobIndex + 1}] `);\n const count = inputPaths.length;\n const baseString = colors.cyan(\n `Generating from ${count} ${count === 1 ? 'input' : 'inputs'}:`,\n );\n lines.push(`${jobPrefix}⏳ ${baseString}`);\n\n inputPaths.forEach((inputPath, index) => {\n const itemPrefixStr = ` [${index + 1}] `;\n const itemPrefix = colors.cyan(itemPrefixStr);\n const detailIndent = ' '.repeat(itemPrefixStr.length);\n\n if (typeof inputPath.path !== 'string') {\n lines.push(`${jobPrefix}${itemPrefix}raw OpenAPI specification`);\n return;\n }\n\n switch (inputPath.registry) {\n case 'hey-api': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n if (inputPath.branch) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('branch:')} ${colors.green(\n inputPath.branch,\n )}`,\n );\n }\n if (inputPath.commit_sha) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('commit:')} ${colors.green(\n inputPath.commit_sha,\n )}`,\n );\n }\n if (inputPath.tags?.length) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('tags:')} ${colors.green(\n inputPath.tags.join(', '),\n )}`,\n );\n }\n if (inputPath.version) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('version:')} ${colors.green(\n inputPath.version,\n )}`,\n );\n }\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('Hey API')}`,\n );\n break;\n }\n case 'readme': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n if (!baseInput) {\n lines.push(`${jobPrefix}${itemPrefix}${inputPath.path}`);\n } else {\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n }\n // @ts-expect-error\n if (inputPath.uuid) {\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('uuid:')} ${colors.green(\n // @ts-expect-error\n inputPath.uuid,\n )}`,\n );\n }\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('ReadMe')}`,\n );\n break;\n }\n case 'scalar': {\n const baseInput = [inputPath.organization, inputPath.project]\n .filter(Boolean)\n .join('/');\n lines.push(`${jobPrefix}${itemPrefix}${baseInput}`);\n lines.push(\n `${jobPrefix}${detailIndent}${colors.gray('registry:')} ${colors.green('Scalar')}`,\n );\n break;\n }\n default:\n lines.push(`${jobPrefix}${itemPrefix}${inputPath.path}`);\n break;\n }\n });\n\n for (const line of lines) {\n console.log(line);\n }\n};\n\nexport const createClient = async ({\n config,\n dependencies,\n jobIndex,\n logger,\n watches: _watches,\n}: {\n config: Config;\n dependencies: Record<string, string>;\n jobIndex: number;\n logger: Logger;\n /**\n * Always undefined on the first run, defined on subsequent runs.\n */\n watches?: ReadonlyArray<WatchValues>;\n}): Promise<Context | undefined> => {\n const watches: ReadonlyArray<WatchValues> =\n _watches ||\n Array.from({ length: config.input.length }, () => ({\n headers: new Headers(),\n }));\n\n const inputPaths = config.input.map((input) => compileInputPath(input));\n\n // on first run, print the message as soon as possible\n if (config.logs.level !== 'silent' && !_watches) {\n logInputPaths(inputPaths, jobIndex);\n }\n\n const getSpecData = async (input: Input, index: number) => {\n const eventSpec = logger.timeEvent('spec');\n const { arrayBuffer, error, resolvedInput, response } = await getSpec({\n fetchOptions: input.fetch,\n inputPath: inputPaths[index]!.path,\n timeout: input.watch.timeout,\n watch: watches[index]!,\n });\n eventSpec.timeEnd();\n\n // throw on first run if there's an error to preserve user experience\n // if in watch mode, subsequent errors won't throw to gracefully handle\n // cases where server might be reloading\n if (error && !_watches) {\n throw new Error(\n `Request failed with status ${response.status}: ${response.statusText}`,\n );\n }\n\n return { arrayBuffer, resolvedInput };\n };\n const specData = (\n await Promise.all(\n config.input.map((input, index) => getSpecData(input, index)),\n )\n ).filter((data) => data.arrayBuffer || data.resolvedInput);\n\n let context: Context | undefined;\n\n if (specData.length) {\n const refParser = new $RefParser();\n const data =\n specData.length > 1\n ? await refParser.bundleMany({\n arrayBuffer: specData.map((data) => data.arrayBuffer!),\n pathOrUrlOrSchemas: [],\n resolvedInputs: specData.map((data) => data.resolvedInput!),\n })\n : await refParser.bundle({\n arrayBuffer: specData[0]!.arrayBuffer,\n pathOrUrlOrSchema: undefined,\n resolvedInput: specData[0]!.resolvedInput,\n });\n\n // on subsequent runs in watch mode, print the message only if we know we're\n // generating the output\n if (config.logs.level !== 'silent' && _watches) {\n console.clear();\n logInputPaths(inputPaths, jobIndex);\n }\n\n const eventInputPatch = logger.timeEvent('input.patch');\n patchOpenApiSpec({ patchOptions: config.parser.patch, spec: data });\n eventInputPatch.timeEnd();\n\n const eventParser = logger.timeEvent('parser');\n context = parseOpenApiSpec({ config, dependencies, logger, spec: data });\n context.graph = buildGraph(context.ir, logger).graph;\n eventParser.timeEnd();\n\n const eventGenerator = logger.timeEvent('generator');\n await generateOutput({ context });\n eventGenerator.timeEnd();\n\n const eventPostprocess = logger.timeEvent('postprocess');\n if (!config.dryRun) {\n postprocessOutput(config.output);\n\n if (config.logs.level !== 'silent') {\n const outputPath = process.env.INIT_CWD\n ? `./${path.relative(process.env.INIT_CWD, config.output.path)}`\n : config.output.path;\n const jobPrefix = colors.gray(`[Job ${jobIndex + 1}] `);\n console.log(\n `${jobPrefix}${colors.green('✅ Done!')} Your output is in ${colors.cyanBright(outputPath)}`,\n );\n }\n }\n eventPostprocess.timeEnd();\n }\n\n const watchedInput = config.input.find(\n (input, index) =>\n input.watch.enabled && typeof inputPaths[index]!.path === 'string',\n );\n\n if (watchedInput) {\n setTimeout(() => {\n createClient({\n config,\n dependencies,\n jobIndex,\n logger,\n watches,\n });\n }, watchedInput.watch.interval);\n }\n\n return context;\n};\n","import colors from 'ansi-colors';\n\nimport { loadPackageJson } from '~/generate/tsConfig';\n\nconst textAscii = `\n888 | e 888~-_ 888\n888___| e88~~8e Y88b / d8b 888 \\\\ 888\n888 | d888 88b Y888/ /Y88b 888 | 888\n888 | 8888__888 Y8/ / Y88b 888 / 888\n888 | Y888 , Y /____Y88b 888_-~ 888\n888 | \"88___/ / / Y88b 888 888\n _/\n`;\n\nconst asciiToLines = (\n ascii: string,\n options?: {\n padding?: number;\n },\n) => {\n const lines: Array<string> = [];\n const padding = Array.from<string>({ length: options?.padding ?? 0 }).fill(\n '',\n );\n lines.push(...padding);\n let maxLineLength = 0;\n let line = '';\n for (const char of ascii) {\n if (char === '\\n') {\n if (line) {\n lines.push(line);\n maxLineLength = Math.max(maxLineLength, line.length);\n line = '';\n }\n } else {\n line += char;\n }\n }\n lines.push(...padding);\n return { lines, maxLineLength };\n};\n\nexport function printCliIntro() {\n const packageJson = loadPackageJson();\n const text = asciiToLines(textAscii, { padding: 1 });\n for (const line of text.lines) {\n console.log(colors.cyan(line));\n }\n console.log(colors.gray(`${packageJson.name} v${packageJson.version}`));\n console.log('');\n}\n","import colors from 'ansi-colors';\n\ninterface LoggerEvent {\n end?: PerformanceMark;\n events: Array<LoggerEvent>;\n id: string; // unique internal key\n name: string;\n start: PerformanceMark;\n}\n\ninterface Severity {\n color: colors.StyleFunction;\n type: 'duration' | 'percentage';\n}\n\ninterface StoredEventResult {\n position: ReadonlyArray<number>;\n}\n\nlet loggerCounter = 0;\nconst nameToId = (name: string) => `${name}-${loggerCounter++}`;\nconst idEnd = (id: string) => `${id}-end`;\nconst idLength = (id: string) => `${id}-length`;\nconst idStart = (id: string) => `${id}-start`;\n\nconst getSeverity = (\n duration: number,\n percentage: number,\n): Severity | undefined => {\n if (duration > 200) {\n return {\n color: colors.red,\n type: 'duration',\n };\n }\n if (percentage > 30) {\n return {\n color: colors.red,\n type: 'percentage',\n };\n }\n if (duration > 50) {\n return {\n color: colors.yellow,\n type: 'duration',\n };\n }\n if (percentage > 10) {\n return {\n color: colors.yellow,\n type: 'percentage',\n };\n }\n return;\n};\n\nexport class Logger {\n private events: Array<LoggerEvent> = [];\n\n private end(result: StoredEventResult): void {\n let event: LoggerEvent | undefined;\n let events = this.events;\n for (const index of result.position) {\n event = events[index];\n if (event?.events) {\n events = event.events;\n }\n }\n if (event && !event.end) {\n event.end = performance.mark(idEnd(event.id));\n }\n }\n\n /**\n * Recursively end all unended events in the event tree.\n * This ensures all events have end marks before measuring.\n */\n private endAllEvents(events: Array<LoggerEvent>): void {\n for (const event of events) {\n if (!event.end) {\n event.end = performance.mark(idEnd(event.id));\n }\n if (event.events.length > 0) {\n this.endAllEvents(event.events);\n }\n }\n }\n\n report(print: boolean = true): PerformanceMeasure | undefined {\n const firstEvent = this.events[0];\n if (!firstEvent) return;\n\n // Ensure all events are ended before reporting\n this.endAllEvents(this.events);\n\n const lastEvent = this.events[this.events.length - 1]!;\n const name = 'root';\n const id = nameToId(name);\n\n try {\n const measure = performance.measure(\n idLength(id),\n idStart(firstEvent.id),\n idEnd(lastEvent.id),\n );\n if (print) {\n this.reportEvent({\n end: lastEvent.end,\n events: this.events,\n id,\n indent: 0,\n measure,\n name,\n start: firstEvent!.start,\n });\n }\n return measure;\n } catch {\n // If measuring fails (e.g., marks don't exist), silently skip reporting\n // to avoid crashing the application\n return;\n }\n }\n\n private reportEvent({\n indent,\n ...parent\n }: LoggerEvent & {\n indent: number;\n measure: PerformanceMeasure;\n }): void {\n const color = !indent ? colors.cyan : colors.gray;\n const lastIndex = parent.events.length - 1;\n\n parent.events.forEach((event, index) => {\n try {\n const measure = performance.measure(\n idLength(event.id),\n idStart(event.id),\n idEnd(event.id),\n );\n const duration = Math.ceil(measure.duration * 100) / 100;\n const percentage =\n Math.ceil((measure.duration / parent.measure.duration) * 100 * 100) /\n 100;\n const severity = indent ? getSeverity(duration, percentage) : undefined;\n\n let durationLabel = `${duration.toFixed(2).padStart(8)}ms`;\n if (severity?.type === 'duration') {\n durationLabel = severity.color(durationLabel);\n }\n\n const branch = index === lastIndex ? '└─ ' : '├─ ';\n const prefix = !indent ? '' : '│ '.repeat(indent - 1) + branch;\n const maxLength = 38 - prefix.length;\n\n const percentageBranch = !indent ? '' : '↳ ';\n const percentagePrefix = indent\n ? ' '.repeat(indent - 1) + percentageBranch\n : '';\n let percentageLabel = `${percentagePrefix}${percentage.toFixed(2)}%`;\n if (severity?.type === 'percentage') {\n percentageLabel = severity.color(percentageLabel);\n }\n const jobPrefix = colors.gray('[root] ');\n console.log(\n `${jobPrefix}${colors.gray(prefix)}${color(\n `${event.name.padEnd(maxLength)} ${durationLabel} (${percentageLabel})`,\n )}`,\n );\n this.reportEvent({ ...event, indent: indent + 1, measure });\n } catch {\n // If measuring fails (e.g., marks don't exist), silently skip this event\n // to avoid crashing the application\n }\n });\n }\n\n private start(id: string): PerformanceMark {\n return performance.mark(idStart(id));\n }\n\n private storeEvent({\n result,\n ...event\n }: Pick<LoggerEvent, 'events' | 'id' | 'name' | 'start'> & {\n result: StoredEventResult;\n }): void {\n const lastEventIndex = event.events.length - 1;\n const lastEvent = event.events[lastEventIndex];\n if (lastEvent && !lastEvent.end) {\n result.position = [...result.position, lastEventIndex];\n this.storeEvent({ ...event, events: lastEvent.events, result });\n return;\n }\n const length = event.events.push({ ...event, events: [] });\n result.position = [...result.position, length - 1];\n }\n\n timeEvent(name: string) {\n const id = nameToId(name);\n const start = this.start(id);\n const event: LoggerEvent = {\n events: this.events,\n id,\n name,\n start,\n };\n const result: StoredEventResult = {\n position: [],\n };\n this.storeEvent({ ...event, result });\n return {\n mark: start,\n timeEnd: () => this.end(result),\n };\n }\n}\n","import { checkNodeVersion } from '~/config/engine';\nimport type { Configs } from '~/config/init';\nimport { initConfigs } from '~/config/init';\nimport { getLogs } from '~/config/logs';\nimport { createClient as pCreateClient } from '~/createClient';\nimport {\n ConfigValidationError,\n JobError,\n logCrashReport,\n openGitHubIssueWithCrashReport,\n printCrashReport,\n shouldReportCrash,\n} from '~/error';\nimport type { Context } from '~/ir/context';\nimport type { UserConfig } from '~/types/config';\nimport type { LazyOrAsync, MaybeArray } from '~/types/utils';\nimport { printCliIntro } from '~/utils/cli';\nimport { Logger } from '~/utils/logger';\n\n/**\n * Generate a client from the provided configuration.\n *\n * @param userConfig User provided {@link UserConfig} configuration(s).\n */\nexport const createClient = async (\n userConfig?: LazyOrAsync<MaybeArray<UserConfig>>,\n logger = new Logger(),\n): Promise<ReadonlyArray<Context>> => {\n const resolvedConfig =\n typeof userConfig === 'function' ? await userConfig() : userConfig;\n const userConfigs = resolvedConfig\n ? resolvedConfig instanceof Array\n ? resolvedConfig\n : [resolvedConfig]\n : [];\n\n let rawLogs = userConfigs.find(\n (config) => getLogs(config).level !== 'silent',\n )?.logs;\n if (typeof rawLogs === 'string') {\n rawLogs = getLogs({ logs: rawLogs });\n }\n\n let configs: Configs | undefined;\n\n try {\n checkNodeVersion();\n\n const eventCreateClient = logger.timeEvent('createClient');\n\n const eventConfig = logger.timeEvent('config');\n configs = await initConfigs({ logger, userConfigs });\n const printIntro = configs.results.some(\n (result) => result.config.logs.level !== 'silent',\n );\n if (printIntro) {\n printCliIntro();\n }\n eventConfig.timeEnd();\n\n const allConfigErrors = configs.results.flatMap((result) =>\n result.errors.map((error) => ({ error, jobIndex: result.jobIndex })),\n );\n if (allConfigErrors.length) {\n throw new ConfigValidationError(allConfigErrors);\n }\n\n const clients = await Promise.all(\n configs.results.map(async (result) => {\n try {\n return await pCreateClient({\n config: result.config,\n dependencies: configs!.dependencies,\n jobIndex: result.jobIndex,\n logger,\n });\n } catch (error) {\n throw new JobError('', {\n error,\n jobIndex: result.jobIndex,\n });\n }\n }),\n );\n const result = clients.filter((client) =>\n Boolean(client),\n ) as ReadonlyArray<Context>;\n\n eventCreateClient.timeEnd();\n\n const printLogs = configs.results.some(\n (result) => result.config.logs.level === 'debug',\n );\n logger.report(printLogs);\n\n return result;\n } catch (error) {\n const results = configs?.results ?? [];\n\n const logs =\n results.find((result) => result.config.logs.level !== 'silent')?.config\n .logs ??\n results[0]?.config.logs ??\n rawLogs;\n const dryRun =\n results.some((result) => result.config.dryRun) ??\n userConfigs.some((config) => config.dryRun) ??\n false;\n const logPath =\n logs?.file && !dryRun\n ? logCrashReport(error, logs.path ?? '')\n : undefined;\n if (!logs || logs.level !== 'silent') {\n printCrashReport({ error, logPath });\n const isInteractive =\n results.some((result) => result.config.interactive) ??\n userConfigs.some((config) => config.interactive) ??\n false;\n if (await shouldReportCrash({ error, isInteractive })) {\n await openGitHubIssueWithCrashReport(error);\n }\n }\n\n throw error;\n }\n};\n","import type { Casing } from './naming';\nimport { toCase } from './naming';\n\n/**\n * Utilities shared across the package.\n */\nexport const utils = {\n /**\n * @deprecated use `toCase` instead\n */\n stringCase({\n case: casing,\n stripLeadingSeparators,\n value,\n }: {\n readonly case: Casing | undefined;\n /**\n * If leading separators have a semantic meaning, we might not want to\n * remove them.\n */\n stripLeadingSeparators?: boolean;\n value: string;\n }) {\n return toCase(value, casing, { stripLeadingSeparators });\n },\n /**\n * Converts the given string to the specified casing.\n */\n toCase,\n};\n","// OVERRIDES\n// hard-coded here because build process doesn't pick up overrides from separate files\nimport '@hey-api/codegen-core';\n\ndeclare module '@hey-api/codegen-core' {\n interface ProjectRenderMeta {\n /**\n * If specified, this will be the file extension used when importing\n * other modules. By default, we don't add a file extension and let the\n * runtime resolve it.\n *\n * @default null\n */\n importFileExtension?: (string & {}) | null;\n }\n\n interface SymbolMeta {\n category?:\n | 'client'\n | 'external'\n | 'hook'\n | 'schema'\n | 'sdk'\n | 'transform'\n | 'type'\n | 'utility'\n | (string & {});\n /**\n * Path to the resource this symbol represents.\n */\n path?: ReadonlyArray<string | number>;\n /**\n * Name of the plugin that registered this symbol.\n */\n pluginName?: string;\n resource?:\n | 'client'\n | 'definition'\n | 'operation'\n | 'webhook'\n | (string & {});\n resourceId?: string;\n role?:\n | 'data'\n | 'error'\n | 'errors'\n | 'options'\n | 'response'\n | 'responses'\n | (string & {});\n /**\n * Tags associated with this symbol.\n */\n tags?: ReadonlyArray<string>;\n tool?:\n | 'angular'\n | 'arktype'\n | 'fastify'\n | 'json-schema'\n | 'sdk'\n | 'typescript'\n | 'valibot'\n | 'zod'\n | (string & {});\n variant?: 'container' | (string & {});\n }\n}\n// END OVERRIDES\n\nimport colors from 'ansi-colors';\n// @ts-expect-error\nimport colorSupport from 'color-support';\n\nimport type { UserConfig } from '~/types/config';\nimport type { LazyOrAsync, MaybeArray } from '~/types/utils';\n\ncolors.enabled = colorSupport().hasBasic;\n\nexport { createClient } from '~/generate';\n\n/**\n * Type helper for openapi-ts.config.ts, returns {@link MaybeArray<UserConfig>} object(s)\n */\nexport const defineConfig = async <T extends MaybeArray<UserConfig>>(\n config: LazyOrAsync<T>,\n): Promise<T> => (typeof config === 'function' ? await config() : config);\n\nexport { defaultPaginationKeywords } from '~/config/parser';\nexport { defaultPlugins } from '~/config/plugins';\nexport type { IR } from '~/ir/types';\nexport { OperationPath, OperationStrategy } from '~/openApi/shared/locations';\nexport type {\n OpenApi,\n OpenApiMetaObject,\n OpenApiOperationObject,\n OpenApiParameterObject,\n OpenApiRequestBodyObject,\n OpenApiResponseObject,\n OpenApiSchemaObject,\n} from '~/openApi/types';\nexport type { DefinePlugin, Plugin } from '~/plugins';\nexport type { AngularClient } from '~/plugins/@hey-api/client-angular';\nexport type { AxiosClient } from '~/plugins/@hey-api/client-axios';\nexport {\n clientDefaultConfig,\n clientDefaultMeta,\n} from '~/plugins/@hey-api/client-core/config';\nexport { clientPluginHandler } from '~/plugins/@hey-api/client-core/plugin';\nexport type { Client } from '~/plugins/@hey-api/client-core/types';\nexport type { FetchClient } from '~/plugins/@hey-api/client-fetch';\nexport type { NextClient } from '~/plugins/@hey-api/client-next';\nexport type { NuxtClient } from '~/plugins/@hey-api/client-nuxt';\nexport type { OfetchClient } from '~/plugins/@hey-api/client-ofetch';\nexport type { ExpressionTransformer } from '~/plugins/@hey-api/transformers/expressions';\nexport type { TypeTransformer } from '~/plugins/@hey-api/transformers/types';\nexport { definePluginConfig } from '~/plugins/shared/utils/config';\nexport * from '~/ts-dsl';\nexport type { UserConfig } from '~/types/config';\nexport { utils } from '~/utils/exports';\nexport { Logger } from '~/utils/logger';\n"],"mappings":";8VAEA,MAAa,MAAyB,CACpC,GAAI,OAAO,IAAQ,IAAa,CAC9B,GAAM,CAAC,GAAS,IAAI,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO,CAClD,GAAI,EAAS,EACX,MAAM,IAAI,EACR,2BAA2B,IAAI,QAAQ,kCACxC,SAEM,OAAO,QAAY,KAAe,QAAQ,UAAU,KAAM,CACnE,GAAM,CAAC,GAAS,QAAQ,SAAS,KAAK,MAAM,IAAI,CAAC,IAAI,OAAO,CAC5D,GAAI,EAAS,GACX,MAAM,IAAI,EACR,4BAA4B,QAAQ,SAAS,KAAK,gCACnD,GCNP,IAAa,EAAb,KAAmE,CACjE,KAEA,YAAY,EAAY,CACtB,KAAK,KAAO,EAGd,aACE,EACA,EACiC,CACjC,IAAM,EAAS,KAAK,KAAa,MAC5B,KACL,OAAO,EAAMA,KAAQ,GAGvB,WAAW,EAA+B,EAAiC,CACzE,IAAM,EAAS,KAAK,aAAa,EAAU,KAAM,EAAU,OAAO,CAC7D,IACL,EAAO,mBAAqB,EAAE,CAC9B,EAAO,iBAAiB,KAAK,EAAQ,ICpBzC,MAAa,EAAiB,MAAO,CAAE,aAAoC,CACzE,IAAM,EAAa,EAAK,QAAQ,EAAQ,OAAO,OAAO,KAAK,CAEvD,EAAQ,OAAO,OAAO,OACpB,EAAG,WAAW,EAAW,EAC3B,EAAG,OAAO,EAAY,CAAE,MAAO,GAAM,UAAW,GAAM,CAAC,CAI3D,IAAM,EAAS,EAAgB,EAAQ,OAAO,CAE5C,WAAY,EAAO,QACnB,EAAO,OAAO,QACd,CAAC,EAAQ,OAAO,SAIhB,EAAQ,OAAO,+BAAiC,EAAqB,CACnE,KAAM,CACJ,oBAAqB,EAAQ,OAAO,OAAO,oBAC5C,CACD,aAEA,OAAQ,EACR,QAAS,EAAQ,IAClB,CAAC,EAGJ,IAAK,IAAM,KAAU,EAAQ,iBAAiB,CAC5C,MAAM,EAAO,KAAK,CAGpB,EAAQ,IAAI,MAAM,CAElB,IAAM,EAAM,IAAI,EAAc,EAAQ,KAAK,CAC3C,IAAK,IAAM,KAAU,EAAQ,QAC3B,MAAM,EAAO,IAAI,EAAI,CAGvB,IAAK,IAAM,KAAQ,EAAQ,IAAI,QAAQ,CAAE,CACvC,IAAM,EAAW,EAAK,QAAQ,EAAY,EAAK,KAAK,CAC9C,EAAM,EAAK,QAAQ,EAAS,CAC7B,EAAQ,OAAO,SAClB,EAAG,UAAU,EAAK,CAAE,UAAW,GAAM,CAAC,CACtC,EAAG,cAAc,EAAU,EAAK,QAAS,CAAE,SAAU,OAAQ,CAAC,EAIlE,GAAM,CAAE,UAAW,EAAQ,OAAO,OAClC,GAAI,EAAO,QAAS,CAClB,IAAM,EACJ,EAAO,OAAS,KAAO,IAAA,GAAY,EAAK,QAAQ,EAAY,EAAO,KAAK,CACtE,CAAC,EAAQ,OAAO,QAAU,GAAc,IAAe,GACzD,EAAG,UAAU,EAAY,CAAE,UAAW,GAAM,CAAC,CAE/C,IAAM,EAAa,MAAM,EAAO,UAAU,EAAQ,KAAK,CAEnD,CAAC,EAAQ,OAAO,QAAU,GAC5B,EAAG,cACD,EAAK,QAAQ,EAAY,GAAG,EAAO,SAAS,GAAG,EAAO,YAAY,CAClE,EACA,CAAE,SAAU,OAAQ,CACrB,CAEC,EAAO,UACT,MAAM,EAAO,SAAS,EAAW,GCtE1B,GAAoB,CAC/B,eACA,KAAM,KAIF,CACJ,GAAI,CAAC,EACH,OAGF,IAAM,EAAO,EAEb,GAAI,YAAa,EAAM,CAarB,GAZI,EAAa,SAAW,EAAK,UAC/B,EAAK,QACH,OAAO,EAAa,SAAY,SAC5B,EAAa,QACb,EAAa,QAAQ,EAAK,QAAQ,EAItC,EAAa,MAAQ,EAAK,MAC5B,EAAa,KAAK,EAAK,KAAK,CAG1B,EAAa,SAAW,EAAK,YAC/B,IAAK,IAAM,KAAO,EAAa,QAAS,CACtC,IAAM,EAAS,EAAK,YAAY,GAChC,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,SAE3C,IAAM,EAAU,EAAa,QAAQ,GACrC,EAAQ,EAAO,CAInB,GAAI,EAAa,YAAc,EAAK,MAClC,IAAK,IAAM,KAAO,EAAa,WAAY,CACzC,GAAM,CAAC,EAAQC,GAAQ,EAAI,MAAM,IAAI,CACrC,GAAI,CAAC,GAAU,CAACA,EAAM,SAEtB,IAAM,EAAW,EAAK,MAAMA,GAC5B,GAAI,CAAC,EAAU,SAEf,IAAM,EACJ,EAAS,EAAO,mBAAmB,GACnC,EAAS,EAAO,mBAAmB,EACrC,GAAI,CAAC,GAAa,OAAO,GAAc,SAAU,SAEjD,IAAM,EAAU,EAAa,WAAW,GACxC,EAAQ,EAAiB,CAG7B,OAeF,GAZI,EAAa,SAAW,EAAK,UAC/B,EAAK,QACH,OAAO,EAAa,SAAY,SAC5B,EAAa,QACb,EAAa,QAAQ,EAAK,QAAQ,EAItC,EAAa,MAAQ,EAAK,MAC5B,EAAa,KAAK,EAAK,KAAK,CAG1B,EAAK,WAAY,CACnB,GAAI,EAAa,SAAW,EAAK,WAAW,QAC1C,IAAK,IAAM,KAAO,EAAa,QAAS,CACtC,IAAM,EAAS,EAAK,WAAW,QAAQ,GACvC,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,SAE3C,IAAM,EAAU,EAAa,QAAQ,GACrC,EAAQ,EAAwC,CAIpD,GAAI,EAAa,YAAc,EAAK,WAAW,WAC7C,IAAK,IAAM,KAAO,EAAa,WAAY,CACzC,IAAM,EAAS,EAAK,WAAW,WAAW,GAC1C,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,SAE3C,IAAM,EAAU,EAAa,WAAW,GACxC,EAAQ,EAAO,CAInB,GAAI,EAAa,eAAiB,EAAK,WAAW,cAChD,IAAK,IAAM,KAAO,EAAa,cAAe,CAC5C,IAAM,EAAS,EAAK,WAAW,cAAc,GAC7C,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,SAE3C,IAAM,EAAU,EAAa,cAAc,GAC3C,EAAQ,EAAO,CAInB,GAAI,EAAa,WAAa,EAAK,WAAW,UAC5C,IAAK,IAAM,KAAO,EAAa,UAAW,CACxC,IAAM,EAAS,EAAK,WAAW,UAAU,GACzC,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,SAE3C,IAAM,EAAU,EAAa,UAAU,GACvC,EAAQ,EAAO,EAKrB,GAAI,EAAa,YAAc,EAAK,MAClC,IAAK,IAAM,KAAO,EAAa,WAAY,CACzC,GAAM,CAAC,EAAQA,GAAQ,EAAI,MAAM,IAAI,CACrC,GAAI,CAAC,GAAU,CAACA,EAAM,SAEtB,IAAM,EAAW,EAAK,MAAMA,GAC5B,GAAI,CAAC,EAAU,SAEf,IAAM,EACJ,EAAS,EAAO,mBAAmB,GACnC,EAAS,EAAO,mBAAmB,EACrC,GAAI,CAAC,GAAa,OAAO,GAAc,SAAU,SAEjD,IAAM,EAAU,EAAa,WAAW,GACxC,EAAQ,EAAiB,GC/GlB,EAAoB,GAAgC,CAC/D,IAAMC,EAWkB,CACtB,GAAG,EACH,KAAM,GACP,CAED,GACE,EAAM,OACL,OAAO,EAAM,MAAS,UAAY,EAAM,WAAa,WAGtD,MADA,GAAO,KAAO,EAAM,KACb,EAGT,GAAM,CAAC,EAAU,GAAa,EAAM,KAAK,MAAM,IAAI,CAE7C,GADc,GAAa,IAAI,MAAM,IAAI,CAClB,IAAK,GAAS,EAAK,MAAM,IAAI,CAAC,CAEvDC,EAAO,GAAY,GACnBA,EAAK,SAAS,IAAI,GACpB,EAAOA,EAAK,MAAM,EAAGA,EAAK,OAAS,EAAE,EAGvC,GAAM,EAAG,GAAWA,EAAK,MAAM,MAAM,CAC/B,CAAC,EAAS,EAAc,IAAY,GAAW,IAAI,MAAM,IAAI,CACnE,EAAO,aAAe,GAAgB,EAAM,aAC5C,EAAO,QAAU,GAAW,EAAM,QAElC,IAAMC,EAA6B,EAAE,CAE/B,EAAU,UAChB,EAAO,QACL,EAAU,MAAM,CAAC,KAAS,IAAQ,EAAQ,GAAG,IAC7C,EAAM,SACN,QAAQ,IAAI,cACV,EAAO,SACT,EAAY,KAAK,GAAG,EAAQ,GAAG,EAAO,UAAU,CAGlD,IAAM,EAAU,SAChB,EAAO,OACL,EAAU,MAAM,CAAC,KAAS,IAAQ,EAAQ,GAAG,IAAM,EAAM,OACvD,EAAO,QACT,EAAY,KAAK,GAAG,EAAQ,GAAG,EAAO,SAAS,CAGjD,IAAM,EAAa,aACnB,EAAO,WACL,EAAU,MAAM,CAAC,KAAS,IAAQ,EAAW,GAAG,IAAM,EAAM,WAC1D,EAAO,YACT,EAAY,KAAK,GAAG,EAAW,GAAG,EAAO,aAAa,CAGxD,IAAM,EAAQ,OACd,EAAO,KACL,EAAU,MAAM,CAAC,KAAS,IAAQ,EAAM,GAAG,IAAI,MAAM,IAAI,EAAI,EAAM,KACjE,EAAO,MAAM,QACf,EAAY,KAAK,GAAG,EAAM,GAAG,EAAO,KAAK,KAAK,IAAI,GAAG,CAGvD,IAAM,EAAW,UAOjB,GANA,EAAO,QACL,EAAU,MAAM,CAAC,KAAS,IAAQ,EAAS,GAAG,IAAM,EAAM,QACxD,EAAO,SACT,EAAY,KAAK,GAAG,EAAS,GAAG,EAAO,UAAU,CAG/C,CAAC,EAAO,aACV,MAAU,MACR,uGACD,CAGH,GAAI,CAAC,EAAO,QACV,MAAU,MACR,6FACD,CAGH,IAAM,EAAQ,EAAY,KAAK,IAAI,CAC7B,EAAc,GAAW,iBACzB,EAAc,EAAY,WAAW,YAAY,CACjD,EAA0B,CAC9B,EAAc,OAAS,QACvB,EACD,CAAC,KAAK,MAAM,CACP,EAAe,EACjB,CACE,EACA,KACA,MACA,EAAO,aACP,EAAO,QACR,CAAC,KAAK,IAAI,CACX,CAAC,EAAyB,EAAO,aAAc,EAAO,QAAQ,CAAC,KAAK,IAAI,CAG5E,MAFA,GAAO,KAAO,EAAQ,GAAG,EAAa,GAAG,IAAU,EAE5C,GAGH,GACJ,EACA,IACG,CACH,IAAMC,EAAuB,EAAE,CAEzB,EAAY,EAAO,KAAK,QAAQ,EAAW,EAAE,IAAI,CACjD,EAAQ,EAAW,OACnB,EAAa,EAAO,KACxB,mBAAmB,EAAM,GAAG,IAAU,EAAI,QAAU,SAAS,GAC9D,CACD,EAAM,KAAK,GAAG,EAAU,IAAI,IAAa,CAEzC,EAAW,SAAS,EAAW,IAAU,CACvC,IAAM,EAAgB,MAAM,EAAQ,EAAE,IAChC,EAAa,EAAO,KAAK,EAAc,CACvC,EAAe,IAAI,OAAO,EAAc,OAAO,CAErD,GAAI,OAAO,EAAU,MAAS,SAAU,CACtC,EAAM,KAAK,GAAG,IAAY,EAAW,2BAA2B,CAChE,OAGF,OAAQ,EAAU,SAAlB,CACE,IAAK,UAAW,CACd,IAAM,EAAY,CAAC,EAAU,aAAc,EAAU,QAAQ,CAC1D,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,EAAM,KAAK,GAAG,IAAY,IAAa,IAAY,CAC/C,EAAU,QACZ,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,UAAU,CAAC,GAAG,EAAO,MAC7D,EAAU,OACX,GACF,CAEC,EAAU,YACZ,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,UAAU,CAAC,GAAG,EAAO,MAC7D,EAAU,WACX,GACF,CAEC,EAAU,MAAM,QAClB,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,QAAQ,CAAC,GAAG,EAAO,MAC3D,EAAU,KAAK,KAAK,KAAK,CAC1B,GACF,CAEC,EAAU,SACZ,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,WAAW,CAAC,GAAG,EAAO,MAC9D,EAAU,QACX,GACF,CAEH,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,YAAY,CAAC,GAAG,EAAO,MAAM,UAAU,GAClF,CACD,MAEF,IAAK,SAAU,CACb,IAAM,EAAY,CAAC,EAAU,aAAc,EAAU,QAAQ,CAC1D,OAAO,QAAQ,CACf,KAAK,IAAI,CACP,EAGH,EAAM,KAAK,GAAG,IAAY,IAAa,IAAY,CAFnD,EAAM,KAAK,GAAG,IAAY,IAAa,EAAU,OAAO,CAKtD,EAAU,MACZ,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,QAAQ,CAAC,GAAG,EAAO,MAE3D,EAAU,KACX,GACF,CAEH,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,YAAY,CAAC,GAAG,EAAO,MAAM,SAAS,GACjF,CACD,MAEF,IAAK,SAAU,CACb,IAAM,EAAY,CAAC,EAAU,aAAc,EAAU,QAAQ,CAC1D,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,EAAM,KAAK,GAAG,IAAY,IAAa,IAAY,CACnD,EAAM,KACJ,GAAG,IAAY,IAAe,EAAO,KAAK,YAAY,CAAC,GAAG,EAAO,MAAM,SAAS,GACjF,CACD,MAEF,QACE,EAAM,KAAK,GAAG,IAAY,IAAa,EAAU,OAAO,CACxD,QAEJ,CAEF,IAAK,IAAM,KAAQ,EACjB,QAAQ,IAAI,EAAK,EAIRC,EAAe,MAAO,CACjC,SACA,eACA,WACA,SACA,QAAS,KAUyB,CAClC,IAAMC,EACJ,GACA,MAAM,KAAK,CAAE,OAAQ,EAAO,MAAM,OAAQ,MAAS,CACjD,QAAS,IAAI,QACd,EAAE,CAEC,EAAa,EAAO,MAAM,IAAK,GAAU,EAAiB,EAAM,CAAC,CAGnE,EAAO,KAAK,QAAU,UAAY,CAAC,GACrC,EAAc,EAAY,EAAS,CAGrC,IAAM,EAAc,MAAO,EAAc,IAAkB,CACzD,IAAM,EAAY,EAAO,UAAU,OAAO,CACpC,CAAE,cAAa,QAAO,gBAAe,YAAa,MAAM,EAAQ,CACpE,aAAc,EAAM,MACpB,UAAW,EAAW,GAAQ,KAC9B,QAAS,EAAM,MAAM,QACrB,MAAO,EAAQ,GAChB,CAAC,CAMF,GALA,EAAU,SAAS,CAKf,GAAS,CAAC,EACZ,MAAU,MACR,8BAA8B,EAAS,OAAO,IAAI,EAAS,aAC5D,CAGH,MAAO,CAAE,cAAa,gBAAe,EAEjC,GACJ,MAAM,QAAQ,IACZ,EAAO,MAAM,KAAK,EAAO,IAAU,EAAY,EAAO,EAAM,CAAC,CAC9D,EACD,OAAQ,GAAS,EAAK,aAAe,EAAK,cAAc,CAEtDC,EAEJ,GAAI,EAAS,OAAQ,CACnB,IAAM,EAAY,IAAI,EAChB,EACJ,EAAS,OAAS,EACd,MAAM,EAAU,WAAW,CACzB,YAAa,EAAS,IAAK,GAASC,EAAK,YAAa,CACtD,mBAAoB,EAAE,CACtB,eAAgB,EAAS,IAAK,GAASA,EAAK,cAAe,CAC5D,CAAC,CACF,MAAM,EAAU,OAAO,CACrB,YAAa,EAAS,GAAI,YAC1B,kBAAmB,IAAA,GACnB,cAAe,EAAS,GAAI,cAC7B,CAAC,CAIJ,EAAO,KAAK,QAAU,UAAY,IACpC,QAAQ,OAAO,CACf,EAAc,EAAY,EAAS,EAGrC,IAAM,EAAkB,EAAO,UAAU,cAAc,CACvD,EAAiB,CAAE,aAAc,EAAO,OAAO,MAAO,KAAM,EAAM,CAAC,CACnE,EAAgB,SAAS,CAEzB,IAAM,EAAc,EAAO,UAAU,SAAS,CAC9C,EAAU,EAAiB,CAAE,SAAQ,eAAc,SAAQ,KAAM,EAAM,CAAC,CACxE,EAAQ,MAAQ,EAAW,EAAQ,GAAI,EAAO,CAAC,MAC/C,EAAY,SAAS,CAErB,IAAM,EAAiB,EAAO,UAAU,YAAY,CACpD,MAAM,EAAe,CAAE,UAAS,CAAC,CACjC,EAAe,SAAS,CAExB,IAAM,EAAmB,EAAO,UAAU,cAAc,CACxD,GAAI,CAAC,EAAO,SACV,EAAkB,EAAO,OAAO,CAE5B,EAAO,KAAK,QAAU,UAAU,CAClC,IAAM,EAAa,QAAQ,IAAI,SAC3B,KAAK,EAAK,SAAS,QAAQ,IAAI,SAAU,EAAO,OAAO,KAAK,GAC5D,EAAO,OAAO,KACZ,EAAY,EAAO,KAAK,QAAQ,EAAW,EAAE,IAAI,CACvD,QAAQ,IACN,GAAG,IAAY,EAAO,MAAM,UAAU,CAAC,qBAAqB,EAAO,WAAW,EAAW,GAC1F,CAGL,EAAiB,SAAS,CAG5B,IAAM,EAAe,EAAO,MAAM,MAC/B,EAAO,IACN,EAAM,MAAM,SAAW,OAAO,EAAW,GAAQ,MAAS,SAC7D,CAcD,OAZI,GACF,eAAiB,CACf,EAAa,CACX,SACA,eACA,WACA,SACA,UACD,CAAC,EACD,EAAa,MAAM,SAAS,CAG1B,GC3VH,GACJ,EACA,IAGG,CACH,IAAMC,EAAuB,EAAE,CACzB,EAAU,MAAM,KAAa,CAAE,OAAQ,GAAS,SAAW,EAAG,CAAC,CAAC,KACpE,GACD,CACD,EAAM,KAAK,GAAG,EAAQ,CACtB,IAAI,EAAgB,EAChB,EAAO,GACX,IAAK,IAAM,KAAQ,EACb,IAAS;EAIT,KAFA,EAAM,KAAK,EAAK,CAChB,EAAgB,KAAK,IAAI,EAAe,EAAK,OAAO,CAC7C,IAGT,GAAQ,EAIZ,OADA,EAAM,KAAK,GAAG,EAAQ,CACf,CAAE,QAAO,gBAAe,EAGjC,SAAgB,GAAgB,CAC9B,IAAM,EAAc,GAAiB,CAC/B,EAAO,EAAa;;;;;;;;EAAW,CAAE,QAAS,EAAG,CAAC,CACpD,IAAK,IAAM,KAAQ,EAAK,MACtB,QAAQ,IAAI,EAAO,KAAK,EAAK,CAAC,CAEhC,QAAQ,IAAI,EAAO,KAAK,GAAG,EAAY,KAAK,IAAI,EAAY,UAAU,CAAC,CACvE,QAAQ,IAAI,GAAG,CC9BjB,IAAI,EAAgB,EACpB,MAAM,EAAY,GAAiB,GAAG,EAAK,GAAG,MACxC,EAAS,GAAe,GAAG,EAAG,MAC9B,EAAY,GAAe,GAAG,EAAG,SACjC,EAAW,GAAe,GAAG,EAAG,QAEhC,GACJ,EACA,IACyB,CACzB,GAAI,EAAW,IACb,MAAO,CACL,MAAO,EAAO,IACd,KAAM,WACP,CAEH,GAAI,EAAa,GACf,MAAO,CACL,MAAO,EAAO,IACd,KAAM,aACP,CAEH,GAAI,EAAW,GACb,MAAO,CACL,MAAO,EAAO,OACd,KAAM,WACP,CAEH,GAAI,EAAa,GACf,MAAO,CACL,MAAO,EAAO,OACd,KAAM,aACP,EAKL,IAAa,EAAb,KAAoB,CAClB,OAAqC,EAAE,CAEvC,IAAY,EAAiC,CAC3C,IAAIC,EACA,EAAS,KAAK,OAClB,IAAK,IAAM,KAAS,EAAO,SACzB,EAAQ,EAAO,GACX,GAAO,SACT,EAAS,EAAM,QAGf,GAAS,CAAC,EAAM,MAClB,EAAM,IAAM,YAAY,KAAK,EAAM,EAAM,GAAG,CAAC,EAQjD,aAAqB,EAAkC,CACrD,IAAK,IAAM,KAAS,EAClB,AACE,EAAM,MAAM,YAAY,KAAK,EAAM,EAAM,GAAG,CAAC,CAE3C,EAAM,OAAO,OAAS,GACxB,KAAK,aAAa,EAAM,OAAO,CAKrC,OAAO,EAAiB,GAAsC,CAC5D,IAAM,EAAa,KAAK,OAAO,GAC/B,GAAI,CAAC,EAAY,OAGjB,KAAK,aAAa,KAAK,OAAO,CAE9B,IAAM,EAAY,KAAK,OAAO,KAAK,OAAO,OAAS,GAC7C,EAAO,OACP,EAAK,EAAS,EAAK,CAEzB,GAAI,CACF,IAAM,EAAU,YAAY,QAC1B,EAAS,EAAG,CACZ,EAAQ,EAAW,GAAG,CACtB,EAAM,EAAU,GAAG,CACpB,CAYD,OAXI,GACF,KAAK,YAAY,CACf,IAAK,EAAU,IACf,OAAQ,KAAK,OACb,KACA,OAAQ,EACR,UACA,OACA,MAAO,EAAY,MACpB,CAAC,CAEG,OACD,CAGN,QAIJ,YAAoB,CAClB,SACA,GAAG,GAII,CACP,IAAM,EAAS,EAAuB,EAAO,KAArB,EAAO,KACzB,EAAY,EAAO,OAAO,OAAS,EAEzC,EAAO,OAAO,SAAS,EAAO,IAAU,CACtC,GAAI,CACF,IAAM,EAAU,YAAY,QAC1B,EAAS,EAAM,GAAG,CAClB,EAAQ,EAAM,GAAG,CACjB,EAAM,EAAM,GAAG,CAChB,CACK,EAAW,KAAK,KAAK,EAAQ,SAAW,IAAI,CAAG,IAC/C,EACJ,KAAK,KAAM,EAAQ,SAAW,EAAO,QAAQ,SAAY,IAAM,IAAI,CACnE,IACI,EAAW,EAAS,EAAY,EAAU,EAAW,CAAG,IAAA,GAE1D,EAAgB,GAAG,EAAS,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,IACnD,GAAU,OAAS,aACrB,EAAgB,EAAS,MAAM,EAAc,EAG/C,IAAM,EAAS,IAAU,EAAY,MAAQ,MACvC,EAAU,EAAc,MAAM,OAAO,EAAS,EAAE,CAAG,EAAhC,GACnB,EAAY,GAAK,EAAO,OAExB,EAAoB,EAAc,KAAL,GAI/B,EAAkB,GAHG,EACrB,IAAI,OAAO,EAAS,EAAE,CAAG,EACzB,KACwC,EAAW,QAAQ,EAAE,CAAC,GAC9D,GAAU,OAAS,eACrB,EAAkB,EAAS,MAAM,EAAgB,EAEnD,IAAM,EAAY,EAAO,KAAK,UAAU,CACxC,QAAQ,IACN,GAAG,IAAY,EAAO,KAAK,EAAO,GAAG,EACnC,GAAG,EAAM,KAAK,OAAO,EAAU,CAAC,GAAG,EAAc,IAAI,EAAgB,GACtE,GACF,CACD,KAAK,YAAY,CAAE,GAAG,EAAO,OAAQ,EAAS,EAAG,UAAS,CAAC,MACrD,IAIR,CAGJ,MAAc,EAA6B,CACzC,OAAO,YAAY,KAAK,EAAQ,EAAG,CAAC,CAGtC,WAAmB,CACjB,SACA,GAAG,GAGI,CACP,IAAM,EAAiB,EAAM,OAAO,OAAS,EACvC,EAAY,EAAM,OAAO,GAC/B,GAAI,GAAa,CAAC,EAAU,IAAK,CAC/B,EAAO,SAAW,CAAC,GAAG,EAAO,SAAU,EAAe,CACtD,KAAK,WAAW,CAAE,GAAG,EAAO,OAAQ,EAAU,OAAQ,SAAQ,CAAC,CAC/D,OAEF,IAAM,EAAS,EAAM,OAAO,KAAK,CAAE,GAAG,EAAO,OAAQ,EAAE,CAAE,CAAC,CAC1D,EAAO,SAAW,CAAC,GAAG,EAAO,SAAU,EAAS,EAAE,CAGpD,UAAU,EAAc,CACtB,IAAM,EAAK,EAAS,EAAK,CACnB,EAAQ,KAAK,MAAM,EAAG,CACtBC,EAAqB,CACzB,OAAQ,KAAK,OACb,KACA,OACA,QACD,CACKC,EAA4B,CAChC,SAAU,EAAE,CACb,CAED,OADA,KAAK,WAAW,CAAE,GAAG,EAAO,SAAQ,CAAC,CAC9B,CACL,KAAM,EACN,YAAe,KAAK,IAAI,EAAO,CAChC,GC/LL,MAAa,EAAe,MAC1B,EACA,EAAS,IAAI,IACuB,CACpC,IAAM,EACJ,OAAO,GAAe,WAAa,MAAM,GAAY,CAAG,EACpD,EAAc,EAChB,aAA0B,MACxB,EACA,CAAC,EAAe,CAClB,EAAE,CAEF,EAAU,EAAY,KACvB,GAAW,EAAQ,EAAO,CAAC,QAAU,SACvC,EAAE,KACC,OAAO,GAAY,WACrB,EAAU,EAAQ,CAAE,KAAM,EAAS,CAAC,EAGtC,IAAIC,EAEJ,GAAI,CACF,GAAkB,CAElB,IAAM,EAAoB,EAAO,UAAU,eAAe,CAEpD,EAAc,EAAO,UAAU,SAAS,CAC9C,EAAU,MAAM,EAAY,CAAE,SAAQ,cAAa,CAAC,CACjC,EAAQ,QAAQ,KAChC,GAAWC,EAAO,OAAO,KAAK,QAAU,SAC1C,EAEC,GAAe,CAEjB,EAAY,SAAS,CAErB,IAAM,EAAkB,EAAQ,QAAQ,QAAS,GAC/CA,EAAO,OAAO,IAAK,IAAW,CAAE,QAAO,SAAUA,EAAO,SAAU,EAAE,CACrE,CACD,GAAI,EAAgB,OAClB,MAAM,IAAI,EAAsB,EAAgB,CAoBlD,IAAM,GAjBU,MAAM,QAAQ,IAC5B,EAAQ,QAAQ,IAAI,KAAO,IAAW,CACpC,GAAI,CACF,OAAO,MAAMC,EAAc,CACzB,OAAQD,EAAO,OACf,aAAc,EAAS,aACvB,SAAUA,EAAO,SACjB,SACD,CAAC,OACK,EAAO,CACd,MAAM,IAAI,EAAS,GAAI,CACrB,QACA,SAAUA,EAAO,SAClB,CAAC,GAEJ,CACH,EACsB,OAAQ,GAC7B,EAAQ,EACT,CAED,EAAkB,SAAS,CAE3B,IAAM,EAAY,EAAQ,QAAQ,KAC/B,GAAWA,EAAO,OAAO,KAAK,QAAU,QAC1C,CAGD,OAFA,EAAO,OAAO,EAAU,CAEjB,QACA,EAAO,CACd,IAAM,EAAU,GAAS,SAAW,EAAE,CAEhC,EACJ,EAAQ,KAAM,GAAW,EAAO,OAAO,KAAK,QAAU,SAAS,EAAE,OAC9D,MACH,EAAQ,IAAI,OAAO,MACnB,EACI,EACJ,EAAQ,KAAM,GAAW,EAAO,OAAO,OAAO,EAC9C,EAAY,KAAM,GAAW,EAAO,OAAO,EAC3C,GACI,EACJ,GAAM,MAAQ,CAAC,EACX,EAAe,EAAO,EAAK,MAAQ,GAAG,CACtC,IAAA,GAYN,MAXI,CAAC,GAAQ,EAAK,QAAU,YAC1B,EAAiB,CAAE,QAAO,UAAS,CAAC,CAKhC,MAAM,EAAkB,CAAE,QAAO,cAHnC,EAAQ,KAAM,GAAW,EAAO,OAAO,YAAY,EACnD,EAAY,KAAM,GAAW,EAAO,YAAY,EAChD,GACkD,CAAC,EACnD,MAAM,EAA+B,EAAM,EAIzC,ICrHG,EAAQ,CAInB,WAAW,CACT,KAAM,EACN,yBACA,SASC,CACD,OAAO,EAAO,EAAO,EAAQ,CAAE,yBAAwB,CAAC,EAK1D,SACD,CC+CD,EAAO,QAAU,GAAc,CAAC,SAOhC,MAAa,EAAe,KAC1B,IACgB,OAAO,GAAW,WAAa,MAAM,GAAQ,CAAG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hey-api/openapi-ts",
3
- "version": "0.89.2",
4
- "description": "🌀 OpenAPI to TypeScript code generator. Generate API clients, SDKs, validators, and more.",
3
+ "version": "0.90.1",
4
+ "description": "🌀 OpenAPI to TypeScript codegen. Production-ready SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal.",
5
5
  "homepage": "https://heyapi.dev/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -78,10 +78,10 @@
78
78
  "node": ">=20.19.0"
79
79
  },
80
80
  "dependencies": {
81
- "@hey-api/codegen-core": "^0.4.0",
81
+ "@hey-api/codegen-core": "^0.5.1",
82
82
  "@hey-api/json-schema-ref-parser": "1.2.2",
83
83
  "ansi-colors": "4.1.3",
84
- "c12": "3.3.2",
84
+ "c12": "3.3.3",
85
85
  "color-support": "1.1.3",
86
86
  "commander": "14.0.2",
87
87
  "open": "11.0.0",
@@ -98,13 +98,13 @@
98
98
  "@angular/platform-browser": "19.2.17",
99
99
  "@angular/platform-browser-dynamic": "19.2.17",
100
100
  "@angular/router": "19.2.17",
101
- "@types/bun": "1.3.4",
101
+ "@types/bun": "1.3.5",
102
102
  "@types/cross-spawn": "6.0.6",
103
103
  "@types/semver": "7.7.1",
104
104
  "axios": "1.13.2",
105
105
  "cross-spawn": "7.0.6",
106
106
  "eslint": "9.39.1",
107
- "ky": "1.14.1",
107
+ "ky": "1.14.2",
108
108
  "nuxt": "3.14.1592",
109
109
  "ofetch": "1.5.1",
110
110
  "prettier": "3.4.2",