{"version":3,"file":"src-DBVP7uu9.mjs","names":["path","isexe","sync","fs","path","checkStat","isexe","sync","fs","path","isexe","sync","path","path","which","path","resolveCommand","path","fs","readShebang","path","isWin","parse","cp","formatters: Record<Formatters, OutputProcessor>","path","linters: Record<Linters, OutputProcessor>","module","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/generate/output.ts","../src/openApi/shared/utils/patch.ts","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../src/processOutput.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 fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { Context } from '~/ir/context';\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  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","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);\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","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n  var pathext = options.pathExt !== undefined ?\n    options.pathExt : process.env.PATHEXT\n\n  if (!pathext) {\n    return true\n  }\n\n  pathext = pathext.split(';')\n  if (pathext.indexOf('') !== -1) {\n    return true\n  }\n  for (var i = 0; i < pathext.length; i++) {\n    var p = pathext[i].toLowerCase()\n    if (p && path.substr(-p.length).toLowerCase() === p) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction checkStat (stat, path, options) {\n  if (!stat.isSymbolicLink() && !stat.isFile()) {\n    return false\n  }\n  return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, path, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n  fs.stat(path, function (er, stat) {\n    cb(er, er ? false : checkStat(stat, options))\n  })\n}\n\nfunction sync (path, options) {\n  return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n  return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n  var mod = stat.mode\n  var uid = stat.uid\n  var gid = stat.gid\n\n  var myUid = options.uid !== undefined ?\n    options.uid : process.getuid && process.getuid()\n  var myGid = options.gid !== undefined ?\n    options.gid : process.getgid && process.getgid()\n\n  var u = parseInt('100', 8)\n  var g = parseInt('010', 8)\n  var o = parseInt('001', 8)\n  var ug = u | g\n\n  var ret = (mod & o) ||\n    (mod & g) && gid === myGid ||\n    (mod & u) && uid === myUid ||\n    (mod & ug) && myUid === 0\n\n  return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n  core = require('./windows.js')\n} else {\n  core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n  if (typeof options === 'function') {\n    cb = options\n    options = {}\n  }\n\n  if (!cb) {\n    if (typeof Promise !== 'function') {\n      throw new TypeError('callback not provided')\n    }\n\n    return new Promise(function (resolve, reject) {\n      isexe(path, options || {}, function (er, is) {\n        if (er) {\n          reject(er)\n        } else {\n          resolve(is)\n        }\n      })\n    })\n  }\n\n  core(path, options || {}, function (er, is) {\n    // ignore EACCES because that just means we aren't allowed to run it\n    if (er) {\n      if (er.code === 'EACCES' || options && options.ignoreErrors) {\n        er = null\n        is = false\n      }\n    }\n    cb(er, is)\n  })\n}\n\nfunction sync (path, options) {\n  // my kingdom for a filtered catch\n  try {\n    return core.sync(path, options || {})\n  } catch (er) {\n    if (options && options.ignoreErrors || er.code === 'EACCES') {\n      return false\n    } else {\n      throw er\n    }\n  }\n}\n","const isWindows = process.platform === 'win32' ||\n    process.env.OSTYPE === 'cygwin' ||\n    process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n  Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n  const colon = opt.colon || COLON\n\n  // If it has a slash, then we don't bother searching the pathenv.\n  // just check the file itself, and that's it.\n  const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n    : (\n      [\n        // windows always checks the cwd first\n        ...(isWindows ? [process.cwd()] : []),\n        ...(opt.path || process.env.PATH ||\n          /* istanbul ignore next: very unusual */ '').split(colon),\n      ]\n    )\n  const pathExtExe = isWindows\n    ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n    : ''\n  const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n  if (isWindows) {\n    if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n      pathExt.unshift('')\n  }\n\n  return {\n    pathEnv,\n    pathExt,\n    pathExtExe,\n  }\n}\n\nconst which = (cmd, opt, cb) => {\n  if (typeof opt === 'function') {\n    cb = opt\n    opt = {}\n  }\n  if (!opt)\n    opt = {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  const step = i => new Promise((resolve, reject) => {\n    if (i === pathEnv.length)\n      return opt.all && found.length ? resolve(found)\n        : reject(getNotFoundError(cmd))\n\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    resolve(subStep(p, i, 0))\n  })\n\n  const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n    if (ii === pathExt.length)\n      return resolve(step(i + 1))\n    const ext = pathExt[ii]\n    isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n      if (!er && is) {\n        if (opt.all)\n          found.push(p + ext)\n        else\n          return resolve(p + ext)\n      }\n      return resolve(subStep(p, i, ii + 1))\n    })\n  })\n\n  return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n  opt = opt || {}\n\n  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n  const found = []\n\n  for (let i = 0; i < pathEnv.length; i ++) {\n    const ppRaw = pathEnv[i]\n    const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n    const pCmd = path.join(pathPart, cmd)\n    const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n      : pCmd\n\n    for (let j = 0; j < pathExt.length; j ++) {\n      const cur = p + pathExt[j]\n      try {\n        const is = isexe.sync(cur, { pathExt: pathExtExe })\n        if (is) {\n          if (opt.all)\n            found.push(cur)\n          else\n            return cur\n        }\n      } catch (ex) {}\n    }\n  }\n\n  if (opt.all && found.length)\n    return found\n\n  if (opt.nothrow)\n    return null\n\n  throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n    const env = parsed.options.env || process.env;\n    const cwd = process.cwd();\n    const hasCustomCwd = parsed.options.cwd != null;\n    // Worker threads do not have process.chdir()\n    const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n    // If a custom `cwd` was specified, we need to change the process cwd\n    // because `which` will do stat calls but does not support a custom cwd\n    if (shouldSwitchCwd) {\n        try {\n            process.chdir(parsed.options.cwd);\n        } catch (err) {\n            /* Empty */\n        }\n    }\n\n    let resolved;\n\n    try {\n        resolved = which.sync(parsed.command, {\n            path: env[getPathKey({ env })],\n            pathExt: withoutPathExt ? path.delimiter : undefined,\n        });\n    } catch (e) {\n        /* Empty */\n    } finally {\n        if (shouldSwitchCwd) {\n            process.chdir(cwd);\n        }\n    }\n\n    // If we successfully resolved, ensure that an absolute path is returned\n    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n    if (resolved) {\n        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n    }\n\n    return resolved;\n}\n\nfunction resolveCommand(parsed) {\n    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n    // Convert to string\n    arg = `${arg}`;\n\n    // Algorithm below is based on https://qntm.org/cmd\n    // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n    // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n    // Sequence of backslashes followed by a double quote:\n    // double up all the backslashes and escape the double quote\n    arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n    // Sequence of backslashes followed by the end of the string\n    // (which will become a double quote later):\n    // double up all the backslashes\n    arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n    // All other backslashes occur literally\n\n    // Quote the whole thing:\n    arg = `\"${arg}\"`;\n\n    // Escape meta chars\n    arg = arg.replace(metaCharsRegExp, '^$1');\n\n    // Double escape meta chars if necessary\n    if (doubleEscapeMetaChars) {\n        arg = arg.replace(metaCharsRegExp, '^$1');\n    }\n\n    return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n    // Read the first 150 bytes from the file\n    const size = 150;\n    const buffer = Buffer.alloc(size);\n\n    let fd;\n\n    try {\n        fd = fs.openSync(command, 'r');\n        fs.readSync(fd, buffer, 0, size, 0);\n        fs.closeSync(fd);\n    } catch (e) { /* Empty */ }\n\n    // Attempt to extract shebang (null is returned if not a shebang)\n    return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n    parsed.file = resolveCommand(parsed);\n\n    const shebang = parsed.file && readShebang(parsed.file);\n\n    if (shebang) {\n        parsed.args.unshift(parsed.file);\n        parsed.command = shebang;\n\n        return resolveCommand(parsed);\n    }\n\n    return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n    if (!isWin) {\n        return parsed;\n    }\n\n    // Detect & add support for shebangs\n    const commandFile = detectShebang(parsed);\n\n    // We don't need a shell if the command filename is an executable\n    const needsShell = !isExecutableRegExp.test(commandFile);\n\n    // If a shell is required, use cmd.exe and take care of escaping everything correctly\n    // Note that `forceShell` is an hidden option used only in tests\n    if (parsed.options.forceShell || needsShell) {\n        // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n        // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n        // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n        // we need to double escape them\n        const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n        // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n        // This is necessary otherwise it will always fail with ENOENT in those cases\n        parsed.command = path.normalize(parsed.command);\n\n        // Escape command & arguments\n        parsed.command = escape.command(parsed.command);\n        parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n        const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n        parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n        parsed.command = process.env.comspec || 'cmd.exe';\n        parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n    }\n\n    return parsed;\n}\n\nfunction parse(command, args, options) {\n    // Normalize arguments, similar to nodejs\n    if (args && !Array.isArray(args)) {\n        options = args;\n        args = null;\n    }\n\n    args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n    options = Object.assign({}, options); // Clone object to avoid changing the original\n\n    // Build our parsed object\n    const parsed = {\n        command,\n        args,\n        options,\n        file: undefined,\n        original: {\n            command,\n            args,\n        },\n    };\n\n    // Delegate further parsing to shell or non-shell\n    return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n    return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n        code: 'ENOENT',\n        errno: 'ENOENT',\n        syscall: `${syscall} ${original.command}`,\n        path: original.command,\n        spawnargs: original.args,\n    });\n}\n\nfunction hookChildProcess(cp, parsed) {\n    if (!isWin) {\n        return;\n    }\n\n    const originalEmit = cp.emit;\n\n    cp.emit = function (name, arg1) {\n        // If emitting \"exit\" event and exit code is 1, we need to check if\n        // the command exists and emit an \"error\" instead\n        // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n        if (name === 'exit') {\n            const err = verifyENOENT(arg1, parsed);\n\n            if (err) {\n                return originalEmit.call(cp, 'error', err);\n            }\n        }\n\n        return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n    };\n}\n\nfunction verifyENOENT(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawn');\n    }\n\n    return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n    if (isWin && status === 1 && !parsed.file) {\n        return notFoundError(parsed.original, 'spawnSync');\n    }\n\n    return null;\n}\n\nmodule.exports = {\n    hookChildProcess,\n    verifyENOENT,\n    verifyENOENTSync,\n    notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n    // Hook into child process \"exit\" event to emit an error if the command\n    // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    enoent.hookChildProcess(spawned, parsed);\n\n    return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n    // Parse the arguments\n    const parsed = parse(command, args, options);\n\n    // Spawn the child process\n    const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n    // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n    result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n    return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","import { sync } from 'cross-spawn';\n\nimport type { Config } from '~/types/config';\nimport type { Formatters, Linters } from '~/types/output';\n\ntype OutputProcessor = {\n  args: (path: string) => ReadonlyArray<string>;\n  command: string;\n  name: string;\n};\n\n/**\n * Map of supported formatters\n */\nconst formatters: Record<Formatters, OutputProcessor> = {\n  biome: {\n    args: (path) => ['format', '--write', path],\n    command: 'biome',\n    name: 'Biome (Format)',\n  },\n  prettier: {\n    args: (path) => [\n      '--ignore-unknown',\n      path,\n      '--write',\n      '--ignore-path',\n      './.prettierignore',\n    ],\n    command: 'prettier',\n    name: 'Prettier',\n  },\n};\n\n/**\n * Map of supported linters\n */\nconst linters: Record<Linters, OutputProcessor> = {\n  biome: {\n    args: (path) => ['lint', '--apply', path],\n    command: 'biome',\n    name: 'Biome (Lint)',\n  },\n  eslint: {\n    args: (path) => [path, '--fix'],\n    command: 'eslint',\n    name: 'ESLint',\n  },\n  oxlint: {\n    args: (path) => ['--fix', path],\n    command: 'oxlint',\n    name: 'oxlint',\n  },\n};\n\nexport const processOutput = ({ config }: { config: Config }) => {\n  if (config.output.lint) {\n    const module = linters[config.output.lint];\n    console.log(`✨ Running ${module.name}`);\n    sync(module.command, module.args(config.output.path));\n  }\n\n  if (config.output.format) {\n    const module = formatters[config.output.format];\n    console.log(`✨ Running ${module.name}`);\n    sync(module.command, module.args(config.output.path));\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 { 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 { processOutput } from '~/processOutput';\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      processOutput({ config });\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 { stringCase } from './stringCase';\n\n// publicly exposed utils\nexport const utils = {\n  stringCase,\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 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"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15],"mappings":"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"}